Ignore:
Timestamp:
Oct 26, 2016 11:15:40 AM (5 years ago)
Author:
knoop
Message:

Anelastic approximation implemented

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/sor.f90

    r2001 r2037  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! Anelastic approximation implemented
    2323!
    2424! Former revisions:
     
    5959!------------------------------------------------------------------------------!
    6060 SUBROUTINE sor( d, ddzu, ddzw, p )
    61  
     61
     62    USE arrays_3d,                                                             &
     63        ONLY:  rho_air, rho_air_zw
    6264
    6365    USE grid_variables,                                                        &
     
    101103!-- Compute pre-factors.
    102104    DO  k = 1, nz
    103          f2(k) = ddzu(k+1) * ddzw(k)
    104          f3(k) = ddzu(k)   * ddzw(k)
    105          f1(k) = 2.0_wp * ( ddx2 + ddy2 ) + f2(k) + f3(k)
     105         f2(k) = ddzu(k+1) * ddzw(k) * rho_air_zw(k)
     106         f3(k) = ddzu(k)   * ddzw(k) * rho_air_zw(k-1)
     107         f1(k) = 2.0_wp * ( ddx2 + ddy2 ) * rho_air(k) + f2(k) + f3(k)
    106108    ENDDO
    107109
     
    131133             DO  k = nzb+1, nzt
    132134                p(k,j,i) = p(k,j,i) + omega_sor / f1(k) * (            &
    133                                ddx2 * ( p(k,j,i+1) + p(k,j,i-1) ) +    &
    134                                ddy2 * ( p(k,j+1,i) + p(k,j-1,i) ) +    &
    135                                f2(k) * p(k+1,j,i)                 +    &
    136                                f3(k) * p(k-1,j,i)                 -    &
    137                                d(k,j,i)                           -    &
    138                                f1(k) * p(k,j,i)           )
     135                           rho_air(k) * ddx2 * ( p(k,j,i+1) + p(k,j,i-1) ) +   &
     136                           rho_air(k) * ddy2 * ( p(k,j+1,i) + p(k,j-1,i) ) +   &
     137                           f2(k) * p(k+1,j,i)                              +   &
     138                           f3(k) * p(k-1,j,i)                              -   &
     139                           d(k,j,i)                                        -   &
     140                           f1(k) * p(k,j,i)           )
    139141             ENDDO
    140142          ENDDO
     
    144146          DO  j = nys1, nyn, 2
    145147             DO  k = nzb+1, nzt
    146                 p(k,j,i) = p(k,j,i) + omega_sor / f1(k) * (            &
    147                                ddx2 * ( p(k,j,i+1) + p(k,j,i-1) ) +    &
    148                                ddy2 * ( p(k,j+1,i) + p(k,j-1,i) ) +    &
    149                                f2(k) * p(k+1,j,i)                 +    &
    150                                f3(k) * p(k-1,j,i)                 -    &
    151                                d(k,j,i)                           -    &
    152                                f1(k) * p(k,j,i)           )
     148                p(k,j,i) = p(k,j,i) + omega_sor / f1(k) * (                    &
     149                           rho_air(k) * ddx2 * ( p(k,j,i+1) + p(k,j,i-1) ) +   &
     150                           rho_air(k) * ddy2 * ( p(k,j+1,i) + p(k,j-1,i) ) +   &
     151                           f2(k) * p(k+1,j,i)                              +   &
     152                           f3(k) * p(k-1,j,i)                              -   &
     153                           d(k,j,i)                                        -   &
     154                           f1(k) * p(k,j,i)           )
    153155             ENDDO
    154156          ENDDO
     
    176178             DO  k = nzb+1, nzt
    177179                p(k,j,i) = p(k,j,i) + omega_sor / f1(k) * (            &
    178                                ddx2 * ( p(k,j,i+1) + p(k,j,i-1) ) +    &
    179                                ddy2 * ( p(k,j+1,i) + p(k,j-1,i) ) +    &
    180                                f2(k) * p(k+1,j,i)                 +    &
    181                                f3(k) * p(k-1,j,i)                 -    &
    182                                d(k,j,i)                           -    &
    183                                f1(k) * p(k,j,i)           )
     180                           rho_air(k) * ddx2 * ( p(k,j,i+1) + p(k,j,i-1) ) +   &
     181                           rho_air(k) * ddy2 * ( p(k,j+1,i) + p(k,j-1,i) ) +   &
     182                           f2(k) * p(k+1,j,i)                              +   &
     183                           f3(k) * p(k-1,j,i)                              -   &
     184                           d(k,j,i)                                        -   &
     185                           f1(k) * p(k,j,i)           )
    184186             ENDDO
    185187          ENDDO
     
    190192             DO  k = nzb+1, nzt
    191193                p(k,j,i) = p(k,j,i) + omega_sor / f1(k) * (            &
    192                                ddx2 * ( p(k,j,i+1) + p(k,j,i-1) ) +    &
    193                                ddy2 * ( p(k,j+1,i) + p(k,j-1,i) ) +    &
    194                                f2(k) * p(k+1,j,i)                 +    &
    195                                f3(k) * p(k-1,j,i)                 -    &
    196                                d(k,j,i)                           -    &
    197                                f1(k) * p(k,j,i)           )
     194                           rho_air(k) * ddx2 * ( p(k,j,i+1) + p(k,j,i-1) ) +   &
     195                           rho_air(k) * ddy2 * ( p(k,j+1,i) + p(k,j-1,i) ) +   &
     196                           f2(k) * p(k+1,j,i)                              +   &
     197                           f3(k) * p(k-1,j,i)                              -   &
     198                           d(k,j,i)                                        -   &
     199                           f1(k) * p(k,j,i)           )
    198200             ENDDO
    199201          ENDDO
Note: See TracChangeset for help on using the changeset viewer.