Ignore:
Timestamp:
Jul 27, 2018 1:36:03 PM (6 years ago)
Author:
suehring
Message:

New Inifor features: grid stretching, improved command-interface, support start dates in different formats in both YYYYMMDD and YYYYMMDDHH, Ability to manually control input file prefixes (--radiation-prefix, --soil-preifx, --flow-prefix, --soilmoisture-prefix) for compatiblity with DWD forcast naming scheme; GNU-style short and long option; Prepared output of large-scale forcing profiles (no computation yet); Added preprocessor flag netcdf4 to switch output format between netCDF 3 and 4; Updated netCDF variable names and attributes to comply with PIDS v1.9; Inifor bugfixes: Improved compatibility with older Intel Intel compilers by avoiding implicit array allocation; Added origin_lon/_lat values and correct reference time in dynamic driver global attributes; corresponding PALM changes: adjustments to revised Inifor; variables names in dynamic driver adjusted; enable geostrophic forcing also in offline nested mode; variable names in LES-LES and COSMO offline nesting changed; lateral boundary flags for nesting, in- and outflow conditions renamed

File:
1 edited

Legend:

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

    r3083 r3182  
    2020! Current revisions:
    2121! ------------------
    22 !
     22! Variable names for nest_bound_x replaced by bc_dirichlet_x.
     23! Remove commented prints into debug files.
    2324!
    2425! Former revisions:
     
    306307   USE arrays_3d,                                                              &
    307308        ONLY:  diss, diss_2, dzu, dzw, e, e_p, e_2, nc, nc_2, nc_p, nr, nr_2,  &
    308                pt, pt_2, q, q_2, qc, qc_2, qr, qr_2, s, s_2,                       &
     309               pt, pt_2, q, q_2, qc, qc_2, qr, qr_2, s, s_2,                   &
    309310               u, u_p, u_2, v, v_p, v_2, w, w_p, w_2, zu, zw
    310311#endif
    311312
    312313    USE control_parameters,                                                    &
    313         ONLY:  air_chemistry, cloud_physics,                                   &
     314        ONLY:  air_chemistry, bc_dirichlet_l, bc_dirichlet_n, bc_dirichlet_r,  &
     315               bc_dirichlet_s, cloud_physics, child_domain,                    &
    314316               constant_diffusion, constant_flux_layer,                        &
    315317               coupling_char, dt_3d, dz, humidity, message_string,             &
    316318               microphysics_morrison, microphysics_seifert,                    &
    317                nest_bound_l, nest_bound_r, nest_bound_s, nest_bound_n,         &
    318                nest_domain, neutral, passive_scalar, rans_mode, rans_tke_e,    &
     319               neutral, passive_scalar, rans_mode, rans_tke_e,                 &
    319320               roughness_length, simulated_time, topography, volume_flow
    320321
     
    743744!-- course the root domain (cpl_id = 1) is not nested)
    744745    IF ( cpl_id >= 2 )  THEN
    745        nest_domain = .TRUE.
     746       child_domain = .TRUE.
    746747       WRITE( coupling_char, '(A2,I2.2)') '_N', cpl_id
    747748    ENDIF
     
    11921193        childgrid(m)%uz_coord   = zmax_coarse(2)
    11931194        childgrid(m)%uz_coord_b = zmax_coarse(1)
    1194 
    1195 !         WRITE(9,*)                 'edge coordinates for child id ',child_id,m
    1196 !         WRITE(9,*)                 'Number of Boundray cells lpm  ',nbgp_lpm
    1197 !         WRITE(9,'(a,3i7,2f10.2)') ' model size                    ', nx_cl, ny_cl, nz_cl, dx_cl, dy_cl
    1198 !          WRITE(9,'(a,5f10.2)')     ' model edge                    ', childgrid(m)%lx_coord,  &
    1199 !                                childgrid(m)%rx_coord, childgrid(m)%sy_coord,                  &
    1200 !                                childgrid(m)%ny_coord,childgrid(m)%uz_coord
    1201 !          WRITE(9,'(a,4f10.2)')     ' model edge with Boundary      ', childgrid(m)%lx_coord_b,&
    1202 !                                childgrid(m)%rx_coord_b, childgrid(m)%sy_coord_b,              &
    1203 !                                childgrid(m)%ny_coord_b
    12041195
    12051196     END SUBROUTINE set_child_edge_coords
     
    17141705!--    interpolation routines.
    17151706       nzt_topo_nestbc_l = nzb
    1716        IF ( nest_bound_l )  THEN
     1707       IF ( bc_dirichlet_l )  THEN
    17171708          DO  i = nxl-1, nxl
    17181709             DO  j = nys, nyn
     
    17401731     
    17411732       nzt_topo_nestbc_r = nzb
    1742        IF ( nest_bound_r )  THEN
     1733       IF ( bc_dirichlet_r )  THEN
    17431734          i = nxr + 1
    17441735          DO  j = nys, nyn
     
    17651756
    17661757       nzt_topo_nestbc_s = nzb
    1767        IF ( nest_bound_s )  THEN
     1758       IF ( bc_dirichlet_s )  THEN
    17681759          DO  j = nys-1, nys
    17691760             DO  i = nxl, nxr
     
    17911782
    17921783       nzt_topo_nestbc_n = nzb
    1793        IF ( nest_bound_n )  THEN
     1784       IF ( bc_dirichlet_n )  THEN
    17941785          j = nyn + 1
    17951786          DO  i = nxl, nxr
     
    18621853!--    logc_kbounds_* need to be allocated and initialized here.
    18631854!--    Left boundary
    1864        IF ( nest_bound_l )  THEN
     1855       IF ( bc_dirichlet_l )  THEN
    18651856
    18661857          ALLOCATE( logc_u_l(1:2,nzb:nzt_topo_nestbc_l,nys:nyn) )
     
    19231914!
    19241915!--    Right boundary
    1925        IF ( nest_bound_r )  THEN
     1916       IF ( bc_dirichlet_r )  THEN
    19261917           
    19271918          ALLOCATE( logc_u_r(1:2,nzb:nzt_topo_nestbc_r,nys:nyn) )
     
    19851976!
    19861977!--    South boundary
    1987        IF ( nest_bound_s )  THEN
     1978       IF ( bc_dirichlet_s )  THEN
    19881979
    19891980          ALLOCATE( logc_u_s(1:2,nzb:nzt_topo_nestbc_s,nxl:nxr) )
     
    20442035!
    20452036!--    North boundary
    2046        IF ( nest_bound_n )  THEN
     2037       IF ( bc_dirichlet_n )  THEN
    20472038
    20482039          ALLOCATE( logc_u_n(1:2,nzb:nzt_topo_nestbc_n,nxl:nxr) )
     
    21162107!       
    21172108!--       Left boundary
    2118           IF ( nest_bound_l )  THEN
     2109          IF ( bc_dirichlet_l )  THEN
    21192110             logc_kbounds_u_l(1:2,nys:nyn) = 0
    21202111             logc_kbounds_v_l(1:2,nys:nyn) = 0             
     
    22552246             ENDDO
    22562247
    2257           ENDIF   !  IF ( nest_bound_l )
     2248          ENDIF   !  IF ( bc_dirichlet_l )
    22582249!       
    22592250!--       Right boundary
    2260           IF ( nest_bound_r )  THEN
     2251          IF ( bc_dirichlet_r )  THEN
    22612252             logc_kbounds_u_r(1:2,nys:nyn) = 0
    22622253             logc_kbounds_v_r(1:2,nys:nyn) = 0             
     
    23952386             ENDDO
    23962387             
    2397           ENDIF   !  IF ( nest_bound_r )
     2388          ENDIF   !  IF ( bc_dirichlet_r )
    23982389!       
    23992390!--       South boundary
    2400           IF ( nest_bound_s )  THEN
     2391          IF ( bc_dirichlet_s )  THEN
    24012392             logc_kbounds_u_s(1:2,nxl:nxr) = 0
    24022393             logc_kbounds_v_s(1:2,nxl:nxr) = 0
     
    25372528             ENDDO
    25382529
    2539           ENDIF   !  IF (nest_bound_s )
     2530          ENDIF   !  IF (bc_dirichlet_s )
    25402531!       
    25412532!--       North boundary
    2542           IF ( nest_bound_n )  THEN
     2533          IF ( bc_dirichlet_n )  THEN
    25432534             logc_kbounds_u_n(1:2,nxl:nxr) = 0             
    25442535             logc_kbounds_v_n(1:2,nxl:nxr) = 0
     
    26782669             ENDDO
    26792670
    2680           ENDIF   !  IF ( nest_bound_n )
     2671          ENDIF   !  IF ( bc_dirichlet_n )
    26812672
    26822673       ENDIF   !  IF ( topography /= 'flat' )
     
    27862777
    27872778       END SELECT
    2788          
    2789        !write(9,"('pmci_define_loglaw_correction_parameters: ', 6(i3,2x))")    &
    2790        !     direction, ij, k, wall_index, inc, lc
    27912779
    27922780    END SUBROUTINE pmci_define_loglaw_correction_parameters
     
    33253313!
    33263314       IF ( .NOT. rans_mode  .AND.  .NOT. rans_mode_parent )  THEN
    3327           IF ( nest_bound_l )  THEN
     3315          IF ( bc_dirichlet_l )  THEN
    33283316             ALLOCATE( tkefactor_l(nzb:nzt+1,nysg:nyng) )
    33293317             tkefactor_l = 0.0_wp
     
    33453333          ENDIF
    33463334
    3347           IF ( nest_bound_r )  THEN
     3335          IF ( bc_dirichlet_r )  THEN
    33483336             ALLOCATE( tkefactor_r(nzb:nzt+1,nysg:nyng) )
    33493337             tkefactor_r = 0.0_wp
     
    33653353          ENDIF
    33663354
    3367           IF ( nest_bound_s )  THEN
     3355          IF ( bc_dirichlet_s )  THEN
    33683356             ALLOCATE( tkefactor_s(nzb:nzt+1,nxlg:nxrg) )
    33693357             tkefactor_s = 0.0_wp
     
    33863374          ENDIF
    33873375
    3388           IF ( nest_bound_n )  THEN
     3376          IF ( bc_dirichlet_n )  THEN
    33893377             ALLOCATE( tkefactor_n(nzb:nzt+1,nxlg:nxrg) )
    33903378             tkefactor_n = 0.0_wp
     
    34283416!--    RANS mode
    34293417       ELSE
    3430           IF ( nest_bound_l )  THEN
     3418          IF ( bc_dirichlet_l )  THEN
    34313419             ALLOCATE( tkefactor_l(nzb:nzt+1,nysg:nyng) )
    34323420             tkefactor_l = 1.0_wp
    34333421          ENDIF
    3434           IF ( nest_bound_r )  THEN
     3422          IF ( bc_dirichlet_r )  THEN
    34353423             ALLOCATE( tkefactor_r(nzb:nzt+1,nysg:nyng) )
    34363424             tkefactor_r = 1.0_wp
    34373425          ENDIF
    3438           IF ( nest_bound_s )  THEN
     3426          IF ( bc_dirichlet_s )  THEN
    34393427             ALLOCATE( tkefactor_s(nzb:nzt+1,nxlg:nxrg) )
    34403428             tkefactor_s = 1.0_wp
    34413429          ENDIF
    3442           IF ( nest_bound_n )  THEN
     3430          IF ( bc_dirichlet_n )  THEN
    34433431             ALLOCATE( tkefactor_n(nzb:nzt+1,nxlg:nxrg) )
    34443432             tkefactor_n = 1.0_wp
     
    39803968       je = nyn
    39813969       IF ( nesting_mode /= 'vertical' )  THEN
    3982           IF ( nest_bound_l )  THEN
     3970          IF ( bc_dirichlet_l )  THEN
    39833971             ib = nxl - 1
    39843972!
     
    39883976             ENDIF
    39893977          ENDIF
    3990           IF ( nest_bound_s )  THEN
     3978          IF ( bc_dirichlet_s )  THEN
    39913979             jb = nys - 1
    39923980!
     
    39963984             ENDIF
    39973985          ENDIF
    3998           IF ( nest_bound_r )  THEN
     3986          IF ( bc_dirichlet_r )  THEN
    39993987             ie = nxr + 1
    40003988          ENDIF
    4001           IF ( nest_bound_n )  THEN
     3989          IF ( bc_dirichlet_n )  THEN
    40023990             je = nyn + 1
    40033991          ENDIF
     
    42014189    volume_flow_l(1) = 0.0_wp
    42024190
    4203     IF ( nest_bound_l )  THEN
     4191    IF ( bc_dirichlet_l )  THEN
    42044192       i = 0
    42054193       innor = dy
     
    42134201    ENDIF
    42144202
    4215     IF ( nest_bound_r )  THEN
     4203    IF ( bc_dirichlet_r )  THEN
    42164204       i = nx + 1
    42174205       innor = -dy
     
    42384226    volume_flow_l(2) = 0.0_wp
    42394227
    4240     IF ( nest_bound_s )  THEN
     4228    IF ( bc_dirichlet_s )  THEN
    42414229       j = 0
    42424230       innor = dx
     
    42504238    ENDIF
    42514239
    4252     IF ( nest_bound_n )  THEN
     4240    IF ( bc_dirichlet_n )  THEN
    42534241       j = ny + 1
    42544242       innor = -dx
     
    45494537!
    45504538!--       Left border pe:
    4551           IF ( nest_bound_l )  THEN
     4539          IF ( bc_dirichlet_l )  THEN
    45524540             
    45534541             CALL pmci_interp_tril_lr( u,  uc,  icu, jco, kco, r1xu, r2xu,     &
     
    46564644!
    46574645!--       Right border pe
    4658           IF ( nest_bound_r )  THEN
     4646          IF ( bc_dirichlet_r )  THEN
    46594647             
    46604648             CALL pmci_interp_tril_lr( u,  uc,  icu, jco, kco, r1xu, r2xu,     &
     
    47694757!
    47704758!--       South border pe
    4771           IF ( nest_bound_s )  THEN
     4759          IF ( bc_dirichlet_s )  THEN
    47724760
    47734761             CALL pmci_interp_tril_sn( u,  uc,  icu, jco, kco, r1xu, r2xu,     &
     
    48804868!
    48814869!--       North border pe
    4882           IF ( nest_bound_n )  THEN
     4870          IF ( bc_dirichlet_n )  THEN
    48834871             
    48844872             CALL pmci_interp_tril_sn( u,  uc,  icu, jco, kco, r1xu, r2xu,     &
     
    57485736!--    comprehensive explanation for this is still pending.
    57495737       IF ( nesting_mode == 'vertical' )  THEN
    5750           IF ( nest_bound_l )  THEN
     5738          IF ( bc_dirichlet_l )  THEN
    57515739             iclp = icl + nhll
    57525740          ENDIF
    5753           IF ( nest_bound_r ) THEN
     5741          IF ( bc_dirichlet_r ) THEN
    57545742             icrm = icr - nhlr
    57555743          ENDIF
    5756           IF ( nest_bound_s )  THEN
     5744          IF ( bc_dirichlet_s )  THEN
    57575745             jcsp = jcs + nhls
    57585746          ENDIF
    5759           IF ( nest_bound_n )  THEN
     5747          IF ( bc_dirichlet_n )  THEN
    57605748             jcnm = jcn - nhln
    57615749          ENDIF
    57625750       ELSE
    5763           IF ( nest_bound_l )  THEN
     5751          IF ( bc_dirichlet_l )  THEN
    57645752             IF ( var == 'u' )  THEN
    57655753                iclp = icl + nhll + 1 + 1
     
    57685756             ENDIF
    57695757          ENDIF
    5770           IF ( nest_bound_r )  THEN
     5758          IF ( bc_dirichlet_r )  THEN
    57715759             icrm = icr - nhlr - 1
    57725760          ENDIF
    57735761
    5774           IF ( nest_bound_s )  THEN
     5762          IF ( bc_dirichlet_s )  THEN
    57755763             IF ( var == 'v' )  THEN
    57765764                jcsp = jcs + nhls + 1 + 1
     
    57795767             ENDIF
    57805768          ENDIF
    5781           IF ( nest_bound_n )  THEN
     5769          IF ( bc_dirichlet_n )  THEN
    57825770             jcnm = jcn - nhln - 1
    57835771          ENDIF
Note: See TracChangeset for help on using the changeset viewer.