Ignore:
Timestamp:
Mar 20, 2014 8:40:49 AM (10 years ago)
Author:
raasch
Message:

ONLY-attribute added to USE-statements,
kind-parameters added to all INTEGER and REAL declaration statements,
kinds are defined in new module kinds,
old module precision_kind is removed,
revision history before 2012 removed,
comment fields (!:) to be used for variable explanations added to all variable declaration statements

File:
1 edited

Legend:

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

    r1310 r1320  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! ONLY-attribute added to USE-statements,
     23! kind-parameters added to all INTEGER and REAL declaration statements,
     24! kinds are defined in new module kinds,
     25! old module precision_kind is removed,
     26! revision history before 2012 removed,
     27! comment fields (!:) to be used for variable explanations added to
     28! all variable declaration statements
    2329!
    2430! Former revisions:
     
    4652! outflow damping layer removed
    4753! kmym_x/_y and kmyp_x/_y change to kmym and kmyp
    48 !
    49 ! 667 2010-12-23 12:06:00Z suehring/gryschka
    50 ! nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng
    51 !
    52 ! 366 2009-08-25 08:06:27Z raasch
    53 ! bc_ns replaced by bc_ns_cyc
    54 !
    55 ! 106 2007-08-16 14:30:26Z raasch
    56 ! Momentumflux at top (uswst) included as boundary condition,
    57 ! i loop is starting from nxlu (needed for non-cyclic boundary conditions)
    58 !
    59 ! 75 2007-03-22 09:54:05Z raasch
    60 ! Wall functions now include diabatic conditions, call of routine wall_fluxes,
    61 ! z0 removed from argument list, uxrp eliminated
    62 !
    63 ! 20 2007-02-26 00:12:32Z raasch
    64 ! Bugfix: ddzw dimensioned 1:nzt"+1"
    65 !
    66 ! RCS Log replace by Id keyword, revision history cleaned up
    67 !
    68 ! Revision 1.15  2006/02/23 10:35:35  raasch
    69 ! nzb_2d replaced by nzb_u_outer in horizontal diffusion and by nzb_u_inner
    70 ! or nzb_diff_u, respectively, in vertical diffusion,
    71 ! wall functions added for north and south walls, +z0 in argument list,
    72 ! terms containing w(k-1,..) are removed from the Prandtl-layer equation
    73 ! because they cause errors at the edges of topography
    74 ! WARNING: loops containing the MAX function are still not properly vectorized!
    7554!
    7655! Revision 1.1  1997/09/12 06:23:51  raasch
     
    10786    SUBROUTINE diffusion_u
    10887
    109        USE arrays_3d
    110        USE control_parameters
    111        USE grid_variables
    112        USE indices
     88       USE arrays_3d,                                                          &
     89           ONLY:  ddzu, ddzw, km, tend, u, usws, uswst, v, w
     90       
     91       USE control_parameters,                                                 &
     92           ONLY:  constant_top_momentumflux, topography, use_surface_fluxes,   &
     93                  use_top_fluxes
     94       
     95       USE grid_variables,                                                     &
     96           ONLY:  ddx, ddx2, ddy, fym, fyp, wall_u
     97       
     98       USE indices,                                                            &
     99           ONLY:  nxl, nxlu, nxr, nyn, nys, nzb, nzb_diff_u, nzb_u_inner,      &
     100                  nzb_u_outer, nzt, nzt_diff
     101       
     102       USE kinds
    113103
    114104       IMPLICIT NONE
    115105
    116        INTEGER ::  i, j, k
    117        REAL    ::  kmym, kmyp, kmzm, kmzp
    118 
    119        REAL, DIMENSION(nzb:nzt+1,nys:nyn,nxl:nxr) ::  usvs
     106       INTEGER(iwp) ::  i     !:
     107       INTEGER(iwp) ::  j     !:
     108       INTEGER(iwp) ::  k     !:
     109       REAL(wp)     ::  kmym  !:
     110       REAL(wp)     ::  kmyp  !:
     111       REAL(wp)     ::  kmzm  !:
     112       REAL(wp)     ::  kmzp  !:
     113
     114       REAL(wp), DIMENSION(nzb:nzt+1,nys:nyn,nxl:nxr) ::  usvs  !:
    120115
    121116!
     
    123118!--    if neccessary
    124119       IF ( topography /= 'flat' )  THEN
    125           CALL wall_fluxes( usvs, 1.0, 0.0, 0.0, 0.0, nzb_u_inner, &
     120          CALL wall_fluxes( usvs, 1.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, nzb_u_inner, &
    126121                            nzb_u_outer, wall_u )
    127122       ENDIF
     
    134129!
    135130!--             Interpolate eddy diffusivities on staggered gridpoints
    136                 kmyp = 0.25 * &
     131                kmyp = 0.25 *                                                  &
    137132                       ( km(k,j,i)+km(k,j+1,i)+km(k,j,i-1)+km(k,j+1,i-1) )
    138                 kmym = 0.25 * &
     133                kmym = 0.25 *                                                  &
    139134                       ( km(k,j,i)+km(k,j-1,i)+km(k,j,i-1)+km(k,j-1,i-1) )
    140135
    141                 tend(k,j,i) = tend(k,j,i)                                    &
    142                       & + 2.0 * (                                            &
    143                       &           km(k,j,i)   * ( u(k,j,i+1) - u(k,j,i)   )  &
    144                       &         - km(k,j,i-1) * ( u(k,j,i)   - u(k,j,i-1) )  &
    145                       &         ) * ddx2                                     &
    146                       & + ( kmyp * ( u(k,j+1,i) - u(k,j,i)     ) * ddy       &
    147                       &   + kmyp * ( v(k,j+1,i) - v(k,j+1,i-1) ) * ddx       &
    148                       &   - kmym * ( u(k,j,i) - u(k,j-1,i) ) * ddy           &
    149                       &   - kmym * ( v(k,j,i) - v(k,j,i-1) ) * ddx           &
     136                tend(k,j,i) = tend(k,j,i)                                      &
     137                      & + 2.0 * (                                              &
     138                      &           km(k,j,i)   * ( u(k,j,i+1) - u(k,j,i)   )    &
     139                      &         - km(k,j,i-1) * ( u(k,j,i)   - u(k,j,i-1) )    &
     140                      &         ) * ddx2                                       &
     141                      & + ( kmyp * ( u(k,j+1,i) - u(k,j,i)     ) * ddy         &
     142                      &   + kmyp * ( v(k,j+1,i) - v(k,j+1,i-1) ) * ddx         &
     143                      &   - kmym * ( u(k,j,i) - u(k,j-1,i) ) * ddy             &
     144                      &   - kmym * ( v(k,j,i) - v(k,j,i-1) ) * ddx             &
    150145                      &   ) * ddy
    151146             ENDDO
     
    156151
    157152                DO  k = nzb_u_inner(j,i)+1, nzb_u_outer(j,i)
    158                    kmyp = 0.25 * &
     153                   kmyp = 0.25 *                                               &
    159154                          ( km(k,j,i)+km(k,j+1,i)+km(k,j,i-1)+km(k,j+1,i-1) )
    160                    kmym = 0.25 * &
     155                   kmym = 0.25 *                                               &
    161156                          ( km(k,j,i)+km(k,j-1,i)+km(k,j,i-1)+km(k,j-1,i-1) )
    162157
     
    185180!
    186181!--             Interpolate eddy diffusivities on staggered gridpoints
    187                 kmzp = 0.25 * &
     182                kmzp = 0.25 *                                                  &
    188183                       ( km(k,j,i)+km(k+1,j,i)+km(k,j,i-1)+km(k+1,j,i-1) )
    189                 kmzm = 0.25 * &
     184                kmzm = 0.25 *                                                  &
    190185                       ( km(k,j,i)+km(k-1,j,i)+km(k,j,i-1)+km(k-1,j,i-1) )
    191186
    192                 tend(k,j,i) = tend(k,j,i)                                    &
    193                       & + ( kmzp * ( ( u(k+1,j,i) - u(k,j,i)   ) * ddzu(k+1) &
    194                       &            + ( w(k,j,i)   - w(k,j,i-1) ) * ddx       &
    195                       &            )                                         &
    196                       &   - kmzm * ( ( u(k,j,i)   - u(k-1,j,i)   ) * ddzu(k) &
    197                       &            + ( w(k-1,j,i) - w(k-1,j,i-1) ) * ddx     &
    198                       &            )                                          &
     187                tend(k,j,i) = tend(k,j,i)                                      &
     188                      & + ( kmzp * ( ( u(k+1,j,i) - u(k,j,i)   ) * ddzu(k+1)   &
     189                      &            + ( w(k,j,i)   - w(k,j,i-1) ) * ddx         &
     190                      &            )                                           &
     191                      &   - kmzm * ( ( u(k,j,i)   - u(k-1,j,i)   ) * ddzu(k)   &
     192                      &            + ( w(k-1,j,i) - w(k-1,j,i-1) ) * ddx       &
     193                      &            )                                           &
    199194                      &   ) * ddzw(k)
    200195             ENDDO
     
    206201!--          Difference quotient of the momentum flux is not formed over half
    207202!--          of the grid spacing (2.0*ddzw(k)) any more, since the comparison
    208 !--          with other (LES) modell showed that the values of the momentum
     203!--          with other (LES) models showed that the values of the momentum
    209204!--          flux becomes too large in this case.
    210205!--          The term containing w(k-1,..) (see above equation) is removed here
     
    214209!
    215210!--             Interpolate eddy diffusivities on staggered gridpoints
    216                 kmzp = 0.25 * &
     211                kmzp = 0.25 *                                                  &
    217212                      ( km(k,j,i)+km(k+1,j,i)+km(k,j,i-1)+km(k+1,j,i-1) )
    218                 kmzm = 0.25 * &
     213                kmzm = 0.25 *                                                  &
    219214                      ( km(k,j,i)+km(k-1,j,i)+km(k,j,i-1)+km(k-1,j,i-1) )
    220215
    221                 tend(k,j,i) = tend(k,j,i)                                    &
    222                       & + ( kmzp * ( w(k,j,i)   - w(k,j,i-1)   ) * ddx       &
    223                       &   ) * ddzw(k)                                        &
    224                       & + ( kmzp * ( u(k+1,j,i) - u(k,j,i)     ) * ddzu(k+1) &
    225                       &   + usws(j,i)                                        &
     216                tend(k,j,i) = tend(k,j,i)                                      &
     217                      & + ( kmzp * ( w(k,j,i)   - w(k,j,i-1)   ) * ddx         &
     218                      &   ) * ddzw(k)                                          &
     219                      & + ( kmzp * ( u(k+1,j,i) - u(k,j,i)     ) * ddzu(k+1)   &
     220                      &   + usws(j,i)                                          &
    226221                      &   ) * ddzw(k)
    227222             ENDIF
     
    234229!
    235230!--             Interpolate eddy diffusivities on staggered gridpoints
    236                 kmzp = 0.25 * &
     231                kmzp = 0.25 *                                                  &
    237232                       ( km(k,j,i)+km(k+1,j,i)+km(k,j,i-1)+km(k+1,j,i-1) )
    238                 kmzm = 0.25 * &
     233                kmzm = 0.25 *                                                  &
    239234                       ( km(k,j,i)+km(k-1,j,i)+km(k,j,i-1)+km(k-1,j,i-1) )
    240235
    241                 tend(k,j,i) = tend(k,j,i)                                    &
    242                       & - ( kmzm * ( w(k-1,j,i) - w(k-1,j,i-1) ) * ddx       &
    243                       &   ) * ddzw(k)                                        &
    244                       & + ( -uswst(j,i)                                      &
    245                       &   - kmzm * ( u(k,j,i)   - u(k-1,j,i)   ) * ddzu(k)   &
     236                tend(k,j,i) = tend(k,j,i)                                      &
     237                      & - ( kmzm * ( w(k-1,j,i) - w(k-1,j,i-1) ) * ddx         &
     238                      &   ) * ddzw(k)                                          &
     239                      & + ( -uswst(j,i)                                        &
     240                      &   - kmzm * ( u(k,j,i)   - u(k-1,j,i)   ) * ddzu(k)     &
    246241                      &   ) * ddzw(k)
    247242             ENDIF
     
    258253    SUBROUTINE diffusion_u_acc
    259254
    260        USE arrays_3d
    261        USE control_parameters
    262        USE grid_variables
    263        USE indices
     255       USE arrays_3d,                                                          &
     256           ONLY:  ddzu, ddzw, km, tend, u, usws, uswst, v, w
     257       
     258       USE control_parameters,                                                 &
     259           ONLY:  constant_top_momentumflux, topography, use_surface_fluxes,   &
     260                  use_top_fluxes
     261       
     262       USE grid_variables,                                                     &
     263           ONLY:  ddx, ddx2, ddy, fym, fyp, wall_u
     264       
     265       USE indices,                                                            &
     266           ONLY:  i_left, i_right, j_north, j_south, nxl, nxr, nyn, nys, nzb,  &
     267                  nzb_diff_u, nzb_u_inner, nzb_u_outer, nzt, nzt_diff
     268       
     269       USE kinds
    264270
    265271       IMPLICIT NONE
    266272
    267        INTEGER ::  i, j, k
    268        REAL    ::  kmym, kmyp, kmzm, kmzp
    269 
    270        REAL, DIMENSION(nzb:nzt+1,nys:nyn,nxl:nxr) ::  usvs
     273       INTEGER(iwp) ::  i     !:
     274       INTEGER(iwp) ::  j     !:
     275       INTEGER(iwp) ::  k     !:
     276       REAL(wp)     ::  kmym  !:
     277       REAL(wp)     ::  kmyp  !:
     278       REAL(wp)     ::  kmzm  !:
     279       REAL(wp)     ::  kmzp  !:
     280
     281       REAL(wp), DIMENSION(nzb:nzt+1,nys:nyn,nxl:nxr) ::  usvs  !:
    271282       !$acc declare create ( usvs )
    272283
     
    275286!--    if neccessary
    276287       IF ( topography /= 'flat' )  THEN
    277           CALL wall_fluxes_acc( usvs, 1.0, 0.0, 0.0, 0.0, nzb_u_inner, &
    278                                 nzb_u_outer, wall_u )
    279        ENDIF
    280 
    281        !$acc kernels present ( u, v, w, km, tend, usws, uswst )   &
    282        !$acc         present ( ddzu, ddzw, fym, fyp, wall_u )           &
     288          CALL wall_fluxes_acc( usvs, 1.0_wp, 0.0_wp, 0.0_wp, 0.0_wp,          &
     289                                nzb_u_inner, nzb_u_outer, wall_u )
     290       ENDIF
     291
     292       !$acc kernels present ( u, v, w, km, tend, usws, uswst )                &
     293       !$acc         present ( ddzu, ddzw, fym, fyp, wall_u )                  &
    283294       !$acc         present ( nzb_u_inner, nzb_u_outer, nzb_diff_u )
    284295       DO  i = i_left, i_right
     
    290301!
    291302!--                Interpolate eddy diffusivities on staggered gridpoints
    292                    kmyp = 0.25 * &
     303                   kmyp = 0.25 *                                               &
    293304                          ( km(k,j,i)+km(k,j+1,i)+km(k,j,i-1)+km(k,j+1,i-1) )
    294                    kmym = 0.25 * &
     305                   kmym = 0.25 *                                               &
    295306                          ( km(k,j,i)+km(k,j-1,i)+km(k,j,i-1)+km(k,j-1,i-1) )
    296307
     
    311322!--          Wall functions at the north and south walls, respectively
    312323             DO  k = 1, nzt
    313                 IF( k > nzb_u_inner(j,i)  .AND.  k <= nzb_u_outer(j,i)  .AND. &
     324                IF( k > nzb_u_inner(j,i)  .AND.  k <= nzb_u_outer(j,i)  .AND.  &
    314325                    wall_u(j,i) /= 0.0 )  THEN
    315326
    316                    kmyp = 0.25 * &
     327                   kmyp = 0.25 *                                               &
    317328                          ( km(k,j,i)+km(k,j+1,i)+km(k,j,i-1)+km(k,j+1,i-1) )
    318                    kmym = 0.25 * &
     329                   kmym = 0.25 *                                               &
    319330                          ( km(k,j,i)+km(k,j-1,i)+km(k,j,i-1)+km(k,j-1,i-1) )
    320331
     
    344355!
    345356!--                Interpolate eddy diffusivities on staggered gridpoints
    346                    kmzp = 0.25 * &
     357                   kmzp = 0.25 *                                               &
    347358                          ( km(k,j,i)+km(k+1,j,i)+km(k,j,i-1)+km(k+1,j,i-1) )
    348                    kmzm = 0.25 * &
     359                   kmzm = 0.25 *                                               &
    349360                          ( km(k,j,i)+km(k-1,j,i)+km(k,j,i-1)+km(k-1,j,i-1) )
    350361
     
    369380!--    Difference quotient of the momentum flux is not formed over half
    370381!--    of the grid spacing (2.0*ddzw(k)) any more, since the comparison
    371 !--    with other (LES) modell showed that the values of the momentum
     382!--    with other (LES) models showed that the values of the momentum
    372383!--    flux becomes too large in this case.
    373384!--    The term containing w(k-1,..) (see above equation) is removed here
     
    381392!
    382393!--             Interpolate eddy diffusivities on staggered gridpoints
    383                 kmzp = 0.25 * &
     394                kmzp = 0.25 *                                                  &
    384395                      ( km(k,j,i)+km(k+1,j,i)+km(k,j,i-1)+km(k+1,j,i-1) )
    385                 kmzm = 0.25 * &
     396                kmzm = 0.25 *                                                  &
    386397                      ( km(k,j,i)+km(k-1,j,i)+km(k,j,i-1)+km(k-1,j,i-1) )
    387398
    388                 tend(k,j,i) = tend(k,j,i)                                    &
    389                       & + ( kmzp * ( w(k,j,i)   - w(k,j,i-1)   ) * ddx       &
    390                       &   ) * ddzw(k)                                        &
    391                       & + ( kmzp * ( u(k+1,j,i) - u(k,j,i)     ) * ddzu(k+1) &
    392                       &   + usws(j,i)                                        &
     399                tend(k,j,i) = tend(k,j,i)                                      &
     400                      & + ( kmzp * ( w(k,j,i)   - w(k,j,i-1)   ) * ddx         &
     401                      &   ) * ddzw(k)                                          &
     402                      & + ( kmzp * ( u(k+1,j,i) - u(k,j,i)     ) * ddzu(k+1)   &
     403                      &   + usws(j,i)                                          &
    393404                      &   ) * ddzw(k)
    394405             ENDDO
     
    409420!
    410421!--             Interpolate eddy diffusivities on staggered gridpoints
    411                 kmzp = 0.25 * &
     422                kmzp = 0.25 *                                                  &
    412423                       ( km(k,j,i)+km(k+1,j,i)+km(k,j,i-1)+km(k+1,j,i-1) )
    413                 kmzm = 0.25 * &
     424                kmzm = 0.25 *                                                  &
    414425                       ( km(k,j,i)+km(k-1,j,i)+km(k,j,i-1)+km(k-1,j,i-1) )
    415426
    416                 tend(k,j,i) = tend(k,j,i)                                    &
    417                       & - ( kmzm * ( w(k-1,j,i) - w(k-1,j,i-1) ) * ddx       &
    418                       &   ) * ddzw(k)                                        &
    419                       & + ( -uswst(j,i)                                      &
    420                       &   - kmzm * ( u(k,j,i)   - u(k-1,j,i)   ) * ddzu(k)   &
     427                tend(k,j,i) = tend(k,j,i)                                      &
     428                      & - ( kmzm * ( w(k-1,j,i) - w(k-1,j,i-1) ) * ddx         &
     429                      &   ) * ddzw(k)                                          &
     430                      & + ( -uswst(j,i)                                        &
     431                      &   - kmzm * ( u(k,j,i)   - u(k-1,j,i)   ) * ddzu(k)     &
    421432                      &   ) * ddzw(k)
    422433             ENDDO
     
    434445    SUBROUTINE diffusion_u_ij( i, j )
    435446
    436        USE arrays_3d
    437        USE control_parameters
    438        USE grid_variables
    439        USE indices
     447       USE arrays_3d,                                                          &
     448           ONLY:  ddzu, ddzw, km, tend, u, usws, uswst, v, w
     449       
     450       USE control_parameters,                                                 &
     451           ONLY:  constant_top_momentumflux, use_surface_fluxes, use_top_fluxes
     452       
     453       USE grid_variables,                                                     &
     454           ONLY:  ddx, ddx2, ddy, fym, fyp, wall_u
     455       
     456       USE indices,                                                            &
     457           ONLY:  nzb, nzb_diff_u, nzb_u_inner, nzb_u_outer, nzt, nzt_diff
     458       
     459       USE kinds
    440460
    441461       IMPLICIT NONE
    442462
    443        INTEGER ::  i, j, k
    444        REAL    ::  kmym, kmyp, kmzm, kmzp
    445 
    446        REAL, DIMENSION(nzb:nzt+1) ::  usvs
     463       INTEGER(iwp) ::  i     !:
     464       INTEGER(iwp) ::  j     !:
     465       INTEGER(iwp) ::  k     !:
     466       REAL(wp)     ::  kmym  !:
     467       REAL(wp)     ::  kmyp  !:
     468       REAL(wp)     ::  kmzm  !:
     469       REAL(wp)     ::  kmzp  !:
     470
     471       REAL(wp), DIMENSION(nzb:nzt+1) ::  usvs  !:
    447472
    448473!
     
    454479          kmym = 0.25 * ( km(k,j,i)+km(k,j-1,i)+km(k,j,i-1)+km(k,j-1,i-1) )
    455480
    456           tend(k,j,i) = tend(k,j,i)                                          &
    457                       & + 2.0 * (                                            &
    458                       &           km(k,j,i)   * ( u(k,j,i+1) - u(k,j,i)   )  &
    459                       &         - km(k,j,i-1) * ( u(k,j,i)   - u(k,j,i-1) )  &
    460                       &         ) * ddx2                                     &
    461                       & + ( kmyp * ( u(k,j+1,i) - u(k,j,i)     ) * ddy       &
    462                       &   + kmyp * ( v(k,j+1,i) - v(k,j+1,i-1) ) * ddx       &
    463                       &   - kmym * ( u(k,j,i) - u(k,j-1,i) ) * ddy           &
    464                       &   - kmym * ( v(k,j,i) - v(k,j,i-1) ) * ddx           &
     481          tend(k,j,i) = tend(k,j,i)                                            &
     482                      & + 2.0 * (                                              &
     483                      &           km(k,j,i)   * ( u(k,j,i+1) - u(k,j,i)   )    &
     484                      &         - km(k,j,i-1) * ( u(k,j,i)   - u(k,j,i-1) )    &
     485                      &         ) * ddx2                                       &
     486                      & + ( kmyp * ( u(k,j+1,i) - u(k,j,i)     ) * ddy         &
     487                      &   + kmyp * ( v(k,j+1,i) - v(k,j+1,i-1) ) * ddx         &
     488                      &   - kmym * ( u(k,j,i) - u(k,j-1,i) ) * ddy             &
     489                      &   - kmym * ( v(k,j,i) - v(k,j,i-1) ) * ddx             &
    465490                      &   ) * ddy
    466491       ENDDO
     
    472497!
    473498!--       Calculate the horizontal momentum flux u'v'
    474           CALL wall_fluxes( i, j, nzb_u_inner(j,i)+1, nzb_u_outer(j,i),  &
    475                             usvs, 1.0, 0.0, 0.0, 0.0 )
     499          CALL wall_fluxes( i, j, nzb_u_inner(j,i)+1, nzb_u_outer(j,i),        &
     500                            usvs, 1.0_wp, 0.0_wp, 0.0_wp, 0.0_wp )
    476501
    477502          DO  k = nzb_u_inner(j,i)+1, nzb_u_outer(j,i)
     
    506531          kmzm = 0.25 * ( km(k,j,i)+km(k-1,j,i)+km(k,j,i-1)+km(k-1,j,i-1) )
    507532
    508           tend(k,j,i) = tend(k,j,i)                                          &
    509                       & + ( kmzp * ( ( u(k+1,j,i) - u(k,j,i)   ) * ddzu(k+1) &
    510                       &            + ( w(k,j,i)   - w(k,j,i-1) ) * ddx       &
    511                       &            )                                         &
    512                       &   - kmzm * ( ( u(k,j,i)   - u(k-1,j,i)   ) * ddzu(k) &
    513                       &            + ( w(k-1,j,i) - w(k-1,j,i-1) ) * ddx     &
    514                       &            )                                         &
     533          tend(k,j,i) = tend(k,j,i)                                            &
     534                      & + ( kmzp * ( ( u(k+1,j,i) - u(k,j,i)   ) * ddzu(k+1)   &
     535                      &            + ( w(k,j,i)   - w(k,j,i-1) ) * ddx         &
     536                      &            )                                           &
     537                      &   - kmzm * ( ( u(k,j,i)   - u(k-1,j,i)   ) * ddzu(k)   &
     538                      &            + ( w(k-1,j,i) - w(k-1,j,i-1) ) * ddx       &
     539                      &            )                                           &
    515540                      &   ) * ddzw(k)
    516541       ENDDO
     
    522547!--    Difference quotient of the momentum flux is not formed over half of
    523548!--    the grid spacing (2.0*ddzw(k)) any more, since the comparison with
    524 !--    other (LES) modell showed that the values of the momentum flux becomes
     549!--    other (LES) models showed that the values of the momentum flux becomes
    525550!--    too large in this case.
    526551!--    The term containing w(k-1,..) (see above equation) is removed here
     
    533558          kmzm = 0.25 * ( km(k,j,i)+km(k-1,j,i)+km(k,j,i-1)+km(k-1,j,i-1) )
    534559
    535           tend(k,j,i) = tend(k,j,i)                                          &
    536                       & + ( kmzp * ( w(k,j,i)   - w(k,j,i-1)   ) * ddx       &
    537                       &   ) * ddzw(k)                                        &
    538                       & + ( kmzp * ( u(k+1,j,i) - u(k,j,i)     ) * ddzu(k+1) &
    539                       &   + usws(j,i)                                        &
     560          tend(k,j,i) = tend(k,j,i)                                            &
     561                      & + ( kmzp * ( w(k,j,i)   - w(k,j,i-1)   ) * ddx         &
     562                      &   ) * ddzw(k)                                          &
     563                      & + ( kmzp * ( u(k+1,j,i) - u(k,j,i)     ) * ddzu(k+1)   &
     564                      &   + usws(j,i)                                          &
    540565                      &   ) * ddzw(k)
    541566       ENDIF
     
    548573!
    549574!--       Interpolate eddy diffusivities on staggered gridpoints
    550           kmzp = 0.25 * &
     575          kmzp = 0.25 *                                                        &
    551576                 ( km(k,j,i)+km(k+1,j,i)+km(k,j,i-1)+km(k+1,j,i-1) )
    552           kmzm = 0.25 * &
     577          kmzm = 0.25 *                                                        &
    553578                 ( km(k,j,i)+km(k-1,j,i)+km(k,j,i-1)+km(k-1,j,i-1) )
    554579
    555           tend(k,j,i) = tend(k,j,i)                                          &
    556                       & - ( kmzm * ( w(k-1,j,i) - w(k-1,j,i-1) ) * ddx       &
    557                       &   ) * ddzw(k)                                        &
    558                       & + ( -uswst(j,i)                                      &
    559                       &   - kmzm * ( u(k,j,i)   - u(k-1,j,i)   ) * ddzu(k)   &
     580          tend(k,j,i) = tend(k,j,i)                                            &
     581                      & - ( kmzm * ( w(k-1,j,i) - w(k-1,j,i-1) ) * ddx         &
     582                      &   ) * ddzw(k)                                          &
     583                      & + ( -uswst(j,i)                                        &
     584                      &   - kmzm * ( u(k,j,i)   - u(k-1,j,i)   ) * ddzu(k)     &
    560585                      &   ) * ddzw(k)
    561586       ENDIF
Note: See TracChangeset for help on using the changeset viewer.