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

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