source: palm/trunk/SOURCE/parin.f90 @ 2007

Last change on this file since 2007 was 2007, checked in by kanani, 8 years ago

changes in the course of urban surface model implementation

  • Property svn:keywords set to Id
File size: 26.6 KB
RevLine 
[1682]1!> @file parin.f90
[2000]2!------------------------------------------------------------------------------!
[1036]3! This file is part of PALM.
4!
[2000]5! PALM is free software: you can redistribute it and/or modify it under the
6! terms of the GNU General Public License as published by the Free Software
7! Foundation, either version 3 of the License, or (at your option) any later
8! version.
[1036]9!
10! PALM is distributed in the hope that it will be useful, but WITHOUT ANY
11! WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12! A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
13!
14! You should have received a copy of the GNU General Public License along with
15! PALM. If not, see <http://www.gnu.org/licenses/>.
16!
[1818]17! Copyright 1997-2016 Leibniz Universitaet Hannover
[2000]18!------------------------------------------------------------------------------!
[1036]19!
[257]20! Current revisions:
[1484]21! -----------------
[2007]22! Added call to urban surface model for reading of &urban_surface_par
[1956]23!
24! Former revisions:
25! -----------------
26! $Id: parin.f90 2007 2016-08-24 15:47:17Z kanani $
[1958]27!
[2005]28! 2004 2016-08-24 10:25:59Z suehring
29! Humidity and passive scalar treated separately in nesting mode
30!
[2001]31! 2000 2016-08-20 18:09:15Z knoop
32! Forced header and separation lines into 80 columns
33!
[1993]34! 1992 2016-08-12 15:14:59Z suehring
35! +top_scalarflux
36!
[1961]37! 1960 2016-07-12 16:34:24Z suehring
38! Allocation of s_init
39!
[1958]40! 1957 2016-07-07 10:43:48Z suehring
41! flight module added
42!
[1956]43! 1955 2016-07-01 12:38:59Z hellstea
[1955]44! The parameter intializating_actions is set to 'set_constant_profiles for
45! all nest domains in order to make sure that diagnostic variables are properly
46! initialized for nest domains. Prognostic variables are later initialized by
47! interpolation from the parent domain.
[1957]48!
[1933]49! 1917 2016-05-27 14:28:12Z witha
50! Initial version of purely vertical nesting introduced.
51!
[1917]52! 1914 2016-05-26 14:44:07Z witha
53! Added call to wind turbine model for reading of &wind_turbine_par
54!
[1851]55! 1849 2016-04-08 11:33:18Z hoffmann
56! Adapted for modularization of microphysics
[1852]57!
[1834]58! 1833 2016-04-07 14:23:03Z raasch
59! call of spectra_parin
60!
[1832]61! 1831 2016-04-07 13:15:51Z hoffmann
62! turbulence renamed collision_turbulence, drizzle renamed
63! cloud_water_sedimentation
64! curvature_solution_effects removed
65!
[1827]66! 1826 2016-04-07 12:01:39Z maronga
67! Added call to radiation model for reading of &radiation_par.
68! Added call to plant canopy model for reading of &canopy_par.
69!
[1818]70! 1817 2016-04-06 15:44:20Z maronga
[1826]71! Added call to land surface model for reading of &lsm_par
[1818]72!
[1805]73! 1804 2016-04-05 16:30:18Z maronga
74! Removed code for parameter file check (__check)
75!
[1784]76! 1783 2016-03-06 18:36:17Z raasch
77! +netcdf_deflate in d3par, netcdf module and variable names changed
78!
[1765]79! 1764 2016-02-28 12:45:19Z raasch
[1764]80! cpp-statements for nesting removed, explicit settings of boundary conditions
81! in nest domains,
82! bugfix: npex/npey message moved from inipar to d3par
83! bugfix: check of lateral boundary conditions from check_parameters to here,
84! because they will be already used in init_pegrid and init_grid
[1321]85!
[1763]86! 1762 2016-02-25 12:31:13Z hellstea
87! Introduction of nested domain feature
88!
[1692]89! 1691 2015-10-26 16:17:44Z maronga
90! Added parameter most_method. Renamed prandtl_layer to constant_flux_layer.
91!
[1683]92! 1682 2015-10-07 23:56:08Z knoop
93! Code annotations made doxygen readable
94!
[1561]95! 1560 2015-03-06 10:48:54Z keck
96! +recycling_yshift
97!
[1497]98! 1496 2014-12-02 17:25:50Z maronga
99! Renamed: "radiation -> "cloud_top_radiation"
100!
[1485]101! 1484 2014-10-21 10:53:05Z kanani
102! Changes due to new module structure of the plant canopy model:
103!   canopy-model related parameters moved to new package canopy_par in
104!   subroutine package_parin
105!
[1430]106! 1429 2014-07-15 12:53:45Z knoop
107! +ensemble_member_nr to prepare the random_generator for ensemble runs
108!
[1403]109! 1402 2014-05-09 14:25:13Z raasch
110! location messages modified, batch_job included in envpar-NAMELIST
111!
[1385]112! 1384 2014-05-02 14:31:06Z raasch
113! location messages added
114!
[1366]115! 1365 2014-04-22 15:03:56Z boeske
116! Usage of large scale forcing enabled:
117! +use_subsidence_tendencies
118!
[1362]119! 1361 2014-04-16 15:17:48Z hoffmann
120! +call_microphysics_at_all_substeps
121!
[1360]122! 1359 2014-04-11 17:15:14Z hoffmann
123! REAL constants provided with KIND-attribute
124!
[1354]125! 1353 2014-04-08 15:21:23Z heinze
126! REAL constants provided with KIND-attribute
127!
[1329]128! 1327 2014-03-21 11:00:16Z raasch
129! -data_output_format, do3d_compress, do3d_comp_prec
130!
[1321]131! 1320 2014-03-20 08:40:49Z raasch
[1320]132! ONLY-attribute added to USE-statements,
133! kind-parameters added to all INTEGER and REAL declaration statements,
134! kinds are defined in new module kinds,
135! old module precision_kind is removed,
136! revision history before 2012 removed,
137! comment fields (!:) to be used for variable explanations added to
138! all variable declaration statements
[1054]139!
[1319]140! 1318 2014-03-17 13:35:16Z raasch
141! +cpu_log_barrierwait in d3par
142!
[1302]143! 1301 2014-03-06 13:29:46Z heinze
144! +large_scale_subsidence
145!
[1242]146! 1241 2013-10-30 11:36:58Z heinze
147! +nudging
148! +large_scale_forcing
149!
[1217]150! 1216 2013-08-26 09:31:42Z raasch
151! +transpose_compute_overlap in inipar
152!
[1196]153! 1195 2013-07-01 12:27:57Z heinze
154! Bugfix: allocate ref_state
155!
[1182]156! 1179 2013-06-14 05:57:58Z raasch
157! +reference_state in inipar
158!
[1160]159! 1159 2013-05-21 11:58:22Z fricke
160! +use_cmax
161!
[1132]162! 1128 2013-04-12 06:19:32Z raasch
163! +background_communication in inipar
164!
[1116]165! 1115 2013-03-26 18:16:16Z hoffmann
166! unused variables removed
167!
[1093]168! 1092 2013-02-02 11:24:22Z raasch
169! unused variables removed
170!
[1066]171! 1065 2012-11-22 17:42:36Z hoffmann
172! +nc, c_sedimentation, limiter_sedimentation, turbulence
173! -mu_constant, mu_constant_value
174!
[1054]175! 1053 2012-11-13 17:11:03Z hoffmann
[1053]176! necessary expansions according to the two new prognostic equations (nr, qr)
177! of the two-moment cloud physics scheme and steering parameters:
178! +*_init, *_surface, *_surface_initial_change, *_vertical_gradient,
179! +*_vertical_gradient_level, surface_waterflux_*,
180! +cloud_scheme, drizzle, mu_constant, mu_constant_value, ventilation_effect
[601]181!
[1037]182! 1036 2012-10-22 13:43:42Z raasch
183! code put under GPL (PALM 3.9)
184!
[1017]185! 1015 2012-09-27 09:23:24Z raasch
186! -adjust_mixing_length
187!
[1004]188! 1003 2012-09-14 14:35:53Z raasch
189! -grid_matching
190!
[1002]191! 1001 2012-09-13 14:08:46Z raasch
192! -cut_spline_overshoot, long_filter_factor, overshoot_limit_*, ups_limit_*
193!
[997]194! 996 2012-09-07 10:41:47Z raasch
195! -use_prior_plot1d_parameters
196!
[979]197! 978 2012-08-09 08:28:32Z fricke
198! -km_damp_max, outflow_damping_width
199! +pt_damping_factor, pt_damping_width
200! +z0h_factor
201!
[965]202! 964 2012-07-26 09:14:24Z raasch
203! -cross_normalized_x, cross_normalized_y, cross_xtext, z_max_do1d,
204! z_max_do1d_normalized
205!
[941]206! 940 2012-07-09 14:31:00Z raasch
207! +neutral in inipar
208!
[928]209! 927 2012-06-06 19:15:04Z raasch
210! +masking_method in inipar
211!
[826]212! 824 2012-02-17 09:09:57Z raasch
213! +curvature_solution_effects in inipar
214!
[810]215! 809 2012-01-30 13:32:58Z maronga
216! Bugfix: replaced .AND. and .NOT. with && and ! in the preprocessor directives
217!
[808]218! 807 2012-01-25 11:53:51Z maronga
219! New cpp directive "__check" implemented which is used by check_namelist_files
220!
[1]221! Revision 1.1  1997/07/24 11:22:50  raasch
222! Initial revision
223!
224!
225! Description:
226! ------------
[1682]227!> This subroutine reads variables controling the run from the NAMELIST files
[1]228!------------------------------------------------------------------------------!
[1682]229 SUBROUTINE parin
230 
[1]231
[1320]232    USE arrays_3d,                                                             &
[1960]233        ONLY:  pt_init, q_init, ref_state, s_init, sa_init, ug, u_init, v_init,&
[1320]234               vg
235
[1826]236    USE plant_canopy_model_mod,                                                &
237         ONLY: pcm_parin 
[1320]238
[1762]239    USE control_parameters
[1320]240
241    USE cpulog,                                                                &
242        ONLY:  cpu_log_barrierwait
243
244    USE dvrp_variables,                                                        &
245        ONLY:  local_dvrserver_running
246
[1957]247    USE flight_mod,                                                            &
248        ONLY:  flight_parin
249
[1320]250    USE grid_variables,                                                        &
251        ONLY:  dx, dy
252
253    USE indices,                                                               &
254        ONLY:  nx, ny, nz
255
[1764]256    USE kinds
257
[1817]258    USE land_surface_model_mod,                                                &
259        ONLY: lsm_parin
[1849]260
261    USE microphysics_mod,                                                      &
262        ONLY:  c_sedimentation, cloud_water_sedimentation,                     &
263               collision_turbulence, limiter_sedimentation, nc_const,          &
264               ventilation_effect
265
[1320]266    USE model_1d,                                                              &
267        ONLY:  damp_level_1d, dt_pr_1d, dt_run_control_1d, end_time_1d
268
[1]269    USE pegrid
270
[1783]271    USE netcdf_interface,                                                      &
272        ONLY:  netcdf_data_format, netcdf_deflate, netcdf_precision
273
[1764]274    USE pmc_interface,                                                         &
[1933]275        ONLY:  nested_run, nesting_mode
[1764]276
[1320]277    USE profil_parameter,                                                      &
278        ONLY:  cross_profiles, cross_ts_uymax, cross_ts_uymin,                 &
279               profile_columns, profile_rows
280
[1402]281    USE progress_bar,                                                          &
282        ONLY :  batch_job
283
[1833]284    USE radiation_model_mod,                                                   &
285        ONLY: radiation_parin 
286
287    USE spectra_mod,                                                           &
288        ONLY :  spectra_parin
289
[1320]290    USE statistics,                                                            &
291        ONLY:  hom, hom_sum, pr_palm, region, statistic_regions
292
[2007]293    USE urban_surface_mod,                                                     &
294        ONLY: usm_parin
295
[1914]296    USE wind_turbine_model_mod,                                                &
297        ONLY:  wtm_parin
[1691]298
[1914]299
[1]300    IMPLICIT NONE
301
[1682]302    INTEGER(iwp) ::  i   !<
[1]303
304
[1128]305    NAMELIST /inipar/  alpha_surface, background_communication, bc_e_b, bc_lr, &
[1429]306                       bc_ns, bc_p_b, bc_p_t, bc_pt_b, bc_pt_t, bc_q_b,        &
307             bc_q_t,bc_s_b, bc_s_t, bc_sa_t, bc_uv_b, bc_uv_t,                 &
308             bottom_salinityflux, building_height, building_length_x,          &
309             building_length_y, building_wall_left, building_wall_south,       &
310             call_psolver_at_all_substeps, call_microphysics_at_all_substeps,  &
[1484]311             canyon_height,                                                    &
[1429]312             canyon_width_x, canyon_width_y, canyon_wall_left,                 &
313             canyon_wall_south, c_sedimentation, cfl_factor, cloud_droplets,   &
[1496]314             cloud_physics, cloud_scheme, cloud_top_radiation,                 &
[1831]315             cloud_water_sedimentation,                                        &
316             collective_wait, collision_turbulence, conserve_volume_flow,      &
[1691]317             conserve_volume_flow_mode, constant_flux_layer,                   &
318             coupling_start_time,                                              &
[1831]319             cycle_mg, damp_level_1d,                                          &
[1429]320             dissipation_1d,                                                   &
[1484]321             dp_external, dp_level_b, dp_smooth, dpdxy,                        &
[1831]322             dt, dt_pr_1d, dt_run_control_1d, dx, dy, dz, dz_max,              &
[1429]323             dz_stretch_factor, dz_stretch_level, end_time_1d,                 &
324             ensemble_member_nr,                                               &
325             e_init, e_min, fft_method, galilei_transformation, humidity,      &
326             inflow_damping_height, inflow_damping_width,                      &
327             inflow_disturbance_begin, inflow_disturbance_end,                 &
[1484]328             initializing_actions, km_constant,                                &
[1429]329             large_scale_forcing, large_scale_subsidence,                      &
[1496]330             limiter_sedimentation,                                            &
[1429]331             loop_optimization, masking_method, mg_cycles,                     &
332             mg_switch_to_pe0_level, mixing_length_1d, momentum_advec,         &
[1691]333             most_method, nc_const, netcdf_precision, neutral, ngsrb,          &
[1429]334             nsor, nsor_ini, nudging, nx, ny, nz, ocean, omega, omega_sor,     &
[1691]335             passive_scalar, phi,                                              &
[1429]336             prandtl_number, precipitation, psolver, pt_damping_factor,        &
337             pt_damping_width, pt_reference, pt_surface,                       &
338             pt_surface_initial_change, pt_vertical_gradient,                  &
339             pt_vertical_gradient_level, q_surface, q_surface_initial_change,  &
340             q_vertical_gradient, q_vertical_gradient_level,                   &
[1496]341             random_generator, random_heatflux,                                &
[1560]342             rayleigh_damping_factor, rayleigh_damping_height,                 &
343             recycling_width, recycling_yshift,                                &
[1429]344             reference_state, residual_limit,                                  &
[1691]345             roughness_length, sa_surface,                                     &
[1429]346             sa_vertical_gradient, sa_vertical_gradient_level, scalar_advec,   &
[1484]347             scalar_rayleigh_damping,                                          &
[1429]348             statistic_regions, subs_vertical_gradient,                        &
[785]349             subs_vertical_gradient_level, surface_heatflux, surface_pressure, &
[1429]350             surface_scalarflux, surface_waterflux,                            &
351             s_surface, s_surface_initial_change, s_vertical_gradient,         &
352             s_vertical_gradient_level, timestep_scheme,                       &
353             topography, topography_grid_convention, top_heatflux,             &
354             top_momentumflux_u, top_momentumflux_v, top_salinityflux,         &
[1992]355             top_scalarflux, transpose_compute_overlap, turbulent_inflow,      &
[1429]356             use_subsidence_tendencies, ug_surface, ug_vertical_gradient,      &
357             ug_vertical_gradient_level, use_surface_fluxes, use_cmax,         &
358             use_top_fluxes, use_ug_for_galilei_tr, use_upstream_for_tke,      &
359             uv_heights, u_bulk, u_profile, vg_surface, vg_vertical_gradient,  &
360             vg_vertical_gradient_level, v_bulk, v_profile, ventilation_effect,&
361             wall_adjustment, wall_heatflux, wall_humidityflux,                &
[1691]362             wall_scalarflux, zeta_max, zeta_min, z0h_factor
[1053]363     
[1429]364    NAMELIST /d3par/  averaging_interval, averaging_interval_pr,               &
365             cpu_log_barrierwait, create_disturbances,                         &
366             cross_profiles, cross_ts_uymax, cross_ts_uymin,                   &
[1327]367             data_output, data_output_masks,                                   &
[600]368             data_output_pr, data_output_2d_on_each_pe, disturbance_amplitude, &
[1429]369             disturbance_energy_limit, disturbance_level_b,                    &
[1327]370             disturbance_level_t, do2d_at_begin, do3d_at_begin,                &
[1429]371             dt, dt_averaging_input, dt_averaging_input_pr,                    &
372             dt_coupling, dt_data_output, dt_data_output_av, dt_disturb,       &
373             dt_domask, dt_dopr, dt_dopr_listing, dt_dots, dt_do2d_xy,         &
374             dt_do2d_xz, dt_do2d_yz, dt_do3d, dt_max, dt_restart,              &
375             dt_run_control,end_time, force_print_header, mask_scale_x,        &
376             mask_scale_y, mask_scale_z, mask_x, mask_y, mask_z, mask_x_loop,  &
[1783]377             mask_y_loop, mask_z_loop, netcdf_data_format, netcdf_deflate,     &
378             normalizing_region, npex, npey, nz_do3d,                          &
379             precipitation_amount_interval, profile_columns, profile_rows,     &
380             restart_time, section_xy, section_xz, section_yz,                 &
381             skip_time_data_output, skip_time_data_output_av, skip_time_dopr,  &
382             skip_time_do2d_xy, skip_time_do2d_xz, skip_time_do2d_yz,          &
383             skip_time_do3d, skip_time_domask, synchronous_exchange,           &
384             termination_time_needed, z_max_do2d
[1]385
386
[1429]387    NAMELIST /envpar/  batch_job, host, local_dvrserver_running,               &
388                       maximum_cpu_time_allowed, maximum_parallel_io_streams,  &
389                       revision, return_addres, return_username,               &
[1402]390                       run_identifier, tasks_per_node, write_binary
[1]391
392!
[759]393!-- First read values of environment variables (this NAMELIST file is
394!-- generated by mrun)
[1402]395    CALL location_message( 'reading environment parameters from ENVPAR', .FALSE. )
[759]396    OPEN ( 90, FILE='ENVPAR', STATUS='OLD', FORM='FORMATTED', ERR=30 )
397    READ ( 90, envpar, ERR=31, END=32 )
398    CLOSE ( 90 )
[1402]399    CALL location_message( 'finished', .TRUE. )
[1]400
401!
[759]402!-- Calculate the number of groups into which parallel I/O is split.
403!-- The default for files which are opened by all PEs (or where each
404!-- PE opens his own independent file) is, that all PEs are doing input/output
405!-- in parallel at the same time. This might cause performance or even more
406!-- severe problems depending on the configuration of the underlying file
407!-- system.
408!-- First, set the default:
[1429]409    IF ( maximum_parallel_io_streams == -1  .OR.                               &
[759]410         maximum_parallel_io_streams > numprocs )  THEN
411       maximum_parallel_io_streams = numprocs
412    ENDIF
413!
414!-- Now calculate the number of io_blocks and the io_group to which the
415!-- respective PE belongs. I/O of the groups is done in serial, but in parallel
416!-- for all PEs belonging to the same group.
417!-- These settings are repeated in init_pegrid for the communicator comm2d,
418!-- which is not available here
419    io_blocks = numprocs / maximum_parallel_io_streams
420    io_group  = MOD( myid+1, io_blocks )
[1]421
[1402]422    CALL location_message( 'reading NAMELIST parameters from PARIN', .FALSE. )
[759]423!
424!-- Data is read in parallel by groups of PEs
425    DO  i = 0, io_blocks-1
426       IF ( i == io_group )  THEN
[559]427
[1]428!
[759]429!--       Open the NAMELIST-file which is send with this job
430          CALL check_open( 11 )
[559]431
[1]432!
[759]433!--       Read the control parameters for initialization.
[996]434!--       The namelist "inipar" must be provided in the NAMELIST-file.
435          READ ( 11, inipar, ERR=10, END=11 )
[807]436
[996]437          GOTO 12
[807]438
[1429]439 10       message_string = 'errors in \$inipar &or no \$inipar-namelist ' //   &
[759]440                           'found (CRAY-machines only)'
441          CALL message( 'parin', 'PA0271', 1, 2, 0, 6, 0 )
[146]442
[759]443 11       message_string = 'no \$inipar-namelist found'
444          CALL message( 'parin', 'PA0272', 1, 2, 0, 6, 0 )
445
[146]446!
[759]447!--       If required, read control parameters from restart file (produced by
448!--       a prior run). All PEs are reading from file created by PE0 (see
449!--       check_open)
450 12       IF ( TRIM( initializing_actions ) == 'read_restart_data' )  THEN
451             CALL read_var_list
452!
453!--          The restart file will be reopened when reading the subdomain data
454             CALL close_file( 13 )
[87]455
[1]456!
[759]457!--          Increment the run count
458             runnr = runnr + 1
459          ENDIF
460
[87]461!
[1933]462!--       In case of nested runs, explicitly set nesting boundary conditions.
463!--       This will overwrite the user settings. bc_lr and bc_ns always need
464!--       to be cyclic for vertical nesting.
465          IF ( nesting_mode == 'vertical' )  THEN
466             IF (bc_lr /= 'cyclic' .OR. bc_ns /= 'cyclic' )  THEN
467                WRITE ( message_string, *)  'bc_lr and bc_ns were set to ,',   &
468                                      'cyclic for vertical nesting'
469                CALL message( 'parin', 'PA0428', 0, 0, 0, 6, 0 )
470                bc_lr   = 'cyclic'
471                bc_ns   = 'cyclic'
472             ENDIF
473             IF ( nest_domain )  THEN
474                bc_uv_t = 'nested'
475                bc_pt_t = 'nested'
476                bc_q_t  = 'nested'
[2004]477                bc_s_t  = 'nested'
[1933]478                bc_p_t  = 'neumann'
479             ENDIF
480          ELSE
481         
482!
483!--       For other nesting modes only set boundary conditions for
484!--       nested domains.
485             IF ( nest_domain )  THEN
486                bc_lr   = 'nested'
487                bc_ns   = 'nested'
488                bc_uv_t = 'nested'
489                bc_pt_t = 'nested'
490                bc_q_t  = 'nested'
[2004]491                bc_s_t  = 'nested'
[1933]492                bc_p_t  = 'neumann'
493             ENDIF
[1764]494          ENDIF
[1955]495
496!         
497!--       In case of nested runs, make sure that initializing_actions =
498!--       'set_constant_profiles' even though the constant-profiles
499!--       initializations for the prognostic variables will be overwritten
500!--       by pmci_child_initialize and pmci_parent_initialize. This is,
501!--       however, important e.g. to make sure that diagnostic variables
502!--       are set properly.
503          IF ( nest_domain )  THEN
504             initializing_actions = 'set_constant_profiles'
505          ENDIF
506
[1957]507           
[1764]508!
509!--       Check validity of lateral boundary conditions. This has to be done
510!--       here because they are already used in init_pegrid and init_grid and
511!--       therefore cannot be check in check_parameters
512          IF ( bc_lr /= 'cyclic'  .AND.  bc_lr /= 'dirichlet/radiation'  .AND. &
513               bc_lr /= 'radiation/dirichlet'  .AND.  bc_lr /= 'nested' )  THEN
514             message_string = 'unknown boundary condition: bc_lr = "' // &
515                              TRIM( bc_lr ) // '"'
516             CALL message( 'check_parameters', 'PA0049', 1, 2, 0, 6, 0 )
517          ENDIF
518          IF ( bc_ns /= 'cyclic'  .AND.  bc_ns /= 'dirichlet/radiation'  .AND. &
519               bc_ns /= 'radiation/dirichlet'  .AND.  bc_ns /= 'nested' )  THEN
520             message_string = 'unknown boundary condition: bc_ns = "' // &
521                              TRIM( bc_ns ) // '"'
522             CALL message( 'check_parameters', 'PA0050', 1, 2, 0, 6, 0 )
523          ENDIF
524
525!
526!--       Set internal variables used for speed optimization in if clauses
527          IF ( bc_lr /= 'cyclic' )               bc_lr_cyc    = .FALSE.
528          IF ( bc_lr == 'dirichlet/radiation' )  bc_lr_dirrad = .TRUE.
529          IF ( bc_lr == 'radiation/dirichlet' )  bc_lr_raddir = .TRUE.
530          IF ( bc_ns /= 'cyclic' )               bc_ns_cyc    = .FALSE.
531          IF ( bc_ns == 'dirichlet/radiation' )  bc_ns_dirrad = .TRUE.
532          IF ( bc_ns == 'radiation/dirichlet' )  bc_ns_raddir = .TRUE.
533
534!
[759]535!--       Definition of names of areas used for computing statistics. They must
536!--       be defined at this place, because they are allowed to be redefined by
537!--       the user in user_parin.
538          region = 'total domain'
[87]539
540!
[759]541!--       Read runtime parameters given by the user for this run (namelist
542!--       "d3par"). The namelist "d3par" can be omitted. In that case, default
543!--       values are used for the parameters.
544          READ ( 11, d3par, END=20 )
[87]545
[1764]546          IF ( nested_run )  THEN
[87]547!
[1764]548!--          In nested domains, npex or npey can not be given in the d3par-
549!--          NAMELIST because here the PE-grids are always defined in the
550!--          nestpar-NAMELIST. Settings will be ignored.
551             IF ( ( npex /= -1 ) .OR. ( npey /= -1 ) )  THEN
552                message_string = 'npex or npey can not be given in \$d3par ' // &
553                                 'for nested runs & they will be ignored'
554                CALL message( 'parin', 'PA0352', 0, 1, 0, 6, 0 )
555             ENDIF
556          ENDIF
557
558!
[1826]559!--       Check if land surface model is used and read &lsm_par if required
[1817]560          CALL lsm_parin
[1833]561
[1817]562!
[2007]563!--       Check if urban surface model is used and read &urban_surface_par if required
564          CALL usm_parin
565
566!
[1833]567!--       Check if spectra shall be calculated and read spectra_par if required
568          CALL spectra_parin
569
570!
[1826]571!--       Check if radiation model is used and read &radiation_par if required
572          CALL radiation_parin
573 
574 
575!--       Check if plant canopy model is used and read &canopy_par if required
576          CALL pcm_parin
577 
578!
[759]579!--       Read control parameters for optionally used model software packages
580 20       CALL package_parin
[87]581
582!
[1914]583!--       Check if wind turbine model is used and read &wind_turbine_par if
584!--       required
585          CALL wtm_parin
[1957]586!
587!--       Check if virtual flights should be carried out and read &flight_part
588!--       if required
589          CALL flight_parin
[1914]590
591!
[759]592!--       Read user-defined variables
593          CALL user_parin
[87]594
[147]595!
[759]596!--       Check in case of initial run, if the grid point numbers are well
597!--       defined and allocate some arrays which are already needed in
598!--       init_pegrid or check_parameters. During restart jobs, these arrays
599!--       will be allocated in read_var_list. All other arrays are allocated
600!--       in init_3d_model.
601          IF ( TRIM( initializing_actions ) /= 'read_restart_data' )  THEN
[667]602
[759]603             IF ( nx <= 0 )  THEN
[1429]604                WRITE( message_string, * ) 'no value or wrong value given',    &
[759]605                                           ' for nx: nx=', nx
606                CALL message( 'parin', 'PA0273', 1, 2, 0, 6, 0 )
607             ENDIF
608             IF ( ny <= 0 )  THEN
[1429]609                WRITE( message_string, * ) 'no value or wrong value given',    &
[759]610                                           ' for ny: ny=', ny
611                CALL message( 'parin', 'PA0274', 1, 2, 0, 6, 0 )
612             ENDIF
613             IF ( nz <= 0 )  THEN
[1429]614                WRITE( message_string, * ) 'no value or wrong value given',    &
[759]615                                           ' for nz: nz=', nz
616                CALL message( 'parin', 'PA0275', 1, 2, 0, 6, 0 )
617             ENDIF
618!
619!--          ATTENTION: in case of changes to the following statement please
620!--                  also check the allocate statement in routine read_var_list
[1960]621             ALLOCATE( pt_init(0:nz+1), q_init(0:nz+1), s_init(0:nz+1),        &
[1429]622                       ref_state(0:nz+1), sa_init(0:nz+1), ug(0:nz+1),         &
623                       u_init(0:nz+1), v_init(0:nz+1), vg(0:nz+1),             &
624                       hom(0:nz+1,2,pr_palm+max_pr_user,0:statistic_regions),  &
[759]625                       hom_sum(0:nz+1,pr_palm+max_pr_user,0:statistic_regions) )
[1]626
[1353]627             hom = 0.0_wp
[1]628
[759]629          ENDIF
630
[1]631!
[759]632!--       NAMELIST-file is not needed anymore
633          CALL close_file( 11 )
[1]634
[759]635       ENDIF
[1804]636#if defined( __parallel )
[759]637       CALL MPI_BARRIER( MPI_COMM_WORLD, ierr )
638#endif
639    ENDDO
640
[1402]641    CALL location_message( 'finished', .TRUE. )
[1384]642
[1]643    RETURN
644
[1429]645 30 message_string = 'local file ENVPAR not found' //                          &
[257]646                     '&some variables for steering may not be properly set'
647    CALL message( 'parin', 'PA0276', 0, 1, 0, 6, 0 )
[1]648    RETURN
649
[1429]650 31 message_string = 'errors in local file ENVPAR' //                          &
[257]651                     '&some variables for steering may not be properly set'
652    CALL message( 'parin', 'PA0277', 0, 1, 0, 6, 0 )
[1]653    RETURN
654
[1429]655 32 message_string = 'no envpar-NAMELIST found in local file ENVPAR'  //       &
[257]656                     '&some variables for steering may not be properly set'
657    CALL message( 'parin', 'PA0278', 0, 1, 0, 6, 0 )
[1]658
659 END SUBROUTINE parin
Note: See TracBrowser for help on using the repository browser.