source: palm/trunk/SOURCE/read_var_list.f90 @ 1849

Last change on this file since 1849 was 1849, checked in by hoffmann, 9 years ago

lpm_droplet_condensation improved, microphysics partially modularized

  • Property svn:keywords set to Id
File size: 37.0 KB
Line 
1!> @file read_var_list.f90
2!--------------------------------------------------------------------------------!
3! This file is part of PALM.
4!
5! PALM is free software: you can redistribute it and/or modify it under the terms
6! of the GNU General Public License as published by the Free Software Foundation,
7! either version 3 of the License, or (at your option) any later version.
8!
9! PALM is distributed in the hope that it will be useful, but WITHOUT ANY
10! WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
11! A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
12!
13! You should have received a copy of the GNU General Public License along with
14! PALM. If not, see <http://www.gnu.org/licenses/>.
15!
16! Copyright 1997-2016 Leibniz Universitaet Hannover
17!--------------------------------------------------------------------------------!
18!
19! Current revisions:
20! ------------------
21! Adapted for modularization of microphysics
22!
23! Former revisions:
24! -----------------
25! $Id: read_var_list.f90 1849 2016-04-08 11:33:18Z hoffmann $
26!
27! 1833 2016-04-07 14:23:03Z raasch
28! spectra_mod added
29!
30! 1831 2016-04-07 13:15:51Z hoffmann
31! turbulence renamed collision_turbulence, drizzle renamed
32! cloud_water_sedimentation
33!
34! 1808 2016-04-05 19:44:00Z raasch
35! test output removed
36!
37! 1783 2016-03-06 18:36:17Z raasch
38! netcdf module name changed + related changes
39!
40! 1699 2015-10-29 08:02:35Z maronga
41! Bugfix: update of binary version from 3.9b to 4.0 was missing
42!
43! 1691 2015-10-26 16:17:44Z maronga
44! Added output of most_method, constant_flux_layer, zeta_min, zeta_max. Removed
45! output of prandtl_layer and rif_min, rif_max.
46!
47! 1682 2015-10-07 23:56:08Z knoop
48! Code annotations made doxygen readable
49!
50! 1615 2015-07-08 18:49:19Z suehring
51! Enable turbulent inflow for passive_scalar and humidity
52!
53! 1585 2015-04-30 07:05:52Z maronga
54! Adapted for RRTMG
55!
56! 1560 2015-03-06 10:48:54Z keck
57! +recycling_yshift
58!
59! 1522 2015-01-14 10:53:12Z keck
60! added query for checking if the advection scheme in the restart run is the
61! same as the advection scheme in the corresponding initial run
62!
63! 1502 2014-12-03 18:22:31Z kanani
64! Canopy module and parameters removed (parameters are always read from
65! canopy_par NAMELIST for initial and restart runs)
66!
67! 1496 2014-12-02 17:25:50Z maronga
68! Renamed "radiation" -> "cloud_top_radiation"
69!
70! 1484 2014-10-21 10:53:05Z kanani
71! Changes in the course of the canopy-model modularization:
72!   parameters alpha_lad, beta_lad, lai_beta added,
73!   module plant_canopy_model_mod added,
74!   drag_coefficient, leaf_surface_concentration and scalar_exchange_coefficient
75!   renamed to canopy_drag_coeff, leaf_surface_conc and leaf_scalar_exch_coeff
76!
77! 1322 2014-03-20 16:38:49Z raasch
78! REAL functions provided with KIND-attribute
79!
80! 1320 2014-03-20 08:40:49Z raasch
81! ONLY-attribute added to USE-statements,
82! kind-parameters added to all INTEGER and REAL declaration statements,
83! kinds are defined in new module kinds,
84! old module precision_kind is removed,
85! revision history before 2012 removed,
86! comment fields (!:) to be used for variable explanations added to
87! all variable declaration statements
88!
89! 1308 2014-03-13 14:58:42Z fricke
90! +do2d_xy_time_count, do2d_xz_time_count, do2d_yz_time_count,
91! +do3d_time_count
92!
93! 1253 2013-11-07 10:48:12Z fricke
94! Bugfix: add ref_state to read_parts_of_var_list, otherwise ref_state
95! is zero for initializing_actions = 'cyclic_fill'
96!
97! 1241 2013-10-30 11:36:58Z heinze
98! +nudging
99! +large_scale_forcing
100!
101! 1195 2013-07-01 12:27:57Z heinze
102! Bugfix: allocate ref_state
103!
104! 1179 2013-06-14 05:57:58Z raasch
105! +ref_state
106!
107! 1115 2013-03-26 18:16:16Z hoffmann
108! unused variables removed
109!
110! 1092 2013-02-02 11:24:22Z raasch
111! unused variables removed
112!
113! 1065 2012-11-22 17:42:36Z hoffmann
114! +nc, c_sedimentation, limiter_sedimentation, turbulence
115! -mu_constant, mu_constant_value
116!
117! 1053 2012-11-13 17:11:03Z hoffmann
118! necessary expansions according to the two new prognostic equations (nr, qr)
119! of the two-moment cloud physics scheme:
120! +bc_*_b, +bc_*_t, +bc_*_t_val, *_init, *_surface, *_surface_initial_change,
121! +*_vertical_gradient, +*_vertical_gradient_level, *_vertical_gradient_level_ind,
122! +surface_waterflux_*
123!
124! in addition, steering parameters parameters of the two-moment cloud physics
125! scheme:   
126! +cloud_scheme, +drizzle, +mu_constant, +mu_constant_value, +ventilation_effect
127!
128! 1036 2012-10-22 13:43:42Z raasch
129! code put under GPL (PALM 3.9)
130!
131! 1015 2012-09-27 09:23:24Z raasch
132! -adjust_mixing_length
133!
134! 1003 2012-09-14 14:35:53Z raasch
135! -grid_matching
136!
137! 1001 2012-09-13 14:08:46Z raasch
138! -cut_spline_overshoot, dt_fixed, last_dt_change, long_filter_factor,
139! overshoot_limit_*, ups_limit_*
140!
141! 978 2012-08-09 08:28:32Z fricke
142! -km_damp_max, outflow_damping_width
143! +pt_damping_factor, pt_damping_width
144! +z0h_factor
145!
146! 940 2012-07-09 14:31:00Z raasch
147! +neutral
148!
149! 927 2012-06-06 19:15:04Z raasch
150! +masking_method
151!
152! 849 2012-03-15 10:35:09Z raasch
153! first_call_advec_particles renamed first_call_lpm
154!
155! 824 2012-02-17 09:09:57Z raasch
156! +curvature_solution_effects
157!
158! Revision 1.1  1998/03/18 20:18:48  raasch
159! Initial revision
160!
161!
162! Description:
163! ------------
164!> Reading values of global control variables from restart-file (binary format)
165!------------------------------------------------------------------------------!
166 SUBROUTINE read_var_list
167 
168
169    USE arrays_3d,                                                             &
170        ONLY:  inflow_damping_factor, mean_inflow_profiles, pt_init,           &
171               q_init, ref_state, sa_init, u_init, ug, v_init, vg
172
173    USE control_parameters
174
175    USE grid_variables,                                                        &
176        ONLY:  dx, dy
177
178    USE indices,                                                               &
179        ONLY:  nz, nx, nx_on_file, ny, ny_on_file
180
181    USE microphysics_mod,                                                      &
182        ONLY:  c_sedimentation, collision_turbulence,                          &
183               cloud_water_sedimentation, limiter_sedimentation,               &
184               nc_const, ventilation_effect
185
186    USE model_1d,                                                              &
187        ONLY:  damp_level_1d, dt_pr_1d, dt_run_control_1d, end_time_1d
188
189    USE netcdf_interface,                                                      &
190        ONLY:  netcdf_precision, output_for_t0
191
192    USE particle_attributes,                                                   &
193        ONLY:  curvature_solution_effects, time_sort_particles
194
195    USE pegrid
196
197    USE radiation_model_mod,                                                   &
198        ONLY:  time_radiation
199
200    USE spectra_mod,                                                           &
201        ONLY:  average_count_sp
202
203    USE statistics,                                                            &
204        ONLY:  statistic_regions, hom, hom_sum, pr_palm, u_max, u_max_ijk,     &
205               v_max, v_max_ijk, w_max, w_max_ijk
206
207
208    IMPLICIT NONE
209
210    CHARACTER (LEN=10) ::  binary_version, version_on_file
211    CHARACTER (LEN=30) ::  variable_chr
212
213
214    CALL check_open( 13 )
215
216!
217!-- Make version number check first
218    READ ( 13 )  version_on_file
219    binary_version = '4.1'
220    IF ( TRIM( version_on_file ) /= TRIM( binary_version ) )  THEN
221       WRITE( message_string, * ) 'version mismatch concerning control ', &
222                                  'variables',                            &
223                                  '&version on file    = "',              &
224                                  TRIM( version_on_file ), '"',           &
225                                  '&version on program = "',              &
226                                  TRIM( binary_version ), '"'
227       CALL message( 'read_var_list', 'PA0296', 1, 2, 0, 6, 0 )
228    ENDIF
229
230!
231!-- Read number of PEs and horizontal index bounds of all PEs used in previous
232!-- run
233    READ ( 13 )  variable_chr
234    IF ( TRIM( variable_chr ) /= 'numprocs' )  THEN
235       WRITE( message_string, * ) 'numprocs not found in data from prior ', &
236                                  'run on PE ', myid
237       CALL message( 'read_var_list', 'PA0297', 1, 2, 0, 6, 0 )
238    ENDIF
239    READ ( 13 )  numprocs_previous_run
240
241    IF ( .NOT. ALLOCATED( hor_index_bounds_previous_run ) )  THEN
242       ALLOCATE( hor_index_bounds_previous_run(4,0:numprocs_previous_run-1) )
243    ENDIF
244
245    READ ( 13 )  variable_chr
246    IF ( TRIM( variable_chr ) /= 'hor_index_bounds' )  THEN
247       WRITE( message_string, * ) 'hor_index_bounds not found in data from ', &
248                                  'prior run on PE ', myid
249       CALL message( 'read_var_list', 'PA0298', 1, 2, 0, 6, 0 )
250    ENDIF
251    READ ( 13 )  hor_index_bounds_previous_run
252
253!
254!-- Read vertical number of gridpoints and number of different areas used
255!-- for computing statistics. Allocate arrays depending on these values,
256!-- which are needed for the following read instructions.
257    READ ( 13 )  variable_chr
258    IF ( TRIM( variable_chr ) /= 'nz' )  THEN
259       WRITE( message_string, * ) 'nz not found in data from prior run on PE ',&
260                                  myid
261       CALL message( 'read_var_list', 'PA0299', 1, 2, 0, 6, 0 )
262    ENDIF
263    READ ( 13 )  nz
264
265    READ ( 13 )  variable_chr
266    IF ( TRIM( variable_chr ) /= 'max_pr_user' )  THEN
267       WRITE( message_string, * ) 'max_pr_user not found in data from ', &
268                    'prior run on PE ', myid
269       CALL message( 'read_var_list', 'PA0300', 1, 2, 0, 6, 0 )
270    ENDIF
271    READ ( 13 )  max_pr_user    ! This value is checked against the number of
272                                ! user profiles given for the current run
273                                ! in routine user_parin (it has to match)
274
275    READ ( 13 )  variable_chr
276    IF ( TRIM( variable_chr ) /= 'statistic_regions' )  THEN
277       WRITE( message_string, * ) 'statistic_regions not found in data from ', &
278                    'prior run on PE ', myid
279       CALL message( 'read_var_list', 'PA0301', 1, 2, 0, 6, 0 )
280    ENDIF
281    READ ( 13 )  statistic_regions
282    IF ( .NOT. ALLOCATED( ug ) )  THEN
283       ALLOCATE( ug(0:nz+1), u_init(0:nz+1), vg(0:nz+1),                       &
284                 v_init(0:nz+1), pt_init(0:nz+1), q_init(0:nz+1),              &
285                 ref_state(0:nz+1), sa_init(0:nz+1),                           &
286                 hom(0:nz+1,2,pr_palm+max_pr_user,0:statistic_regions),        &
287                 hom_sum(0:nz+1,pr_palm+max_pr_user,0:statistic_regions) )
288    ENDIF
289
290!
291!-- Now read all control parameters:
292!-- Caution: When the following read instructions have been changed, the
293!-- -------  version number stored in the variable binary_version has to be
294!--          increased. The same changes must also be done in write_var_list.
295    READ ( 13 )  variable_chr
296    DO  WHILE ( TRIM( variable_chr ) /= '*** end ***' )
297
298       SELECT CASE ( TRIM( variable_chr ) )
299
300          CASE ( 'advected_distance_x' )
301             READ ( 13 )  advected_distance_x
302          CASE ( 'advected_distance_y' )
303             READ ( 13 )  advected_distance_y
304          CASE ( 'alpha_surface' )
305             READ ( 13 )  alpha_surface
306          CASE ( 'average_count_pr' )
307             READ ( 13 )  average_count_pr
308          CASE ( 'average_count_sp' )
309             READ ( 13 )  average_count_sp
310          CASE ( 'average_count_3d' )
311             READ ( 13 )  average_count_3d
312          CASE ( 'bc_e_b' )
313             READ ( 13 )  bc_e_b
314          CASE ( 'bc_lr' )
315             READ ( 13 )  bc_lr
316          CASE ( 'bc_ns' )
317             READ ( 13 )  bc_ns
318          CASE ( 'bc_p_b' )
319             READ ( 13 )  bc_p_b
320          CASE ( 'bc_p_t' )
321             READ ( 13 )  bc_p_t
322          CASE ( 'bc_pt_b' )
323             READ ( 13 )  bc_pt_b
324          CASE ( 'bc_pt_t' )
325             READ ( 13 )  bc_pt_t
326          CASE ( 'bc_pt_t_val' )
327             READ ( 13 )  bc_pt_t_val
328          CASE ( 'bc_q_b' )
329             READ ( 13 )  bc_q_b
330          CASE ( 'bc_q_t' )
331             READ ( 13 )  bc_q_t
332          CASE ( 'bc_q_t_val' )
333             READ ( 13 )  bc_q_t_val
334          CASE ( 'bc_s_b' )
335             READ ( 13 )  bc_s_b
336          CASE ( 'bc_s_t' )
337             READ ( 13 )  bc_s_t
338          CASE ( 'bc_sa_t' )
339             READ ( 13 )  bc_sa_t
340          CASE ( 'bc_uv_b' )
341             READ ( 13 )  bc_uv_b
342          CASE ( 'bc_uv_t' )
343             READ ( 13 )  bc_uv_t
344          CASE ( 'bottom_salinityflux' )
345             READ ( 13 )  bottom_salinityflux
346          CASE ( 'building_height' )
347             READ ( 13 )  building_height
348          CASE ( 'building_length_x' )
349             READ ( 13 )  building_length_x
350          CASE ( 'building_length_y' )
351             READ ( 13 )  building_length_y
352          CASE ( 'building_wall_left' )
353             READ ( 13 )  building_wall_left
354          CASE ( 'building_wall_south' )
355             READ ( 13 )  building_wall_south
356          CASE ( 'call_psolver_at_all_substeps' )
357             READ ( 13 )  call_psolver_at_all_substeps
358          CASE ( 'canyon_height' )
359             READ ( 13 )  canyon_height
360          CASE ( 'canyon_width_x' )
361             READ ( 13 )  canyon_width_x
362          CASE ( 'canyon_width_y' )
363             READ ( 13 )  canyon_width_y
364          CASE ( 'canyon_wall_left' )
365             READ ( 13 )  canyon_wall_left
366          CASE ( 'canyon_wall_south' )
367             READ ( 13 )  canyon_wall_south
368          CASE ( 'c_sedimentation' )
369             READ ( 13 )  c_sedimentation
370          CASE ( 'cfl_factor' )
371             READ ( 13 )  cfl_factor
372          CASE ( 'cloud_droplets' )
373             READ ( 13 )  cloud_droplets
374          CASE ( 'cloud_physics' )
375             READ ( 13 )  cloud_physics
376          CASE ( 'cloud_scheme' )
377             READ ( 13 )  cloud_scheme
378          CASE ( 'collective_wait' )
379             READ ( 13 )  collective_wait
380          CASE ( 'conserve_volume_flow' )
381             READ ( 13 )  conserve_volume_flow
382          CASE ( 'conserve_volume_flow_mode' )
383             READ ( 13 )  conserve_volume_flow_mode
384          CASE ( 'constant_flux_layer' )
385             READ ( 13 )  constant_flux_layer
386          CASE ( 'coupling_start_time' )
387             READ ( 13 )  coupling_start_time
388          CASE ( 'current_timestep_number' )
389             READ ( 13 )  current_timestep_number
390          CASE ( 'curvature_solution_effects' )
391             READ ( 13 )  curvature_solution_effects
392          CASE ( 'cycle_mg' )
393             READ ( 13 )  cycle_mg
394          CASE ( 'damp_level_1d' )
395             READ ( 13 )  damp_level_1d
396          CASE ( 'dissipation_1d' )
397             READ ( 13 )  dissipation_1d
398          CASE ( 'do2d_xy_time_count' )
399             READ ( 13 )  do2d_xy_time_count
400          CASE ( 'do2d_xz_time_count' )
401             READ ( 13 )  do2d_xz_time_count
402          CASE ( 'do2d_yz_time_count' )
403             READ ( 13 )  do2d_yz_time_count
404          CASE ( 'do3d_time_count' )
405             READ ( 13 )  do3d_time_count
406          CASE ( 'dp_external' )
407             READ ( 13 )  dp_external
408          CASE ( 'dp_level_b' )
409             READ ( 13 )  dp_level_b
410          CASE ( 'dp_smooth' )
411             READ ( 13 )  dp_smooth
412          CASE ( 'dpdxy' )
413             READ ( 13 )  dpdxy
414          CASE ( 'cloud_water_sedimentation' )
415             READ ( 13 )  cloud_water_sedimentation
416          CASE ( 'dt_pr_1d' )
417             READ ( 13 )  dt_pr_1d
418          CASE ( 'dt_run_control_1d' )
419             READ ( 13 )  dt_run_control_1d
420          CASE ( 'dt_3d' )
421             READ ( 13 )  dt_3d
422          CASE ( 'dvrp_filecount' )
423             READ ( 13 )  dvrp_filecount
424          CASE ( 'dx' )
425             READ ( 13 )  dx
426          CASE ( 'dy' )
427             READ ( 13 )  dy
428          CASE ( 'dz' )
429             READ ( 13 )  dz
430          CASE ( 'dz_max' )
431             READ ( 13 )  dz_max
432          CASE ( 'dz_stretch_factor' )
433             READ ( 13 )  dz_stretch_factor
434          CASE ( 'dz_stretch_level' )
435             READ ( 13 )  dz_stretch_level
436          CASE ( 'e_min' )
437             READ ( 13 )  e_min
438          CASE ( 'end_time_1d' )
439             READ ( 13 )  end_time_1d
440          CASE ( 'fft_method' )
441             READ ( 13 )  fft_method
442          CASE ( 'first_call_lpm' )
443             READ ( 13 )  first_call_lpm
444          CASE ( 'galilei_transformation' )
445             READ ( 13 )  galilei_transformation
446          CASE ( 'hom' )
447             READ ( 13 )  hom
448          CASE ( 'hom_sum' )
449             READ ( 13 )  hom_sum
450          CASE ( 'humidity' )
451             READ ( 13 )  humidity
452          CASE ( 'inflow_damping_factor' )
453             IF ( .NOT. ALLOCATED( inflow_damping_factor ) )  THEN
454                ALLOCATE( inflow_damping_factor(0:nz+1) )
455             ENDIF
456             READ ( 13 )  inflow_damping_factor
457          CASE ( 'inflow_damping_height' )
458             READ ( 13 )  inflow_damping_height
459          CASE ( 'inflow_damping_width' )
460             READ ( 13 )  inflow_damping_width
461          CASE ( 'inflow_disturbance_begin' )
462             READ ( 13 )  inflow_disturbance_begin
463          CASE ( 'inflow_disturbance_end' )
464             READ ( 13 )  inflow_disturbance_end
465          CASE ( 'km_constant' )
466             READ ( 13 )  km_constant
467          CASE ( 'large_scale_forcing' )
468             READ ( 13 )  large_scale_forcing
469           CASE ( 'large_scale_subsidence' )
470             READ ( 13 )  large_scale_subsidence
471          CASE ( 'limiter_sedimentation' )
472             READ ( 13 )  limiter_sedimentation
473          CASE ( 'loop_optimization' )
474             READ ( 13 )  loop_optimization
475          CASE ( 'masking_method' )
476             READ ( 13 )  masking_method
477          CASE ( 'mean_inflow_profiles' )
478             IF ( .NOT. ALLOCATED( mean_inflow_profiles ) )  THEN
479                ALLOCATE( mean_inflow_profiles(0:nz+1,6) )
480             ENDIF
481             READ ( 13 )  mean_inflow_profiles
482          CASE ( 'mg_cycles' )
483             READ ( 13 )  mg_cycles
484          CASE ( 'mg_switch_to_pe0_level' )
485             READ ( 13 )  mg_switch_to_pe0_level
486          CASE ( 'mixing_length_1d' )
487             READ ( 13 )  mixing_length_1d
488          CASE ( 'momentum_advec' )
489             READ ( 13 )  momentum_advec
490          CASE ( 'most_method' )
491             READ ( 13 )  most_method
492          CASE ( 'nc_const' )
493             READ ( 13 )  nc_const
494          CASE ( 'netcdf_precision' )
495             READ ( 13 )  netcdf_precision
496          CASE ( 'neutral' )
497             READ ( 13 )  neutral
498          CASE ( 'ngsrb' )
499             READ ( 13 )  ngsrb
500          CASE ( 'nsor' )
501             READ ( 13 )  nsor
502          CASE ( 'nsor_ini' )
503             READ ( 13 )  nsor_ini
504          CASE ( 'nudging' )
505             READ ( 13 )  nudging
506          CASE ( 'nx' )
507             READ ( 13 )  nx
508             nx_on_file = nx
509          CASE ( 'ny' )
510             READ ( 13 )  ny
511             ny_on_file = ny
512          CASE ( 'ocean' )
513             READ ( 13 )  ocean
514          CASE ( 'old_dt' )
515             READ ( 13 )  old_dt
516          CASE ( 'omega' )
517             READ ( 13 )  omega
518          CASE ( 'omega_sor' )
519             READ ( 13 )  omega_sor
520          CASE ( 'output_for_t0' )
521             READ (13)    output_for_t0
522          CASE ( 'passive_scalar' )
523             READ ( 13 )  passive_scalar
524          CASE ( 'phi' )
525             READ ( 13 )  phi
526          CASE ( 'prandtl_number' )
527             READ ( 13 )  prandtl_number
528          CASE ( 'precipitation' )
529             READ ( 13 ) precipitation
530          CASE ( 'psolver' )
531             READ ( 13 )  psolver
532          CASE ( 'pt_damping_factor' )
533             READ ( 13 )  pt_damping_factor
534          CASE ( 'pt_damping_width' )
535             READ ( 13 )  pt_damping_width
536          CASE ( 'pt_init' )
537             READ ( 13 )  pt_init
538          CASE ( 'pt_reference' )
539             READ ( 13 )  pt_reference
540          CASE ( 'pt_surface' )
541             READ ( 13 )  pt_surface
542          CASE ( 'pt_surface_initial_change' )
543             READ ( 13 )  pt_surface_initial_change
544          CASE ( 'pt_vertical_gradient' )
545             READ ( 13 )  pt_vertical_gradient
546          CASE ( 'pt_vertical_gradient_level' )
547             READ ( 13 )  pt_vertical_gradient_level
548          CASE ( 'pt_vertical_gradient_level_ind' )
549             READ ( 13 )  pt_vertical_gradient_level_ind
550          CASE ( 'q_init' )
551             READ ( 13 )  q_init
552          CASE ( 'q_surface' )
553             READ ( 13 )  q_surface
554          CASE ( 'q_surface_initial_change' )
555             READ ( 13 )  q_surface_initial_change
556          CASE ( 'q_vertical_gradient' )
557             READ ( 13 )  q_vertical_gradient
558          CASE ( 'q_vertical_gradient_level' )
559             READ ( 13 )  q_vertical_gradient_level
560          CASE ( 'q_vertical_gradient_level_ind' )
561             READ ( 13 )  q_vertical_gradient_level_ind
562          CASE ( 'cloud_top_radiation' )
563             READ ( 13 )  cloud_top_radiation
564          CASE ( 'random_generator' )
565             READ ( 13 )  random_generator
566          CASE ( 'random_heatflux' )
567             READ ( 13 )  random_heatflux
568          CASE ( 'rayleigh_damping_factor' )
569             READ ( 13 )  rayleigh_damping_factor
570          CASE ( 'rayleigh_damping_height' )
571             READ ( 13 )  rayleigh_damping_height
572          CASE ( 'recycling_width' )
573             READ ( 13 )  recycling_width
574          CASE ( 'recycling_yshift' )
575             READ ( 13 ) recycling_yshift
576          CASE ( 'reference_state' )
577             READ ( 13 )  reference_state
578          CASE ( 'ref_state' )
579             READ ( 13 )  ref_state
580          CASE ( 'residual_limit' )
581             READ ( 13 )  residual_limit
582          CASE ( 'roughness_length' )
583             READ ( 13 )  roughness_length
584          CASE ( 'runnr' )
585             READ ( 13 )  runnr
586          CASE ( 'run_coupled' )
587             READ ( 13 )  run_coupled
588          CASE ( 'sa_init' )
589             READ ( 13 )  sa_init
590          CASE ( 'sa_surface' )
591             READ ( 13 )  sa_surface
592          CASE ( 'sa_vertical_gradient' )
593             READ ( 13 )  sa_vertical_gradient
594          CASE ( 'sa_vertical_gradient_level' )
595             READ ( 13 )  sa_vertical_gradient_level
596          CASE ( 'scalar_advec' )
597             READ ( 13 )  scalar_advec
598          CASE ( 'simulated_time' )
599             READ ( 13 )  simulated_time
600          CASE ( 'surface_heatflux' )
601             READ ( 13 )  surface_heatflux
602          CASE ( 'surface_pressure' )
603             READ ( 13 )  surface_pressure
604          CASE ( 'surface_scalarflux' )
605             READ ( 13 )  surface_scalarflux             
606          CASE ( 'surface_waterflux' )
607             READ ( 13 )  surface_waterflux     
608          CASE ( 's_surface' )
609             READ ( 13 )  s_surface
610          CASE ( 's_surface_initial_change' )
611             READ ( 13 )  s_surface_initial_change
612          CASE ( 's_vertical_gradient' )
613             READ ( 13 )  s_vertical_gradient
614          CASE ( 's_vertical_gradient_level' )
615             READ ( 13 )  s_vertical_gradient_level
616          CASE ( 'time_coupling' )
617             READ ( 13 )  time_coupling
618          CASE ( 'time_disturb' )
619             READ ( 13 )  time_disturb
620          CASE ( 'time_dopr' )
621             READ ( 13 )  time_dopr
622          CASE ( 'time_domask' )
623             READ ( 13 )  time_domask
624          CASE ( 'time_dopr_av' )
625             READ ( 13 )  time_dopr_av
626          CASE ( 'time_dopr_listing' )
627             READ ( 13 )  time_dopr_listing
628          CASE ( 'time_dopts' )
629             READ ( 13 )  time_dopts
630          CASE ( 'time_dosp' )
631             READ ( 13 )  time_dosp
632          CASE ( 'time_dots' )
633             READ ( 13 )  time_dots
634          CASE ( 'time_do2d_xy' )
635             READ ( 13 )  time_do2d_xy
636          CASE ( 'time_do2d_xz' )
637             READ ( 13 )  time_do2d_xz
638          CASE ( 'time_do2d_yz' )
639             READ ( 13 )  time_do2d_yz
640          CASE ( 'time_do3d' )
641             READ ( 13 )  time_do3d
642          CASE ( 'time_do_av' )
643             READ ( 13 )  time_do_av
644          CASE ( 'time_do_sla' )
645             READ ( 13 )  time_do_sla
646          CASE ( 'time_dvrp' )
647             READ ( 13 )  time_dvrp
648          CASE ( 'time_radiation' )
649             READ ( 13 )  time_radiation
650          CASE ( 'time_restart' )
651             READ ( 13 )  time_restart
652          CASE ( 'time_run_control' )
653             READ ( 13 )  time_run_control
654          CASE ( 'time_since_reference_point' )
655             READ ( 13 )  time_since_reference_point
656          CASE ( 'time_sort_particles' )
657             READ ( 13 )  time_sort_particles
658          CASE ( 'timestep_scheme' )
659             READ ( 13 )  timestep_scheme
660          CASE ( 'topography' )
661             READ ( 13 )  topography
662          CASE ( 'topography_grid_convention' )
663             READ ( 13 )  topography_grid_convention
664          CASE ( 'top_heatflux' )
665             READ ( 13 )  top_heatflux
666          CASE ( 'top_momentumflux_u' )
667             READ ( 13 )  top_momentumflux_u
668          CASE ( 'top_momentumflux_v' )
669             READ ( 13 )  top_momentumflux_v
670          CASE ( 'top_salinityflux' )
671             READ ( 13 )  top_salinityflux
672          CASE ( 'tsc' )
673             READ ( 13 )  tsc
674          CASE ( 'collision_turbulence' )
675             READ ( 13 )  collision_turbulence
676          CASE ( 'turbulent_inflow' )
677             READ ( 13 )  turbulent_inflow
678          CASE ( 'u_bulk' )
679             READ ( 13 )  u_bulk
680          CASE ( 'u_init' )
681             READ ( 13 )  u_init
682          CASE ( 'u_max' )
683             READ ( 13 )  u_max
684          CASE ( 'u_max_ijk' )
685             READ ( 13 )  u_max_ijk
686          CASE ( 'ug' )
687             READ ( 13 )  ug
688          CASE ( 'ug_surface' )
689             READ ( 13 )  ug_surface
690          CASE ( 'ug_vertical_gradient' )
691             READ ( 13 )  ug_vertical_gradient
692          CASE ( 'ug_vertical_gradient_level' )
693             READ ( 13 )  ug_vertical_gradient_level
694          CASE ( 'ug_vertical_gradient_level_ind' )
695             READ ( 13 )  ug_vertical_gradient_level_ind
696          CASE ( 'use_surface_fluxes' )
697             READ ( 13 )  use_surface_fluxes
698          CASE ( 'use_top_fluxes' )
699             READ ( 13 )  use_top_fluxes
700          CASE ( 'use_ug_for_galilei_tr' )
701             READ ( 13 )  use_ug_for_galilei_tr
702          CASE ( 'use_upstream_for_tke' )
703             READ ( 13 )  use_upstream_for_tke
704          CASE ( 'v_bulk' )
705             READ ( 13 )  v_bulk
706          CASE ( 'v_init' )
707             READ ( 13 )  v_init
708          CASE ( 'v_max' )
709             READ ( 13 )  v_max
710          CASE ( 'v_max_ijk' )
711             READ ( 13 )  v_max_ijk
712          CASE ( 'ventilation_effect' )
713             READ ( 13 )  ventilation_effect
714          CASE ( 'vg' )
715             READ ( 13 )  vg
716          CASE ( 'vg_surface' )
717             READ ( 13 )  vg_surface
718          CASE ( 'vg_vertical_gradient' )
719             READ ( 13 )  vg_vertical_gradient
720          CASE ( 'vg_vertical_gradient_level' )
721             READ ( 13 )  vg_vertical_gradient_level
722          CASE ( 'vg_vertical_gradient_level_ind' )
723             READ ( 13 )  vg_vertical_gradient_level_ind
724          CASE ( 'volume_flow_area' )
725             READ ( 13 )  volume_flow_area
726          CASE ( 'volume_flow_initial' )
727             READ ( 13 )  volume_flow_initial
728          CASE ( 'wall_adjustment' )
729             READ ( 13 )  wall_adjustment
730          CASE ( 'subs_vertical_gradient' )
731             READ ( 13 )  subs_vertical_gradient
732          CASE ( 'subs_vertical_gradient_level' )
733             READ ( 13 )  subs_vertical_gradient_level
734          CASE ( 'subs_vertical_gradient_level_i' )
735             READ ( 13 )  subs_vertical_gradient_level_i
736          CASE ( 'w_max' )
737             READ ( 13 )  w_max
738          CASE ( 'w_max_ijk' )
739             READ ( 13 )  w_max_ijk
740          CASE ( 'zeta_max' )
741             READ ( 13 )  zeta_max
742          CASE ( 'zeta_min' )
743             READ ( 13 )  zeta_min
744          CASE ( 'z0h_factor' )
745             READ ( 13 )  z0h_factor
746
747          CASE DEFAULT
748             WRITE( message_string, * ) 'unknown variable named "',         &
749                                        TRIM( variable_chr ), '" found in', &
750                                        ' data from prior run on PE ', myid 
751             CALL message( 'read_var_list', 'PA0302', 1, 2, 0, 6, 0 )
752        END SELECT
753!
754!--    Read next string
755       READ ( 13 )  variable_chr
756
757    ENDDO
758
759
760 END SUBROUTINE read_var_list
761
762
763
764!------------------------------------------------------------------------------!
765! Description:
766! ------------
767!> Skipping the global control variables from restart-file (binary format)
768!> except some information needed when reading restart data from a previous
769!> run which used a smaller total domain or/and a different domain decomposition.
770!------------------------------------------------------------------------------!
771 
772 SUBROUTINE read_parts_of_var_list
773
774
775    USE arrays_3d,                                                             &
776        ONLY:  inflow_damping_factor, mean_inflow_profiles, pt_init,           &
777               q_init, ref_state, sa_init, u_init, ug, v_init, vg
778
779    USE control_parameters
780
781    USE indices,                                                               &
782        ONLY:  nz, nx, nx_on_file, ny, ny_on_file
783
784    USE kinds
785
786    USE pegrid
787
788    USE statistics,                                                            &
789        ONLY:  statistic_regions, hom, hom_sum, pr_palm, u_max, u_max_ijk,     &
790               v_max, v_max_ijk, w_max, w_max_ijk
791
792    IMPLICIT NONE
793
794    CHARACTER (LEN=10) ::  version_on_file
795    CHARACTER (LEN=20) ::  momentum_advec_check
796    CHARACTER (LEN=20) ::  scalar_advec_check
797    CHARACTER (LEN=30) ::  variable_chr
798    CHARACTER (LEN=1)  ::  cdum
799
800    INTEGER(iwp) ::  max_pr_user_on_file
801    INTEGER(iwp) ::  nz_on_file
802    INTEGER(iwp) ::  statistic_regions_on_file
803    INTEGER(iwp) ::  tmp_mpru
804    INTEGER(iwp) ::  tmp_sr
805
806    REAL(wp), DIMENSION(:,:,:),   ALLOCATABLE ::  hom_sum_on_file
807    REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE ::  hom_on_file
808
809
810    CALL check_open( 13 )
811
812    READ ( 13 )  version_on_file
813
814!
815!-- Read number of PEs and horizontal index bounds of all PEs used in previous
816!-- run
817    READ ( 13 )  variable_chr
818    IF ( TRIM( variable_chr ) /= 'numprocs' )  THEN
819       WRITE( message_string, * ) 'numprocs not found in data from prior ', &
820                                  'run on PE ', myid
821       CALL message( 'read_parts_of_var_list', 'PA0297', 1, 2, 0, 6, 0 )
822    ENDIF
823    READ ( 13 )  numprocs_previous_run
824
825    IF ( .NOT. ALLOCATED( hor_index_bounds_previous_run ) )  THEN
826       ALLOCATE( hor_index_bounds_previous_run(4,0:numprocs_previous_run-1) )
827    ENDIF
828
829    READ ( 13 )  variable_chr
830    IF ( TRIM( variable_chr ) /= 'hor_index_bounds' )  THEN
831       WRITE( message_string, * ) 'hor_index_bounds not found in data from ', &
832                                  'prior run on PE ', myid
833       CALL message( 'read_parts_of_var_list', 'PA0298', 1, 2, 0, 6, 0 )
834    ENDIF
835    READ ( 13 )  hor_index_bounds_previous_run
836
837!
838!-- Read vertical number of gridpoints and number of different areas used
839!-- for computing statistics. Allocate arrays depending on these values,
840!-- which are needed for the following read instructions.
841    READ ( 13 )  variable_chr
842    IF ( TRIM( variable_chr ) /= 'nz' )  THEN
843       message_string = 'nz not found in restart data file'
844       CALL message( 'read_parts_of_var_list', 'PA0303', 1, 2, 0, 6, 0 )
845    ENDIF
846    READ ( 13 )  nz_on_file
847    IF ( nz_on_file /= nz )  THEN
848       WRITE( message_string, * ) 'mismatch concerning number of ',      &
849                                  'gridpoints along z',                  &
850                                  '&nz on file    = "', nz_on_file, '"', &
851                                  '&nz from run   = "', nz, '"'
852       CALL message( 'read_parts_of_var_list', 'PA0304', 1, 2, 0, 6, 0 )
853    ENDIF
854
855    READ ( 13 )  variable_chr
856    IF ( TRIM( variable_chr ) /= 'max_pr_user' )  THEN
857       message_string = 'max_pr_user not found in restart data file'
858       CALL message( 'read_parts_of_var_list', 'PA0305', 1, 2, 0, 6, 0 )
859    ENDIF
860    READ ( 13 )  max_pr_user_on_file
861    IF ( max_pr_user_on_file /= max_pr_user )  THEN
862       WRITE( message_string, * ) 'number of user profiles on res',           &
863                                  'tart data file differs from the current ', &
864                                  'run&max_pr_user on file    = "',           &
865                                  max_pr_user_on_file, '"',                   &
866                                  '&max_pr_user from run   = "',              &
867                                  max_pr_user, '"'
868       CALL message( 'read_parts_of_var_list', 'PA0306', 0, 0, 0, 6, 0 )
869       tmp_mpru = MIN( max_pr_user_on_file, max_pr_user )
870    ELSE
871       tmp_mpru = max_pr_user
872    ENDIF
873
874    READ ( 13 )  variable_chr
875    IF ( TRIM( variable_chr ) /= 'statistic_regions' )  THEN
876       message_string = 'statistic_regions not found in restart data file'
877       CALL message( 'read_parts_of_var_list', 'PA0307', 1, 2, 0, 6, 0 )
878    ENDIF
879    READ ( 13 )  statistic_regions_on_file
880    IF ( statistic_regions_on_file /= statistic_regions )  THEN
881       WRITE( message_string, * ) 'statistic regions on restart data file ',& 
882                                  'differ from the current run',            &
883                                  '&statistic regions on file    = "',      &
884                                  statistic_regions_on_file, '"',           &
885                                  '&statistic regions from run   = "',      &
886                                   statistic_regions, '"',                  &
887                                  '&statistic data may be lost!'
888       CALL message( 'read_parts_of_var_list', 'PA0308', 0, 1, 0, 6, 0 )
889       tmp_sr = MIN( statistic_regions_on_file, statistic_regions )
890    ELSE
891       tmp_sr = statistic_regions
892    ENDIF
893
894
895!
896!-- Now read and check some control parameters and skip the rest
897    READ ( 13 )  variable_chr
898
899    DO  WHILE ( TRIM( variable_chr ) /= '*** end ***' )
900
901       SELECT CASE ( TRIM( variable_chr ) )
902
903          CASE ( 'average_count_pr' )
904             READ ( 13 )  average_count_pr
905             IF ( average_count_pr /= 0 )  THEN
906                WRITE( message_string, * ) 'inflow profiles not temporally ',  &
907                               'averaged. &Averaging will be done now using ', &
908                               average_count_pr, ' samples.'
909                CALL message( 'read_parts_of_var_list', 'PA0309', &
910                                                                 0, 1, 0, 6, 0 )
911             ENDIF
912
913          CASE ( 'hom' )
914             ALLOCATE( hom_on_file(0:nz+1,2,pr_palm+max_pr_user_on_file, &
915                       0:statistic_regions_on_file) )
916             READ ( 13 )  hom_on_file
917             hom(:,:,1:pr_palm+tmp_mpru,0:tmp_sr) = &
918                          hom_on_file(:,:,1:pr_palm+tmp_mpru,0:tmp_sr)
919             DEALLOCATE( hom_on_file )
920
921          CASE ( 'hom_sum' )
922             ALLOCATE( hom_sum_on_file(0:nz+1,pr_palm+max_pr_user_on_file, &
923                       0:statistic_regions_on_file) )
924             READ ( 13 )  hom_sum_on_file
925             hom_sum(:,1:pr_palm+tmp_mpru,0:tmp_sr) = &
926                          hom_sum_on_file(:,1:pr_palm+tmp_mpru,0:tmp_sr)
927             DEALLOCATE( hom_sum_on_file )
928
929          CASE ( 'momentum_advec' )
930             momentum_advec_check = momentum_advec
931             READ ( 13 )  momentum_advec
932             IF ( TRIM( momentum_advec_check ) /= TRIM( momentum_advec ) )  THEN
933                WRITE( message_string, * ) 'momentum_advec of the restart run ',&
934                               'differs from momentum_advec of the initial run.'
935                CALL message( 'read_parts_of_var_list', 'PA0100', &
936                                                                 1, 2, 0, 6, 0 )
937             END IF                           
938             
939          CASE ( 'nx' )
940             READ ( 13 )  nx_on_file
941
942          CASE ( 'ny' )
943             READ ( 13 )  ny_on_file
944
945          CASE ( 'ref_state' )
946             READ ( 13 )  ref_state
947
948          CASE ( 'scalar_advec' )
949             scalar_advec_check = scalar_advec
950             READ ( 13 )  scalar_advec
951             IF ( TRIM( scalar_advec_check ) /= TRIM( scalar_advec ) )  THEN
952                WRITE( message_string, * ) 'scalar_advec of the restart run ', &
953                               'differs from scalar_advec of the initial run.'
954                CALL message( 'read_parts_of_var_list', 'PA0101', &
955                                                                 1, 2, 0, 6, 0 )
956             END IF             
957             
958          CASE DEFAULT
959
960             READ ( 13 )  cdum
961
962       END SELECT
963
964       READ ( 13 )  variable_chr
965
966    ENDDO
967
968!
969!-- Calculate the temporal average of vertical profiles, if neccessary
970    IF ( average_count_pr /= 0 )  THEN
971       hom_sum = hom_sum / REAL( average_count_pr, KIND=wp )
972    ENDIF
973
974
975 END SUBROUTINE read_parts_of_var_list
976
977
978
979!------------------------------------------------------------------------------!
980! Description:
981! ------------
982!> Skipping the global control variables from restart-file (binary format)
983!------------------------------------------------------------------------------!
984 
985 SUBROUTINE skip_var_list
986
987
988    IMPLICIT NONE
989
990    CHARACTER (LEN=10) ::  version_on_file
991    CHARACTER (LEN=30) ::  variable_chr
992
993    CHARACTER (LEN=1) ::  cdum
994
995
996    READ ( 13 )  version_on_file
997
998    READ ( 13 )  variable_chr
999
1000    DO  WHILE ( TRIM( variable_chr ) /= '*** end ***' )
1001
1002       READ ( 13 )  cdum
1003       READ ( 13 )  variable_chr
1004
1005    ENDDO
1006
1007
1008 END SUBROUTINE skip_var_list
Note: See TracBrowser for help on using the repository browser.