Ignore:
Timestamp:
Mar 22, 2007 9:54:05 AM (17 years ago)
Author:
raasch
Message:

preliminary update for changes concerning non-cyclic boundary conditions

File:
1 edited

Legend:

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

    r73 r75  
    99! Arrays for radiation boundary conditions are allocated (u_m_l, u_m_r, etc.),
    1010! bugfix for cases with the outflow damping layer extending over more than one
    11 ! subdomain,
    12 ! New initializing action "by_user" calls user_init_3d_model,
     11! subdomain, moisture renamed humidity,
     12! new initializing action "by_user" calls user_init_3d_model,
    1313! precipitation_amount/rate, ts_value are allocated, +module netcdf_control,
    1414! initial velocities at nzb+1 are regarded for volume
    1515! flow control in case they have been set zero before (to avoid small timesteps)
     16! -uvmean_outflow, uxrp, vynp eliminated
    1617!
    1718! Former revisions:
     
    7677              sums_divnew_l(0:statistic_regions),                           &
    7778              sums_divold_l(0:statistic_regions) )
    78     ALLOCATE( rdf(nzb+1:nzt), uvmean_outflow(nzb:nzt+1),                    &
    79               uvmean_outflow_l(nzb:nzt+1) )
     79    ALLOCATE( rdf(nzb+1:nzt) )
    8080    ALLOCATE( hom_sum(nzb:nzt+1,var_hom,0:statistic_regions),               &
    8181              ngp_2dh_outer(nzb:nzt+1,0:statistic_regions),                 &
     
    105105    ENDIF
    106106
    107     ALLOCATE( d(nzb+1:nzta,nys:nyna,nxl:nxra),             &
    108               e_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),      &
    109               e_2(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),      &
    110               e_3(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),      &
    111               kh_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),     &
    112               km_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),     &
    113               p(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),        &
    114               pt_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),     &
    115               pt_2(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),     &
    116               pt_3(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),     &
    117               tend(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),     &
    118               u_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1+uxrp), &
    119               u_2(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1+uxrp), &
    120               u_3(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1+uxrp), &
    121               v_1(nzb:nzt+1,nys-1:nyn+1+vynp,nxl-1:nxr+1), &
    122               v_2(nzb:nzt+1,nys-1:nyn+1+vynp,nxl-1:nxr+1), &
    123               v_3(nzb:nzt+1,nys-1:nyn+1+vynp,nxl-1:nxr+1), &
    124               w_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),      &
    125               w_2(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),      &
     107    ALLOCATE( d(nzb+1:nzta,nys:nyna,nxl:nxra),         &
     108              e_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),  &
     109              e_2(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),  &
     110              e_3(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),  &
     111              kh_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), &
     112              km_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), &
     113              p(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),    &
     114              pt_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), &
     115              pt_2(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), &
     116              pt_3(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), &
     117              tend(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), &
     118              u_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), &
     119              u_2(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), &
     120              u_3(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), &
     121              v_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), &
     122              v_2(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), &
     123              v_3(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), &
     124              w_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),  &
     125              w_2(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),  &
    126126              w_3(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
    127127
     
    131131    ENDIF
    132132
    133     IF ( moisture  .OR.  passive_scalar ) THEN
    134 !
    135 !--    2D-moisture/scalar arrays
     133    IF ( humidity  .OR.  passive_scalar ) THEN
     134!
     135!--    2D-humidity/scalar arrays
    136136       ALLOCATE ( qs(nys-1:nyn+1,nxl-1:nxr+1),     &
    137137                  qsws_1(nys-1:nyn+1,nxl-1:nxr+1), &
     
    143143       ENDIF
    144144!
    145 !--    3D-moisture/scalar arrays
     145!--    3D-humidity/scalar arrays
    146146       ALLOCATE( q_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), &
    147147                 q_2(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), &
     
    149149
    150150!
    151 !--    3D-arrays needed for moisture only
    152        IF ( moisture )  THEN
     151!--    3D-arrays needed for humidity only
     152       IF ( humidity )  THEN
    153153          ALLOCATE( vpt_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
    154154
     
    212212!-- conditions
    213213    IF ( outflow_l )  THEN
    214        ALLOCATE( u_m_l(nzb:nzt+1,nys-1:nyn+1,-1:1,-2:-1), &
    215                  v_m_l(nzb:nzt+1,nys-1:nyn+1,-1:1,-2:-1), &
    216                  w_m_l(nzb:nzt+1,nys-1:nyn+1,-1:1,-2:-1) )
     214       ALLOCATE( u_m_l(nzb:nzt+1,nys-1:nyn+1,-1:1), &
     215                 v_m_l(nzb:nzt+1,nys-1:nyn+1,-1:1), &
     216                 w_m_l(nzb:nzt+1,nys-1:nyn+1,-1:1) )
    217217    ENDIF
    218218    IF ( outflow_r )  THEN
    219        ALLOCATE( u_m_r(nzb:nzt+1,nys-1:nyn+1,nx-1:nx+1,-2:-1), &
    220                  v_m_r(nzb:nzt+1,nys-1:nyn+1,nx-1:nx+1,-2:-1), &
    221                  w_m_r(nzb:nzt+1,nys-1:nyn+1,nx-1:nx+1,-2:-1) )
     219       ALLOCATE( u_m_r(nzb:nzt+1,nys-1:nyn+1,nx-1:nx+1), &
     220                 v_m_r(nzb:nzt+1,nys-1:nyn+1,nx-1:nx+1), &
     221                 w_m_r(nzb:nzt+1,nys-1:nyn+1,nx-1:nx+1) )
    222222    ENDIF
    223223    IF ( outflow_s )  THEN
    224        ALLOCATE( u_m_s(nzb:nzt+1,-1:1,nxl-1:nxr+1,-2:-1), &
    225                  v_m_s(nzb:nzt+1,-1:1,nxl-1:nxr+1,-2:-1), &
    226                  w_m_s(nzb:nzt+1,-1:1,nxl-1:nxr+1,-2:-1) )
     224       ALLOCATE( u_m_s(nzb:nzt+1,-1:1,nxl-1:nxr+1), &
     225                 v_m_s(nzb:nzt+1,-1:1,nxl-1:nxr+1), &
     226                 w_m_s(nzb:nzt+1,-1:1,nxl-1:nxr+1) )
    227227    ENDIF
    228228    IF ( outflow_n )  THEN
    229        ALLOCATE( u_m_n(nzb:nzt+1,ny-1:ny+1,nxl-1:nxr+1,-2:-1), &
    230                  v_m_n(nzb:nzt+1,ny-1:ny+1,nxl-1:nxr+1,-2:-1), &
    231                  w_m_n(nzb:nzt+1,ny-1:ny+1,nxl-1:nxr+1,-2:-1) )
     229       ALLOCATE( u_m_n(nzb:nzt+1,ny-1:ny+1,nxl-1:nxr+1), &
     230                 v_m_n(nzb:nzt+1,ny-1:ny+1,nxl-1:nxr+1), &
     231                 w_m_n(nzb:nzt+1,ny-1:ny+1,nxl-1:nxr+1) )
    232232    ENDIF
    233233
     
    249249       w_m  => w_1;   w  => w_2;   w_p  => w_3;   tw_m  => w_3
    250250
    251        IF ( moisture  .OR.  passive_scalar )  THEN
     251       IF ( humidity  .OR.  passive_scalar )  THEN
    252252          qsws_m  => qsws_1;   qsws  => qsws_2
    253253          qswst_m => qswst_1;  qswst => qswst_2
    254254          q_m    => q_1;     q    => q_2;     q_p => q_3;     tq_m => q_3
    255           IF ( moisture )        vpt_m  => vpt_1;   vpt  => vpt_2
     255          IF ( humidity )        vpt_m  => vpt_1;   vpt  => vpt_2
    256256          IF ( cloud_physics )   ql   => ql_1
    257257          IF ( cloud_droplets )  THEN
     
    276276       w     => w_1;   w_p  => w_2;   tw_m  => w_3;   w_m  => w_3
    277277
    278        IF ( moisture  .OR.  passive_scalar )  THEN
     278       IF ( humidity  .OR.  passive_scalar )  THEN
    279279          qsws   => qsws_1
    280280          qswst  => qswst_1
    281281          q      => q_1;     q_p  => q_2;     tq_m => q_3;    q_m => q_3
    282           IF ( moisture )        vpt  => vpt_1
     282          IF ( humidity )        vpt  => vpt_1
    283283          IF ( cloud_physics )   ql   => ql_1
    284284          IF ( cloud_droplets )  THEN
     
    309309                km(:,j,i) = km1d
    310310                pt(:,j,i) = pt_init
    311              ENDDO
    312           ENDDO
    313           DO  i = nxl-1, nxr+uxrp+1
    314              DO  j = nys-1, nyn+1
    315311                u(:,j,i)  = u1d
    316              ENDDO
    317           ENDDO
    318           DO  i = nxl-1, nxr+1
    319              DO  j = nys-1, nyn+vynp+1
    320312                v(:,j,i)  = v1d
    321313             ENDDO
    322314          ENDDO
    323315
    324           IF ( moisture  .OR.  passive_scalar )  THEN
     316          IF ( humidity  .OR.  passive_scalar )  THEN
    325317             DO  i = nxl-1, nxr+1
    326318                DO  j = nys-1, nyn+1
     
    368360!--       This could actually be computed more accurately in the 1D model.
    369361!--       Update when opportunity arises!
    370           IF ( moisture  .OR.  passive_scalar )  qs = 0.0
     362          IF ( humidity  .OR.  passive_scalar )  qs = 0.0
    371363
    372364!
     
    419411             DO  j = nys-1, nyn+1
    420412                pt(:,j,i) = pt_init
    421              ENDDO
    422           ENDDO
    423           DO  i = nxl-1, nxr+uxrp+1
    424              DO  j = nys-1, nyn+1
    425413                u(:,j,i)  = u_init
    426              ENDDO
    427           ENDDO
    428           DO  i = nxl-1, nxr+1
    429              DO  j = nys-1, nyn+vynp+1
    430414                v(:,j,i)  = v_init
    431415             ENDDO
    432416          ENDDO
     417
    433418!
    434419!--       Set initial horizontal velocities at the lowest computational grid levels
     
    458443          ENDIF
    459444
    460           IF ( moisture  .OR.  passive_scalar )  THEN
     445          IF ( humidity  .OR.  passive_scalar )  THEN
    461446             DO  i = nxl-1, nxr+1
    462447                DO  j = nys-1, nyn+1
     
    482467          usws = 0.0
    483468          vsws = 0.0
    484           IF ( moisture  .OR.  passive_scalar ) qs = 0.0
     469          IF ( humidity  .OR.  passive_scalar ) qs = 0.0
    485470
    486471!
     
    499484!
    500485!--    Calculate virtual potential temperature
    501        IF ( moisture ) vpt = pt * ( 1.0 + 0.61 * q )
     486       IF ( humidity ) vpt = pt * ( 1.0 + 0.61 * q )
    502487
    503488!
     
    515500
    516501
    517        IF ( moisture )  THEN
     502       IF ( humidity )  THEN
    518503!
    519504!--       Store initial profile of total water content, virtual potential
     
    564549!
    565550!--       Determine the near-surface water flux
    566           IF ( moisture  .OR.  passive_scalar )  THEN
     551          IF ( humidity  .OR.  passive_scalar )  THEN
    567552             IF ( constant_waterflux )  THEN
    568553                qsws   = surface_waterflux
     
    585570             IF ( ASSOCIATED( tswst_m ) )  tswst_m = tswst
    586571
    587              IF ( moisture  .OR.  passive_scalar )  THEN
     572             IF ( humidity  .OR.  passive_scalar )  THEN
    588573                qswst = 0.0
    589574                IF ( ASSOCIATED( qswst_m ) )  qswst_m = qswst
     
    610595          ENDIF
    611596
    612           IF ( moisture  .OR.  passive_scalar )  THEN
     597          IF ( humidity  .OR.  passive_scalar )  THEN
    613598             IF ( .NOT. constant_waterflux )  THEN
    614599                qsws   = 0.0
     
    709694!--    If required, change the surface humidity/scalar at the start of the 3D
    710695!--    run
    711        IF ( ( moisture .OR. passive_scalar ) .AND. &
     696       IF ( ( humidity .OR. passive_scalar ) .AND. &
    712697            q_surface_initial_change /= 0.0 )  THEN
    713698          q(nzb,:,:) = q(nzb,:,:) + q_surface_initial_change
     
    722707!--    remove the divergences from the velocity field
    723708       IF ( create_disturbances )  THEN
    724           CALL disturb_field( nzb_u_inner, tend, u, uxrp,    0 )
    725           CALL disturb_field( nzb_v_inner, tend, v,    0, vynp )
     709          CALL disturb_field( nzb_u_inner, tend, u )
     710          CALL disturb_field( nzb_v_inner, tend, v )
    726711          n_sor = nsor_ini
    727712          CALL pres
     
    746731       e_p = e; pt_p = pt; u_p = u; v_p = v; w_p = w
    747732
    748        IF ( moisture  .OR.  passive_scalar )  THEN
     733       IF ( humidity  .OR.  passive_scalar )  THEN
    749734          IF ( ASSOCIATED( q_m ) )  q_m = q
    750735          IF ( timestep_scheme(1:5) == 'runge' )  tq_m = 0.0
    751736          q_p = q
    752           IF ( moisture  .AND.  ASSOCIATED( vpt_m ) )  vpt_m = vpt
     737          IF ( humidity  .AND.  ASSOCIATED( vpt_m ) )  vpt_m = vpt
    753738       ENDIF
    754739
     
    756741!--    Initialize old timelevels needed for radiation boundary conditions
    757742       IF ( outflow_l )  THEN
    758           u_m_l(:,:,:,-2) = u(:,:,-1:1)
    759           v_m_l(:,:,:,-2) = v(:,:,-1:1)
    760           w_m_l(:,:,:,-2) = w(:,:,-1:1)
    761           u_m_l(:,:,:,-1) = u(:,:,-1:1)
    762           v_m_l(:,:,:,-1) = v(:,:,-1:1)
    763           w_m_l(:,:,:,-1) = w(:,:,-1:1)
     743          u_m_l(:,:,:) = u(:,:,-1:1)
     744          v_m_l(:,:,:) = v(:,:,-1:1)
     745          w_m_l(:,:,:) = w(:,:,-1:1)
    764746       ENDIF
    765747       IF ( outflow_r )  THEN
    766           u_m_r(:,:,:,-2) = u(:,:,nx-1:nx+1)
    767           v_m_r(:,:,:,-2) = v(:,:,nx-1:nx+1)
    768           w_m_r(:,:,:,-2) = w(:,:,nx-1:nx+1)
    769           u_m_r(:,:,:,-1) = u(:,:,nx-1:nx+1)
    770           v_m_r(:,:,:,-1) = v(:,:,nx-1:nx+1)
    771           w_m_r(:,:,:,-1) = w(:,:,nx-1:nx+1)
     748          u_m_r(:,:,:) = u(:,:,nx-1:nx+1)
     749          v_m_r(:,:,:) = v(:,:,nx-1:nx+1)
     750          w_m_r(:,:,:) = w(:,:,nx-1:nx+1)
    772751       ENDIF
    773752       IF ( outflow_s )  THEN
    774           u_m_s(:,:,:,-2) = u(:,-1:1,:)
    775           v_m_s(:,:,:,-2) = v(:,-1:1,:)
    776           w_m_s(:,:,:,-2) = w(:,-1:1,:)
    777           u_m_s(:,:,:,-1) = u(:,-1:1,:)
    778           v_m_s(:,:,:,-1) = v(:,-1:1,:)
    779           w_m_s(:,:,:,-1) = w(:,-1:1,:)
     753          u_m_s(:,:,:) = u(:,-1:1,:)
     754          v_m_s(:,:,:) = v(:,-1:1,:)
     755          w_m_s(:,:,:) = w(:,-1:1,:)
    780756       ENDIF
    781757       IF ( outflow_n )  THEN
    782           u_m_n(:,:,:,-2) = u(:,ny-1:ny+1,:)
    783           v_m_n(:,:,:,-2) = v(:,ny-1:ny+1,:)
    784           w_m_n(:,:,:,-2) = w(:,ny-1:ny+1,:)
    785           u_m_n(:,:,:,-1) = u(:,ny-1:ny+1,:)
    786           v_m_n(:,:,:,-1) = v(:,ny-1:ny+1,:)
    787           w_m_n(:,:,:,-1) = w(:,ny-1:ny+1,:)
     758          u_m_n(:,:,:) = u(:,ny-1:ny+1,:)
     759          v_m_n(:,:,:) = v(:,ny-1:ny+1,:)
     760          w_m_n(:,:,:) = w(:,ny-1:ny+1,:)
    788761       ENDIF
    789762
     
    803776!--    including ghost points)
    804777       e_p = e; pt_p = pt; u_p = u; v_p = v; w_p = w
    805        IF ( moisture  .OR.  passive_scalar )  q_p = q
     778       IF ( humidity  .OR.  passive_scalar )  q_p = q
    806779
    807780    ELSE
Note: See TracChangeset for help on using the changeset viewer.