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

Last change on this file since 358 was 345, checked in by heinze, 15 years ago

In case of restart runs without extension, initial profiles are not written to NetCDF-file anymore.

  • Property svn:keywords set to Id
File size: 30.4 KB
RevLine 
[1]1 SUBROUTINE read_var_list
2
3!------------------------------------------------------------------------------!
[257]4! Current revisions:
[1]5! -----------------
[345]6! +output_for_t0
[336]7! dt_fixed is read into a dummy variable.
[257]8! Output of messages replaced by message handling routine.
[240]9! +canyon_height, canyon_width_x, canyon_width_y, canyon_wall_left,
[291]10! canyon_wall_south, conserve_volume_flow_mode, coupling_start_time,
11! dp_external, dp_level_b, dp_smooth, dpdxy, run_coupled,
12! time_since_reference_point, topography_grid_convention, u_bulk, v_bulk
[198]13!
14! Former revisions:
15! -----------------
16! $Id: read_var_list.f90 345 2009-07-01 14:37:56Z heinze $
17!
[226]18! 216 2008-11-25 07:12:43Z raasch
19! limitations for nx_on_file, ny_on_file removed (read_parts_of_var_list)
20!
[198]21! 173 2008-05-23 20:39:38Z raasch
[153]22! +cthf, leaf_surface_concentration, scalar_exchange_coefficient
[151]23! +numprocs_previous_run, hor_index_bounds_previous_run, inflow_damping_factor,
24! inflow_damping_height, inflow_damping_width, mean_inflow_profiles,
25! recycling_width, turbulent_inflow,
[145]26! -cross_ts_*, npex, npey,
27! hom_sum, volume_flow_area, volume_flow_initial moved from
[146]28! read_3d_binary to here,
[147]29! routines read_parts_of_var_list and skip_var_list added at the end
[138]30!
[139]31! 138 2007-11-28 10:03:58Z letzel
32! +canopy_mode, drag_coefficient, lad, lad_surface, lad_vertical_gradient,
33! lad_vertical_gradient_level, lad_vertical_gradient_level_ind, pch_index,
34! plant_canopy, time_sort_particles
35!
[110]36! 102 2007-07-27 09:09:17Z raasch
37! +time_coupling, top_momentumflux_u|v
38!
[98]39! 95 2007-06-02 16:48:38Z raasch
40! +bc_sa_t, ocean, sa_init, sa_surface, sa_vertical_gradient,
41! sa_vertical_gradient_level, bottom/top_salinity_flux
42!
[90]43! 87 2007-05-22 15:46:47Z raasch
44! +max_pr_user (version 3.1), var_hom renamed pr_palm
45!
[77]46! 75 2007-03-22 09:54:05Z raasch
47! +loop_optimization, pt_reference, moisture renamed humidity
48!
[39]49! 20 2007-02-26 00:12:32Z raasch
50! +top_heatflux, use_top_fluxes
51!
[3]52! RCS Log replace by Id keyword, revision history cleaned up
53!
[1]54! Revision 1.34  2006/08/22 14:14:27  raasch
55! +dz_max
56!
57! Revision 1.1  1998/03/18 20:18:48  raasch
58! Initial revision
59!
60!
61! Description:
62! ------------
[143]63! Reading values of global control variables from restart-file (binary format)
[1]64!------------------------------------------------------------------------------!
65
66    USE arrays_3d
67    USE averaging
[87]68    USE control_parameters
[1]69    USE grid_variables
70    USE indices
71    USE model_1d
[345]72    USE netcdf_control
[116]73    USE particle_attributes
[1]74    USE pegrid
75    USE profil_parameter
76    USE statistics
77
78    IMPLICIT NONE
79
80    CHARACTER (LEN=10) ::  binary_version, version_on_file
81    CHARACTER (LEN=30) ::  variable_chr
[87]82
[336]83    LOGICAL ::  ldum
[143]84
[336]85
[1]86    CALL check_open( 13 )
87
88!
89!-- Make version number check first
90    READ ( 13 )  version_on_file
[241]91    binary_version = '3.4'
[1]92    IF ( TRIM( version_on_file ) /= TRIM( binary_version ) )  THEN
[257]93       WRITE( message_string, * ) 'version mismatch concerning control ', &
94                                  'variables',                            &
95                                  '&version on file    = "',              &
96                                  TRIM( version_on_file ), '"',           &
97                                  '&version on program = "',              &
98                                  TRIM( binary_version ), '"'
99       CALL message( 'read_var_list', 'PA0296', 1, 2, 0, 6, 0 )
[1]100    ENDIF
101
102!
[145]103!-- Read number of PEs and horizontal index bounds of all PEs used in previous
104!-- run
105    READ ( 13 )  variable_chr
106    IF ( TRIM( variable_chr ) /= 'numprocs' )  THEN
[274]107       WRITE( message_string, * ) 'numprocs not found in data from prior ', &
108                                  'run on PE ', myid
[257]109       CALL message( 'read_var_list', 'PA0297', 1, 2, 0, 6, 0 )
[145]110    ENDIF
111    READ ( 13 )  numprocs_previous_run
112
[146]113    IF ( .NOT. ALLOCATED( hor_index_bounds_previous_run ) )  THEN
114       ALLOCATE( hor_index_bounds_previous_run(4,0:numprocs_previous_run-1) )
115    ENDIF
[145]116
117    READ ( 13 )  variable_chr
118    IF ( TRIM( variable_chr ) /= 'hor_index_bounds' )  THEN
[257]119       WRITE( message_string, * ) 'hor_index_bounds not found in data from ', &
120                                  'prior run on PE ', myid
121       CALL message( 'read_var_list', 'PA0298', 1, 2, 0, 6, 0 )
[145]122    ENDIF
123    READ ( 13 )  hor_index_bounds_previous_run
124
125!
[1]126!-- Read vertical number of gridpoints and number of different areas used
127!-- for computing statistics. Allocate arrays depending on these values,
128!-- which are needed for the following read instructions.
129    READ ( 13 )  variable_chr
130    IF ( TRIM( variable_chr ) /= 'nz' )  THEN
[257]131       WRITE( message_string, * ) 'nz not found in data from prior run on PE ',&
132                                  myid
133       CALL message( 'read_var_list', 'PA0299', 1, 2, 0, 6, 0 )
[1]134    ENDIF
135    READ ( 13 )  nz
[87]136
[1]137    READ ( 13 )  variable_chr
[87]138    IF ( TRIM( variable_chr ) /= 'max_pr_user' )  THEN
[257]139       WRITE( message_string, * ) 'max_pr_user not found in data from ', &
[87]140                    'prior run on PE ', myid
[257]141       CALL message( 'read_var_list', 'PA0300', 1, 2, 0, 6, 0 )
[87]142    ENDIF
[159]143    READ ( 13 )  max_pr_user    ! This value is checked against the number of
144                                ! user profiles given for the current run
145                                ! in routine user_parin (it has to match)
[87]146
147    READ ( 13 )  variable_chr
[1]148    IF ( TRIM( variable_chr ) /= 'statistic_regions' )  THEN
[257]149       WRITE( message_string, * ) 'statistic_regions not found in data from ', &
[1]150                    'prior run on PE ', myid
[257]151       CALL message( 'read_var_list', 'PA0301', 1, 2, 0, 6, 0 )
[1]152    ENDIF
153    READ ( 13 )  statistic_regions
[146]154    IF ( .NOT. ALLOCATED( ug ) )  THEN
[147]155       ALLOCATE( lad(0:nz+1), ug(0:nz+1), u_init(0:nz+1), vg(0:nz+1),    &
156                 v_init(0:nz+1), pt_init(0:nz+1), q_init(0:nz+1),        &
157                 sa_init(0:nz+1),                                        &
[146]158                 hom(0:nz+1,2,pr_palm+max_pr_user,0:statistic_regions),  &
159                 hom_sum(0:nz+1,pr_palm+max_pr_user,0:statistic_regions) )
160    ENDIF
[1]161
162!
163!-- Now read all control parameters:
164!-- Caution: When the following read instructions have been changed, the
165!-- -------  version number stored in the variable binary_version has to be
166!--          increased. The same changes must also be done in write_var_list.
167    READ ( 13 )  variable_chr
168    DO  WHILE ( TRIM( variable_chr ) /= '*** end ***' )
169
170       SELECT CASE ( TRIM( variable_chr ) )
171
172          CASE ( 'adjust_mixing_length' )
173             READ ( 13 )  adjust_mixing_length
174          CASE ( 'advected_distance_x' )
175             READ ( 13 )  advected_distance_x
176          CASE ( 'advected_distance_y' )
177             READ ( 13 )  advected_distance_y
178          CASE ( 'alpha_surface' )
179             READ ( 13 )  alpha_surface
180          CASE ( 'average_count_pr' )
181             READ ( 13 )  average_count_pr
182          CASE ( 'average_count_sp' )
183             READ ( 13 )  average_count_sp
184          CASE ( 'average_count_3d' )
185             READ ( 13 )  average_count_3d
186          CASE ( 'bc_e_b' )
187             READ ( 13 )  bc_e_b
188          CASE ( 'bc_lr' )
189             READ ( 13 )  bc_lr
190          CASE ( 'bc_ns' )
191             READ ( 13 )  bc_ns
192          CASE ( 'bc_p_b' )
193             READ ( 13 )  bc_p_b
194          CASE ( 'bc_p_t' )
195             READ ( 13 )  bc_p_t
196          CASE ( 'bc_pt_b' )
197             READ ( 13 )  bc_pt_b
198          CASE ( 'bc_pt_t' )
199             READ ( 13 )  bc_pt_t
200          CASE ( 'bc_pt_t_val' )
201             READ ( 13 )  bc_pt_t_val
202          CASE ( 'bc_q_b' )
203             READ ( 13 )  bc_q_b
204          CASE ( 'bc_q_t' )
205             READ ( 13 )  bc_q_t
206          CASE ( 'bc_q_t_val' )
207             READ ( 13 )  bc_q_t_val
208          CASE ( 'bc_s_b' )
209             READ ( 13 )  bc_s_b
210          CASE ( 'bc_s_t' )
211             READ ( 13 )  bc_s_t
[95]212          CASE ( 'bc_sa_t' )
213             READ ( 13 )  bc_sa_t
[1]214          CASE ( 'bc_uv_b' )
215             READ ( 13 )  bc_uv_b
216          CASE ( 'bc_uv_t' )
217             READ ( 13 )  bc_uv_t
[95]218          CASE ( 'bottom_salinityflux' )
219             READ ( 13 )  bottom_salinityflux
[1]220          CASE ( 'building_height' )
221             READ ( 13 )  building_height
222          CASE ( 'building_length_x' )
223             READ ( 13 )  building_length_x
224          CASE ( 'building_length_y' )
225             READ ( 13 )  building_length_y
226          CASE ( 'building_wall_left' )
227             READ ( 13 )  building_wall_left
228          CASE ( 'building_wall_south' )
229             READ ( 13 )  building_wall_south
[138]230          CASE ( 'canopy_mode' )
231             READ ( 13 )  canopy_mode
[240]232          CASE ( 'canyon_height' )
233             READ ( 13 )  canyon_height
234          CASE ( 'canyon_width_x' )
235             READ ( 13 )  canyon_width_x
236          CASE ( 'canyon_width_y' )
237             READ ( 13 )  canyon_width_y
238          CASE ( 'canyon_wall_left' )
239             READ ( 13 )  canyon_wall_left
240          CASE ( 'canyon_wall_south' )
241             READ ( 13 )  canyon_wall_south
[1]242          CASE ( 'cloud_droplets' )
243             READ ( 13 )  cloud_droplets
244          CASE ( 'cloud_physics' )
245             READ ( 13 )  cloud_physics
246          CASE ( 'conserve_volume_flow' )
247             READ ( 13 )  conserve_volume_flow
[241]248          CASE ( 'conserve_volume_flow_mode' )
249             READ ( 13 )  conserve_volume_flow_mode
[291]250          CASE ( 'coupling_start_time' )
251             READ ( 13 )  coupling_start_time
[153]252          CASE ( 'cthf' )
253             READ ( 13 )  cthf
[1]254          CASE ( 'current_timestep_number' )
255             READ ( 13 )  current_timestep_number
256          CASE ( 'cut_spline_overshoot' )
257             READ ( 13 )  cut_spline_overshoot
258          CASE ( 'damp_level_1d' )
259             READ ( 13 )  damp_level_1d
260          CASE ( 'dissipation_1d' )
261             READ ( 13 )  dissipation_1d
[240]262          CASE ( 'dp_external' )
263             READ ( 13 )  dp_external
264          CASE ( 'dp_level_b' )
265             READ ( 13 )  dp_level_b
266          CASE ( 'dp_smooth' )
267             READ ( 13 )  dp_smooth
268          CASE ( 'dpdxy' )
269             READ ( 13 )  dpdxy
[138]270          CASE ( 'drag_coefficient' )
271             READ ( 13 )  drag_coefficient
[1]272          CASE ( 'dt_fixed' )
[336]273             READ ( 13 )  ldum   ! restart files created before rev 333
274                                 ! contained dt_fixed by mistake; it is still
275                                 ! read here in order to allow usage of these
276                                 ! older restart files; can be removed in a
277                                 ! later version
[1]278          CASE ( 'dt_pr_1d' )
279             READ ( 13 )  dt_pr_1d
280          CASE ( 'dt_run_control_1d' )
281             READ ( 13 )  dt_run_control_1d
282          CASE ( 'dt_3d' )
283             READ ( 13 )  dt_3d
284          CASE ( 'dvrp_filecount' )
285             READ ( 13 )  dvrp_filecount
286          CASE ( 'dx' )
287             READ ( 13 )  dx
288          CASE ( 'dy' )
289             READ ( 13 )  dy
290          CASE ( 'dz' )
291             READ ( 13 )  dz
292          CASE ( 'dz_max' )
293             READ ( 13 )  dz_max
294          CASE ( 'dz_stretch_factor' )
295             READ ( 13 )  dz_stretch_factor
296          CASE ( 'dz_stretch_level' )
297             READ ( 13 )  dz_stretch_level
298          CASE ( 'e_min' )
299             READ ( 13 )  e_min
300          CASE ( 'end_time_1d' )
301             READ ( 13 )  end_time_1d
302          CASE ( 'fft_method' )
303             READ ( 13 )  fft_method
304          CASE ( 'first_call_advec_particles' )
305             READ ( 13 )  first_call_advec_particles
306          CASE ( 'galilei_transformation' )
307             READ ( 13 )  galilei_transformation
308          CASE ( 'grid_matching' )
309             READ ( 13 )  grid_matching
310          CASE ( 'hom' )
311             READ ( 13 )  hom
[143]312          CASE ( 'hom_sum' )
313             READ ( 13 )  hom_sum
[151]314          CASE ( 'humidity' )
315             READ ( 13 )  humidity
316          CASE ( 'inflow_damping_factor' )
317             IF ( .NOT. ALLOCATED( inflow_damping_factor ) )  THEN
318                ALLOCATE( inflow_damping_factor(0:nz+1) )
319             ENDIF
320             READ ( 13 )  inflow_damping_factor
321          CASE ( 'inflow_damping_height' )
322             READ ( 13 )  inflow_damping_height
323          CASE ( 'inflow_damping_width' )
324             READ ( 13 )  inflow_damping_width
[1]325          CASE ( 'inflow_disturbance_begin' )
326             READ ( 13 )  inflow_disturbance_begin
327          CASE ( 'inflow_disturbance_end' )
328             READ ( 13 )  inflow_disturbance_end
329          CASE ( 'km_constant' )
330             READ ( 13 )  km_constant
331          CASE ( 'km_damp_max' )
332             READ ( 13 )  km_damp_max
[138]333          CASE ( 'lad' )
334             READ ( 13 )  lad
335          CASE ( 'lad_surface' )
336             READ ( 13 )  lad_surface
337          CASE ( 'lad_vertical_gradient' )
338             READ ( 13 )  lad_vertical_gradient
339          CASE ( 'lad_vertical_gradient_level' )
340             READ ( 13 )  lad_vertical_gradient_level
341          CASE ( 'lad_vertical_gradient_level_in' )
342             READ ( 13 )  lad_vertical_gradient_level_ind
[1]343          CASE ( 'last_dt_change' )
344             READ ( 13 )  last_dt_change
[153]345          CASE ( 'leaf_surface_concentration' )
346             READ ( 13 )  leaf_surface_concentration
[1]347          CASE ( 'long_filter_factor' )
348             READ ( 13 )  long_filter_factor
[63]349          CASE ( 'loop_optimization' )
350             READ ( 13 )  loop_optimization
[151]351          CASE ( 'mean_inflow_profiles' )
352             IF ( .NOT. ALLOCATED( mean_inflow_profiles ) )  THEN
353                ALLOCATE( mean_inflow_profiles(0:nz+1,5) )
354             ENDIF
355             READ ( 13 )  mean_inflow_profiles
[1]356          CASE ( 'mixing_length_1d' )
357             READ ( 13 )  mixing_length_1d
358          CASE ( 'momentum_advec' )
359             READ ( 13 )  momentum_advec
360          CASE ( 'netcdf_precision' )
361             READ ( 13 )  netcdf_precision
362          CASE ( 'nsor_ini' )
363             READ ( 13 )  nsor_ini
364          CASE ( 'nx' )
365             READ ( 13 )  nx
[147]366             nx_on_file = nx
[1]367          CASE ( 'ny' )
368             READ ( 13 )  ny
[147]369             ny_on_file = ny
[94]370          CASE ( 'ocean' )
371             READ ( 13 )  ocean
[1]372          CASE ( 'old_dt' )
373             READ ( 13 )  old_dt
374          CASE ( 'omega' )
375             READ ( 13 )  omega
376          CASE ( 'outflow_damping_width' )
377             READ ( 13 )  outflow_damping_width
[345]378          CASE ( 'output_for_t0' )
379             READ (13)    output_for_t0
[1]380          CASE ( 'overshoot_limit_e' )
381             READ ( 13 )  overshoot_limit_e
382          CASE ( 'overshoot_limit_pt' )
383             READ ( 13 )  overshoot_limit_pt
384          CASE ( 'overshoot_limit_u' )
385             READ ( 13 )  overshoot_limit_u
386          CASE ( 'overshoot_limit_v' )
387             READ ( 13 )  overshoot_limit_v
388          CASE ( 'overshoot_limit_w' )
389             READ ( 13 )  overshoot_limit_w
390          CASE ( 'passive_scalar' )
391             READ ( 13 )  passive_scalar
[138]392          CASE ( 'pch_index' )
393             READ ( 13 )  pch_index
[1]394          CASE ( 'phi' )
395             READ ( 13 )  phi
[138]396          CASE ( 'plant_canopy' )
397             READ ( 13 )  plant_canopy
[1]398          CASE ( 'prandtl_layer' )
399             READ ( 13 )  prandtl_layer
400          CASE ( 'precipitation' )
401             READ ( 13 ) precipitation
402          CASE ( 'pt_init' )
403             READ ( 13 )  pt_init
[57]404          CASE ( 'pt_reference' )
405             READ ( 13 )  pt_reference
[1]406          CASE ( 'pt_surface' )
407             READ ( 13 )  pt_surface
408          CASE ( 'pt_surface_initial_change' )
409             READ ( 13 )  pt_surface_initial_change
410          CASE ( 'pt_vertical_gradient' )
411             READ ( 13 )  pt_vertical_gradient
412          CASE ( 'pt_vertical_gradient_level' )
413             READ ( 13 )  pt_vertical_gradient_level
414          CASE ( 'pt_vertical_gradient_level_ind' )
415             READ ( 13 )  pt_vertical_gradient_level_ind
416          CASE ( 'q_init' )
417             READ ( 13 )  q_init
418          CASE ( 'q_surface' )
419             READ ( 13 )  q_surface
420          CASE ( 'q_surface_initial_change' )
421             READ ( 13 )  q_surface_initial_change
422          CASE ( 'q_vertical_gradient' )
423             READ ( 13 )  q_vertical_gradient
424          CASE ( 'q_vertical_gradient_level' )
425             READ ( 13 )  q_vertical_gradient_level
426          CASE ( 'q_vertical_gradient_level_ind' )
427             READ ( 13 )  q_vertical_gradient_level_ind
428          CASE ( 'radiation' )
429             READ ( 13 )  radiation
430          CASE ( 'random_generator' )
431             READ ( 13 )  random_generator
432          CASE ( 'random_heatflux' )
433             READ ( 13 )  random_heatflux
[151]434          CASE ( 'recycling_width' )
435             READ ( 13 )  recycling_width
[1]436          CASE ( 'rif_max' )
437             READ ( 13 )  rif_max
438          CASE ( 'rif_min' )
439             READ ( 13 )  rif_min
440          CASE ( 'roughness_length' )
441             READ ( 13 )  roughness_length
442          CASE ( 'runnr' )
443             READ ( 13 )  runnr
[291]444          CASE ( 'run_coupled' )
445             READ ( 13 )  run_coupled
[94]446          CASE ( 'sa_init' )
447             READ ( 13 )  sa_init
448          CASE ( 'sa_surface' )
449             READ ( 13 )  sa_surface
450          CASE ( 'sa_vertical_gradient' )
451             READ ( 13 )  sa_vertical_gradient
452          CASE ( 'sa_vertical_gradient_level' )
453             READ ( 13 )  sa_vertical_gradient_level
[1]454          CASE ( 'scalar_advec' )
455             READ ( 13 )  scalar_advec
[153]456          CASE ( 'scalar_exchange_coefficient' )
457             READ ( 13 )  scalar_exchange_coefficient
[1]458          CASE ( 'simulated_time' )
459             READ ( 13 )  simulated_time
460          CASE ( 'surface_heatflux' )
461             READ ( 13 )  surface_heatflux
462          CASE ( 'surface_pressure' )
463             READ ( 13 )  surface_pressure
464          CASE ( 'surface_scalarflux' )
465             READ ( 13 )  surface_scalarflux             
466          CASE ( 'surface_waterflux' )
467             READ ( 13 )  surface_waterflux             
468          CASE ( 's_surface' )
469             READ ( 13 )  s_surface
470          CASE ( 's_surface_initial_change' )
471             READ ( 13 )  s_surface_initial_change
472          CASE ( 's_vertical_gradient' )
473             READ ( 13 )  s_vertical_gradient
474          CASE ( 's_vertical_gradient_level' )
475             READ ( 13 )  s_vertical_gradient_level
[102]476          CASE ( 'time_coupling' )
477             READ ( 13 )  time_coupling
[1]478          CASE ( 'time_disturb' )
479             READ ( 13 )  time_disturb
480          CASE ( 'time_dopr' )
481             READ ( 13 )  time_dopr
482          CASE ( 'time_dopr_av' )
483             READ ( 13 )  time_dopr_av
484          CASE ( 'time_dopr_listing' )
485             READ ( 13 )  time_dopr_listing
486          CASE ( 'time_dopts' )
487             READ ( 13 )  time_dopts
488          CASE ( 'time_dosp' )
489             READ ( 13 )  time_dosp
490          CASE ( 'time_dots' )
491             READ ( 13 )  time_dots
492          CASE ( 'time_do2d_xy' )
493             READ ( 13 )  time_do2d_xy
494          CASE ( 'time_do2d_xz' )
495             READ ( 13 )  time_do2d_xz
496          CASE ( 'time_do2d_yz' )
497             READ ( 13 )  time_do2d_yz
498          CASE ( 'time_do3d' )
499             READ ( 13 )  time_do3d
500          CASE ( 'time_do_av' )
501             READ ( 13 )  time_do_av
502          CASE ( 'time_do_sla' )
503             READ ( 13 )  time_do_sla
504          CASE ( 'time_dvrp' )
505             READ ( 13 )  time_dvrp
506          CASE ( 'time_restart' )
507             READ ( 13 )  time_restart
508          CASE ( 'time_run_control' )
509             READ ( 13 )  time_run_control
[291]510          CASE ( 'time_since_reference_point' )
511             READ ( 13 )  time_since_reference_point
[116]512          CASE ( 'time_sort_particles' )
513             READ ( 13 )  time_sort_particles
[1]514          CASE ( 'timestep_scheme' )
515             READ ( 13 )  timestep_scheme
516          CASE ( 'topography' )
517             READ ( 13 )  topography
[256]518          CASE ( 'topography_grid_convention' )
519             READ ( 13 )  topography_grid_convention
[19]520          CASE ( 'top_heatflux' )
521             READ ( 13 )  top_heatflux
[102]522          CASE ( 'top_momentumflux_u' )
523             READ ( 13 )  top_momentumflux_u
524          CASE ( 'top_momentumflux_v' )
525             READ ( 13 )  top_momentumflux_v
[94]526          CASE ( 'top_salinityflux' )
527             READ ( 13 )  top_salinityflux
[1]528          CASE ( 'tsc' )
529             READ ( 13 )  tsc
[151]530          CASE ( 'turbulent_inflow' )
531             READ ( 13 )  turbulent_inflow
[241]532          CASE ( 'u_bulk' )
533             READ ( 13 )  u_bulk
[1]534          CASE ( 'u_init' )
535             READ ( 13 )  u_init
536          CASE ( 'u_max' )
537             READ ( 13 )  u_max
538          CASE ( 'u_max_ijk' )
539             READ ( 13 )  u_max_ijk
540          CASE ( 'ug' )
541             READ ( 13 )  ug
542          CASE ( 'ug_surface' )
543             READ ( 13 )  ug_surface
544          CASE ( 'ug_vertical_gradient' )
545             READ ( 13 )  ug_vertical_gradient
546          CASE ( 'ug_vertical_gradient_level' )
547             READ ( 13 )  ug_vertical_gradient_level
548          CASE ( 'ug_vertical_gradient_level_ind' )
549             READ ( 13 )  ug_vertical_gradient_level_ind
550          CASE ( 'ups_limit_e' )
551             READ ( 13 )  ups_limit_e
552          CASE ( 'ups_limit_pt' )
553             READ ( 13 )  ups_limit_pt
554          CASE ( 'ups_limit_u' )
555             READ ( 13 )  ups_limit_u
556          CASE ( 'ups_limit_v' )
557             READ ( 13 )  ups_limit_v
558          CASE ( 'ups_limit_w' )
559             READ ( 13 )  ups_limit_w
560          CASE ( 'use_surface_fluxes' )
561             READ ( 13 )  use_surface_fluxes
[20]562          CASE ( 'use_top_fluxes' )
563             READ ( 13 )  use_top_fluxes
[1]564          CASE ( 'use_ug_for_galilei_tr' )
565             READ ( 13 )  use_ug_for_galilei_tr
566          CASE ( 'use_upstream_for_tke' )
567             READ ( 13 )  use_upstream_for_tke
[241]568          CASE ( 'v_bulk' )
569             READ ( 13 )  v_bulk
[1]570          CASE ( 'v_init' )
571             READ ( 13 )  v_init
572          CASE ( 'v_max' )
573             READ ( 13 )  v_max
574          CASE ( 'v_max_ijk' )
575             READ ( 13 )  v_max_ijk
576          CASE ( 'vg' )
577             READ ( 13 )  vg
578          CASE ( 'vg_surface' )
579             READ ( 13 )  vg_surface
580          CASE ( 'vg_vertical_gradient' )
581             READ ( 13 )  vg_vertical_gradient
582          CASE ( 'vg_vertical_gradient_level' )
583             READ ( 13 )  vg_vertical_gradient_level
584          CASE ( 'vg_vertical_gradient_level_ind' )
585             READ ( 13 )  vg_vertical_gradient_level_ind
[143]586          CASE ( 'volume_flow_area' )
587             READ ( 13 )  volume_flow_area
588          CASE ( 'volume_flow_initial' )
589             READ ( 13 )  volume_flow_initial
[1]590          CASE ( 'wall_adjustment' )
591             READ ( 13 )  wall_adjustment
592          CASE ( 'w_max' )
593             READ ( 13 )  w_max
594          CASE ( 'w_max_ijk' )
595             READ ( 13 )  w_max_ijk
596
597          CASE DEFAULT
[257]598             WRITE( message_string, * ) 'unknown variable named "',         &
599                                        TRIM( variable_chr ), '" found in', &
600                                        ' data from prior run on PE ', myid 
601             CALL message( 'read_var_list', 'PA0302', 1, 2, 0, 6, 0 )
[1]602        END SELECT
603!
604!--    Read next string
605       READ ( 13 )  variable_chr
606
607    ENDDO
608
609
[146]610 END SUBROUTINE read_var_list
[143]611
[146]612
613
[147]614 SUBROUTINE read_parts_of_var_list
615
616!------------------------------------------------------------------------------!
617! Description:
618! ------------
619! Skipping the global control variables from restart-file (binary format)
620! except some informations needed when reading restart data from a previous
[151]621! run which used a smaller total domain or/and a different domain decomposition.
[147]622!------------------------------------------------------------------------------!
623
[151]624    USE arrays_3d
[147]625    USE control_parameters
626    USE indices
627    USE pegrid
628    USE statistics
629
630    IMPLICIT NONE
631
632    CHARACTER (LEN=10) ::  version_on_file
633    CHARACTER (LEN=30) ::  variable_chr
634
635    INTEGER ::  idum, max_pr_user_on_file, nz_on_file, &
[170]636                statistic_regions_on_file, tmp_mpru, tmp_sr
[147]637
[151]638    REAL, DIMENSION(:,:,:),   ALLOCATABLE ::  hom_sum_on_file
[147]639    REAL, DIMENSION(:,:,:,:), ALLOCATABLE ::  hom_on_file
640
641
642    CALL check_open( 13 )
643
644    WRITE (9,*) 'rpovl: after check open 13'
645    CALL local_flush( 9 )
646    READ ( 13 )  version_on_file
647
648!
649!-- Read number of PEs and horizontal index bounds of all PEs used in previous
650!-- run
651    READ ( 13 )  variable_chr
652    IF ( TRIM( variable_chr ) /= 'numprocs' )  THEN
[274]653       WRITE( message_string, * ) 'numprocs not found in data from prior ', &
654                                  'run on PE ', myid
[257]655       CALL message( 'read_parts_of_var_list', 'PA0297', 1, 2, 0, 6, 0 )
[147]656    ENDIF
657    READ ( 13 )  numprocs_previous_run
658
659    IF ( .NOT. ALLOCATED( hor_index_bounds_previous_run ) )  THEN
660       ALLOCATE( hor_index_bounds_previous_run(4,0:numprocs_previous_run-1) )
661    ENDIF
662
663    READ ( 13 )  variable_chr
664    IF ( TRIM( variable_chr ) /= 'hor_index_bounds' )  THEN
[257]665       WRITE( message_string, * ) 'hor_index_bounds not found in data from ', &
666                                  'prior run on PE ', myid
667       CALL message( 'read_parts_of_var_list', 'PA0298', 1, 2, 0, 6, 0 )
[147]668    ENDIF
669    READ ( 13 )  hor_index_bounds_previous_run
670
671!
672!-- Read vertical number of gridpoints and number of different areas used
673!-- for computing statistics. Allocate arrays depending on these values,
674!-- which are needed for the following read instructions.
675    READ ( 13 )  variable_chr
676    IF ( TRIM( variable_chr ) /= 'nz' )  THEN
[257]677       message_string = 'nz not found in restart data file'
678       CALL message( 'read_parts_of_var_list', 'PA0303', 1, 2, 0, 6, 0 )
[147]679    ENDIF
680    READ ( 13 )  nz_on_file
681    IF ( nz_on_file /= nz )  THEN
[257]682       WRITE( message_string, * ) 'mismatch concerning number of ',      &
[274]683                                  'gridpoints along z',                  &
684                                  '&nz on file    = "', nz_on_file, '"', &
685                                  '&nz from run   = "', nz, '"'
[257]686       CALL message( 'read_parts_of_var_list', 'PA0304', 1, 2, 0, 6, 0 )
[147]687    ENDIF
688
689    READ ( 13 )  variable_chr
690    IF ( TRIM( variable_chr ) /= 'max_pr_user' )  THEN
[257]691       message_string = 'max_pr_user not found in restart data file'
692       CALL message( 'read_parts_of_var_list', 'PA0305', 1, 2, 0, 6, 0 )
[147]693    ENDIF
694    READ ( 13 )  max_pr_user_on_file
[170]695    IF ( max_pr_user_on_file /= max_pr_user )  THEN
[274]696       WRITE( message_string, * ) 'number of user profiles on res',           &
697                                  'tart data file differs from the current ', &
698                                  'run&max_pr_user on file    = "',           &
699                                  max_pr_user_on_file, '"',                   &
700                                  '&max_pr_user from run   = "',              &
[257]701                                  max_pr_user, '"'
702       CALL message( 'read_parts_of_var_list', 'PA0306', 0, 0, 0, 6, 0 )
[170]703       tmp_mpru = MIN( max_pr_user_on_file, max_pr_user )
704    ELSE
705       tmp_mpru = max_pr_user
[147]706    ENDIF
707
708    READ ( 13 )  variable_chr
709    IF ( TRIM( variable_chr ) /= 'statistic_regions' )  THEN
[257]710       message_string = 'statistic_regions not found in restart data file'
711       CALL message( 'read_parts_of_var_list', 'PA0307', 1, 2, 0, 6, 0 )
[147]712    ENDIF
713    READ ( 13 )  statistic_regions_on_file
[173]714    IF ( statistic_regions_on_file /= statistic_regions )  THEN
[274]715       WRITE( message_string, * ) 'statistic regions on restart data file ',& 
716                                  'differ from the current run',            &
717                                  '&statistic regions on file    = "',      &
718                                  statistic_regions_on_file, '"',           &
719                                  '&statistic regions from run   = "',      &
720                                   statistic_regions, '"',                  &
[257]721                                  '&statistic data may be lost!'
722       CALL message( 'read_parts_of_var_list', 'PA0308', 0, 1, 0, 6, 0 )
[170]723       tmp_sr = MIN( statistic_regions_on_file, statistic_regions )
724    ELSE
725       tmp_sr = statistic_regions
[147]726    ENDIF
727
728
729!
730!-- Now read and check some control parameters and skip the rest
731    WRITE (9,*) 'wpovl: begin reading variables'
732    CALL local_flush( 9 )
733    READ ( 13 )  variable_chr
734
735    DO  WHILE ( TRIM( variable_chr ) /= '*** end ***' )
736
737       SELECT CASE ( TRIM( variable_chr ) )
738
[151]739          CASE ( 'average_count_pr' )
740             READ ( 13 )  average_count_pr
[257]741             IF ( average_count_pr /= 0 )  THEN
[274]742                WRITE( message_string, * ) 'inflow profiles not temporally ',  &
743                               'averaged. &Averaging will be done now using ', &
744                               average_count_pr, ' samples.'
745                CALL message( 'read_parts_of_var_list', 'PA0309', &
746                                                                 0, 1, 0, 6, 0 )
[151]747             ENDIF
748
[147]749          CASE ( 'hom' )
750             ALLOCATE( hom_on_file(0:nz+1,2,pr_palm+max_pr_user_on_file, &
751                       0:statistic_regions_on_file) )
752             READ ( 13 )  hom_on_file
[170]753             hom(:,:,1:pr_palm+tmp_mpru,0:tmp_sr) = &
754                          hom_on_file(:,:,1:pr_palm+tmp_mpru,0:tmp_sr)
[147]755             DEALLOCATE( hom_on_file )
756
[151]757          CASE ( 'hom_sum' )
758             ALLOCATE( hom_sum_on_file(0:nz+1,pr_palm+max_pr_user_on_file, &
759                       0:statistic_regions_on_file) )
760             READ ( 13 )  hom_sum_on_file
[170]761             hom_sum(:,1:pr_palm+tmp_mpru,0:tmp_sr) = &
762                          hom_sum_on_file(:,1:pr_palm+tmp_mpru,0:tmp_sr)
[151]763             DEALLOCATE( hom_sum_on_file )
764
[147]765          CASE ( 'nx' )
766             READ ( 13 )  nx_on_file
767
768          CASE ( 'ny' )
769             READ ( 13 )  ny_on_file
770
771
772          CASE DEFAULT
773
774             READ ( 13 )  idum
775
776       END SELECT
777
778       READ ( 13 )  variable_chr
779
780    ENDDO
781
[151]782!
783!-- Calculate the temporal average of vertical profiles, if neccessary
784    IF ( average_count_pr /= 0 )  THEN
785       hom_sum = hom_sum / REAL( average_count_pr )
786    ENDIF
[147]787
[151]788
[147]789 END SUBROUTINE read_parts_of_var_list
790
791
792
[146]793 SUBROUTINE skip_var_list
794
795!------------------------------------------------------------------------------!
796! Description:
797! ------------
798! Skipping the global control variables from restart-file (binary format)
799!------------------------------------------------------------------------------!
800
[147]801    IMPLICIT NONE
802
[146]803    CHARACTER (LEN=10) ::  version_on_file
804    CHARACTER (LEN=30) ::  variable_chr
805
806    INTEGER ::  idum
807
808
[147]809    WRITE (9,*) 'skipvl #1'
810    CALL local_flush( 9 )
[146]811    READ ( 13 )  version_on_file
812
[147]813    WRITE (9,*) 'skipvl before variable_chr'
814    CALL local_flush( 9 )
[146]815    READ ( 13 )  variable_chr
[147]816    WRITE (9,*) 'skipvl after variable_chr'
817    CALL local_flush( 9 )
[146]818
819    DO  WHILE ( TRIM( variable_chr ) /= '*** end ***' )
820
[147]821    WRITE (9,*) 'skipvl chr = ', variable_chr
822    CALL local_flush( 9 )
[146]823       READ ( 13 )  idum
824       READ ( 13 )  variable_chr
825
826    ENDDO
[147]827    WRITE (9,*) 'skipvl last'
828    CALL local_flush( 9 )
[146]829
830
831 END SUBROUTINE skip_var_list
Note: See TracBrowser for help on using the repository browser.