Changeset 2899 for palm/trunk


Ignore:
Timestamp:
Mar 15, 2018 1:36:02 PM (6 years ago)
Author:
hellstea
Message:

Control logics improved to allow nesting also in cases with constant_flux_layer = .F. or constant_diffusion = .T.

File:
1 edited

Legend:

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

    r2895 r2899  
    2525! -----------------
    2626! $Id$
     27! Control logics improved to allow nesting also in cases with
     28! constant_flux_layer = .F. or constant_diffusion = .T.
     29!
     30! 2895 2018-03-15 10:26:12Z hellstea
    2731! Change in the nest initialization (pmci_interp_tril_all). Bottom wall BC is no
    2832! longer overwritten.
     
    260264
    261265    USE control_parameters,                                                    &
    262         ONLY:  air_chemistry, cloud_physics, coupling_char, dt_3d, dz,         &
    263                humidity, message_string, microphysics_morrison,                &
    264                microphysics_seifert, nest_bound_l, nest_bound_r, nest_bound_s, &
    265                nest_bound_n, nest_domain, neutral, passive_scalar,             &
    266                roughness_length, simulated_time, topography, volume_flow
     266        ONLY:  air_chemistry, cloud_physics,                                   &
     267               constant_diffusion, constant_flux_layer,                        &
     268               coupling_char, dt_3d, dz, humidity, message_string,             &
     269               microphysics_morrison, microphysics_seifert,                    &
     270               nest_bound_l, nest_bound_r, nest_bound_s, nest_bound_n,         &
     271               nest_domain, neutral, passive_scalar, roughness_length,         &
     272               simulated_time, topography, volume_flow
    267273
    268274    USE chem_modules,                                                          &
     
    13471353!
    13481354!--    Precompute the log-law correction index- and ratio-arrays
    1349        CALL pmci_init_loglaw_correction
     1355       IF ( constant_flux_layer )  THEN
     1356          CALL pmci_init_loglaw_correction
     1357       ENDIF
    13501358!
    13511359!--    Define the SGS-TKE scaling factor based on the grid-spacing ratio
    1352        CALL pmci_init_tkefactor
     1360       IF ( .NOT. constant_diffusion )  THEN
     1361          CALL pmci_init_tkefactor
     1362       ENDIF
    13531363!
    13541364!--    Two-way coupling for general and vertical nesting.
     
    34733483       CALL pmci_interp_tril_all ( w,  wc,  ico, jco, kcw, r1xo, r2xo, r1yo,   &
    34743484                                   r2yo, r1zw, r2zw, 'w' )
    3475        CALL pmci_interp_tril_all ( e,  ec,  ico, jco, kco, r1xo, r2xo, r1yo,   &
    3476                                    r2yo, r1zo, r2zo, 'e' )
    3477 
     3485
     3486       IF ( .NOT. constant_diffusion )  THEN
     3487          CALL pmci_interp_tril_all ( e,  ec,  ico, jco, kco, r1xo, r2xo,      &
     3488                                      r1yo, r2yo, r1zo, r2zo, 'e' )
     3489       ENDIF
     3490       
    34783491       IF ( .NOT. neutral )  THEN
    34793492          CALL pmci_interp_tril_all ( pt, ptc, ico, jco, kco, r1xo, r2xo,      &
     
    36573670!--    conditions, a corresponding correction is made for all vertical walls,
    36583671!--    too.
    3659        IF ( var == 'u' .OR. var == 'v' )  THEN
     3672       IF ( constant_flux_layer .AND. ( var == 'u' .OR. var == 'v' ) )  THEN
    36603673          z0_topo = roughness_length
    36613674          DO  i = ib, nxr
     
    41754188!--       Left border pe:
    41764189          IF ( nest_bound_l )  THEN
     4190             
    41774191             CALL pmci_interp_tril_lr( u,  uc,  icu, jco, kco, r1xu, r2xu,     &
    41784192                                       r1yo, r2yo, r1zo, r2zo,                 &
     
    41934207                                       nzt_topo_nestbc_l, 'l', 'w' )
    41944208
    4195              CALL pmci_interp_tril_lr( e,  ec,  ico, jco, kco, r1xo, r2xo,     &
    4196                                        r1yo, r2yo, r1zo, r2zo,                 &
    4197                                        logc_w_l, logc_ratio_w_l,               &
    4198                                        logc_kbounds_w_l,                       &
    4199                                        nzt_topo_nestbc_l, 'l', 'e' )
    4200 
     4209             IF ( .NOT. constant_diffusion )  THEN
     4210                CALL pmci_interp_tril_lr( e,  ec,  ico, jco, kco, r1xo, r2xo,  &
     4211                                          r1yo, r2yo, r1zo, r2zo,              &
     4212                                          logc_w_l, logc_ratio_w_l,            &
     4213                                          logc_kbounds_w_l,                    &
     4214                                          nzt_topo_nestbc_l, 'l', 'e' )
     4215             ENDIF
     4216             
    42014217             IF ( .NOT. neutral )  THEN
    42024218                CALL pmci_interp_tril_lr( pt, ptc, ico, jco, kco, r1xo, r2xo,  &
     
    42694285!--       Right border pe
    42704286          IF ( nest_bound_r )  THEN
     4287             
    42714288             CALL pmci_interp_tril_lr( u,  uc,  icu, jco, kco, r1xu, r2xu,     &
    42724289                                       r1yo, r2yo, r1zo, r2zo,                 &
     
    42874304                                       nzt_topo_nestbc_r, 'r', 'w' )
    42884305
    4289              CALL pmci_interp_tril_lr( e,  ec,  ico, jco, kco, r1xo, r2xo,     &
    4290                                        r1yo,r2yo, r1zo, r2zo,                  &
    4291                                        logc_w_r, logc_ratio_w_r,               &
    4292                                        logc_kbounds_w_r,                       &
    4293                                        nzt_topo_nestbc_r, 'r', 'e' )
    4294 
     4306             IF ( .NOT. constant_diffusion )  THEN
     4307                CALL pmci_interp_tril_lr( e,  ec,  ico, jco, kco, r1xo, r2xo,  &
     4308                                          r1yo,r2yo, r1zo, r2zo,               &
     4309                                          logc_w_r, logc_ratio_w_r,            &
     4310                                          logc_kbounds_w_r,                    &
     4311                                          nzt_topo_nestbc_r, 'r', 'e' )
     4312             ENDIF
    42954313
    42964314             IF ( .NOT. neutral )  THEN
     
    43004318                                          logc_kbounds_w_r,                    &
    43014319                                          nzt_topo_nestbc_r, 'r', 's' )
    4302 
    43034320             ENDIF
    43044321
     
    43704387!--       South border pe
    43714388          IF ( nest_bound_s )  THEN
     4389
    43724390             CALL pmci_interp_tril_sn( u,  uc,  icu, jco, kco, r1xu, r2xu,     &
    43734391                                       r1yo, r2yo, r1zo, r2zo,                 &
     
    43754393                                       logc_kbounds_u_s,                       &
    43764394                                       nzt_topo_nestbc_s, 's', 'u' )
     4395
    43774396             CALL pmci_interp_tril_sn( v,  vc,  ico, jcv, kco, r1xo, r2xo,     &
    43784397                                       r1yv, r2yv, r1zo, r2zo,                 &
     
    43804399                                       logc_kbounds_v_s,                       &
    43814400                                       nzt_topo_nestbc_s, 's', 'v' )
     4401
    43824402             CALL pmci_interp_tril_sn( w,  wc,  ico, jco, kcw, r1xo, r2xo,     &
    43834403                                       r1yo, r2yo, r1zw, r2zw,                 &
     
    43854405                                       logc_kbounds_w_s,                       &
    43864406                                       nzt_topo_nestbc_s, 's','w' )
    4387              CALL pmci_interp_tril_sn( e,  ec,  ico, jco, kco, r1xo, r2xo,     &
    4388                                        r1yo, r2yo, r1zo, r2zo,                 &
    4389                                        logc_w_s, logc_ratio_w_s,               &
    4390                                        logc_kbounds_w_s,                       &
    4391                                        nzt_topo_nestbc_s, 's', 'e' )
    4392 
     4407
     4408             IF ( .NOT. constant_diffusion )  THEN
     4409                CALL pmci_interp_tril_sn( e,  ec,  ico, jco, kco, r1xo, r2xo,  &
     4410                                          r1yo, r2yo, r1zo, r2zo,              &
     4411                                          logc_w_s, logc_ratio_w_s,            &
     4412                                          logc_kbounds_w_s,                    &
     4413                                          nzt_topo_nestbc_s, 's', 'e' )
     4414             ENDIF
     4415         
    43934416             IF ( .NOT. neutral )  THEN
    43944417                CALL pmci_interp_tril_sn( pt, ptc, ico, jco, kco, r1xo, r2xo,  &
     
    44644487!--       North border pe
    44654488          IF ( nest_bound_n )  THEN
     4489             
    44664490             CALL pmci_interp_tril_sn( u,  uc,  icu, jco, kco, r1xu, r2xu,     &
    44674491                                       r1yo, r2yo, r1zo, r2zo,                 &
     
    44814505                                       logc_kbounds_w_n,                       &
    44824506                                       nzt_topo_nestbc_n, 'n', 'w' )
    4483 
    4484              CALL pmci_interp_tril_sn( e,  ec,  ico, jco, kco, r1xo, r2xo,     &
    4485                                        r1yo, r2yo, r1zo, r2zo,                 &
    4486                                        logc_w_n, logc_ratio_w_n,               &
    4487                                        logc_kbounds_w_n,                       &
    4488                                        nzt_topo_nestbc_n, 'n', 'e' )
    4489 
     4507             IF ( .NOT. constant_diffusion )  THEN
     4508                CALL pmci_interp_tril_sn( e,  ec,  ico, jco, kco, r1xo, r2xo,  &
     4509                                          r1yo, r2yo, r1zo, r2zo,              &
     4510                                          logc_w_n, logc_ratio_w_n,            &
     4511                                          logc_kbounds_w_n,                    &
     4512                                          nzt_topo_nestbc_n, 'n', 'e' )
     4513             ENDIF
     4514         
    44904515             IF ( .NOT. neutral )  THEN
    44914516                CALL pmci_interp_tril_sn( pt, ptc, ico, jco, kco, r1xo, r2xo,  &
     
    45684593       CALL pmci_interp_tril_t( w,  wc,  ico, jco, kcw, r1xo, r2xo, r1yo,      &
    45694594                                r2yo, r1zw, r2zw, 'w' )
    4570        CALL pmci_interp_tril_t( e,  ec,  ico, jco, kco, r1xo, r2xo, r1yo,      &
    4571                                 r2yo, r1zo, r2zo, 'e' )
    4572 
     4595       IF ( .NOT. constant_diffusion )  THEN
     4596          CALL pmci_interp_tril_t( e,  ec,  ico, jco, kco, r1xo, r2xo, r1yo,   &
     4597                                   r2yo, r1zo, r2zo, 'e' )
     4598       ENDIF
    45734599       IF ( .NOT. neutral )  THEN
    45744600          CALL pmci_interp_tril_t( pt, ptc, ico, jco, kco, r1xo, r2xo, r1yo,   &
     
    47974823!
    47984824!--   Solid surface below the node
    4799       IF ( var == 'u' .OR. var == 'v' )  THEN           
     4825      IF ( constant_flux_layer .AND. ( var == 'u' .OR. var == 'v' ) )  THEN
    48004826         DO  j = nys, nyn
    48014827!
     
    48204846      IF ( topography /= 'flat' )  THEN
    48214847
    4822          IF ( var == 'u' .OR. var == 'w' )  THEN                 
     4848         IF ( constant_flux_layer .AND. ( var == 'u' .OR. var == 'w' ) )  THEN           
    48234849!
    48244850!--         Solid surface only on south/north side of the node                   
     
    48434869!
    48444870!--      Solid surface on both below and on south/north side of the node           
    4845          IF ( var == 'u' )  THEN
     4871         IF ( constant_flux_layer .AND. var == 'u' )  THEN
    48464872            DO  j = nys, nyn
    48474873               k = logc_kbounds(1,j)
     
    50145040!
    50155041!--   Solid surface below the node
    5016       IF ( var == 'u'  .OR.  var == 'v' )  THEN           
     5042      IF ( constant_flux_layer .AND. ( var == 'u'  .OR.  var == 'v' ) )  THEN           
    50175043         DO  i = nxl, nxr
    50185044!
     
    50385064      IF ( topography /= 'flat' )  THEN
    50395065
    5040          IF ( var == 'v' .OR. var == 'w' )  THEN
     5066         IF ( constant_flux_layer .AND. ( var == 'v' .OR. var == 'w' ) )  THEN
    50415067            DO  i = nxl, nxr
    50425068               DO  k = logc_kbounds(1,i), logc_kbounds(2,i)
     
    50615087!
    50625088!--      Solid surface on both below and on left/right side of the node           
    5063          IF ( var == 'v' )  THEN
     5089         IF ( constant_flux_layer .AND. var == 'v' )  THEN
    50645090            DO  i = nxl, nxr
    50655091               k = logc_kbounds(1,i)
Note: See TracChangeset for help on using the changeset viewer.