Ignore:
Timestamp:
Aug 9, 2012 8:28:32 AM (9 years ago)
Author:
fricke
Message:

merge fricke branch back into trunk

Location:
palm/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk

  • palm/trunk/SOURCE

  • palm/trunk/SOURCE/diffusion_v.f90

    r668 r978  
    44! Current revisions:
    55! -----------------
     6! outflow damping layer removed
     7! kmxm_x/_y and kmxp_x/_y change to kmxm and kmxp
    68!
    79! Former revisions:
     
    6163! Call for all grid points
    6264!------------------------------------------------------------------------------!
    63     SUBROUTINE diffusion_v( ddzu, ddzw, km, km_damp_x, tend, u, v, vsws, &
    64                             vswst, w )
     65    SUBROUTINE diffusion_v( ddzu, ddzw, km, tend, u, v, vsws, vswst, w )
    6566
    6667       USE control_parameters
     
    7172
    7273       INTEGER ::  i, j, k
    73        REAL    ::  kmxm_x, kmxm_y, kmxp_x, kmxp_y, kmzm, kmzp
    74        REAL    ::  ddzu(1:nzt+1), ddzw(1:nzt+1), km_damp_x(nxlg:nxrg)
     74       REAL    ::  kmxm, kmxp, kmzm, kmzp
     75       REAL    ::  ddzu(1:nzt+1), ddzw(1:nzt+1)
    7576       REAL    ::  tend(nzb:nzt+1,nysg:nyng,nxlg:nxrg)
    7677       REAL, DIMENSION(:,:),   POINTER ::  vsws, vswst
     
    9394!
    9495!--             Interpolate eddy diffusivities on staggered gridpoints
    95                 kmxp_x = 0.25 * &
    96                          ( km(k,j,i)+km(k,j,i+1)+km(k,j-1,i)+km(k,j-1,i+1) )
    97                 kmxm_x = 0.25 * &
    98                          ( km(k,j,i)+km(k,j,i-1)+km(k,j-1,i)+km(k,j-1,i-1) )
    99                 kmxp_y = kmxp_x
    100                 kmxm_y = kmxm_x
    101 !
    102 !--             Increase diffusion at the outflow boundary in case of
    103 !--             non-cyclic lateral boundaries. Damping is only needed for
    104 !--             velocity components parallel to the outflow boundary in
    105 !--             the direction normal to the outflow boundary.
    106                 IF ( .NOT. bc_lr_cyc )  THEN
    107                    kmxp_x = MAX( kmxp_x, km_damp_x(i) )
    108                    kmxm_x = MAX( kmxm_x, km_damp_x(i) )
    109                 ENDIF
     96                kmxp = 0.25 * &
     97                       ( km(k,j,i)+km(k,j,i+1)+km(k,j-1,i)+km(k,j-1,i+1) )
     98                kmxm = 0.25 * &
     99                       ( km(k,j,i)+km(k,j,i-1)+km(k,j-1,i)+km(k,j-1,i-1) )
    110100
    111101                tend(k,j,i) = tend(k,j,i)                                    &
    112                       & + ( kmxp_x * ( v(k,j,i+1) - v(k,j,i)     ) * ddx     &
    113                       &   + kmxp_y * ( u(k,j,i+1) - u(k,j-1,i+1) ) * ddy     &
    114                       &   - kmxm_x * ( v(k,j,i) - v(k,j,i-1) ) * ddx         &
    115                       &   - kmxm_y * ( u(k,j,i) - u(k,j-1,i) ) * ddy         &
     102                      & + ( kmxp * ( v(k,j,i+1) - v(k,j,i)     ) * ddx       &
     103                      &   + kmxp * ( u(k,j,i+1) - u(k,j-1,i+1) ) * ddy       &
     104                      &   - kmxm * ( v(k,j,i) - v(k,j,i-1) ) * ddx           &
     105                      &   - kmxm * ( u(k,j,i) - u(k,j-1,i) ) * ddy           &
    116106                      &   ) * ddx                                            &
    117107                      & + 2.0 * (                                            &
     
    126116
    127117                DO  k = nzb_v_inner(j,i)+1, nzb_v_outer(j,i)
    128                    kmxp_x = 0.25 * &
    129                             ( km(k,j,i)+km(k,j,i+1)+km(k,j-1,i)+km(k,j-1,i+1) )
    130                    kmxm_x = 0.25 * &
    131                             ( km(k,j,i)+km(k,j,i-1)+km(k,j-1,i)+km(k,j-1,i-1) )
    132                    kmxp_y = kmxp_x
    133                    kmxm_y = kmxm_x
    134 !
    135 !--                Increase diffusion at the outflow boundary in case of
    136 !--                non-cyclic lateral boundaries. Damping is only needed for
    137 !--                velocity components parallel to the outflow boundary in
    138 !--                the direction normal to the outflow boundary.
    139                    IF ( .NOT. bc_lr_cyc )  THEN
    140                       kmxp_x = MAX( kmxp_x, km_damp_x(i) )
    141                       kmxm_x = MAX( kmxm_x, km_damp_x(i) )
    142                    ENDIF
    143 
     118                   kmxp = 0.25 * &
     119                          ( km(k,j,i)+km(k,j,i+1)+km(k,j-1,i)+km(k,j-1,i+1) )
     120                   kmxm = 0.25 * &
     121                          ( km(k,j,i)+km(k,j,i-1)+km(k,j-1,i)+km(k,j-1,i-1) )
     122                   
    144123                   tend(k,j,i) = tend(k,j,i)                                   &
    145124                                 + 2.0 * (                                     &
     
    148127                                         ) * ddy2                              &
    149128                                 + (   fxp(j,i) * (                            &
    150                                   kmxp_x * ( v(k,j,i+1) - v(k,j,i)     ) * ddx &
    151                                 + kmxp_y * ( u(k,j,i+1) - u(k,j-1,i+1) ) * ddy &
     129                                  kmxp * ( v(k,j,i+1) - v(k,j,i)     ) * ddx  &
     130                                + kmxp * ( u(k,j,i+1) - u(k,j-1,i+1) ) * ddy  &
    152131                                                  )                            &
    153132                                     - fxm(j,i) * (                            &
    154                                   kmxm_x * ( v(k,j,i) - v(k,j,i-1) ) * ddx     &
    155                                 + kmxm_y * ( u(k,j,i) - u(k,j-1,i) ) * ddy     &
     133                                  kmxm * ( v(k,j,i) - v(k,j,i-1) ) * ddx       &
     134                                + kmxm * ( u(k,j,i) - u(k,j-1,i) ) * ddy       &
    156135                                                  )                            &
    157136                                     + wall_v(j,i) * vsus(k,j,i)               &
     
    237216! Call for grid point i,j
    238217!------------------------------------------------------------------------------!
    239     SUBROUTINE diffusion_v_ij( i, j, ddzu, ddzw, km, km_damp_x, tend, u, v, &
     218    SUBROUTINE diffusion_v_ij( i, j, ddzu, ddzw, km, tend, u, v, &
    240219                               vsws, vswst, w )
    241220
     
    247226
    248227       INTEGER ::  i, j, k
    249        REAL    ::  kmxm_x, kmxm_y, kmxp_x, kmxp_y, kmzm, kmzp
    250        REAL    ::  ddzu(1:nzt+1), ddzw(1:nzt+1), km_damp_x(nxlg:nxrg)
     228       REAL    ::  kmxm, kmxp, kmzm, kmzp
     229       REAL    ::  ddzu(1:nzt+1), ddzw(1:nzt+1)
    251230       REAL    ::  tend(nzb:nzt+1,nysg:nyng,nxlg:nxrg)
    252231       REAL, DIMENSION(nzb:nzt+1)      ::  vsus
     
    259238!
    260239!--       Interpolate eddy diffusivities on staggered gridpoints
    261           kmxp_x = 0.25 * ( km(k,j,i)+km(k,j,i+1)+km(k,j-1,i)+km(k,j-1,i+1) )
    262           kmxm_x = 0.25 * ( km(k,j,i)+km(k,j,i-1)+km(k,j-1,i)+km(k,j-1,i-1) )
    263           kmxp_y = kmxp_x
    264           kmxm_y = kmxm_x
    265 !
    266 !--       Increase diffusion at the outflow boundary in case of non-cyclic
    267 !--       lateral boundaries. Damping is only needed for velocity components
    268 !--       parallel to the outflow boundary in the direction normal to the
    269 !--       outflow boundary.
    270           IF ( .NOT. bc_lr_cyc )  THEN
    271              kmxp_x = MAX( kmxp_x, km_damp_x(i) )
    272              kmxm_x = MAX( kmxm_x, km_damp_x(i) )
    273           ENDIF
     240          kmxp = 0.25 * ( km(k,j,i)+km(k,j,i+1)+km(k,j-1,i)+km(k,j-1,i+1) )
     241          kmxm = 0.25 * ( km(k,j,i)+km(k,j,i-1)+km(k,j-1,i)+km(k,j-1,i-1) )
    274242
    275243          tend(k,j,i) = tend(k,j,i)                                          &
    276                       & + ( kmxp_x * ( v(k,j,i+1) - v(k,j,i)     ) * ddx     &
    277                       &   + kmxp_y * ( u(k,j,i+1) - u(k,j-1,i+1) ) * ddy     &
    278                       &   - kmxm_x * ( v(k,j,i) - v(k,j,i-1) ) * ddx         &
    279                       &   - kmxm_y * ( u(k,j,i) - u(k,j-1,i) ) * ddy         &
     244                      & + ( kmxp * ( v(k,j,i+1) - v(k,j,i)     ) * ddx       &
     245                      &   + kmxp * ( u(k,j,i+1) - u(k,j-1,i+1) ) * ddy       &
     246                      &   - kmxm * ( v(k,j,i) - v(k,j,i-1) ) * ddx           &
     247                      &   - kmxm * ( u(k,j,i) - u(k,j-1,i) ) * ddy           &
    280248                      &   ) * ddx                                            &
    281249                      & + 2.0 * (                                            &
     
    295263
    296264          DO  k = nzb_v_inner(j,i)+1, nzb_v_outer(j,i)
    297              kmxp_x = 0.25 * &
    298                       ( km(k,j,i)+km(k,j,i+1)+km(k,j-1,i)+km(k,j-1,i+1) )
    299              kmxm_x = 0.25 * &
    300                       ( km(k,j,i)+km(k,j,i-1)+km(k,j-1,i)+km(k,j-1,i-1) )
    301              kmxp_y = kmxp_x
    302              kmxm_y = kmxm_x
    303 !
    304 !--          Increase diffusion at the outflow boundary in case of
    305 !--          non-cyclic lateral boundaries. Damping is only needed for
    306 !--          velocity components parallel to the outflow boundary in
    307 !--          the direction normal to the outflow boundary.
    308              IF ( .NOT. bc_lr_cyc )  THEN
    309                 kmxp_x = MAX( kmxp_x, km_damp_x(i) )
    310                 kmxm_x = MAX( kmxm_x, km_damp_x(i) )
    311              ENDIF
     265             kmxp = 0.25 * &
     266                    ( km(k,j,i)+km(k,j,i+1)+km(k,j-1,i)+km(k,j-1,i+1) )
     267             kmxm = 0.25 * &
     268                    ( km(k,j,i)+km(k,j,i-1)+km(k,j-1,i)+km(k,j-1,i-1) )
    312269
    313270             tend(k,j,i) = tend(k,j,i)                                         &
     
    317274                                         ) * ddy2                              &
    318275                                 + (   fxp(j,i) * (                            &
    319                                   kmxp_x * ( v(k,j,i+1) - v(k,j,i)     ) * ddx &
    320                                 + kmxp_y * ( u(k,j,i+1) - u(k,j-1,i+1) ) * ddy &
     276                                  kmxp * ( v(k,j,i+1) - v(k,j,i)     ) * ddx  &
     277                                + kmxp * ( u(k,j,i+1) - u(k,j-1,i+1) ) * ddy  &
    321278                                                  )                            &
    322279                                     - fxm(j,i) * (                            &
    323                                   kmxm_x * ( v(k,j,i) - v(k,j,i-1) ) * ddx     &
    324                                 + kmxm_y * ( u(k,j,i) - u(k,j-1,i) ) * ddy     &
     280                                  kmxm * ( v(k,j,i) - v(k,j,i-1) ) * ddx       &
     281                                + kmxm * ( u(k,j,i) - u(k,j-1,i) ) * ddy       &
    325282                                                  )                            &
    326283                                     + wall_v(j,i) * vsus(k)                   &
Note: See TracChangeset for help on using the changeset viewer.