Ignore:
Timestamp:
Mar 20, 2014 8:40:49 AM (8 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/wall_fluxes.f90

    r1310 r1320  
    2020! Current revisions:
    2121! -----------------
     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
    2229!
    2330!
     
    4148! 1015 2012-09-27 09:23:24Z raasch
    4249! accelerator version (*_acc) added
    43 !
    44 ! 187 2008-08-06 16:25:09Z letzel
    45 ! Bugfix: Modification of the evaluation of the vertical turbulent momentum
    46 ! fluxes u'w' and v'w (see prandtl_fluxes), this requires the calculation of
    47 ! us_wall (and vel_total, u_i, v_i, ws) also in wall_fluxes_e.
    48 ! Bugfix: change definition of us_wall from 1D to 2D
    49 ! Bugfix: storage of rifs to rifs_wall in wall_fluxes_e removed
    50 ! Change: add 'minus' sign to fluxes produced by subroutine wall_fluxes_e for
    51 ! consistency with subroutine wall_fluxes
    52 ! Change: Modification of the integrated version of the profile function for
    53 ! momentum for unstable stratification
    5450!
    5551! Initial version (2007/03/07)
     
    9086! Call for all grid points
    9187!------------------------------------------------------------------------------!
    92     SUBROUTINE wall_fluxes( wall_flux, a, b, c1, c2, nzb_uvw_inner, &
     88    SUBROUTINE wall_fluxes( wall_flux, a, b, c1, c2, nzb_uvw_inner,            &
    9389                            nzb_uvw_outer, wall )
    9490
    95        USE arrays_3d
    96        USE control_parameters
    97        USE grid_variables
    98        USE indices
    99        USE statistics
     91       USE arrays_3d,                                                          &
     92           ONLY:  rif_wall, u, v, w, z0, pt
     93       
     94       USE control_parameters,                                                 &
     95           ONLY:  g, kappa, rif_max, rif_min
     96       
     97       USE grid_variables,                                                     &
     98           ONLY:  dx, dy
     99       
     100       USE indices,                                                            &
     101           ONLY:  nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nzb, nzt
     102       
     103       USE kinds
     104       
     105       USE statistics,                                                         &
     106           ONLY:  hom
    100107
    101108       IMPLICIT NONE
    102109
    103        INTEGER ::  i, j, k, wall_index
    104 
    105        INTEGER, DIMENSION(nysg:nyng,nxlg:nxrg) ::  nzb_uvw_inner, &
    106                                                        nzb_uvw_outer
    107        REAL ::  a, b, c1, c2, h1, h2, zp
    108        REAL ::  pts, pt_i, rifs, u_i, v_i, us_wall, vel_total, ws, wspts
    109 
    110        REAL, DIMENSION(nysg:nyng,nxlg:nxrg)   ::  wall
    111        REAL, DIMENSION(nzb:nzt+1,nys:nyn,nxl:nxr) ::  wall_flux
     110       INTEGER(iwp) ::  i            !:
     111       INTEGER(iwp) ::  j            !:
     112       INTEGER(iwp) ::  k            !:
     113       INTEGER(iwp) ::  wall_index   !:
     114
     115       INTEGER(iwp),                                                           &
     116          DIMENSION(nysg:nyng,nxlg:nxrg) ::                                    &
     117             nzb_uvw_inner   !:
     118       INTEGER(iwp),                                                           &
     119          DIMENSION(nysg:nyng,nxlg:nxrg) ::                                    &
     120             nzb_uvw_outer   !:
     121       
     122       REAL(wp) ::  a           !:
     123       REAL(wp) ::  b           !:
     124       REAL(wp) ::  c1          !:
     125       REAL(wp) ::  c2          !:
     126       REAL(wp) ::  h1          !:
     127       REAL(wp) ::  h2          !:
     128       REAL(wp) ::  zp          !:
     129       REAL(wp) ::  pts         !:
     130       REAL(wp) ::  pt_i        !:
     131       REAL(wp) ::  rifs        !:
     132       REAL(wp) ::  u_i         !:
     133       REAL(wp) ::  v_i         !:
     134       REAL(wp) ::  us_wall     !:
     135       REAL(wp) ::  vel_total   !:
     136       REAL(wp) ::  ws          !:
     137       REAL(wp) ::  wspts       !:
     138
     139       REAL(wp),                                                               &
     140          DIMENSION(nysg:nyng,nxlg:nxrg) ::                                    &
     141             wall   !:
     142       
     143       REAL(wp),                                                               &
     144          DIMENSION(nzb:nzt+1,nys:nyn,nxl:nxr) ::                              &
     145             wall_flux   !:
    112146
    113147
     
    129163                   rifs  = rif_wall(k,j,i,wall_index)
    130164
    131                    u_i   = a * u(k,j,i) + c1 * 0.25 * &
     165                   u_i   = a * u(k,j,i) + c1 * 0.25 *                          &
    132166                           ( u(k+1,j,i+1) + u(k+1,j,i) + u(k,j,i+1) + u(k,j,i) )
    133167
    134                    v_i   = b * v(k,j,i) + c2 * 0.25 * &
     168                   v_i   = b * v(k,j,i) + c2 * 0.25 *                          &
    135169                           ( v(k+1,j+1,i) + v(k+1,j,i) + v(k,j+1,i) + v(k,j,i) )
    136170
     
    139173                   + b * ( w(k-1,j-1,i) + w(k-1,j,i) + w(k,j-1,i) + w(k,j,i) ) &
    140174                                                           )
    141                    pt_i  = 0.5 * ( pt(k,j,i) + a *  pt(k,j,i-1) + &
     175                   pt_i  = 0.5 * ( pt(k,j,i) + a *  pt(k,j,i-1) +              &
    142176                                   b * pt(k,j-1,i) + ( c1 + c2 ) * pt(k+1,j,i) )
    143177
     
    176210!--                (4) Compute zp/L (corresponds to neutral Richardson flux
    177211!--                    number rifs)
    178                    rifs = -1.0 * zp * kappa * g * wspts / ( pt_i * &
     212                   rifs = -1.0 * zp * kappa * g * wspts / ( pt_i *             &
    179213                                                        ( us_wall**3 + 1E-30 ) )
    180214
     
    234268! Call for all grid points - accelerator version
    235269!------------------------------------------------------------------------------!
    236     SUBROUTINE wall_fluxes_acc( wall_flux, a, b, c1, c2, nzb_uvw_inner, &
     270    SUBROUTINE wall_fluxes_acc( wall_flux, a, b, c1, c2, nzb_uvw_inner,        &
    237271                                nzb_uvw_outer, wall )
    238272
    239        USE arrays_3d
    240        USE control_parameters
    241        USE grid_variables
    242        USE indices
    243        USE statistics
     273       USE arrays_3d,                                                          &
     274           ONLY:  rif_wall, pt, u, v, w, z0
     275       
     276       USE control_parameters,                                                 &
     277           ONLY:  g, kappa, rif_max, rif_min
     278       
     279       USE grid_variables,                                                     &
     280           ONLY:  dx, dy
     281       
     282       USE indices,                                                            &
     283           ONLY:  i_left, i_right, j_north, j_south, nxl, nxlg, nxr, nxrg,     &
     284                  nyn, nyng, nys, nysg, nzb, nzt
     285       
     286       USE kinds
     287       
     288       USE statistics,                                                         &
     289           ONLY:  hom
    244290
    245291       IMPLICIT NONE
    246292
    247        INTEGER ::  i, j, k, max_outer, min_inner, wall_index
    248 
    249        INTEGER, DIMENSION(nysg:nyng,nxlg:nxrg) ::  nzb_uvw_inner, &
    250                                                    nzb_uvw_outer
    251        REAL ::  a, b, c1, c2, h1, h2, zp
    252        REAL ::  pts, pt_i, rifs, u_i, v_i, us_wall, vel_total, ws, wspts
    253 
    254        REAL, DIMENSION(nysg:nyng,nxlg:nxrg)   ::  wall
    255        REAL, DIMENSION(nzb:nzt+1,nys:nyn,nxl:nxr) ::  wall_flux
     293       INTEGER(iwp) ::  i            !:
     294       INTEGER(iwp) ::  j            !:
     295       INTEGER(iwp) ::  k            !:
     296       INTEGER(iwp) ::  max_outer    !:
     297       INTEGER(iwp) ::  min_inner    !:
     298       INTEGER(iwp) ::  wall_index   !:
     299
     300       INTEGER(iwp),                                                           &
     301          DIMENSION(nysg:nyng,nxlg:nxrg) ::                                    &
     302             nzb_uvw_inner   !:
     303       INTEGER(iwp),                                                           &
     304          DIMENSION(nysg:nyng,nxlg:nxrg) ::                                    &
     305             nzb_uvw_outer   !:
     306       
     307       REAL(wp) ::  a           !:
     308       REAL(wp) ::  b           !:
     309       REAL(wp) ::  c1          !:
     310       REAL(wp) ::  c2          !:
     311       REAL(wp) ::  h1          !:
     312       REAL(wp) ::  h2          !:
     313       REAL(wp) ::  zp          !:
     314       REAL(wp) ::  pts         !:
     315       REAL(wp) ::  pt_i        !:
     316       REAL(wp) ::  rifs        !:
     317       REAL(wp) ::  u_i         !:
     318       REAL(wp) ::  v_i         !:
     319       REAL(wp) ::  us_wall     !:
     320       REAL(wp) ::  vel_total   !:
     321       REAL(wp) ::  ws          !:
     322       REAL(wp) ::  wspts       !:
     323
     324       REAL(wp),                                                               &
     325          DIMENSION(nysg:nyng,nxlg:nxrg) ::                                    &
     326             wall   !:
     327       
     328       REAL(wp),                                                               &
     329          DIMENSION(nzb:nzt+1,nys:nyn,nxl:nxr) ::                              &
     330             wall_flux   !:
    256331
    257332
     
    280355                   rifs  = rif_wall(k,j,i,wall_index)
    281356
    282                    u_i   = a * u(k,j,i) + c1 * 0.25 * &
     357                   u_i   = a * u(k,j,i) + c1 * 0.25 *                          &
    283358                           ( u(k+1,j,i+1) + u(k+1,j,i) + u(k,j,i+1) + u(k,j,i) )
    284359
    285                    v_i   = b * v(k,j,i) + c2 * 0.25 * &
     360                   v_i   = b * v(k,j,i) + c2 * 0.25 *                          &
    286361                           ( v(k+1,j+1,i) + v(k+1,j,i) + v(k,j+1,i) + v(k,j,i) )
    287362
     
    290365                   + b * ( w(k-1,j-1,i) + w(k-1,j,i) + w(k,j-1,i) + w(k,j,i) ) &
    291366                                                           )
    292                    pt_i  = 0.5 * ( pt(k,j,i) + a *  pt(k,j,i-1) + &
     367                   pt_i  = 0.5 * ( pt(k,j,i) + a *  pt(k,j,i-1) +              &
    293368                                   b * pt(k,j-1,i) + ( c1 + c2 ) * pt(k+1,j,i) )
    294369
     
    327402!--                (4) Compute zp/L (corresponds to neutral Richardson flux
    328403!--                    number rifs)
    329                    rifs = -1.0 * zp * kappa * g * wspts / ( pt_i * &
     404                   rifs = -1.0 * zp * kappa * g * wspts / ( pt_i *             &
    330405                                                        ( us_wall**3 + 1E-30 ) )
    331406
     
    372447                   rif_wall(k,j,i,wall_index) = rifs
    373448
    374 !                ENDIF
    375 
    376449                ENDDO
    377450
     
    390463    SUBROUTINE wall_fluxes_ij( i, j, nzb_w, nzt_w, wall_flux, a, b, c1, c2 )
    391464
    392        USE arrays_3d
    393        USE control_parameters
    394        USE grid_variables
    395        USE indices
    396        USE statistics
     465       USE arrays_3d,                                                          &
     466           ONLY:  rif_wall, pt, u, v, w, z0
     467       
     468       USE control_parameters,                                                 &
     469           ONLY:  g, kappa, rif_max, rif_min
     470       
     471       USE grid_variables,                                                     &
     472           ONLY:  dx, dy
     473       
     474       USE indices,                                                            &
     475           ONLY:  nzb, nzt
     476       
     477       USE kinds
     478       
     479       USE statistics,                                                         &
     480           ONLY:  hom
    397481
    398482       IMPLICIT NONE
    399483
    400        INTEGER ::  i, j, k, nzb_w, nzt_w, wall_index
    401        REAL    ::  a, b, c1, c2, h1, h2, zp
    402 
    403        REAL ::  pts, pt_i, rifs, u_i, v_i, us_wall, vel_total, ws, wspts
    404 
    405        REAL, DIMENSION(nzb:nzt+1) ::  wall_flux
     484       INTEGER(iwp) ::  i            !:
     485       INTEGER(iwp) ::  j            !:
     486       INTEGER(iwp) ::  k            !:
     487       INTEGER(iwp) ::  nzb_w        !:
     488       INTEGER(iwp) ::  nzt_w        !:
     489       INTEGER(iwp) ::  wall_index   !:
     490       
     491       REAL(wp) ::  a           !:
     492       REAL(wp) ::  b           !:
     493       REAL(wp) ::  c1          !:
     494       REAL(wp) ::  c2          !:
     495       REAL(wp) ::  h1          !:
     496       REAL(wp) ::  h2          !:
     497       REAL(wp) ::  zp          !:
     498       REAL(wp) ::  pts         !:
     499       REAL(wp) ::  pt_i        !:
     500       REAL(wp) ::  rifs        !:
     501       REAL(wp) ::  u_i         !:
     502       REAL(wp) ::  v_i         !:
     503       REAL(wp) ::  us_wall     !:
     504       REAL(wp) ::  vel_total   !:
     505       REAL(wp) ::  ws          !:
     506       REAL(wp) ::  wspts       !:
     507
     508       REAL(wp), DIMENSION(nzb:nzt+1) ::  wall_flux   !:
    406509
    407510
     
    419522          rifs  = rif_wall(k,j,i,wall_index)
    420523
    421           u_i   = a * u(k,j,i) + c1 * 0.25 * &
     524          u_i   = a * u(k,j,i) + c1 * 0.25 *                                   &
    422525                  ( u(k+1,j,i+1) + u(k+1,j,i) + u(k,j,i+1) + u(k,j,i) )
    423526
    424           v_i   = b * v(k,j,i) + c2 * 0.25 * &
     527          v_i   = b * v(k,j,i) + c2 * 0.25 *                                   &
    425528                  ( v(k+1,j+1,i) + v(k+1,j,i) + v(k,j+1,i) + v(k,j,i) )
    426529
     
    429532                   + b * ( w(k-1,j-1,i) + w(k-1,j,i) + w(k,j-1,i) + w(k,j,i) ) &
    430533                                                  )
    431           pt_i  = 0.5 * ( pt(k,j,i) + a *  pt(k,j,i-1) + b * pt(k,j-1,i)  &
     534          pt_i  = 0.5 * ( pt(k,j,i) + a *  pt(k,j,i-1) + b * pt(k,j-1,i)       &
    432535                          + ( c1 + c2 ) * pt(k+1,j,i) )
    433536
     
    455558             h2 = SQRT( SQRT( 1.0 - 16.0 * rifs * z0(j,i) / zp ) )
    456559
    457              us_wall = kappa * vel_total / (                          &
    458                   LOG( zp / z0(j,i) ) -                               &
    459                   LOG( ( 1.0 + h1 )**2 * ( 1.0 + h1**2 ) / (          &
    460                        ( 1.0 + h2 )**2 * ( 1.0 + h2**2 )   ) ) +      &
    461                        2.0 * ( ATAN( h1 ) - ATAN( h2 ) )              &
     560             us_wall = kappa * vel_total / (                                   &
     561                  LOG( zp / z0(j,i) ) -                                        &
     562                  LOG( ( 1.0 + h1 )**2 * ( 1.0 + h1**2 ) / (                   &
     563                       ( 1.0 + h2 )**2 * ( 1.0 + h2**2 )   ) ) +               &
     564                       2.0 * ( ATAN( h1 ) - ATAN( h2 ) )                       &
    462565                                           )
    463566          ENDIF
     
    483586!
    484587!--          Stable stratification (and neutral)
    485              wall_flux(k) = kappa *                                          &
    486                             ( a*u(k,j,i) + b*v(k,j,i) + (c1+c2)*w(k,j,i) ) / &
    487                             (  LOG( zp / z0(j,i) ) +                         &
    488                                5.0 * rifs * ( zp - z0(j,i) ) / zp            &
     588             wall_flux(k) = kappa *                                            &
     589                            ( a*u(k,j,i) + b*v(k,j,i) + (c1+c2)*w(k,j,i) ) /   &
     590                            (  LOG( zp / z0(j,i) ) +                           &
     591                               5.0 * rifs * ( zp - z0(j,i) ) / zp              &
    489592                            )
    490593          ELSE
     
    495598             h2 = SQRT( SQRT( 1.0 - 16.0 * rifs * z0(j,i) / zp ) )
    496599
    497              wall_flux(k) = kappa *                               &
    498                   ( a*u(k,j,i) + b*v(k,j,i) + (c1+c2)*w(k,j,i) ) / (  &
    499                   LOG( zp / z0(j,i) ) -                               &
    500                   LOG( ( 1.0 + h1 )**2 * ( 1.0 + h1**2 ) / (          &
    501                        ( 1.0 + h2 )**2 * ( 1.0 + h2**2 )   ) ) +      &
    502                        2.0 * ( ATAN( h1 ) - ATAN( h2 ) )              &
     600             wall_flux(k) = kappa *                                            &
     601                  ( a*u(k,j,i) + b*v(k,j,i) + (c1+c2)*w(k,j,i) ) / (           &
     602                  LOG( zp / z0(j,i) ) -                                        &
     603                  LOG( ( 1.0 + h1 )**2 * ( 1.0 + h1**2 ) / (                   &
     604                       ( 1.0 + h2 )**2 * ( 1.0 + h2**2 )   ) ) +               &
     605                       2.0 * ( ATAN( h1 ) - ATAN( h2 ) )                       &
    503606                                                                   )
    504607          ENDIF
     
    528631!------------------------------------------------------------------------------!
    529632
    530        USE arrays_3d
    531        USE control_parameters
    532        USE grid_variables
    533        USE indices
    534        USE statistics
     633       USE arrays_3d,                                                          &
     634           ONLY:  rif_wall, u, v, w, z0
     635       
     636       USE control_parameters,                                                 &
     637           ONLY:  kappa
     638       
     639       USE grid_variables,                                                     &
     640           ONLY:  dx, dy
     641       
     642       USE indices,                                                            &
     643           ONLY:  nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nzb,             &
     644                  nzb_diff_s_inner, nzb_diff_s_outer, nzt
     645       
     646       USE kinds
    535647
    536648       IMPLICIT NONE
    537649
    538        INTEGER ::  i, j, k, kk, wall_index
    539        REAL    ::  a, b, c1, c2, h1, h2, u_i, v_i, us_wall, vel_total, vel_zp, &
    540                    ws, zp
    541 
    542        REAL ::  rifs
    543 
    544        REAL, DIMENSION(nysg:nyng,nxlg:nxrg)   ::  wall
    545        REAL, DIMENSION(nzb:nzt+1,nys:nyn,nxl:nxr) ::  wall_flux
     650       INTEGER(iwp) ::  i            !:
     651       INTEGER(iwp) ::  j            !:
     652       INTEGER(iwp) ::  k            !:
     653       INTEGER(iwp) ::  kk           !:
     654       INTEGER(iwp) ::  wall_index   !:
     655       
     656       REAL(wp) ::  a           !:
     657       REAL(wp) ::  b           !:
     658       REAL(wp) ::  c1          !:
     659       REAL(wp) ::  c2          !:
     660       REAL(wp) ::  h1          !:
     661       REAL(wp) ::  h2          !:
     662       REAL(wp) ::  u_i         !:
     663       REAL(wp) ::  v_i         !:
     664       REAL(wp) ::  us_wall     !:
     665       REAL(wp) ::  vel_total   !:
     666       REAL(wp) ::  vel_zp      !:
     667       REAL(wp) ::  ws          !:
     668       REAL(wp) ::  zp          !:
     669       REAL(wp) ::  rifs        !:
     670
     671       REAL(wp),                                                               &
     672          DIMENSION(nysg:nyng,nxlg:nxrg) ::                                    &
     673             wall   !:
     674       
     675       REAL(wp),                                                               &
     676          DIMENSION(nzb:nzt+1,nys:nyn,nxl:nxr) ::                              &
     677             wall_flux   !:
    546678
    547679
     
    611743!
    612744!--                   Stable stratification (and neutral)
    613                       wall_flux(k,j,i) = kappa *  vel_zp / &
     745                      wall_flux(k,j,i) = kappa *  vel_zp /                     &
    614746                          ( LOG( zp/z0(j,i) ) + 5.0*rifs * ( zp-z0(j,i) ) / zp )
    615747                   ELSE
     
    652784!------------------------------------------------------------------------------!
    653785
    654        USE arrays_3d
    655        USE control_parameters
    656        USE grid_variables
    657        USE indices
    658        USE statistics
     786       USE arrays_3d,                                                          &
     787           ONLY:  rif_wall, u, v, w, z0
     788       
     789       USE control_parameters,                                                 &
     790           ONLY:  kappa
     791       
     792       USE grid_variables,                                                     &
     793           ONLY:  dx, dy
     794       
     795       USE indices,                                                            &
     796           ONLY:  i_left, i_right, j_north, j_south, nxl, nxlg, nxr, nxrg,     &
     797                  nyn, nyng, nys, nysg, nzb, nzb_diff_s_inner,                 &
     798                  nzb_diff_s_outer, nzt
     799       
     800       USE kinds
    659801
    660802       IMPLICIT NONE
    661803
    662        INTEGER ::  i, j, k, kk, max_outer, min_inner, wall_index
    663        REAL    ::  a, b, c1, c2, h1, h2, u_i, v_i, us_wall, vel_total, vel_zp, &
    664                    ws, zp
    665 
    666        REAL ::  rifs
    667 
    668        REAL, DIMENSION(nysg:nyng,nxlg:nxrg)   ::  wall
    669        REAL, DIMENSION(nzb:nzt+1,nys:nyn,nxl:nxr) ::  wall_flux
     804       INTEGER(iwp) ::  i            !:
     805       INTEGER(iwp) ::  j            !:
     806       INTEGER(iwp) ::  k            !:
     807       INTEGER(iwp) ::  kk           !:
     808       INTEGER(iwp) ::  max_outer    !:
     809       INTEGER(iwp) ::  min_inner    !:
     810       INTEGER(iwp) ::  wall_index   !:
     811       
     812       REAL(wp) ::  a           !:
     813       REAL(wp) ::  b           !:
     814       REAL(wp) ::  c1          !:
     815       REAL(wp) ::  c2          !:
     816       REAL(wp) ::  h1          !:
     817       REAL(wp) ::  h2          !:
     818       REAL(wp) ::  u_i         !:
     819       REAL(wp) ::  v_i         !:
     820       REAL(wp) ::  us_wall     !:
     821       REAL(wp) ::  vel_total   !:
     822       REAL(wp) ::  vel_zp      !:
     823       REAL(wp) ::  ws          !:
     824       REAL(wp) ::  zp          !:
     825       REAL(wp) ::  rifs        !:
     826
     827       REAL(wp),                                                               &
     828          DIMENSION(nysg:nyng,nxlg:nxrg) ::                                    &
     829             wall   !:
     830       
     831       REAL(wp),                                                               &
     832          DIMENSION(nzb:nzt+1,nys:nyn,nxl:nxr) ::                              &
     833             wall_flux   !:
    670834
    671835
     
    684848!
    685849!--             All subsequent variables are computed for scalar locations
    686                 IF ( k >= nzb_diff_s_inner(j,i)-1  .AND. &
     850                IF ( k >= nzb_diff_s_inner(j,i)-1  .AND.                       &
    687851                     k <= nzb_diff_s_outer(j,i)-2  .AND.  wall(j,i) /= 0.0 )  THEN
    688852!
     
    740904!
    741905!--                   Stable stratification (and neutral)
    742                       wall_flux(k,j,i) = kappa *  vel_zp / &
     906                      wall_flux(k,j,i) = kappa *  vel_zp /                     &
    743907                          ( LOG( zp/z0(j,i) ) + 5.0*rifs * ( zp-z0(j,i) ) / zp )
    744908                   ELSE
     
    773937    SUBROUTINE wall_fluxes_e_ij( i, j, nzb_w, nzt_w, wall_flux, a, b, c1, c2 )
    774938
    775        USE arrays_3d
    776        USE control_parameters
    777        USE grid_variables
    778        USE indices
    779        USE statistics
     939       USE arrays_3d,                                                          &
     940           ONLY:  rif_wall, u, v, w, z0
     941       
     942       USE control_parameters,                                                 &
     943           ONLY:  kappa
     944       
     945       USE grid_variables,                                                     &
     946           ONLY:  dx, dy
     947       
     948       USE indices,                                                            &
     949           ONLY:  nzb, nzt
     950       
     951       USE kinds
    780952
    781953       IMPLICIT NONE
    782954
    783        INTEGER ::  i, j, k, kk, nzb_w, nzt_w, wall_index
    784        REAL    ::  a, b, c1, c2, h1, h2, u_i, v_i, us_wall, vel_total, vel_zp, &
    785                    ws, zp
    786 
    787        REAL ::  rifs
    788 
    789        REAL, DIMENSION(nzb:nzt+1) ::  wall_flux
     955       INTEGER(iwp) ::  i            !:
     956       INTEGER(iwp) ::  j            !:
     957       INTEGER(iwp) ::  k            !:
     958       INTEGER(iwp) ::  kk           !:
     959       INTEGER(iwp) ::  nzb_w        !:
     960       INTEGER(iwp) ::  nzt_w        !:
     961       INTEGER(iwp) ::  wall_index   !:
     962       
     963       REAL(wp) ::  a           !:
     964       REAL(wp) ::  b           !:
     965       REAL(wp) ::  c1          !:
     966       REAL(wp) ::  c2          !:
     967       REAL(wp) ::  h1          !:
     968       REAL(wp) ::  h2          !:
     969       REAL(wp) ::  u_i         !:
     970       REAL(wp) ::  v_i         !:
     971       REAL(wp) ::  us_wall     !:
     972       REAL(wp) ::  vel_total   !:
     973       REAL(wp) ::  vel_zp      !:
     974       REAL(wp) ::  ws          !:
     975       REAL(wp) ::  zp          !:
     976       REAL(wp) ::  rifs        !:
     977
     978       REAL(wp), DIMENSION(nzb:nzt+1) ::  wall_flux   !:
    790979
    791980
     
    8341023             h2 = SQRT( SQRT( 1.0 - 16.0 * rifs * z0(j,i) / zp ) )
    8351024
    836              us_wall = kappa * vel_total / (                          &
    837                   LOG( zp / z0(j,i) ) -                               &
    838                   LOG( ( 1.0 + h1 )**2 * ( 1.0 + h1**2 ) / (          &
    839                        ( 1.0 + h2 )**2 * ( 1.0 + h2**2 )   ) ) +      &
    840                        2.0 * ( ATAN( h1 ) - ATAN( h2 ) )              &
     1025             us_wall = kappa * vel_total / (                                   &
     1026                  LOG( zp / z0(j,i) ) -                                        &
     1027                  LOG( ( 1.0 + h1 )**2 * ( 1.0 + h1**2 ) / (                   &
     1028                       ( 1.0 + h2 )**2 * ( 1.0 + h2**2 )   ) ) +               &
     1029                       2.0 * ( ATAN( h1 ) - ATAN( h2 ) )                       &
    8411030                                           )
    8421031          ENDIF
     
    8501039!--       subroutine wall_fluxes because fluxes in subroutine
    8511040!--       wall_fluxes_e are defined at scalar locations).
    852           vel_zp = 0.5 * (       a * ( u(k,j,i) + u(k,j,i+1) ) +  &
    853                                  b * ( v(k,j,i) + v(k,j+1,i) ) +  &
    854                            (c1+c2) * ( w(k,j,i) + w(k-1,j,i) )    &
     1041          vel_zp = 0.5 * (       a * ( u(k,j,i) + u(k,j,i+1) ) +               &
     1042                                 b * ( v(k,j,i) + v(k,j+1,i) ) +               &
     1043                           (c1+c2) * ( w(k,j,i) + w(k-1,j,i) )                 &
    8551044                         )
    8561045
     
    8591048!
    8601049!--          Stable stratification (and neutral)
    861              wall_flux(k) = kappa *  vel_zp / &
     1050             wall_flux(k) = kappa *  vel_zp /                                  &
    8621051                          ( LOG( zp/z0(j,i) ) + 5.0*rifs * ( zp-z0(j,i) ) / zp )
    8631052          ELSE
     
    8681057             h2 = SQRT( SQRT( 1.0 - 16.0 * rifs * z0(j,i) / zp ) )
    8691058
    870              wall_flux(k) = kappa * vel_zp / (                        &
    871                   LOG( zp / z0(j,i) ) -                               &
    872                   LOG( ( 1.0 + h1 )**2 * ( 1.0 + h1**2 ) / (          &
    873                        ( 1.0 + h2 )**2 * ( 1.0 + h2**2 )   ) ) +      &
    874                        2.0 * ( ATAN( h1 ) - ATAN( h2 ) )              &
     1059             wall_flux(k) = kappa * vel_zp / (                                 &
     1060                  LOG( zp / z0(j,i) ) -                                        &
     1061                  LOG( ( 1.0 + h1 )**2 * ( 1.0 + h1**2 ) / (                   &
     1062                       ( 1.0 + h2 )**2 * ( 1.0 + h2**2 )   ) ) +               &
     1063                       2.0 * ( ATAN( h1 ) - ATAN( h2 ) )                       &
    8751064                                                 )
    8761065          ENDIF
Note: See TracChangeset for help on using the changeset viewer.