source: palm/trunk/SOURCE/write_restart_data_mod.f90 @ 3994

Last change on this file since 3994 was 3994, checked in by suehring, 2 years ago

new module for diagnostic output quantities added + output of turbulence intensity

  • Property svn:keywords set to Id
File size: 34.7 KB
Line 
1!> @file write_restart_data_mod.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-2019 Leibniz Universitaet Hannover
18!------------------------------------------------------------------------------!
19!
20! Current revisions:
21! -----------------
22!
23!
24! Former revisions:
25! -----------------
26! $Id: write_restart_data_mod.f90 3994 2019-05-22 18:08:09Z suehring $
27! output of turbulence intensity added
28!
29! 3988 2019-05-22 11:32:37Z kanani
30! + time_virtual_measurement (to enable steering of output interval)
31!
32! 3936 2019-04-26 15:38:02Z kanani
33! Enable time-averaged output of theta_2m* with restarts
34!
35! 3668 2019-01-14 12:49:24Z maronga
36! Implementation of the PALM module interface
37!
38! 3589 2018-11-30 15:09:51Z suehring
39! Move the control parameter "salsa" from salsa_mod to control_parameters
40! (M. Kurppa)
41!
42!
43! 3582 2018-11-29 19:16:36Z suehring
44! Implementation of a new aerosol module salsa.
45!
46! 3355 2018-10-16 14:03:34Z knoop
47! changes concerning modularization of ocean option
48!
49! 3274 2018-09-24 15:42:55Z knoop
50! Modularization of all bulk cloud physics code components
51!
52! 3065 2018-06-12 07:03:02Z Giersch
53! New parameters concerning vertical grid stretching have been added
54!
55! 3004 2018-04-27 12:33:25Z Giersch
56! precipitation_rate_av removed
57!
58! 3003 2018-04-23 10:22:58Z Giersch
59! z_i is also written out to use the last known inversion height from the
60! initial run as the first inversion height which is written into the
61! run control file
62!
63! 2956 2018-04-10 11:01:03Z Giersch
64! spectrum_x and spectrum_y have been moved to global data
65!
66! 2921 2018-03-22 15:05:23Z Giersch
67! spinup_time, day_of_year_init and time_utc_init are also written out now
68!
69! 2912 2018-03-20 13:00:05Z knoop
70! Added gust module interface calls
71!
72! 2894 2018-03-15 09:17:58Z Giersch
73! Initial revision
74!
75!
76! Description:
77! ------------
78!> Writes restart data into binary file(s) for restart runs.
79!------------------------------------------------------------------------------!
80 MODULE write_restart_data_mod
81
82
83    USE arrays_3d,                                                          &
84        ONLY:  inflow_damping_factor, mean_inflow_profiles, pt_init,        &
85               q_init, ref_state, s_init, u_init, ug, v_init, vg,           &
86               e, kh, km, p, pt, q, ql, s, u, u_m_l, u_m_n, u_m_r,          &
87               u_m_s, v, v_m_l, v_m_n, v_m_r, v_m_s, vpt, w, w_m_l, w_m_n,  &
88               w_m_r, w_m_s
89
90    USE averaging
91
92    USE control_parameters
93
94    USE date_and_time_mod,                                                     &
95        ONLY:  day_of_year_init, time_utc_init
96
97    USE diagnostic_output_quantities_mod,                                      &
98        ONLY:  ti_av
99
100    USE grid_variables,                                                        &
101        ONLY:  dx, dy
102
103    USE indices,                                                               &
104        ONLY:  nx, nxl, nxr, ny, nys, nyn, nz, nzb, nzt
105
106    USE kinds
107
108    USE model_1d_mod,                                                          &
109        ONLY:  damp_level_1d, dt_pr_1d, dt_run_control_1d, end_time_1d
110
111    USE module_interface,                                                      &
112        ONLY:  module_interface_wrd_global,                                    &
113               module_interface_wrd_local
114
115    USE netcdf_interface,                                                      &
116        ONLY:  netcdf_precision, output_for_t0
117
118    USE particle_attributes,                                                   &
119        ONLY:  curvature_solution_effects, iran_part
120
121    USE pegrid,                                                                &
122        ONLY:  collective_wait, hor_index_bounds, myid, numprocs
123
124    USE radiation_model_mod,                                                   &
125        ONLY:  time_radiation
126
127    USE random_function_mod,                                                   &
128        ONLY:  random_iv, random_iy
129
130    USE random_generator_parallel,                                             &
131        ONLY:  id_random_array, seq_random_array
132
133    USE spectra_mod,                                                           &
134        ONLY:  average_count_sp, spectrum_x, spectrum_y
135
136    USE statistics,                                                            &
137        ONLY:  statistic_regions, hom, hom_sum, u_max, u_max_ijk, v_max,       &
138               v_max_ijk, w_max, w_max_ijk, z_i
139
140    USE surface_mod,                                                           &
141        ONLY :  surface_wrd_local
142
143    USE vertical_nesting_mod,                                                  &
144        ONLY:  vnest_init
145
146    USE virtual_measurement_mod,                                               &
147        ONLY:  time_virtual_measurement
148
149
150    IMPLICIT NONE
151
152
153    INTERFACE wrd_global
154       MODULE PROCEDURE wrd_global
155    END INTERFACE wrd_global
156
157    INTERFACE wrd_local
158       MODULE PROCEDURE wrd_local
159    END INTERFACE wrd_local
160
161
162    PUBLIC wrd_local, wrd_global
163
164
165 CONTAINS
166
167
168! Description:
169! ------------
170!> Global data of control variables and arrays is written out for
171!> restarts (binary format).
172!> This information is only written to the file opened by PE0.
173!------------------------------------------------------------------------------!
174    SUBROUTINE wrd_global
175
176
177       CHARACTER (LEN=10)  ::  binary_version_global   !<
178
179
180       binary_version_global = '4.8'
181
182       CALL wrd_write_string( 'binary_version_global' )
183       WRITE ( 14 )  binary_version_global
184
185       CALL wrd_write_string( 'numprocs' )
186       WRITE ( 14 )  numprocs
187
188       CALL wrd_write_string( 'hor_index_bounds' ) 
189       WRITE ( 14 )  hor_index_bounds
190
191       CALL wrd_write_string( 'nz' ) 
192       WRITE ( 14 )  nz
193
194       CALL wrd_write_string( 'max_pr_user' ) 
195       WRITE ( 14 )  max_pr_user
196
197       CALL wrd_write_string( 'statistic_regions' ) 
198       WRITE ( 14 )  statistic_regions
199
200!
201!-- Caution: After changes in the following parameter-list, the
202!-- -------  version number stored in the variable binary_version_global has to
203!--          be increased. The same changes must also be done in the parameter-
204!--          list in rrd_global.
205
206       CALL wrd_write_string( 'advected_distance_x' ) 
207       WRITE ( 14 )  advected_distance_x
208
209       CALL wrd_write_string( 'advected_distance_y' ) 
210       WRITE ( 14 )  advected_distance_y
211
212       CALL wrd_write_string( 'alpha_surface' ) 
213       WRITE ( 14 )  alpha_surface
214
215       CALL wrd_write_string( 'average_count_pr' ) 
216       WRITE ( 14 )  average_count_pr
217
218       CALL wrd_write_string( 'average_count_sp' ) 
219       WRITE ( 14 )  average_count_sp
220
221       CALL wrd_write_string( 'average_count_3d' ) 
222       WRITE ( 14 )  average_count_3d
223
224       CALL wrd_write_string( 'bc_e_b' ) 
225       WRITE ( 14 )  bc_e_b
226
227       CALL wrd_write_string( 'bc_lr' ) 
228       WRITE ( 14 )  bc_lr
229
230       CALL wrd_write_string( 'bc_ns' ) 
231       WRITE ( 14 )  bc_ns
232
233       CALL wrd_write_string( 'bc_p_b' ) 
234       WRITE ( 14 )  bc_p_b
235
236       CALL wrd_write_string( 'bc_p_t' ) 
237       WRITE ( 14 )  bc_p_t
238
239       CALL wrd_write_string( 'bc_pt_b' ) 
240       WRITE ( 14 )  bc_pt_b
241
242       CALL wrd_write_string( 'bc_pt_t' ) 
243       WRITE ( 14 )  bc_pt_t
244
245       CALL wrd_write_string( 'bc_pt_t_val' ) 
246       WRITE ( 14 )  bc_pt_t_val
247
248       CALL wrd_write_string( 'bc_q_b' ) 
249       WRITE ( 14 )  bc_q_b
250
251       CALL wrd_write_string( 'bc_q_t' ) 
252       WRITE ( 14 )  bc_q_t
253
254       CALL wrd_write_string( 'bc_q_t_val' ) 
255       WRITE ( 14 )  bc_q_t_val
256
257       CALL wrd_write_string( 'bc_s_b' ) 
258       WRITE ( 14 )  bc_s_b
259
260       CALL wrd_write_string( 'bc_s_t' ) 
261       WRITE ( 14 )  bc_s_t
262
263       CALL wrd_write_string( 'bc_uv_b' ) 
264       WRITE ( 14 )  bc_uv_b
265
266       CALL wrd_write_string( 'bc_uv_t' ) 
267       WRITE ( 14 )  bc_uv_t
268
269       CALL wrd_write_string( 'building_height' ) 
270       WRITE ( 14 )  building_height
271
272       CALL wrd_write_string( 'building_length_x' ) 
273       WRITE ( 14 )  building_length_x
274
275       CALL wrd_write_string( 'building_length_y' ) 
276       WRITE ( 14 )  building_length_y
277
278       CALL wrd_write_string( 'building_wall_left' ) 
279       WRITE ( 14 )  building_wall_left
280
281       CALL wrd_write_string( 'building_wall_south' ) 
282       WRITE ( 14 )  building_wall_south
283
284       CALL wrd_write_string( 'call_psolver_at_all_substeps' ) 
285       WRITE ( 14 )  call_psolver_at_all_substeps
286
287       CALL wrd_write_string( 'canyon_height' ) 
288       WRITE ( 14 )  canyon_height
289
290       CALL wrd_write_string( 'canyon_wall_left' ) 
291       WRITE ( 14 )  canyon_wall_left
292
293       CALL wrd_write_string( 'canyon_wall_south' ) 
294       WRITE ( 14 )  canyon_wall_south
295
296       CALL wrd_write_string( 'canyon_width_x' ) 
297       WRITE ( 14 )  canyon_width_x
298
299       CALL wrd_write_string( 'canyon_width_y' ) 
300       WRITE ( 14 )  canyon_width_y
301
302       CALL wrd_write_string( 'cfl_factor' ) 
303       WRITE ( 14 )  cfl_factor
304
305       CALL wrd_write_string( 'cloud_droplets' ) 
306       WRITE ( 14 )  cloud_droplets
307
308       CALL wrd_write_string( 'collective_wait' ) 
309       WRITE ( 14 )  collective_wait
310
311       CALL wrd_write_string( 'conserve_volume_flow' ) 
312       WRITE ( 14 )  conserve_volume_flow
313
314       CALL wrd_write_string( 'conserve_volume_flow_mode' ) 
315       WRITE ( 14 )  conserve_volume_flow_mode
316
317       CALL wrd_write_string( 'constant_flux_layer' ) 
318       WRITE ( 14 )  constant_flux_layer
319
320       CALL wrd_write_string( 'coupling_start_time' ) 
321       WRITE ( 14 )  coupling_start_time
322
323       CALL wrd_write_string( 'current_timestep_number' ) 
324       WRITE ( 14 )  current_timestep_number
325
326       CALL wrd_write_string( 'curvature_solution_effects' ) 
327       WRITE ( 14 )  curvature_solution_effects
328
329       CALL wrd_write_string( 'cycle_mg' ) 
330       WRITE ( 14 )  cycle_mg
331
332       CALL wrd_write_string( 'damp_level_1d' ) 
333       WRITE ( 14 )  damp_level_1d
334
335       CALL wrd_write_string( 'day_of_year_init' ) 
336       WRITE ( 14 )  day_of_year_init
337
338       CALL wrd_write_string( 'dissipation_1d' ) 
339       WRITE ( 14 )  dissipation_1d
340
341       CALL wrd_write_string( 'do2d_xy_time_count' ) 
342       WRITE ( 14 )  do2d_xy_time_count
343
344       CALL wrd_write_string( 'do2d_xz_time_count' ) 
345       WRITE ( 14 )  do2d_xz_time_count
346
347       CALL wrd_write_string( 'do2d_yz_time_count' ) 
348       WRITE ( 14 )  do2d_yz_time_count
349
350       CALL wrd_write_string( 'do3d_time_count' ) 
351       WRITE ( 14 )  do3d_time_count
352
353       CALL wrd_write_string( 'dp_external' ) 
354       WRITE ( 14 )  dp_external
355
356       CALL wrd_write_string( 'dp_level_b' ) 
357       WRITE ( 14 )  dp_level_b
358
359       CALL wrd_write_string( 'dp_smooth' ) 
360       WRITE ( 14 )  dp_smooth
361
362       CALL wrd_write_string( 'dpdxy' ) 
363       WRITE ( 14 )  dpdxy
364
365       CALL wrd_write_string( 'dt_3d' ) 
366       WRITE ( 14 )  dt_3d
367
368       CALL wrd_write_string( 'dt_pr_1d' ) 
369       WRITE ( 14 )  dt_pr_1d
370
371       CALL wrd_write_string( 'dt_run_control_1d' ) 
372       WRITE ( 14 )  dt_run_control_1d
373
374       CALL wrd_write_string( 'dvrp_filecount' ) 
375       WRITE ( 14 )  dvrp_filecount
376
377       CALL wrd_write_string( 'dx' ) 
378       WRITE ( 14 )  dx
379
380       CALL wrd_write_string( 'dy' ) 
381       WRITE ( 14 )  dy
382
383       CALL wrd_write_string( 'dz' ) 
384       WRITE ( 14 )  dz
385       
386       CALL wrd_write_string( 'dz_max' ) 
387       WRITE ( 14 )  dz_max
388
389       CALL wrd_write_string( 'dz_stretch_factor' ) 
390       WRITE ( 14 )  dz_stretch_factor
391       
392       CALL wrd_write_string( 'dz_stretch_factor_array' ) 
393       WRITE ( 14 )  dz_stretch_factor_array
394       
395       CALL wrd_write_string( 'dz_stretch_level' ) 
396       WRITE ( 14 )  dz_stretch_level
397
398       CALL wrd_write_string( 'dz_stretch_level_end' ) 
399       WRITE ( 14 )  dz_stretch_level_end
400       
401       CALL wrd_write_string( 'dz_stretch_level_start' ) 
402       WRITE ( 14 )  dz_stretch_level_start
403       
404       CALL wrd_write_string( 'e_min' ) 
405       WRITE ( 14 )  e_min
406
407       CALL wrd_write_string( 'end_time_1d' ) 
408       WRITE ( 14 )  end_time_1d
409
410       CALL wrd_write_string( 'fft_method' ) 
411       WRITE ( 14 )  fft_method
412
413       CALL wrd_write_string( 'first_call_lpm' ) 
414       WRITE ( 14 )  first_call_lpm
415
416       CALL wrd_write_string( 'galilei_transformation' ) 
417       WRITE ( 14 )  galilei_transformation
418
419       CALL wrd_write_string( 'hom' ) 
420       WRITE ( 14 )  hom
421
422       CALL wrd_write_string( 'hom_sum' ) 
423       WRITE ( 14 )  hom_sum
424
425       CALL wrd_write_string( 'humidity' ) 
426       WRITE ( 14 )  humidity
427
428       IF ( ALLOCATED( inflow_damping_factor ) )  THEN
429          CALL wrd_write_string( 'inflow_damping_factor' ) 
430          WRITE ( 14 )  inflow_damping_factor
431       ENDIF
432
433       CALL wrd_write_string( 'inflow_damping_height' ) 
434       WRITE ( 14 )  inflow_damping_height
435
436       CALL wrd_write_string( 'inflow_damping_width' ) 
437       WRITE ( 14 )  inflow_damping_width
438
439       CALL wrd_write_string( 'inflow_disturbance_begin' ) 
440       WRITE ( 14 )  inflow_disturbance_begin
441
442       CALL wrd_write_string( 'inflow_disturbance_end' ) 
443       WRITE ( 14 )  inflow_disturbance_end
444
445       CALL wrd_write_string( 'km_constant' ) 
446       WRITE ( 14 )  km_constant
447
448       CALL wrd_write_string( 'large_scale_forcing' ) 
449       WRITE ( 14 )  large_scale_forcing
450
451       CALL wrd_write_string( 'large_scale_subsidence' ) 
452       WRITE ( 14 )  large_scale_subsidence
453
454       CALL wrd_write_string( 'latitude' ) 
455       WRITE ( 14 )  latitude
456
457       CALL wrd_write_string( 'longitude' )
458       WRITE ( 14 )  longitude
459
460       CALL wrd_write_string( 'loop_optimization' ) 
461       WRITE ( 14 )  loop_optimization
462
463       CALL wrd_write_string( 'masking_method' ) 
464       WRITE ( 14 )  masking_method
465
466       IF ( ALLOCATED( mean_inflow_profiles ) )  THEN
467          CALL wrd_write_string( 'mean_inflow_profiles' ) 
468          WRITE ( 14 )  mean_inflow_profiles
469       ENDIF
470
471       CALL wrd_write_string( 'mg_cycles' ) 
472       WRITE ( 14 )  mg_cycles
473
474       CALL wrd_write_string( 'mg_switch_to_pe0_level' ) 
475       WRITE ( 14 )  mg_switch_to_pe0_level
476
477       CALL wrd_write_string( 'mixing_length_1d' ) 
478       WRITE ( 14 )  mixing_length_1d
479
480       CALL wrd_write_string( 'momentum_advec' ) 
481       WRITE ( 14 )  momentum_advec
482
483       CALL wrd_write_string( 'netcdf_precision' ) 
484       WRITE ( 14 )  netcdf_precision
485
486       CALL wrd_write_string( 'neutral' ) 
487       WRITE ( 14 )  neutral
488
489       CALL wrd_write_string( 'ngsrb' ) 
490       WRITE ( 14 )  ngsrb
491
492       CALL wrd_write_string( 'nsor' ) 
493       WRITE ( 14 )  nsor
494
495       CALL wrd_write_string( 'nsor_ini' ) 
496       WRITE ( 14 )  nsor_ini
497
498       CALL wrd_write_string( 'nudging' ) 
499       WRITE ( 14 )  nudging
500
501       CALL wrd_write_string( 'num_leg' ) 
502       WRITE ( 14 )  num_leg
503
504       CALL wrd_write_string( 'nx' ) 
505       WRITE ( 14 )  nx
506
507       CALL wrd_write_string( 'ny' ) 
508       WRITE ( 14 )  ny
509
510       CALL wrd_write_string( 'ocean_mode' ) 
511       WRITE ( 14 )  ocean_mode
512
513       CALL wrd_write_string( 'old_dt' ) 
514       WRITE ( 14 )  old_dt
515
516       CALL wrd_write_string( 'omega' ) 
517       WRITE ( 14 )  omega
518
519       CALL wrd_write_string( 'omega_sor' ) 
520       WRITE ( 14 )  omega_sor
521
522       CALL wrd_write_string( 'output_for_t0' ) 
523       WRITE ( 14 )  output_for_t0
524
525       CALL wrd_write_string( 'passive_scalar' ) 
526       WRITE ( 14 )  passive_scalar
527
528       CALL wrd_write_string( 'prandtl_number' ) 
529       WRITE ( 14 )  prandtl_number
530
531       CALL wrd_write_string( 'psolver' )
532       WRITE ( 14 )  psolver
533
534       CALL wrd_write_string( 'pt_damping_factor' ) 
535       WRITE ( 14 )  pt_damping_factor
536
537       CALL wrd_write_string( 'pt_damping_width' ) 
538       WRITE ( 14 )  pt_damping_width
539
540       CALL wrd_write_string( 'pt_init' ) 
541       WRITE ( 14 )  pt_init
542
543       CALL wrd_write_string( 'pt_reference' ) 
544       WRITE ( 14 )  pt_reference
545
546       CALL wrd_write_string( 'pt_surface' ) 
547       WRITE ( 14 )  pt_surface
548
549       CALL wrd_write_string( 'pt_surface_initial_change' ) 
550       WRITE ( 14 )  pt_surface_initial_change
551
552       CALL wrd_write_string( 'pt_vertical_gradient' ) 
553       WRITE ( 14 )  pt_vertical_gradient
554
555       CALL wrd_write_string( 'pt_vertical_gradient_level' ) 
556       WRITE ( 14 )  pt_vertical_gradient_level
557
558       CALL wrd_write_string( 'pt_vertical_gradient_level_ind' ) 
559       WRITE ( 14 )  pt_vertical_gradient_level_ind
560
561       CALL wrd_write_string( 'q_init' ) 
562       WRITE ( 14 )  q_init
563
564       CALL wrd_write_string( 'q_surface' ) 
565       WRITE ( 14 )  q_surface
566
567       CALL wrd_write_string( 'q_surface_initial_change' ) 
568       WRITE ( 14 )  q_surface_initial_change
569
570       CALL wrd_write_string( 'q_vertical_gradient' ) 
571       WRITE ( 14 )  q_vertical_gradient
572
573       CALL wrd_write_string( 'q_vertical_gradient_level' ) 
574       WRITE ( 14 )  q_vertical_gradient_level
575
576       CALL wrd_write_string( 'q_vertical_gradient_level_ind' ) 
577       WRITE ( 14 )  q_vertical_gradient_level_ind
578
579       CALL wrd_write_string( 'random_generator' ) 
580       WRITE ( 14 )  random_generator
581
582       CALL wrd_write_string( 'random_heatflux' ) 
583       WRITE ( 14 )  random_heatflux
584
585       CALL wrd_write_string( 'rans_mode' ) 
586       WRITE ( 14 )  rans_mode
587
588       CALL wrd_write_string( 'rayleigh_damping_factor' ) 
589       WRITE ( 14 )  rayleigh_damping_factor
590
591       CALL wrd_write_string( 'rayleigh_damping_height' ) 
592       WRITE ( 14 )  rayleigh_damping_height
593
594       CALL wrd_write_string( 'recycling_width' ) 
595       WRITE ( 14 )  recycling_width
596
597       CALL wrd_write_string( 'recycling_yshift' ) 
598       WRITE ( 14 )  recycling_yshift
599
600       CALL wrd_write_string( 'ref_state' ) 
601       WRITE ( 14 )  ref_state
602
603       CALL wrd_write_string( 'reference_state' ) 
604       WRITE ( 14 )  reference_state
605
606       CALL wrd_write_string( 'residual_limit' ) 
607       WRITE ( 14 )  residual_limit
608
609       CALL wrd_write_string( 'roughness_length' ) 
610       WRITE ( 14 )  roughness_length
611
612       CALL wrd_write_string( 'run_coupled' ) 
613       WRITE ( 14 )  run_coupled
614
615       CALL wrd_write_string( 'runnr' ) 
616       WRITE ( 14 )  runnr
617
618       CALL wrd_write_string( 's_init' ) 
619       WRITE ( 14 )  s_init
620
621       CALL wrd_write_string( 's_surface' ) 
622       WRITE ( 14 )  s_surface
623
624       CALL wrd_write_string( 's_surface_initial_change' ) 
625       WRITE ( 14 )  s_surface_initial_change
626
627       CALL wrd_write_string( 's_vertical_gradient' ) 
628       WRITE ( 14 )  s_vertical_gradient
629
630       CALL wrd_write_string( 's_vertical_gradient_level' ) 
631       WRITE ( 14 )  s_vertical_gradient_level
632
633       CALL wrd_write_string( 's_vertical_gradient_level_ind' ) 
634       WRITE ( 14 )  s_vertical_gradient_level_ind
635
636       CALL wrd_write_string( 'scalar_advec' ) 
637       WRITE ( 14 )  scalar_advec
638
639       CALL wrd_write_string( 'simulated_time' ) 
640       WRITE ( 14 )  simulated_time
641
642       IF ( ALLOCATED( spectrum_x ) )  THEN
643          CALL wrd_write_string( 'spectrum_x' ) 
644          WRITE ( 14 )  spectrum_x
645          CALL wrd_write_string( 'spectrum_y' ) 
646          WRITE ( 14 )  spectrum_y
647       ENDIF
648
649       CALL wrd_write_string( 'spinup_time ' ) 
650       WRITE ( 14 )  spinup_time
651
652       CALL wrd_write_string( 'surface_heatflux' ) 
653       WRITE ( 14 )  surface_heatflux
654
655       CALL wrd_write_string( 'surface_pressure' ) 
656       WRITE ( 14 )  surface_pressure
657
658       CALL wrd_write_string( 'surface_scalarflux' ) 
659       WRITE ( 14 )  surface_scalarflux
660
661       CALL wrd_write_string( 'surface_waterflux' ) 
662       WRITE ( 14 )  surface_waterflux
663
664       CALL wrd_write_string( 'time_coupling' ) 
665       WRITE ( 14 )  time_coupling
666
667       CALL wrd_write_string( 'time_disturb' ) 
668       WRITE ( 14 )  time_disturb
669
670       CALL wrd_write_string( 'time_do2d_xy' ) 
671       WRITE ( 14 )  time_do2d_xy
672
673       CALL wrd_write_string( 'time_do2d_xz' ) 
674       WRITE ( 14 )  time_do2d_xz
675
676       CALL wrd_write_string( 'time_do2d_yz' ) 
677       WRITE ( 14 )  time_do2d_yz
678
679       CALL wrd_write_string( 'time_do3d' ) 
680       WRITE ( 14 )  time_do3d
681
682       CALL wrd_write_string( 'time_do_av' ) 
683       WRITE ( 14 )  time_do_av
684
685       CALL wrd_write_string( 'time_do_sla' ) 
686       WRITE ( 14 )  time_do_sla
687
688       CALL wrd_write_string( 'time_domask' ) 
689       WRITE ( 14 )  time_domask
690
691       CALL wrd_write_string( 'time_dopr' ) 
692       WRITE ( 14 )  time_dopr
693
694       CALL wrd_write_string( 'time_dopr_av' ) 
695       WRITE ( 14 )  time_dopr_av
696
697       CALL wrd_write_string( 'time_dopr_listing' ) 
698       WRITE ( 14 )  time_dopr_listing
699
700       CALL wrd_write_string( 'time_dopts' ) 
701       WRITE ( 14 )  time_dopts
702
703       CALL wrd_write_string( 'time_dosp' ) 
704       WRITE ( 14 )  time_dosp
705
706       CALL wrd_write_string( 'time_dots' ) 
707       WRITE ( 14 )  time_dots
708
709       CALL wrd_write_string( 'time_dvrp' ) 
710       WRITE ( 14 )  time_dvrp
711
712       CALL wrd_write_string( 'time_radiation' ) 
713       WRITE ( 14 )  time_radiation
714
715       CALL wrd_write_string( 'time_restart' ) 
716       WRITE ( 14 )  time_restart
717
718       CALL wrd_write_string( 'time_run_control' ) 
719       WRITE ( 14 )  time_run_control
720
721       CALL wrd_write_string( 'time_since_reference_point' ) 
722       WRITE ( 14 )  time_since_reference_point
723
724       CALL wrd_write_string( 'time_utc_init' ) 
725       WRITE ( 14 )  time_utc_init
726
727       CALL wrd_write_string( 'time_virtual_measurement' ) 
728       WRITE ( 14 )  time_virtual_measurement
729
730       CALL wrd_write_string( 'timestep_scheme' ) 
731       WRITE ( 14 )  timestep_scheme
732
733       CALL wrd_write_string( 'top_heatflux' ) 
734       WRITE ( 14 )  top_heatflux
735
736       CALL wrd_write_string( 'top_momentumflux_u' ) 
737       WRITE ( 14 )  top_momentumflux_u
738
739       CALL wrd_write_string( 'top_momentumflux_v' ) 
740       WRITE ( 14 )  top_momentumflux_v
741
742       CALL wrd_write_string( 'top_scalarflux' ) 
743       WRITE ( 14 )  top_scalarflux
744
745       CALL wrd_write_string( 'topography' ) 
746       WRITE ( 14 )  topography
747
748       CALL wrd_write_string( 'topography_grid_convention' ) 
749       WRITE ( 14 )  topography_grid_convention
750
751       CALL wrd_write_string( 'tsc' ) 
752       WRITE ( 14 )  tsc
753
754       CALL wrd_write_string( 'tunnel_height' ) 
755       WRITE ( 14 )  tunnel_height
756
757       CALL wrd_write_string( 'tunnel_length' ) 
758       WRITE ( 14 )  tunnel_length
759
760       CALL wrd_write_string( 'tunnel_wall_depth' ) 
761       WRITE ( 14 )  tunnel_wall_depth
762
763       CALL wrd_write_string( 'tunnel_width_x' ) 
764       WRITE ( 14 )  tunnel_width_x
765
766       CALL wrd_write_string( 'tunnel_width_y' ) 
767       WRITE ( 14 )  tunnel_width_y
768
769       CALL wrd_write_string( 'turbulence_closure' ) 
770       WRITE ( 14 )  turbulence_closure
771
772       CALL wrd_write_string( 'turbulent_inflow' ) 
773       WRITE ( 14 )  turbulent_inflow
774
775       CALL wrd_write_string( 'u_bulk' ) 
776       WRITE ( 14 )  u_bulk
777
778       CALL wrd_write_string( 'u_init' ) 
779       WRITE ( 14 )  u_init
780
781       CALL wrd_write_string( 'u_max' ) 
782       WRITE ( 14 )  u_max
783
784       CALL wrd_write_string( 'u_max_ijk' ) 
785       WRITE ( 14 )  u_max_ijk
786
787       CALL wrd_write_string( 'ug' ) 
788       WRITE ( 14 )  ug
789
790       CALL wrd_write_string( 'ug_surface' ) 
791       WRITE ( 14 )  ug_surface
792
793       CALL wrd_write_string( 'ug_vertical_gradient' ) 
794       WRITE ( 14 )  ug_vertical_gradient
795
796       CALL wrd_write_string( 'ug_vertical_gradient_level' ) 
797       WRITE ( 14 )  ug_vertical_gradient_level
798
799       CALL wrd_write_string( 'ug_vertical_gradient_level_ind' ) 
800       WRITE ( 14 )  ug_vertical_gradient_level_ind
801
802       CALL wrd_write_string( 'use_surface_fluxes' ) 
803       WRITE ( 14 )  use_surface_fluxes
804
805       CALL wrd_write_string( 'use_top_fluxes' ) 
806       WRITE ( 14 )  use_top_fluxes
807
808       CALL wrd_write_string( 'use_ug_for_galilei_tr' ) 
809       WRITE ( 14 )  use_ug_for_galilei_tr
810
811       CALL wrd_write_string( 'use_upstream_for_tke' ) 
812       WRITE ( 14 )  use_upstream_for_tke
813
814       CALL wrd_write_string( 'v_bulk' ) 
815       WRITE ( 14 )  v_bulk
816
817       CALL wrd_write_string( 'v_init' ) 
818       WRITE ( 14 )  v_init
819
820       CALL wrd_write_string( 'v_max' ) 
821       WRITE ( 14 )  v_max
822
823       CALL wrd_write_string( 'v_max_ijk' ) 
824       WRITE ( 14 )  v_max_ijk
825
826       CALL wrd_write_string( 'vg' ) 
827       WRITE ( 14 )  vg
828
829       CALL wrd_write_string( 'vg_surface' ) 
830       WRITE ( 14 )  vg_surface
831
832       CALL wrd_write_string( 'vg_vertical_gradient' ) 
833       WRITE ( 14 ) vg_vertical_gradient
834
835       CALL wrd_write_string( 'vg_vertical_gradient_level' ) 
836       WRITE ( 14 )  vg_vertical_gradient_level
837
838       CALL wrd_write_string( 'vg_vertical_gradient_level_ind' ) 
839       WRITE ( 14 )  vg_vertical_gradient_level_ind
840
841       CALL wrd_write_string( 'virtual_flight' ) 
842       WRITE ( 14 )  virtual_flight
843
844       CALL wrd_write_string( 'vnest_init' ) 
845       WRITE ( 14 )  vnest_init
846
847       CALL wrd_write_string( 'volume_flow_area' ) 
848       WRITE ( 14 )  volume_flow_area
849
850       CALL wrd_write_string( 'volume_flow_initial' ) 
851       WRITE ( 14 )  volume_flow_initial
852
853       CALL wrd_write_string( 'subs_vertical_gradient' ) 
854       WRITE ( 14 )  subs_vertical_gradient
855
856       CALL wrd_write_string( 'subs_vertical_gradient_level' ) 
857       WRITE ( 14 )  subs_vertical_gradient_level
858
859       CALL wrd_write_string( 'subs_vertical_gradient_level_i' ) 
860       WRITE ( 14 )  subs_vertical_gradient_level_i
861
862       CALL wrd_write_string( 'w_max' ) 
863       WRITE ( 14 )  w_max
864
865       CALL wrd_write_string( 'w_max_ijk' ) 
866       WRITE ( 14 )  w_max_ijk
867
868       CALL wrd_write_string( 'wall_adjustment' ) 
869       WRITE ( 14 )  wall_adjustment
870
871       CALL wrd_write_string( 'wall_heatflux' ) 
872       WRITE ( 14 )  wall_heatflux
873
874       CALL wrd_write_string( 'wall_humidityflux' ) 
875       WRITE ( 14 )  wall_humidityflux
876
877       CALL wrd_write_string( 'wall_scalarflux' ) 
878       WRITE ( 14 )  wall_scalarflux
879
880       CALL wrd_write_string( 'y_shift' ) 
881       WRITE ( 14 )  y_shift
882
883       CALL wrd_write_string( 'z0h_factor' ) 
884       WRITE ( 14 )  z0h_factor
885
886       CALL wrd_write_string( 'zeta_max' ) 
887       WRITE ( 14 )  zeta_max
888
889       CALL wrd_write_string( 'zeta_min' ) 
890       WRITE ( 14 )  zeta_min
891
892       CALL wrd_write_string( 'z_i' ) 
893       WRITE ( 14 )  z_i
894
895!
896!--    Write restart data of the other modules
897       CALL module_interface_wrd_global
898
899
900    END SUBROUTINE wrd_global
901
902
903!------------------------------------------------------------------------------!
904! Description:
905! ------------
906!> Processor specific data of variables and arrays is written out for
907!> restarts (binary format).
908!> This information is written to the file opened by each PE.
909!------------------------------------------------------------------------------!
910    SUBROUTINE wrd_local
911
912
913       CHARACTER (LEN=10) ::  binary_version_local   !<
914
915!
916!-- Write arrays.
917       binary_version_local = '4.7'
918
919       CALL wrd_write_string( 'binary_version_local' )
920       WRITE ( 14 )  binary_version_local
921
922       WRITE ( 14 )  numprocs, myid, nxl, nxr, nys, nyn, nzb, nzt
923
924!
925!-- Attention: After changes to the following output commands the version number
926!-- ---------  of the variable binary_version_local must be changed!
927!--            Also, the list of arrays to be read in rrd_local must be
928!--            adjusted accordingly.
929       CALL wrd_write_string( 'e' ) 
930       WRITE ( 14 )  e
931
932       IF ( ALLOCATED( e_av ) )  THEN
933          CALL wrd_write_string( 'e_av' ) 
934          WRITE ( 14 )  e_av
935       ENDIF
936
937       CALL wrd_write_string( 'iran' ) 
938       WRITE ( 14 )  iran, iran_part
939
940       CALL wrd_write_string( 'kh' ) 
941       WRITE ( 14 )  kh
942 
943
944       IF ( ALLOCATED( kh_av ) )  THEN
945          CALL wrd_write_string( 'kh_av' ) 
946          WRITE ( 14 )  kh_av
947       ENDIF
948
949       CALL wrd_write_string( 'km' ) 
950       WRITE ( 14 )  km
951
952       IF ( ALLOCATED( km_av ) )  THEN
953          CALL wrd_write_string( 'km_av' ) 
954          WRITE ( 14 )  km_av
955       ENDIF
956
957       IF ( ALLOCATED( lpt_av ) )  THEN
958          CALL wrd_write_string( 'lpt_av' ) 
959          WRITE ( 14 )  lpt_av
960       ENDIF
961
962       IF ( ALLOCATED( lwp_av ) )  THEN
963          CALL wrd_write_string( 'lwp_av' ) 
964          WRITE ( 14 )  lwp_av
965       ENDIF
966
967       CALL wrd_write_string( 'p' ) 
968       WRITE ( 14 )  p
969
970       IF ( ALLOCATED( p_av ) )  THEN
971          CALL wrd_write_string( 'p_av' ) 
972          WRITE ( 14 )  p_av
973       ENDIF
974
975       IF ( ALLOCATED( pc_av ) )  THEN
976          CALL wrd_write_string( 'pc_av' ) 
977          WRITE ( 14 )  pc_av
978       ENDIF
979
980       IF ( ALLOCATED( pr_av ) )  THEN
981          CALL wrd_write_string( 'pr_av' ) 
982          WRITE ( 14 )  pr_av
983       ENDIF
984
985       CALL wrd_write_string( 'pt' ) 
986       WRITE ( 14 )  pt
987
988       IF ( ALLOCATED( pt_av ) )  THEN
989          CALL wrd_write_string( 'pt_av' ) 
990          WRITE ( 14 )  pt_av
991       ENDIF
992
993       IF ( ALLOCATED( pt_2m_av ) )  THEN
994          CALL wrd_write_string( 'pt_2m_av' ) 
995          WRITE ( 14 )  pt_2m_av
996       ENDIF
997
998       IF ( humidity )  THEN
999
1000          CALL wrd_write_string( 'q' ) 
1001          WRITE ( 14 )  q
1002
1003          IF ( ALLOCATED( q_av ) )  THEN
1004             CALL wrd_write_string( 'q_av' ) 
1005             WRITE ( 14 )  q_av
1006          ENDIF
1007
1008          IF ( cloud_droplets )  THEN
1009
1010             CALL wrd_write_string( 'ql' )
1011             WRITE ( 14 )  ql
1012
1013             IF ( ALLOCATED( ql_av ) )  THEN
1014                CALL wrd_write_string( 'ql_av' )
1015                WRITE ( 14 )  ql_av
1016             ENDIF
1017
1018          ENDIF
1019
1020          IF ( ALLOCATED( qsws_av ) )  THEN
1021             CALL wrd_write_string( 'qsws_av' ) 
1022             WRITE ( 14 )  qsws_av
1023          ENDIF
1024
1025       ENDIF
1026
1027       IF ( passive_scalar )  THEN
1028
1029          CALL wrd_write_string( 's' ) 
1030          WRITE ( 14 )  s
1031
1032          IF ( ALLOCATED( s_av ) )  THEN
1033             CALL wrd_write_string( 's_av' ) 
1034             WRITE ( 14 )  s_av
1035          ENDIF
1036
1037          IF ( ALLOCATED( ssws_av ) )  THEN
1038             CALL wrd_write_string( 'ssws_av' ) 
1039             WRITE ( 14 )  ssws_av
1040          ENDIF
1041
1042       ENDIF
1043       
1044       IF ( ALLOCATED( ql_c_av ) )  THEN
1045          CALL wrd_write_string( 'ql_c_av' ) 
1046          WRITE ( 14 )  ql_c_av
1047       ENDIF
1048
1049       IF ( ALLOCATED( ql_v_av ) )  THEN
1050          CALL wrd_write_string( 'ql_v_av' ) 
1051          WRITE ( 14 )  ql_v_av
1052       ENDIF
1053
1054       IF ( ALLOCATED( ql_vp_av ) )  THEN
1055          CALL wrd_write_string( 'ql_vp_av' ) 
1056          WRITE ( 14 )  ql_vp_av
1057       ENDIF
1058
1059       IF ( ALLOCATED( qv_av ) )  THEN
1060          CALL wrd_write_string( 'qv_av' ) 
1061          WRITE ( 14 )  qv_av
1062       ENDIF
1063
1064       CALL wrd_write_string( 'random_iv' ) 
1065       WRITE ( 14 )  random_iv
1066       WRITE ( 14 )  random_iy
1067
1068       IF ( ALLOCATED( seq_random_array ) )  THEN
1069          CALL wrd_write_string( 'seq_random_array' ) 
1070          WRITE ( 14 )  id_random_array
1071          WRITE ( 14 )  seq_random_array
1072       ENDIF
1073
1074       IF ( ALLOCATED( s_av ) )  THEN
1075          CALL wrd_write_string( 's_av' ) 
1076          WRITE ( 14 )  s_av
1077       ENDIF
1078
1079       IF ( ALLOCATED( shf_av ) )  THEN
1080          CALL wrd_write_string( 'shf_av' ) 
1081          WRITE ( 14 )  shf_av
1082       ENDIF
1083
1084       IF ( ALLOCATED( ti_av ) )  THEN
1085          CALL wrd_write_string( 'ti_av' ) 
1086          WRITE ( 14 )  ti_av
1087       ENDIF
1088
1089       IF ( ALLOCATED( ts_av ) )  THEN
1090          CALL wrd_write_string( 'ts_av' ) 
1091          WRITE ( 14 ) ts_av
1092       ENDIF
1093
1094       CALL wrd_write_string( 'u' ) 
1095       WRITE ( 14 )  u
1096
1097       IF ( ALLOCATED( u_av ) )  THEN
1098          CALL wrd_write_string( 'u_av' ) 
1099          WRITE ( 14 )  u_av
1100       ENDIF
1101
1102       IF ( ALLOCATED( u_m_l ) )  THEN
1103          CALL wrd_write_string( 'u_m_l' ) 
1104          WRITE ( 14 )  u_m_l
1105       ENDIF
1106
1107       IF ( ALLOCATED( u_m_n ) )  THEN
1108          CALL wrd_write_string( 'u_m_n' ) 
1109          WRITE ( 14 )  u_m_n
1110       ENDIF
1111
1112       IF ( ALLOCATED( u_m_r ) )  THEN
1113          CALL wrd_write_string( 'u_m_r' ) 
1114          WRITE ( 14 )  u_m_r
1115       ENDIF
1116
1117       IF ( ALLOCATED( u_m_s ) )  THEN
1118          CALL wrd_write_string( 'u_m_s' ) 
1119          WRITE ( 14 )  u_m_s
1120       ENDIF
1121
1122       IF ( ALLOCATED( us_av ) )  THEN
1123          CALL wrd_write_string( 'us_av' ) 
1124          WRITE ( 14 )  us_av
1125       ENDIF
1126
1127       CALL wrd_write_string( 'v' ) 
1128       WRITE ( 14 )  v
1129
1130       IF ( ALLOCATED( v_av ) )  THEN
1131          CALL wrd_write_string( 'v_av' ) 
1132          WRITE ( 14 )  v_av
1133       ENDIF
1134
1135       IF ( ALLOCATED( v_m_l  ) )  THEN
1136          CALL wrd_write_string( 'v_m_l' ) 
1137          WRITE ( 14 )  v_m_l
1138       ENDIF
1139
1140       IF ( ALLOCATED( v_m_n ) )  THEN
1141          CALL wrd_write_string( 'v_m_n' ) 
1142          WRITE ( 14 )  v_m_n
1143       ENDIF
1144
1145       IF ( ALLOCATED( v_m_r ) )  THEN
1146          CALL wrd_write_string( 'v_m_r' ) 
1147          WRITE ( 14 )  v_m_r
1148       ENDIF
1149
1150       IF ( ALLOCATED( v_m_s ) )  THEN
1151          CALL wrd_write_string( 'v_m_s' ) 
1152          WRITE ( 14 )  v_m_s
1153       ENDIF
1154
1155       IF ( humidity )  THEN
1156
1157          CALL wrd_write_string( 'vpt' ) 
1158          WRITE ( 14 )  vpt
1159
1160          IF ( ALLOCATED( vpt_av ) )  THEN
1161             CALL wrd_write_string( 'vpt_av' ) 
1162             WRITE ( 14 ) vpt_av
1163          ENDIF
1164
1165       ENDIF
1166
1167       CALL wrd_write_string( 'w' ) 
1168       WRITE ( 14 )  w
1169
1170       IF ( ALLOCATED( w_av ) )  THEN
1171          CALL wrd_write_string( 'w_av' ) 
1172          WRITE ( 14 )  w_av
1173       ENDIF
1174
1175       IF ( ALLOCATED( w_m_l ) )  THEN
1176          CALL wrd_write_string( 'w_m_l' ) 
1177          WRITE ( 14 )  w_m_l
1178       ENDIF
1179
1180       IF ( ALLOCATED( w_m_n ) )  THEN
1181          CALL wrd_write_string( 'w_m_n' ) 
1182          WRITE ( 14 )  w_m_n
1183       ENDIF
1184
1185       IF ( ALLOCATED( w_m_r ) )  THEN
1186          CALL wrd_write_string( 'w_m_r' ) 
1187          WRITE ( 14 )  w_m_r
1188       ENDIF
1189
1190       IF ( ALLOCATED( w_m_s ) )  THEN
1191          CALL wrd_write_string( 'w_m_s' ) 
1192          WRITE ( 14 )  w_m_s
1193       ENDIF
1194
1195       IF ( ALLOCATED( z0_av ) )  THEN
1196          CALL wrd_write_string( 'z0_av' ) 
1197          WRITE ( 14 )  z0_av
1198       ENDIF
1199
1200       IF ( ALLOCATED( z0h_av ) )  THEN
1201          CALL wrd_write_string( 'z0h_av' ) 
1202          WRITE ( 14 )  z0h_av
1203       ENDIF
1204
1205       IF ( ALLOCATED( z0q_av ) )  THEN
1206          CALL wrd_write_string( 'z0q_av' ) 
1207          WRITE ( 14 )  z0q_av
1208       ENDIF
1209
1210       IF ( land_surface  .OR.  urban_surface )  THEN
1211
1212          IF ( ALLOCATED( ghf_av ) )  THEN
1213             CALL wrd_write_string( 'ghf_av' ) 
1214             WRITE ( 14 )  ghf_av
1215          ENDIF
1216
1217          IF ( ALLOCATED( r_a_av ) )  THEN
1218             CALL wrd_write_string( 'r_a_av' ) 
1219             WRITE ( 14 )  r_a_av
1220          ENDIF
1221
1222       ENDIF
1223
1224       IF ( ALLOCATED( tsurf_av ) )  THEN
1225          CALL wrd_write_string( 'tsurf_av' ) 
1226          WRITE ( 14 )  tsurf_av
1227       ENDIF
1228
1229
1230       CALL surface_wrd_local
1231
1232!
1233!--    Write restart data of other modules
1234       CALL module_interface_wrd_local
1235
1236!
1237!--    Write end label
1238       CALL wrd_write_string( '*** end ***' )
1239
1240    END SUBROUTINE wrd_local
1241
1242
1243 END MODULE write_restart_data_mod
Note: See TracBrowser for help on using the repository browser.