Ignore:
Timestamp:
Jul 27, 2018 1:36:03 PM (3 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/init_pegrid.f90

    r3058 r3182  
    2020! Current revisions:
    2121! ------------------
    22 !
     22! Rename variables and boundary conditions in mesoscale-offline nesting mode
    2323!
    2424! Former revisions:
     
    239239
    240240    USE control_parameters,                                                    &
    241         ONLY:  bc_lr, bc_ns, coupling_mode, coupling_mode_remote,              &
    242                coupling_topology, force_bound_l, force_bound_n, force_bound_r, &
    243                force_bound_s, gathered_size, grid_level,                       &
    244                grid_level_count, inflow_l, inflow_n, inflow_r, inflow_s,       &
    245                maximum_grid_level, message_string,                             &
    246                mg_switch_to_pe0_level, momentum_advec, nest_bound_l,           &
    247                nest_bound_n, nest_bound_r, nest_bound_s, nest_domain, neutral, &
    248                psolver, outflow_l, outflow_n, outflow_r, outflow_s,            &
    249                outflow_source_plane, recycling_width, scalar_advec,            &
     241        ONLY:  bc_dirichlet_l, bc_dirichlet_n, bc_dirichlet_r, bc_dirichlet_s, &
     242               bc_lr, bc_ns, bc_radiation_l, bc_radiation_n, bc_radiation_r,   &
     243               bc_radiation_s, coupling_mode, coupling_mode_remote,            &
     244               coupling_topology, gathered_size, grid_level,                   &
     245               grid_level_count, maximum_grid_level, message_string,           &
     246               mg_switch_to_pe0_level, momentum_advec, neutral,                &
     247               psolver, outflow_source_plane, recycling_width, scalar_advec,   &
    250248               subdomain_size, turbulent_outflow, y_shift
    251249
     
    12321230!-- Setting of flags for inflow/outflow/nesting conditions.
    12331231    IF ( pleft == MPI_PROC_NULL )  THEN
    1234        IF ( bc_lr == 'dirichlet/radiation' )  THEN
    1235           inflow_l  = .TRUE.
     1232       IF ( bc_lr == 'dirichlet/radiation'  .OR.  bc_lr == 'nested'  .OR.      &
     1233            bc_lr == 'nesting_offline' )  THEN
     1234          bc_dirichlet_l  = .TRUE.
    12361235       ELSEIF ( bc_lr == 'radiation/dirichlet' )  THEN
    1237           outflow_l = .TRUE.
    1238        ELSEIF ( bc_lr == 'nested' )  THEN
    1239           nest_bound_l = .TRUE.
    1240        ELSEIF ( bc_lr == 'forcing' )  THEN
    1241           force_bound_l = .TRUE.
     1236          bc_radiation_l = .TRUE.
    12421237       ENDIF
    12431238    ENDIF
     
    12451240    IF ( pright == MPI_PROC_NULL )  THEN
    12461241       IF ( bc_lr == 'dirichlet/radiation' )  THEN
    1247           outflow_r = .TRUE.
    1248        ELSEIF ( bc_lr == 'radiation/dirichlet' )  THEN
    1249           inflow_r  = .TRUE.
    1250        ELSEIF ( bc_lr == 'nested' )  THEN
    1251           nest_bound_r = .TRUE.
    1252        ELSEIF ( bc_lr == 'forcing' )  THEN
    1253           force_bound_r = .TRUE.
     1242          bc_radiation_r = .TRUE.
     1243       ELSEIF ( bc_lr == 'radiation/dirichlet'  .OR.  bc_lr == 'nested'  .OR.  &
     1244                bc_lr == 'nesting_offline' )  THEN
     1245          bc_dirichlet_r  = .TRUE.
    12541246       ENDIF
    12551247    ENDIF
     
    12571249    IF ( psouth == MPI_PROC_NULL )  THEN
    12581250       IF ( bc_ns == 'dirichlet/radiation' )  THEN
    1259           outflow_s = .TRUE.
     1251          bc_radiation_s = .TRUE.
     1252       ELSEIF ( bc_ns == 'radiation/dirichlet'  .OR.  bc_ns == 'nested'  .OR.  &
     1253                bc_ns == 'nesting_offline' )  THEN
     1254          bc_dirichlet_s  = .TRUE.
     1255       ENDIF
     1256    ENDIF
     1257
     1258    IF ( pnorth == MPI_PROC_NULL )  THEN
     1259       IF ( bc_ns == 'dirichlet/radiation'  .OR.  bc_ns == 'nested'  .OR.      &
     1260            bc_ns == 'nesting_offline' )  THEN
     1261          bc_dirichlet_n  = .TRUE.
    12601262       ELSEIF ( bc_ns == 'radiation/dirichlet' )  THEN
    1261           inflow_s  = .TRUE.
    1262        ELSEIF ( bc_ns == 'nested' )  THEN
    1263           nest_bound_s = .TRUE.
    1264        ELSEIF ( bc_ns == 'forcing' )  THEN
    1265           force_bound_s = .TRUE.
    1266        ENDIF
    1267     ENDIF
    1268 
    1269     IF ( pnorth == MPI_PROC_NULL )  THEN
    1270        IF ( bc_ns == 'dirichlet/radiation' )  THEN
    1271           inflow_n  = .TRUE.
    1272        ELSEIF ( bc_ns == 'radiation/dirichlet' )  THEN
    1273           outflow_n = .TRUE.
    1274        ELSEIF ( bc_ns == 'nested' )  THEN
    1275           nest_bound_n = .TRUE.
    1276        ELSEIF ( bc_ns == 'forcing' )  THEN
    1277           force_bound_n = .TRUE.
     1263          bc_radiation_n = .TRUE.
    12781264       ENDIF
    12791265    ENDIF
     
    12831269!-- only at the left lateral boundary.
    12841270    IF ( use_syn_turb_gen )  THEN
    1285        IF ( force_bound_l  .OR.  nest_bound_l  .OR.  inflow_l )  THEN
     1271       IF ( bc_dirichlet_l )  THEN
    12861272          id_stg_left_l = myidx
    12871273       ELSE
    12881274          id_stg_left_l = 0
    12891275       ENDIF
    1290        IF ( force_bound_r  .OR.  nest_bound_r )  THEN
     1276       IF ( bc_dirichlet_r )  THEN
    12911277          id_stg_right_l = myidx
    12921278       ELSE
    12931279          id_stg_right_l = 0
    12941280       ENDIF
    1295        IF ( force_bound_s  .OR.  nest_bound_s )  THEN
     1281       IF ( bc_dirichlet_s )  THEN
    12961282          id_stg_south_l = myidy
    12971283       ELSE
    12981284          id_stg_south_l = 0
    12991285       ENDIF
    1300        IF ( force_bound_n  .OR.  nest_bound_n )  THEN
     1286       IF ( bc_dirichlet_n )  THEN
    13011287          id_stg_north_l = myidy
    13021288       ELSE
     
    13241310!
    13251311!-- Broadcast the id of the inflow PE
    1326     IF ( inflow_l )  THEN
     1312    IF ( bc_dirichlet_l )  THEN
    13271313       id_inflow_l = myidx
    13281314    ELSE
     
    13501336    IF ( turbulent_outflow )  THEN
    13511337
    1352        IF ( outflow_r )  THEN
     1338       IF ( bc_radiation_r )  THEN
    13531339          id_outflow_l = myidx
    13541340       ELSE
     
    13751361#else
    13761362    IF ( bc_lr == 'dirichlet/radiation' )  THEN
    1377        inflow_l = .TRUE.
    1378        outflow_r = .TRUE.
     1363       bc_dirichlet_l = .TRUE.
     1364       bc_radiation_r = .TRUE.
    13791365    ELSEIF ( bc_lr == 'radiation/dirichlet' )  THEN
    1380        outflow_l = .TRUE.
    1381        inflow_r = .TRUE.
     1366       bc_radiation_l = .TRUE.
     1367       bc_dirichlet_r = .TRUE.
    13821368    ENDIF
    13831369
    13841370    IF ( bc_ns == 'dirichlet/radiation' )  THEN
    1385        inflow_n = .TRUE.
    1386        outflow_s = .TRUE.
     1371       bc_dirichlet_n = .TRUE.
     1372       bc_radiation_s = .TRUE.
    13871373    ELSEIF ( bc_ns == 'radiation/dirichlet' )  THEN
    1388        outflow_n = .TRUE.
    1389        inflow_s = .TRUE.
     1374       bc_radiation_n = .TRUE.
     1375       bc_dirichlet_s = .TRUE.
    13901376    ENDIF
    13911377#endif
     
    13941380!-- At the inflow or outflow, u or v, respectively, have to be calculated for
    13951381!-- one more grid point.
    1396     IF ( inflow_l .OR. outflow_l .OR. nest_bound_l .OR. force_bound_l )  THEN
     1382    IF ( bc_dirichlet_l  .OR.  bc_radiation_l )  THEN
    13971383       nxlu = nxl + 1
    13981384    ELSE
    13991385       nxlu = nxl
    14001386    ENDIF
    1401     IF ( inflow_s .OR. outflow_s .OR. nest_bound_s .OR. force_bound_s )  THEN
     1387    IF ( bc_dirichlet_s  .OR.  bc_radiation_s )  THEN
    14021388       nysv = nys + 1
    14031389    ELSE
Note: See TracChangeset for help on using the changeset viewer.