Changeset 4130 for palm/trunk


Ignore:
Timestamp:
Aug 1, 2019 1:04:13 PM (5 years ago)
Author:
suehring
Message:

Effectively reduce 3D initialization from dynamic driver to 1D initial profiles. This is because 3D initialization produces structures in the w-component that are correlated with the processor grid for some unknown reason

File:
1 edited

Legend:

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

    r4090 r4130  
    2525! -----------------
    2626! $Id$
     27! Effectively reduce 3D initialization to 1D initial profiles. This is because
     28! 3D initialization produces structures in the w-component that are correlated
     29! with the processor grid for some unknown reason 
     30!
     31! 4090 2019-07-11 15:06:47Z Giersch
    2732! Unused variables removed
    2833!
     
    11911196
    11921197!
    1193 !--       Write initial profiles onto 3D arrays. Note, only in case of lod = 1,
    1194 !--       for lod = 2 data is already on 3D arrays.   
     1198!--       Write initial profiles onto 3D arrays.
     1199!--       Work-around, 3D initialization of u,v,w creates artificial
     1200!--       structures wich correlate with the processor grid. The reason
     1201!--       for this is still unknown. To work-around this, 3D initialization
     1202!--       will be effectively reduce to a 1D initialization where no such
     1203!--       artificial structures appear.
    11951204          DO  i = nxlg, nxrg
    11961205             DO  j = nysg, nyng
    1197                 IF( init_3d%lod_u == 1 )  u(:,j,i) = u_init(:)
    1198                 IF( init_3d%lod_v == 1 )  v(:,j,i) = v_init(:)
    1199                 IF( .NOT. neutral  .AND.  init_3d%lod_pt == 1 )                &
     1206                IF( init_3d%lod_u == 1  .OR.  init_3d%lod_u == 2 )             &
     1207                   u(:,j,i) = u_init(:)
     1208                IF( init_3d%lod_v == 1  .OR.  init_3d%lod_u == 2 )             &
     1209                   v(:,j,i) = v_init(:)
     1210                IF( .NOT. neutral  .AND.                                       &
     1211                    ( init_3d%lod_pt == 1  .OR.  init_3d%lod_pt == 2 ) )       &
    12001212                   pt(:,j,i) = pt_init(:)
    1201                 IF( humidity  .AND.  init_3d%lod_q == 1 )  q(:,j,i) = q_init(:)
     1213                IF( humidity  .AND.                                            &
     1214                    ( init_3d%lod_q == 1  .OR.  init_3d%lod_q == 2 ) )         &
     1215                   q(:,j,i) = q_init(:)
    12021216             ENDDO
    12031217          ENDDO
    1204 !
    1205 !--       Exchange ghost points and set boundary conditions in case of
    1206 !--       level-of-detail = 2
    1207           IF( init_3d%lod_u == 2 )  CALL exchange_horiz( u, nbgp )
    1208           IF( init_3d%lod_v == 2 )  CALL exchange_horiz( v, nbgp )
    1209           IF( init_3d%lod_w == 2 )  CALL exchange_horiz( w, nbgp )
    1210           IF( .NOT. neutral  .AND.  init_3d%lod_pt == 2 )                      &
    1211              CALL exchange_horiz( pt, nbgp )
    1212           IF( humidity  .AND.  init_3d%lod_q == 2 )                            &
    1213              CALL exchange_horiz( q, nbgp )
    1214          
    1215           IF ( bc_dirichlet_l )  THEN
    1216              DO  j = nysg, nyng
    1217                 DO  k = nzb, nzt+1
    1218                    IF( init_3d%lod_u == 2 )  u(k,j,nxlg:nxl)   = u(k,j,nxlu)
    1219                    IF( init_3d%lod_v == 2 )  v(k,j,nxlg:nxl-1) = v(k,j,nxl)
    1220                    IF( init_3d%lod_w == 2 )  w(k,j,nxlg:nxl-1) = w(k,j,nxl)
    1221                    IF( .NOT. neutral  .AND.  init_3d%lod_pt == 2 )                      &
    1222                       pt(k,j,nxlg:nxl-1) = pt(k,j,nxl)
    1223                    IF( humidity  .AND.  init_3d%lod_q == 2 )                            &
    1224                       q(k,j,nxlg:nxl-1)  = q(k,j,nxl)
    1225                 ENDDO
    1226              ENDDO
    1227           ENDIF
    1228           IF ( bc_dirichlet_r )  THEN
    1229              DO  j = nysg, nyng
    1230                 DO  k = nzb, nzt+1
    1231                    IF( init_3d%lod_u == 2 )  u(k,j,nxr+1:nxrg) = u(k,j,nxr)
    1232                    IF( init_3d%lod_v == 2 )  v(k,j,nxr+1:nxrg) = v(k,j,nxr)
    1233                    IF( init_3d%lod_w == 2 )  w(k,j,nxr+1:nxrg) = w(k,j,nxr)
    1234                    IF( .NOT. neutral  .AND.  init_3d%lod_pt == 2 )                      &
    1235                       pt(k,j,nxr+1:nxrg) = pt(k,j,nxr)
    1236                    IF( humidity  .AND.  init_3d%lod_q == 2 )                            &
    1237                       q(k,j,nxr+1:nxrg)  = q(k,j,nxr)
    1238                 ENDDO
    1239              ENDDO
    1240           ENDIF
    1241           IF ( bc_dirichlet_s )  THEN
    1242              DO  i = nxlg, nxrg
    1243                 DO  k = nzb, nzt+1
    1244                    IF( init_3d%lod_u == 2 )  u(k,nysg:nys-1,i) = u(k,nys,i)
    1245                    IF( init_3d%lod_v == 2 )  v(k,nysg:nys,i)   = v(k,nysv,i)
    1246                    IF( init_3d%lod_w == 2 )  w(k,nysg:nys-1,i) = w(k,nys,i)
    1247                    IF( .NOT. neutral  .AND.  init_3d%lod_pt == 2 )                      &
    1248                       pt(k,nysg:nys-1,i) = pt(k,nys,i)
    1249                    IF( humidity  .AND.  init_3d%lod_q == 2 )                            &
    1250                       q(k,nysg:nys-1,i)  = q(k,nys,i)
    1251                 ENDDO
    1252              ENDDO
    1253           ENDIF
    1254           IF ( bc_dirichlet_n )  THEN
    1255              DO  i = nxlg, nxrg
    1256                 DO  k = nzb, nzt+1
    1257                    IF( init_3d%lod_u == 2 )  u(k,nyn+1:nyng,i) = u(k,nyn,i)
    1258                    IF( init_3d%lod_v == 2 )  v(k,nyn+1:nyng,i) = v(k,nyn,i)
    1259                    IF( init_3d%lod_w == 2 )  w(k,nyn+1:nyng,i) = w(k,nyn,i)
    1260                    IF( .NOT. neutral  .AND.  init_3d%lod_pt == 2 )                      &
    1261                       pt(k,nyn+1:nyng,i) = pt(k,nyn,i)
    1262                    IF( humidity  .AND.  init_3d%lod_q == 2 )                            &
    1263                       q(k,nyn+1:nyng,i)  = q(k,nyn,i)
    1264                 ENDDO
    1265              ENDDO
    1266           ENDIF
    12671218!
    12681219!--       Set geostrophic wind components. 
Note: See TracChangeset for help on using the changeset viewer.