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

Last change on this file since 3157 was 3157, checked in by maronga, 4 years ago

added local free convection velocity scale in calculation of horizontal wind at first grid level

  • Property svn:keywords set to Id
File size: 44.8 KB
Line 
1!> @file parin.f90
2!------------------------------------------------------------------------------!
3! This file is part of the PALM model system.
4!
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.
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!
17! Copyright 1997-2018 Leibniz Universitaet Hannover
18!------------------------------------------------------------------------------!
19!
20! Current revisions:
21! -----------------
22!
23!
24! Former revisions:
25! -----------------
26! $Id: parin.f90 3157 2018-07-19 21:08:49Z maronga $
27! added use_free_convection_scaling
28!
29! 3083 2018-06-19 14:03:12Z gronemeier
30! Added rans_const_c and rans_const_sigma as input parameters (TG)
31!
32! 3065 2018-06-12 07:03:02Z Giersch
33! New initialization parameters added
34!
35! 3049 2018-05-29 13:52:36Z Giersch
36! Error messages revised
37!
38! 3045 2018-05-28 07:55:41Z Giersch
39! z_max_do2d removed, error messages revised
40!
41! 2995 2018-04-19 12:13:16Z Giersch
42! time_since_reference_point must be calculated/initialized before the first 
43! call of functions related to the radiation model which occur in
44! time_integration_spinup or time_integration
45!
46! 2980 2018-04-17 15:19:27Z suehring
47! Revise message call
48!
49! 2975 2018-04-16 15:22:20Z suehring
50! - Informative message when initializing_actions has been changed
51!   to set_constant_profile in child domain
52! - Change location in message call
53!
54! 2967 2018-04-13 11:22:08Z raasch
55! bugfix: missing parallel cpp-directives added
56!
57! 2941 2018-04-03 11:54:58Z kanani
58! Fix for spinup in case of restart run
59!
60! 2938 2018-03-27 15:52:42Z suehring
61! Change initialization in case child domain should be initialized with Inifor.
62!
63! 2936 2018-03-27 14:49:27Z suehring
64! inipar renamed to initialization_parameters.
65! d3par renamed to runtime_parameters.
66!
67! 2921 2018-03-22 15:05:23Z Giersch
68! Activation of spinup has been moved from lsm/usm_parin to parin itself
69!
70! 2906 2018-03-19 08:56:40Z Giersch
71! ENVIRONMENT variables read/write_svf has been added
72!
73! 2894 2018-03-15 09:17:58Z Giersch
74! read_var_list has been renamed to rrd_global, all module related _parin
75! routines are called before reading the global restart data to overwrite them
76! in case of restart runs
77!
78! 2881 2018-03-13 16:24:40Z suehring
79! Added flag for switching on/off calculation of soil moisture
80!
81! 2849 2018-03-05 10:49:33Z Giersch
82! Position of d3par namelist in parameter file is unimportant now
83!
84! 2826 2018-02-21 12:39:28Z Giersch
85! Bugfix in setting the default boundary conditions for nest domains
86!
87! 2817 2018-02-19 16:32:21Z knoop
88! Preliminary gust module interface implemented
89!
90! 2773 2018-01-30 14:12:54Z suehring
91! Nesting for chemical species implemented
92!
93! 2766 2018-01-22 17:17:47Z kanani
94! Removed preprocessor directive __chem
95!
96! 2718 2018-01-02 08:49:38Z maronga
97! Corrected "Former revisions" section
98!
99! 2696 2017-12-14 17:12:51Z kanani
100! Change in file header (GPL part)
101! Implementation of uv exposure model (FK)
102! Added rans_mode and turbulence_closure to inipar (TG)
103! Implementation of chemistry module
104! Sorting of USE list (FK)
105! Forcing implemented, and initialization with inifor (MS)
106!
107! 2600 2017-11-01 14:11:20Z raasch
108! some comments added and variables renamed concerning r2599
109!
110! 2599 2017-11-01 13:18:45Z hellstea
111! The i/o grouping is updated to work correctly also in nested runs.
112!
113! 2575 2017-10-24 09:57:58Z maronga
114! Renamed phi -> latitude, added longitude
115!
116! 2563 2017-10-19 15:36:10Z Giersch
117! Changed position where restart files are closed.
118!
119! 2550 2017-10-16 17:12:01Z boeske
120! Added complex_terrain
121!
122! 2544 2017-10-13 18:09:32Z maronga
123! Moved day_of_year_init and time_utc_init to inipar.
124!
125! 2397 2017-09-04 16:22:48Z suehring
126! Enable initialization of 3d model by user in the child domain.
127!
128! 2375 2017-08-29 14:10:28Z schwenkel
129! Added aerosol initialization for bulk microphysics
130!
131! 2372 2017-08-25 12:37:32Z sward
132! y_shift added to namelist
133!
134! 2365 2017-08-21 14:59:59Z kanani
135! Vertical grid nesting: add vnest_start_time to d3par (SadiqHuq)
136!
137! 2339 2017-08-07 13:55:26Z gronemeier
138! corrected timestamp in header
139!
140! 2338 2017-08-07 12:15:38Z gronemeier
141! Modularize 1D model
142!
143! 2310 2017-07-11 09:37:02Z gronemeier
144! Bugfix: re-arranged call for error messages for ENVPAR file
145!
146! 2304 2017-07-04 14:35:55Z suehring
147! Bugfix, enable restarts for child domain.
148!
149! 2298 2017-06-29 09:28:18Z raasch
150! -return_addres, return_username in ENVPAR, -cross_ts_uymax, cross_ts_uymin in
151! d3par
152!
153! 2296 2017-06-28 07:53:56Z maronga
154! Added parameters for model spinup
155!
156! 2292 2017-06-20 09:51:42Z schwenkel
157! Implementation of new microphysic scheme: cloud_scheme = 'morrison'
158! includes two more prognostic equations for cloud drop concentration (nc) 
159! and cloud water content (qc).
160!
161! 2267 2017-06-09 09:33:25Z gronemeier
162! Bugfix: removed skipping of reading namelists in case of omitted d3par
163!
164! 2259 2017-06-08 09:09:11Z gronemeier
165! Implemented synthetic turbulence generator
166!
167! 2233 2017-05-30 18:08:54Z suehring
168!
169! 2232 2017-05-30 17:47:52Z suehring
170! typo corrected
171! +wall_salinityflux
172! +tunnel_height, tunnel_lenght, tunnel_width_x, tunnel_width_y,
173!  tunnel_wall_depth
174!
175! 2118 2017-01-17 16:38:49Z raasch
176! -background_communication from inipar
177!
178! 2050 2016-11-08 15:00:55Z gronemeier
179! Implement turbulent outflow condition
180!
181! 2037 2016-10-26 11:15:40Z knoop
182! Anelastic approximation implemented
183!
184! 2035 2016-10-24 15:06:17Z suehring
185! Remove check for npex and npey in nesting case
186!
187! 2011 2016-09-19 17:29:57Z kanani
188! Added flag lsf_exception to allow explicit enabling of large scale forcing
189! together with buildings on flat terrain.
190!
191! 2007 2016-08-24 15:47:17Z kanani
192! Added call to urban surface model for reading of &urban_surface_par
193!
194! 2004 2016-08-24 10:25:59Z suehring
195! Humidity and passive scalar treated separately in nesting mode
196!
197! 2000 2016-08-20 18:09:15Z knoop
198! Forced header and separation lines into 80 columns
199!
200! 1992 2016-08-12 15:14:59Z suehring
201! +top_scalarflux
202!
203! 1960 2016-07-12 16:34:24Z suehring
204! Allocation of s_init
205!
206! 1957 2016-07-07 10:43:48Z suehring
207! flight module added
208!
209! 1955 2016-07-01 12:38:59Z hellstea
210! The parameter intializating_actions is set to 'set_constant_profiles for
211! all nest domains in order to make sure that diagnostic variables are properly
212! initialized for nest domains. Prognostic variables are later initialized by
213! interpolation from the parent domain.
214!
215! 1917 2016-05-27 14:28:12Z witha
216! Initial version of purely vertical nesting introduced.
217!
218! 1914 2016-05-26 14:44:07Z witha
219! Added call to wind turbine model for reading of &wind_turbine_par
220!
221! 1849 2016-04-08 11:33:18Z hoffmann
222! Adapted for modularization of microphysics
223!
224! 1833 2016-04-07 14:23:03Z raasch
225! call of spectra_parin
226!
227! 1831 2016-04-07 13:15:51Z hoffmann
228! turbulence renamed collision_turbulence, drizzle renamed
229! cloud_water_sedimentation
230! curvature_solution_effects removed
231!
232! 1826 2016-04-07 12:01:39Z maronga
233! Added call to radiation model for reading of &radiation_par.
234! Added call to plant canopy model for reading of &canopy_par.
235!
236! 1817 2016-04-06 15:44:20Z maronga
237! Added call to land surface model for reading of &lsm_par
238!
239! 1804 2016-04-05 16:30:18Z maronga
240! Removed code for parameter file check (__check)
241!
242! 1783 2016-03-06 18:36:17Z raasch
243! +netcdf_deflate in d3par, netcdf module and variable names changed
244!
245! 1764 2016-02-28 12:45:19Z raasch
246! cpp-statements for nesting removed, explicit settings of boundary conditions
247! in nest domains,
248! bugfix: npex/npey message moved from inipar to d3par
249! bugfix: check of lateral boundary conditions from check_parameters to here,
250! because they will be already used in init_pegrid and init_grid
251!
252! 1762 2016-02-25 12:31:13Z hellstea
253! Introduction of nested domain feature
254!
255! 1691 2015-10-26 16:17:44Z maronga
256! Added parameter most_method. Renamed prandtl_layer to constant_flux_layer.
257!
258! 1682 2015-10-07 23:56:08Z knoop
259! Code annotations made doxygen readable
260!
261! 1560 2015-03-06 10:48:54Z keck
262! +recycling_yshift
263!
264! 1496 2014-12-02 17:25:50Z maronga
265! Renamed: "radiation -> "cloud_top_radiation"
266!
267! 1484 2014-10-21 10:53:05Z kanani
268! Changes due to new module structure of the plant canopy model:
269!   canopy-model related parameters moved to new package canopy_par in
270!   subroutine package_parin
271!
272! 1429 2014-07-15 12:53:45Z knoop
273! +ensemble_member_nr to prepare the random_generator for ensemble runs
274!
275! 1402 2014-05-09 14:25:13Z raasch
276! location messages modified, batch_job included in envpar-NAMELIST
277!
278! 1384 2014-05-02 14:31:06Z raasch
279! location messages added
280!
281! 1365 2014-04-22 15:03:56Z boeske
282! Usage of large scale forcing enabled:
283! +use_subsidence_tendencies
284!
285! 1361 2014-04-16 15:17:48Z hoffmann
286! +call_microphysics_at_all_substeps
287!
288! 1359 2014-04-11 17:15:14Z hoffmann
289! REAL constants provided with KIND-attribute
290!
291! 1353 2014-04-08 15:21:23Z heinze
292! REAL constants provided with KIND-attribute
293!
294! 1327 2014-03-21 11:00:16Z raasch
295! -data_output_format, do3d_compress, do3d_comp_prec
296!
297! 1320 2014-03-20 08:40:49Z raasch
298! ONLY-attribute added to USE-statements,
299! kind-parameters added to all INTEGER and REAL declaration statements,
300! kinds are defined in new module kinds,
301! old module precision_kind is removed,
302! revision history before 2012 removed,
303! comment fields (!:) to be used for variable explanations added to
304! all variable declaration statements
305!
306! 1318 2014-03-17 13:35:16Z raasch
307! +cpu_log_barrierwait in d3par
308!
309! 1301 2014-03-06 13:29:46Z heinze
310! +large_scale_subsidence
311!
312! 1241 2013-10-30 11:36:58Z heinze
313! +nudging
314! +large_scale_forcing
315!
316! 1216 2013-08-26 09:31:42Z raasch
317! +transpose_compute_overlap in inipar
318!
319! 1195 2013-07-01 12:27:57Z heinze
320! Bugfix: allocate ref_state
321!
322! 1179 2013-06-14 05:57:58Z raasch
323! +reference_state in inipar
324!
325! 1159 2013-05-21 11:58:22Z fricke
326! +use_cmax
327!
328! 1128 2013-04-12 06:19:32Z raasch
329! +background_communication in inipar
330!
331! 1115 2013-03-26 18:16:16Z hoffmann
332! unused variables removed
333!
334! 1092 2013-02-02 11:24:22Z raasch
335! unused variables removed
336!
337! 1065 2012-11-22 17:42:36Z hoffmann
338! +nc, c_sedimentation, limiter_sedimentation, turbulence
339! -mu_constant, mu_constant_value
340!
341! 1053 2012-11-13 17:11:03Z hoffmann
342! necessary expansions according to the two new prognostic equations (nr, qr)
343! of the two-moment cloud physics scheme and steering parameters:
344! +*_init, *_surface, *_surface_initial_change, *_vertical_gradient,
345! +*_vertical_gradient_level, surface_waterflux_*,
346! +cloud_scheme, drizzle, mu_constant, mu_constant_value, ventilation_effect
347!
348! 1036 2012-10-22 13:43:42Z raasch
349! code put under GPL (PALM 3.9)
350!
351! 1015 2012-09-27 09:23:24Z raasch
352! -adjust_mixing_length
353!
354! 1003 2012-09-14 14:35:53Z raasch
355! -grid_matching
356!
357! 1001 2012-09-13 14:08:46Z raasch
358! -cut_spline_overshoot, long_filter_factor, overshoot_limit_*, ups_limit_*
359!
360! 996 2012-09-07 10:41:47Z raasch
361! -use_prior_plot1d_parameters
362!
363! 978 2012-08-09 08:28:32Z fricke
364! -km_damp_max, outflow_damping_width
365! +pt_damping_factor, pt_damping_width
366! +z0h_factor
367!
368! 964 2012-07-26 09:14:24Z raasch
369! -cross_normalized_x, cross_normalized_y, cross_xtext, z_max_do1d,
370! z_max_do1d_normalized
371!
372! 940 2012-07-09 14:31:00Z raasch
373! +neutral in inipar
374!
375! 927 2012-06-06 19:15:04Z raasch
376! +masking_method in inipar
377!
378! 824 2012-02-17 09:09:57Z raasch
379! +curvature_solution_effects in inipar
380!
381! 809 2012-01-30 13:32:58Z maronga
382! Bugfix: replaced .AND. and .NOT. with && and ! in the preprocessor directives
383!
384! 807 2012-01-25 11:53:51Z maronga
385! New cpp directive "__check" implemented which is used by check_namelist_files
386!
387! Revision 1.1  1997/07/24 11:22:50  raasch
388! Initial revision
389!
390!
391! Description:
392! ------------
393!> This subroutine reads variables controling the run from the NAMELIST files
394!------------------------------------------------------------------------------!
395 SUBROUTINE parin
396 
397
398    USE arrays_3d,                                                             &
399        ONLY:  pt_init, q_init, ref_state, s_init, sa_init,                    &     
400               ug, u_init, v_init, vg
401
402    USE chemistry_model_mod,                                                   &
403        ONLY:  chem_parin
404       
405    USE chem_modules
406
407    USE control_parameters
408
409    USE cpulog,                                                                &
410        ONLY:  cpu_log_barrierwait
411
412    USE date_and_time_mod,                                                     &
413        ONLY:  day_of_year_init, time_utc_init
414
415    USE dvrp_variables,                                                        &
416        ONLY:  local_dvrserver_running
417
418    USE flight_mod,                                                            &
419        ONLY:  flight_parin
420
421    USE grid_variables,                                                        &
422        ONLY:  dx, dy
423
424    USE gust_mod,                                                              &
425        ONLY: gust_parin
426
427    USE indices,                                                               &
428        ONLY:  nx, ny, nz
429
430    USE kinds
431
432    USE land_surface_model_mod,                                                &
433        ONLY: lsm_parin
434
435    USE microphysics_mod,                                                      &
436        ONLY:  c_sedimentation, cloud_water_sedimentation,                     &
437               collision_turbulence, curvature_solution_effects_bulk,          &
438               dry_aerosol_radius, limiter_sedimentation, na_init, nc_const,   &
439               sigma_bulk, ventilation_effect
440
441    USE model_1d_mod,                                                          &
442        ONLY:  damp_level_1d, dt_pr_1d, dt_run_control_1d, end_time_1d
443
444    USE netcdf_interface,                                                      &
445        ONLY:  netcdf_data_format, netcdf_deflate, netcdf_precision
446
447    USE pegrid
448               
449    USE plant_canopy_model_mod,                                                &
450         ONLY: pcm_parin
451
452    USE pmc_interface,                                                         &
453        ONLY:  nested_run, nesting_mode
454
455    USE profil_parameter,                                                      &
456        ONLY:  cross_profiles, profile_columns, profile_rows
457
458    USE progress_bar,                                                          &
459        ONLY :  batch_job
460
461    USE radiation_model_mod,                                                   &
462        ONLY: radiation_parin
463
464    USE read_restart_data_mod,                                                 &
465        ONLY:  rrd_global     
466
467    USE spectra_mod,                                                           &
468        ONLY :  spectra_parin
469
470    USE statistics,                                                            &
471        ONLY:  hom, hom_sum, pr_palm, region, statistic_regions
472
473    USE synthetic_turbulence_generator_mod,                                    &
474        ONLY:  stg_parin
475
476    USE turbulence_closure_mod,                                                &
477        ONLY:  rans_const_c, rans_const_sigma
478
479    USE urban_surface_mod,                                                     &
480        ONLY: usm_parin
481
482    USE uv_exposure_model_mod,                                                 &
483        ONLY:  uvem_parin
484
485    USE vertical_nesting_mod,                                                  &
486        ONLY:  vnest_start_time
487
488    USE wind_turbine_model_mod,                                                &
489        ONLY:  wtm_parin
490
491
492    IMPLICIT NONE
493
494    CHARACTER (LEN=80) ::  line  !< dummy string that contains the current line of the parameter file
495
496    INTEGER(iwp) ::  global_id      !< process id with respect to MPI_COMM_WORLD
497    INTEGER(iwp) ::  global_procs   !< # of procs with respect to MPI_COMM_WORLD
498    INTEGER(iwp) ::  i              !<
499    INTEGER(iwp) ::  ioerr          !< error flag for open/read/write
500
501    NAMELIST /inipar/  aerosol_bulk, alpha_surface, approximation, bc_e_b,     &
502                       bc_lr, bc_ns, bc_p_b, bc_p_t, bc_pt_b, bc_pt_t, bc_q_b, &
503             bc_q_t,bc_s_b, bc_s_t, bc_sa_t, bc_uv_b, bc_uv_t,                 &
504             bottom_salinityflux, building_height, building_length_x,          &
505             building_length_y, building_wall_left, building_wall_south,       &
506             calc_soil_moisture_during_spinup,                                 &
507             call_psolver_at_all_substeps, call_microphysics_at_all_substeps,  &
508             canyon_height,                                                    &
509             canyon_width_x, canyon_width_y, canyon_wall_left,                 &
510             canyon_wall_south, c_sedimentation, cfl_factor, cloud_droplets,   &
511             cloud_physics, cloud_scheme, cloud_top_radiation,                 &
512             cloud_water_sedimentation,                                        &
513             collective_wait, collision_turbulence, complex_terrain,           &
514             conserve_volume_flow,                                             &
515             conserve_volume_flow_mode, constant_flux_layer,                   &
516             coupling_start_time, curvature_solution_effects_bulk,             &
517             cycle_mg, damp_level_1d,                                          &
518             data_output_during_spinup,                                        &
519             day_of_year_init,                                                 &
520             dissipation_1d,                                                   &
521             dp_external, dp_level_b, dp_smooth, dpdxy, dry_aerosol_radius,    &
522             dt, dt_pr_1d, dt_run_control_1d, dt_spinup, dx, dy, dz, dz_max,   &
523             dz_stretch_factor, dz_stretch_level, dz_stretch_level_start,      &
524             dz_stretch_level_end, end_time_1d, ensemble_member_nr, e_init,    &
525             e_min, fft_method, flux_input_mode, flux_output_mode, forcing,    &
526             galilei_transformation, humidity,                                 &
527             inflow_damping_height, inflow_damping_width,                      &
528             inflow_disturbance_begin, inflow_disturbance_end,                 &
529             initializing_actions, km_constant,                                &
530             large_scale_forcing, large_scale_subsidence, latitude,            &
531             limiter_sedimentation, longitude,                                 &
532             loop_optimization, lsf_exception, masking_method, mg_cycles,      &
533             mg_switch_to_pe0_level, mixing_length_1d, momentum_advec,         &
534             most_method, na_init, nc_const, netcdf_precision, neutral, ngsrb, &
535             nsor, nsor_ini, nudging, nx, ny, nz, ocean, omega, omega_sor,     &
536             outflow_source_plane, passive_scalar,                             &
537             prandtl_number, precipitation, psolver, pt_damping_factor,        &
538             pt_damping_width, pt_reference, pt_surface,                       &
539             pt_surface_initial_change, pt_vertical_gradient,                  &
540             pt_vertical_gradient_level, q_surface, q_surface_initial_change,  &
541             q_vertical_gradient, q_vertical_gradient_level,                   &
542             random_generator, random_heatflux, rans_const_c, rans_const_sigma,&
543             rans_mode,                                                        &
544             rayleigh_damping_factor, rayleigh_damping_height,                 &
545             recycling_width, recycling_yshift,                                &
546             reference_state, residual_limit,                                  &
547             roughness_length, sa_surface,                                     &
548             sa_vertical_gradient, sa_vertical_gradient_level, scalar_advec,   &
549             scalar_rayleigh_damping, sigma_bulk,                              &
550             spinup_time, spinup_pt_amplitude, spinup_pt_mean,                 &
551             statistic_regions, subs_vertical_gradient,                        &
552             subs_vertical_gradient_level, surface_heatflux, surface_pressure, &
553             surface_scalarflux, surface_waterflux,                            &
554             s_surface, s_surface_initial_change, s_vertical_gradient,         &
555             s_vertical_gradient_level, time_utc_init, timestep_scheme,        &
556             topography, topography_grid_convention, top_heatflux,             &
557             top_momentumflux_u, top_momentumflux_v, top_salinityflux,         &
558             top_scalarflux, transpose_compute_overlap,                        &
559             tunnel_height, tunnel_length, tunnel_width_x, tunnel_width_y,     &
560             tunnel_wall_depth, turbulence_closure,                            &
561             turbulent_inflow, turbulent_outflow,                              &
562             use_subsidence_tendencies, ug_surface, ug_vertical_gradient,      &
563             use_free_convection_scaling,                                      &
564             ug_vertical_gradient_level, use_surface_fluxes, use_cmax,         &
565             use_top_fluxes, use_ug_for_galilei_tr, use_upstream_for_tke,      &
566             uv_heights, u_bulk, u_profile, vg_surface, vg_vertical_gradient,  &
567             vg_vertical_gradient_level, v_bulk, v_profile, ventilation_effect,&
568             wall_adjustment, wall_heatflux, wall_humidityflux,                &
569             wall_salinityflux, wall_scalarflux, y_shift, zeta_max, zeta_min,  &
570             z0h_factor
571
572    NAMELIST /initialization_parameters/  aerosol_bulk, alpha_surface,         &
573             approximation, bc_e_b,                                            &
574             bc_lr, bc_ns, bc_p_b, bc_p_t, bc_pt_b, bc_pt_t, bc_q_b,           &
575             bc_q_t,bc_s_b, bc_s_t, bc_sa_t, bc_uv_b, bc_uv_t,                 &
576             bottom_salinityflux, building_height, building_length_x,          &
577             building_length_y, building_wall_left, building_wall_south,       &
578             calc_soil_moisture_during_spinup,                                 &
579             call_psolver_at_all_substeps, call_microphysics_at_all_substeps,  &
580             canyon_height,                                                    &
581             canyon_width_x, canyon_width_y, canyon_wall_left,                 &
582             canyon_wall_south, c_sedimentation, cfl_factor, cloud_droplets,   &
583             cloud_physics, cloud_scheme, cloud_top_radiation,                 &
584             cloud_water_sedimentation,                                        &
585             collective_wait, collision_turbulence, complex_terrain,           &
586             conserve_volume_flow,                                             &
587             conserve_volume_flow_mode, constant_flux_layer,                   &
588             coupling_start_time, curvature_solution_effects_bulk,             &
589             cycle_mg, damp_level_1d,                                          &
590             data_output_during_spinup,                                        &
591             day_of_year_init,                                                 &
592             dissipation_1d,                                                   &
593             dp_external, dp_level_b, dp_smooth, dpdxy, dry_aerosol_radius,    &
594             dt, dt_pr_1d, dt_run_control_1d, dt_spinup, dx, dy, dz, dz_max,   &
595             dz_stretch_factor, dz_stretch_level, dz_stretch_level_start,      &
596             dz_stretch_level_end, end_time_1d, ensemble_member_nr, e_init,    &
597             e_min, fft_method, flux_input_mode, flux_output_mode, forcing,    &
598             galilei_transformation, humidity,                                 &
599             inflow_damping_height, inflow_damping_width,                      &
600             inflow_disturbance_begin, inflow_disturbance_end,                 &
601             initializing_actions, km_constant,                                &
602             large_scale_forcing, large_scale_subsidence, latitude,            &
603             limiter_sedimentation, longitude,                                 &
604             loop_optimization, lsf_exception, masking_method, mg_cycles,      &
605             mg_switch_to_pe0_level, mixing_length_1d, momentum_advec,         &
606             most_method, na_init, nc_const, netcdf_precision, neutral, ngsrb, &
607             nsor, nsor_ini, nudging, nx, ny, nz, ocean, omega, omega_sor,     &
608             outflow_source_plane, passive_scalar,                             &
609             prandtl_number, precipitation, psolver, pt_damping_factor,        &
610             pt_damping_width, pt_reference, pt_surface,                       &
611             pt_surface_initial_change, pt_vertical_gradient,                  &
612             pt_vertical_gradient_level, q_surface, q_surface_initial_change,  &
613             q_vertical_gradient, q_vertical_gradient_level,                   &
614             random_generator, random_heatflux, rans_const_c, rans_const_sigma,&
615             rans_mode,                                                        &
616             rayleigh_damping_factor, rayleigh_damping_height,                 &
617             recycling_width, recycling_yshift,                                &
618             reference_state, residual_limit,                                  &
619             roughness_length, sa_surface,                                     &
620             sa_vertical_gradient, sa_vertical_gradient_level, scalar_advec,   &
621             scalar_rayleigh_damping, sigma_bulk,                              &
622             spinup_time, spinup_pt_amplitude, spinup_pt_mean,                 &
623             statistic_regions, subs_vertical_gradient,                        &
624             subs_vertical_gradient_level, surface_heatflux, surface_pressure, &
625             surface_scalarflux, surface_waterflux,                            &
626             s_surface, s_surface_initial_change, s_vertical_gradient,         &
627             s_vertical_gradient_level, time_utc_init, timestep_scheme,        &
628             topography, topography_grid_convention, top_heatflux,             &
629             top_momentumflux_u, top_momentumflux_v, top_salinityflux,         &
630             top_scalarflux, transpose_compute_overlap,                        &
631             tunnel_height, tunnel_length, tunnel_width_x, tunnel_width_y,     &
632             tunnel_wall_depth, turbulence_closure,                            &
633             turbulent_inflow, turbulent_outflow,                              &
634             use_subsidence_tendencies, ug_surface, ug_vertical_gradient,      &
635             ug_vertical_gradient_level, use_surface_fluxes, use_cmax,         &
636             use_top_fluxes, use_ug_for_galilei_tr, use_upstream_for_tke,      &
637             use_free_convection_scaling,                                      &
638             uv_heights, u_bulk, u_profile, vg_surface, vg_vertical_gradient,  &
639             vg_vertical_gradient_level, v_bulk, v_profile, ventilation_effect,&
640             wall_adjustment, wall_heatflux, wall_humidityflux,                &
641             wall_salinityflux, wall_scalarflux, y_shift, zeta_max, zeta_min,  &
642             z0h_factor
643             
644    NAMELIST /d3par/  averaging_interval, averaging_interval_pr,               &
645             cpu_log_barrierwait, create_disturbances,                         &
646             cross_profiles, data_output, data_output_masks,                   &
647             data_output_pr, data_output_2d_on_each_pe, disturbance_amplitude, &
648             disturbance_energy_limit, disturbance_level_b,                    &
649             disturbance_level_t, do2d_at_begin, do3d_at_begin,                &
650             dt, dt_averaging_input, dt_averaging_input_pr,                    &
651             dt_coupling, dt_data_output, dt_data_output_av, dt_disturb,       &
652             dt_domask, dt_dopr, dt_dopr_listing, dt_dots, dt_do2d_xy,         &
653             dt_do2d_xz, dt_do2d_yz, dt_do3d, dt_max, dt_restart,              &
654             dt_run_control,end_time, force_print_header, mask_scale_x,        &
655             mask_scale_y, mask_scale_z, mask_x, mask_y, mask_z, mask_x_loop,  &
656             mask_y_loop, mask_z_loop, netcdf_data_format, netcdf_deflate,     &
657             normalizing_region, npex, npey, nz_do3d,                          &
658             precipitation_amount_interval, profile_columns, profile_rows,     &
659             restart_time, section_xy, section_xz, section_yz,                 &
660             skip_time_data_output, skip_time_data_output_av, skip_time_dopr,  &
661             skip_time_do2d_xy, skip_time_do2d_xz, skip_time_do2d_yz,          &
662             skip_time_do3d, skip_time_domask, synchronous_exchange,           &
663             termination_time_needed, vnest_start_time
664
665    NAMELIST /runtime_parameters/  averaging_interval, averaging_interval_pr,  &
666             cpu_log_barrierwait, create_disturbances,                         &
667             cross_profiles, data_output, data_output_masks,                   &
668             data_output_pr, data_output_2d_on_each_pe, disturbance_amplitude, &
669             disturbance_energy_limit, disturbance_level_b,                    &
670             disturbance_level_t, do2d_at_begin, do3d_at_begin,                &
671             dt, dt_averaging_input, dt_averaging_input_pr,                    &
672             dt_coupling, dt_data_output, dt_data_output_av, dt_disturb,       &
673             dt_domask, dt_dopr, dt_dopr_listing, dt_dots, dt_do2d_xy,         &
674             dt_do2d_xz, dt_do2d_yz, dt_do3d, dt_max, dt_restart,              &
675             dt_run_control,end_time, force_print_header, mask_scale_x,        &
676             mask_scale_y, mask_scale_z, mask_x, mask_y, mask_z, mask_x_loop,  &
677             mask_y_loop, mask_z_loop, netcdf_data_format, netcdf_deflate,     &
678             normalizing_region, npex, npey, nz_do3d,                          &
679             precipitation_amount_interval, profile_columns, profile_rows,     &
680             restart_time, section_xy, section_xz, section_yz,                 &
681             skip_time_data_output, skip_time_data_output_av, skip_time_dopr,  &
682             skip_time_do2d_xy, skip_time_do2d_xz, skip_time_do2d_yz,          &
683             skip_time_do3d, skip_time_domask, synchronous_exchange,           &
684             termination_time_needed, vnest_start_time
685
686    NAMELIST /envpar/  batch_job, host, local_dvrserver_running,               &
687                       maximum_cpu_time_allowed, maximum_parallel_io_streams,  &
688                       read_svf, revision, run_identifier, tasks_per_node,     &
689                       write_binary, write_svf
690
691!
692!-- First read values of environment variables (this NAMELIST file is
693!-- generated by palmrun)
694    CALL location_message( 'reading environment parameters from ENVPAR', .FALSE. )
695
696    OPEN ( 90, FILE='ENVPAR', STATUS='OLD', FORM='FORMATTED', IOSTAT=ioerr )
697
698    IF ( ioerr /= 0 )  THEN
699       message_string = 'local file ENVPAR not found' //                       &
700                        '&some variables for steering may not be properly set'
701       CALL message( 'parin', 'PA0276', 0, 1, 0, 6, 0 )
702    ELSE
703       READ ( 90, envpar, IOSTAT=ioerr )
704       IF ( ioerr < 0 )  THEN
705          message_string = 'no envpar-NAMELIST found in local file '  //       &
706                           'ENVPAR& or some variables for steering may '  //   &
707                           'not be properly set'
708          CALL message( 'parin', 'PA0278', 0, 1, 0, 6, 0 )
709       ELSEIF ( ioerr > 0 )  THEN
710          message_string = 'errors in local file ENVPAR' //                    &
711                           '&some variables for steering may not be properly set'
712          CALL message( 'parin', 'PA0277', 0, 1, 0, 6, 0 )
713       ENDIF
714       CLOSE ( 90 )
715    ENDIF
716
717    CALL location_message( 'finished', .TRUE. )
718!
719!-- Calculate the number of groups into which parallel I/O is split.
720!-- The default for files which are opened by all PEs (or where each
721!-- PE opens his own independent file) is, that all PEs are doing input/output
722!-- in parallel at the same time. This might cause performance or even more
723!-- severe problems depending on the configuration of the underlying file
724!-- system.
725!-- Calculation of the number of blocks and the I/O group must be based on all
726!-- PEs involved in this run. Since myid and numprocs are related to the
727!-- comm2d communicator, which gives only a subset of all PEs in case of
728!-- nested runs, that information must be inquired again from the global
729!-- communicator.
730!-- First, set the default:
731#if defined( __parallel )
732    CALL MPI_COMM_RANK( MPI_COMM_WORLD, global_id, ierr )
733    CALL MPI_COMM_SIZE( MPI_COMM_WORLD, global_procs, ierr )
734#else
735    global_id    = 0
736    global_procs = 1
737#endif
738    IF ( maximum_parallel_io_streams == -1  .OR.                               &
739         maximum_parallel_io_streams > global_procs )  THEN
740       maximum_parallel_io_streams = global_procs
741    ENDIF
742!
743!-- Now calculate the number of io_blocks and the io_group to which the
744!-- respective PE belongs. I/O of the groups is done in serial, but in parallel
745!-- for all PEs belonging to the same group.
746    io_blocks = global_procs / maximum_parallel_io_streams
747    io_group  = MOD( global_id+1, io_blocks )
748   
749    CALL location_message( 'reading NAMELIST parameters from PARIN', .FALSE. )
750!
751!-- Data is read in parallel by groups of PEs
752    DO  i = 0, io_blocks-1
753       IF ( i == io_group )  THEN
754
755!
756!--       Open the NAMELIST-file which is send with this job
757          CALL check_open( 11 )
758
759!
760!--       Read the control parameters for initialization.
761!--       The namelist "inipar" must be provided in the NAMELIST-file.
762          READ ( 11, initialization_parameters, ERR=10, END=11 )
763
764          GOTO 12
765
766 10       message_string = 'errors in initialization_parameters & or no ' //  &
767                           'initialization_parameters-namelist ' //           &
768                           'found (CRAY-machines only)'
769          CALL message( 'parin', 'PA0271', 1, 2, 0, 6, 0 )
770
771 11       REWIND ( 11 )
772          READ ( 11, inipar, ERR=13, END=14 )
773 
774          message_string = 'namelist inipar is deprecated and will be ' //    &
775                          'removed in near future. & Please use namelist ' // &
776                          'initialization_parameters instead'
777          CALL message( 'parin', 'PA0017', 0, 1, 0, 6, 0 )
778 
779          GOTO 12
780 
781 13       message_string = 'errors in inipar & or no inipar-namelist ' //      &
782                           'found (CRAY-machines only)'
783          CALL message( 'parin', 'PA0271', 1, 2, 0, 6, 0 )
784         
785 14       message_string = 'no initialization_parameters-namelist found'
786          CALL message( 'parin', 'PA0272', 1, 2, 0, 6, 0 )
787
788!
789!--       Try to read runtime parameters given by the user for this run
790!--       (namelist "runtime_parameters"). The namelist "runtime_parmeters"   
791!--       can be omitted. In that case default values are used for the         
792!--       parameters.
793 12       line = ' '
794
795          REWIND ( 11 )
796          line = ' '
797          DO   WHILE ( INDEX( line, '&runtime_parameters' ) == 0 )
798             READ ( 11, '(A)', END=20 )  line
799          ENDDO
800          BACKSPACE ( 11 )
801
802!
803!--       Read namelist
804          READ ( 11, runtime_parameters )
805
806          GOTO 21
807         
808 20       REWIND ( 11 )
809          line = ' '
810          DO   WHILE ( INDEX( line, '&d3par' ) == 0 )
811             READ ( 11, '(A)', END=21 )  line
812          ENDDO
813          BACKSPACE ( 11 )
814 
815 !
816!--       Read namelist
817          READ ( 11, d3par )
818 
819          message_string = 'namelist d3par is deprecated and will be ' //      &
820                          'removed in near future. &Please use namelist ' //   &
821                          'runtime_parameters instead'
822          CALL message( 'parin', 'PA0487', 0, 1, 0, 6, 0 )
823         
824 21       CONTINUE
825
826!
827!--       Check if land surface model is used and read &lsm_par if required
828          CALL lsm_parin
829
830!
831!--       Check if urban surface model is used and read &urban_surface_par if required
832          CALL usm_parin
833
834!
835!--       Check if spectra shall be calculated and read spectra_par if required
836          CALL spectra_parin
837
838!
839!--       Check if radiation model is used and read &radiation_par if required
840          CALL radiation_parin
841
842!
843!--       Check if gust module is used and read &gust_par if required
844          CALL gust_parin
845 
846 
847!--       Check if plant canopy model is used and read &canopy_par if required
848          CALL pcm_parin
849 
850!
851!--       Read control parameters for optionally used model software packages
852          CALL package_parin
853
854!
855!--       Check if wind turbine model is used and read &wind_turbine_par if
856!--       required
857          CALL wtm_parin
858!
859!--       Check if virtual flights should be carried out and read &flight_par
860!--       if required
861          CALL flight_parin
862!
863!--       Check if synthetic turbulence generator is used and read stg_par if
864!--       required
865          CALL stg_parin
866!
867!--       Read chemistry variables
868          CALL chem_parin
869!
870!--       Check if uv exposure model is used and read &uvexposure_par
871          CALL uvem_parin
872!
873!--       Read user-defined variables
874          CALL user_parin
875
876!
877!--       If required, read control parameters from restart file (produced by
878!--       a prior run). All PEs are reading from file created by PE0 (see
879!--       check_open)
880          IF ( TRIM( initializing_actions ) == 'read_restart_data' )  THEN
881
882             CALL rrd_global
883!
884!--          Increment the run count
885             runnr = runnr + 1
886          ENDIF
887
888!
889!--       Activate spinup
890          IF ( land_surface .OR. urban_surface )  THEN
891             IF ( spinup_time > 0.0_wp )  THEN
892                coupling_start_time = spinup_time
893                time_since_reference_point = simulated_time - coupling_start_time
894                IF ( spinup_pt_mean == 9999999.9_wp )  THEN
895                   spinup_pt_mean = pt_surface
896                ENDIF
897                end_time = end_time + spinup_time
898                IF ( TRIM( initializing_actions ) /= 'read_restart_data' )     &
899                   spinup = .TRUE.
900             ENDIF
901          ENDIF
902
903!
904!--       In case of nested runs, explicitly set nesting boundary conditions.
905!--       This will overwrite the user settings and basic defaults.
906!--       bc_lr and bc_ns always need to be cyclic for vertical nesting.
907          IF ( nested_run )  THEN
908             IF ( nesting_mode == 'vertical' )  THEN
909                IF (bc_lr /= 'cyclic' .OR. bc_ns /= 'cyclic' )  THEN
910                   WRITE ( message_string, *) 'bc_lr and bc_ns were set to ,', &
911                        'cyclic for vertical nesting'
912                   CALL message( 'parin', 'PA0428', 0, 0, 0, 6, 0 )
913                   bc_lr   = 'cyclic'
914                   bc_ns   = 'cyclic'
915                ENDIF
916                IF ( nest_domain )  THEN
917                   bc_uv_t  = 'nested'
918                   bc_pt_t  = 'nested'
919                   bc_q_t   = 'nested'
920                   bc_s_t   = 'nested'
921                   bc_cs_t  = 'nested'
922                   bc_p_t   = 'neumann' 
923                ENDIF
924!
925!--          For other nesting modes only set boundary conditions for
926!--          nested domains.
927             ELSE
928                IF ( nest_domain )  THEN
929                   bc_lr    = 'nested'
930                   bc_ns    = 'nested'
931                   bc_uv_t  = 'nested'
932                   bc_pt_t  = 'nested'
933                   bc_q_t   = 'nested'
934                   bc_s_t   = 'nested'
935                   bc_cs_t  = 'nested'
936                   bc_p_t   = 'neumann'
937                ENDIF
938             ENDIF
939          ENDIF
940
941          IF ( forcing )  THEN
942             bc_lr    = 'forcing'
943             bc_ns    = 'forcing'
944             bc_uv_t  = 'forcing'
945             bc_pt_t  = 'forcing'
946             bc_q_t   = 'forcing'
947             bc_s_t   = 'forcing'  ! scalar boundary condition is not clear
948             bc_cs_t  = 'forcing'  ! same for chemical species
949             bc_p_t   = 'neumann'
950          ENDIF
951
952!         
953!--       In case of nested runs, make sure that initializing_actions =
954!--       'set_constant_profiles' even though the constant-profiles
955!--       initializations for the prognostic variables will be overwritten
956!--       by pmci_child_initialize and pmci_parent_initialize. This is,
957!--       however, important e.g. to make sure that diagnostic variables
958!--       are set properly. An exception is made in case of restart runs and
959!--       if user decides to do everything by its own.
960          IF ( nest_domain  .AND.  .NOT. (                                     &
961               TRIM( initializing_actions ) == 'read_restart_data'      .OR.   &
962               TRIM( initializing_actions ) == 'set_constant_profiles'  .OR.   &
963               TRIM( initializing_actions ) == 'by_user' ) )  THEN
964             message_string = 'initializing_actions = ' //                     &
965                              TRIM( initializing_actions ) // ' has been ' //  &
966                              'changed to set_constant_profiles in child ' //  &
967                              'domain.' 
968             CALL message( 'parin', 'PA0492', 0, 0, 0, 6, 0 )
969
970             initializing_actions = 'set_constant_profiles'
971          ENDIF
972           
973!
974!--       Check validity of lateral boundary conditions. This has to be done
975!--       here because they are already used in init_pegrid and init_grid and
976!--       therefore cannot be check in check_parameters
977          IF ( bc_lr /= 'cyclic'  .AND.  bc_lr /= 'dirichlet/radiation'  .AND. &
978               bc_lr /= 'radiation/dirichlet'  .AND.  bc_lr /= 'nested'  .AND. &
979               bc_lr /= 'forcing' )  THEN
980             message_string = 'unknown boundary condition: bc_lr = "' // &
981                              TRIM( bc_lr ) // '"'
982             CALL message( 'parin', 'PA0049', 1, 2, 0, 6, 0 )
983          ENDIF
984          IF ( bc_ns /= 'cyclic'  .AND.  bc_ns /= 'dirichlet/radiation'  .AND. &
985               bc_ns /= 'radiation/dirichlet'  .AND.  bc_ns /= 'nested'  .AND. &
986               bc_ns /= 'forcing' )  THEN
987             message_string = 'unknown boundary condition: bc_ns = "' // &
988                              TRIM( bc_ns ) // '"'
989             CALL message( 'parin', 'PA0050', 1, 2, 0, 6, 0 )
990          ENDIF
991!
992!--       Set internal variables used for speed optimization in if clauses
993          IF ( bc_lr /= 'cyclic' )               bc_lr_cyc    = .FALSE.
994          IF ( bc_lr == 'dirichlet/radiation' )  bc_lr_dirrad = .TRUE.
995          IF ( bc_lr == 'radiation/dirichlet' )  bc_lr_raddir = .TRUE.
996          IF ( bc_ns /= 'cyclic' )               bc_ns_cyc    = .FALSE.
997          IF ( bc_ns == 'dirichlet/radiation' )  bc_ns_dirrad = .TRUE.
998          IF ( bc_ns == 'radiation/dirichlet' )  bc_ns_raddir = .TRUE.
999
1000!
1001!--       Definition of names of areas used for computing statistics. They must
1002!--       be defined at this place, because they are allowed to be redefined by
1003!--       the user in user_parin.
1004          region = 'total domain'
1005
1006!
1007!--       Check in case of initial run, if the grid point numbers are well
1008!--       defined and allocate some arrays which are already needed in
1009!--       init_pegrid or check_parameters. During restart jobs, these arrays
1010!--       will be allocated in rrd_global. All other arrays are allocated
1011!--       in init_3d_model.
1012          IF ( TRIM( initializing_actions ) /= 'read_restart_data' )  THEN
1013
1014             IF ( nx <= 0 )  THEN
1015                WRITE( message_string, * ) 'no value or wrong value given',    &
1016                                           ' for nx: nx=', nx
1017                CALL message( 'parin', 'PA0273', 1, 2, 0, 6, 0 )
1018             ENDIF
1019             IF ( ny <= 0 )  THEN
1020                WRITE( message_string, * ) 'no value or wrong value given',    &
1021                                           ' for ny: ny=', ny
1022                CALL message( 'parin', 'PA0274', 1, 2, 0, 6, 0 )
1023             ENDIF
1024             IF ( nz <= 0 )  THEN
1025                WRITE( message_string, * ) 'no value or wrong value given',    &
1026                                           ' for nz: nz=', nz
1027                CALL message( 'parin', 'PA0275', 1, 2, 0, 6, 0 )
1028             ENDIF
1029!
1030!--          ATTENTION: in case of changes to the following statement please
1031!--                  also check the allocate statement in routine rrd_global
1032             ALLOCATE( pt_init(0:nz+1), q_init(0:nz+1), s_init(0:nz+1),        &
1033                       ref_state(0:nz+1), sa_init(0:nz+1), ug(0:nz+1),         &
1034                       u_init(0:nz+1), v_init(0:nz+1), vg(0:nz+1),             &
1035                       hom(0:nz+1,2,pr_palm+max_pr_user,0:statistic_regions),  &
1036                       hom_sum(0:nz+1,pr_palm+max_pr_user,0:statistic_regions) )
1037
1038             hom = 0.0_wp
1039
1040          ENDIF
1041
1042!
1043!--       NAMELIST-file is not needed anymore
1044          CALL close_file( 11 )
1045
1046       ENDIF
1047#if defined( __parallel )
1048       CALL MPI_BARRIER( MPI_COMM_WORLD, ierr )
1049#endif
1050    ENDDO
1051
1052    CALL location_message( 'finished', .TRUE. )
1053
1054 END SUBROUTINE parin
Note: See TracBrowser for help on using the repository browser.