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

Last change on this file since 4365 was 4360, checked in by suehring, 5 years ago

Bugfix in output of time-averaged plant-canopy quanities; Output of plant-canopy data only where tall canopy is defined; land-surface model: fix wrong location strings; tests: update urban test case; all source code files: copyright update

  • Property svn:keywords set to Id
File size: 32.9 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-2020 Leibniz Universitaet Hannover
18!------------------------------------------------------------------------------!
19!
20! Current revisions:
21! -----------------
22!
23!
24! Former revisions:
25! -----------------
26! $Id: write_restart_data_mod.f90 4360 2020-01-07 11:25:50Z oliver.maas $
27! - Move 2-m potential temperature to diagnostic_output_quantities.
28!
29! 4301 2019-11-22 12:09:09Z oliver.maas
30! removed recycling_yshift
31!
32! 4227 2019-09-10 18:04:34Z gronemeier
33! implement new palm_date_time_mod and increased binary version
34!
35! 4146 2019-08-07 07:47:36Z gronemeier
36! Corrected "Former revisions" section
37!
38! 4101 2019-07-17 15:14:26Z gronemeier
39! remove old_dt
40!
41! 4039 2019-06-18 10:32:41Z suehring
42! Modularize diagnostic output
43!
44! 4017 2019-06-06 12:16:46Z schwenkel
45! output of turbulence intensity added
46!
47! 3988 2019-05-22 11:32:37Z kanani
48! + time_virtual_measurement (to enable steering of output interval)
49!
50! 3936 2019-04-26 15:38:02Z kanani
51! Enable time-averaged output of theta_2m* with restarts
52!
53! 3668 2019-01-14 12:49:24Z maronga
54! Implementation of the PALM module interface
55!
56! 2894 2018-03-15 09:17:58Z Giersch
57! Initial revision
58!
59!
60! Description:
61! ------------
62!> Writes restart data into binary file(s) for restart runs.
63!------------------------------------------------------------------------------!
64 MODULE write_restart_data_mod
65
66
67    USE arrays_3d,                                                          &
68        ONLY:  inflow_damping_factor, mean_inflow_profiles, pt_init,        &
69               q_init, ref_state, s_init, u_init, ug, v_init, vg,           &
70               e, kh, km, p, pt, q, ql, s, u, u_m_l, u_m_n, u_m_r,          &
71               u_m_s, v, v_m_l, v_m_n, v_m_r, v_m_s, vpt, w, w_m_l, w_m_n,  &
72               w_m_r, w_m_s
73
74    USE averaging
75
76    USE control_parameters
77
78    USE grid_variables,                                                        &
79        ONLY:  dx, dy
80
81    USE indices,                                                               &
82        ONLY:  nx, nxl, nxr, ny, nys, nyn, nz, nzb, nzt
83
84    USE kinds
85
86    USE model_1d_mod,                                                          &
87        ONLY:  damp_level_1d, dt_pr_1d, dt_run_control_1d, end_time_1d
88
89    USE module_interface,                                                      &
90        ONLY:  module_interface_wrd_global,                                    &
91               module_interface_wrd_local
92
93    USE netcdf_interface,                                                      &
94        ONLY:  netcdf_precision, output_for_t0
95
96    USE pegrid,                                                                &
97        ONLY:  collective_wait, hor_index_bounds, myid, numprocs
98
99    USE radiation_model_mod,                                                   &
100        ONLY:  time_radiation
101
102    USE random_function_mod,                                                   &
103        ONLY:  random_iv, random_iy
104
105    USE random_generator_parallel,                                             &
106        ONLY:  id_random_array, seq_random_array
107
108    USE spectra_mod,                                                           &
109        ONLY:  average_count_sp, spectrum_x, spectrum_y
110
111    USE statistics,                                                            &
112        ONLY:  statistic_regions, hom, hom_sum, u_max, u_max_ijk, v_max,       &
113               v_max_ijk, w_max, w_max_ijk, z_i
114
115    USE surface_mod,                                                           &
116        ONLY :  surface_wrd_local
117
118    USE vertical_nesting_mod,                                                  &
119        ONLY:  vnest_init
120
121    USE virtual_measurement_mod,                                               &
122        ONLY:  time_virtual_measurement
123
124
125    IMPLICIT NONE
126
127
128    INTERFACE wrd_global
129       MODULE PROCEDURE wrd_global
130    END INTERFACE wrd_global
131
132    INTERFACE wrd_local
133       MODULE PROCEDURE wrd_local
134    END INTERFACE wrd_local
135
136
137    PUBLIC wrd_local, wrd_global
138
139
140 CONTAINS
141
142
143! Description:
144! ------------
145!> Global data of control variables and arrays is written out for
146!> restarts (binary format).
147!> This information is only written to the file opened by PE0.
148!------------------------------------------------------------------------------!
149    SUBROUTINE wrd_global
150
151
152       CHARACTER (LEN=10)  ::  binary_version_global   !<
153
154
155       binary_version_global = '4.9'
156
157       CALL wrd_write_string( 'binary_version_global' )
158       WRITE ( 14 )  binary_version_global
159
160       CALL wrd_write_string( 'numprocs' )
161       WRITE ( 14 )  numprocs
162
163       CALL wrd_write_string( 'hor_index_bounds' ) 
164       WRITE ( 14 )  hor_index_bounds
165
166       CALL wrd_write_string( 'nz' ) 
167       WRITE ( 14 )  nz
168
169       CALL wrd_write_string( 'max_pr_user' ) 
170       WRITE ( 14 )  max_pr_user
171
172       CALL wrd_write_string( 'statistic_regions' ) 
173       WRITE ( 14 )  statistic_regions
174
175!
176!-- Caution: After changes in the following parameter-list, the
177!-- -------  version number stored in the variable binary_version_global has to
178!--          be increased. The same changes must also be done in the parameter-
179!--          list in rrd_global.
180
181       CALL wrd_write_string( 'advected_distance_x' ) 
182       WRITE ( 14 )  advected_distance_x
183
184       CALL wrd_write_string( 'advected_distance_y' ) 
185       WRITE ( 14 )  advected_distance_y
186
187       CALL wrd_write_string( 'alpha_surface' ) 
188       WRITE ( 14 )  alpha_surface 
189
190       CALL wrd_write_string( 'average_count_pr' ) 
191       WRITE ( 14 )  average_count_pr
192
193       CALL wrd_write_string( 'average_count_sp' ) 
194       WRITE ( 14 )  average_count_sp
195
196       CALL wrd_write_string( 'average_count_3d' ) 
197       WRITE ( 14 )  average_count_3d
198
199       CALL wrd_write_string( 'bc_e_b' ) 
200       WRITE ( 14 )  bc_e_b
201
202       CALL wrd_write_string( 'bc_lr' ) 
203       WRITE ( 14 )  bc_lr
204
205       CALL wrd_write_string( 'bc_ns' ) 
206       WRITE ( 14 )  bc_ns
207
208       CALL wrd_write_string( 'bc_p_b' ) 
209       WRITE ( 14 )  bc_p_b
210
211       CALL wrd_write_string( 'bc_p_t' ) 
212       WRITE ( 14 )  bc_p_t
213
214       CALL wrd_write_string( 'bc_pt_b' ) 
215       WRITE ( 14 )  bc_pt_b
216
217       CALL wrd_write_string( 'bc_pt_t' ) 
218       WRITE ( 14 )  bc_pt_t
219
220       CALL wrd_write_string( 'bc_pt_t_val' ) 
221       WRITE ( 14 )  bc_pt_t_val
222
223       CALL wrd_write_string( 'bc_q_b' ) 
224       WRITE ( 14 )  bc_q_b
225
226       CALL wrd_write_string( 'bc_q_t' ) 
227       WRITE ( 14 )  bc_q_t
228
229       CALL wrd_write_string( 'bc_q_t_val' ) 
230       WRITE ( 14 )  bc_q_t_val
231
232       CALL wrd_write_string( 'bc_s_b' ) 
233       WRITE ( 14 )  bc_s_b
234
235       CALL wrd_write_string( 'bc_s_t' ) 
236       WRITE ( 14 )  bc_s_t
237
238       CALL wrd_write_string( 'bc_uv_b' ) 
239       WRITE ( 14 )  bc_uv_b
240
241       CALL wrd_write_string( 'bc_uv_t' ) 
242       WRITE ( 14 )  bc_uv_t
243
244       CALL wrd_write_string( 'building_height' ) 
245       WRITE ( 14 )  building_height
246
247       CALL wrd_write_string( 'building_length_x' ) 
248       WRITE ( 14 )  building_length_x
249
250       CALL wrd_write_string( 'building_length_y' ) 
251       WRITE ( 14 )  building_length_y
252
253       CALL wrd_write_string( 'building_wall_left' ) 
254       WRITE ( 14 )  building_wall_left
255
256       CALL wrd_write_string( 'building_wall_south' ) 
257       WRITE ( 14 )  building_wall_south
258
259       CALL wrd_write_string( 'call_psolver_at_all_substeps' ) 
260       WRITE ( 14 )  call_psolver_at_all_substeps
261
262       CALL wrd_write_string( 'canyon_height' ) 
263       WRITE ( 14 )  canyon_height 
264
265       CALL wrd_write_string( 'canyon_wall_left' ) 
266       WRITE ( 14 )  canyon_wall_left
267
268       CALL wrd_write_string( 'canyon_wall_south' ) 
269       WRITE ( 14 )  canyon_wall_south
270
271       CALL wrd_write_string( 'canyon_width_x' ) 
272       WRITE ( 14 )  canyon_width_x
273
274       CALL wrd_write_string( 'canyon_width_y' ) 
275       WRITE ( 14 )  canyon_width_y
276
277       CALL wrd_write_string( 'cfl_factor' ) 
278       WRITE ( 14 )  cfl_factor
279
280       CALL wrd_write_string( 'cloud_droplets' ) 
281       WRITE ( 14 )  cloud_droplets
282
283       CALL wrd_write_string( 'collective_wait' ) 
284       WRITE ( 14 )  collective_wait
285
286       CALL wrd_write_string( 'conserve_volume_flow' ) 
287       WRITE ( 14 )  conserve_volume_flow
288
289       CALL wrd_write_string( 'conserve_volume_flow_mode' ) 
290       WRITE ( 14 )  conserve_volume_flow_mode
291
292       CALL wrd_write_string( 'constant_flux_layer' ) 
293       WRITE ( 14 )  constant_flux_layer
294
295       CALL wrd_write_string( 'coupling_start_time' ) 
296       WRITE ( 14 )  coupling_start_time
297
298       CALL wrd_write_string( 'current_timestep_number' ) 
299       WRITE ( 14 )  current_timestep_number
300
301       CALL wrd_write_string( 'cycle_mg' ) 
302       WRITE ( 14 )  cycle_mg
303
304       CALL wrd_write_string( 'damp_level_1d' ) 
305       WRITE ( 14 )  damp_level_1d
306
307       CALL wrd_write_string( 'origin_date_time' ) 
308       WRITE ( 14 )  origin_date_time
309
310       CALL wrd_write_string( 'dissipation_1d' ) 
311       WRITE ( 14 )  dissipation_1d
312
313       CALL wrd_write_string( 'do2d_xy_time_count' ) 
314       WRITE ( 14 )  do2d_xy_time_count
315
316       CALL wrd_write_string( 'do2d_xz_time_count' ) 
317       WRITE ( 14 )  do2d_xz_time_count
318
319       CALL wrd_write_string( 'do2d_yz_time_count' ) 
320       WRITE ( 14 )  do2d_yz_time_count
321
322       CALL wrd_write_string( 'do3d_time_count' ) 
323       WRITE ( 14 )  do3d_time_count
324
325       CALL wrd_write_string( 'dp_external' ) 
326       WRITE ( 14 )  dp_external
327
328       CALL wrd_write_string( 'dp_level_b' ) 
329       WRITE ( 14 )  dp_level_b
330
331       CALL wrd_write_string( 'dp_smooth' ) 
332       WRITE ( 14 )  dp_smooth
333
334       CALL wrd_write_string( 'dpdxy' ) 
335       WRITE ( 14 )  dpdxy
336
337       CALL wrd_write_string( 'dt_3d' ) 
338       WRITE ( 14 )  dt_3d
339
340       CALL wrd_write_string( 'dt_pr_1d' ) 
341       WRITE ( 14 )  dt_pr_1d
342
343       CALL wrd_write_string( 'dt_run_control_1d' ) 
344       WRITE ( 14 )  dt_run_control_1d
345
346       CALL wrd_write_string( 'dx' ) 
347       WRITE ( 14 )  dx
348
349       CALL wrd_write_string( 'dy' ) 
350       WRITE ( 14 )  dy
351
352       CALL wrd_write_string( 'dz' ) 
353       WRITE ( 14 )  dz
354       
355       CALL wrd_write_string( 'dz_max' ) 
356       WRITE ( 14 )  dz_max
357
358       CALL wrd_write_string( 'dz_stretch_factor' ) 
359       WRITE ( 14 )  dz_stretch_factor
360       
361       CALL wrd_write_string( 'dz_stretch_factor_array' ) 
362       WRITE ( 14 )  dz_stretch_factor_array
363       
364       CALL wrd_write_string( 'dz_stretch_level' ) 
365       WRITE ( 14 )  dz_stretch_level
366
367       CALL wrd_write_string( 'dz_stretch_level_end' ) 
368       WRITE ( 14 )  dz_stretch_level_end
369       
370       CALL wrd_write_string( 'dz_stretch_level_start' ) 
371       WRITE ( 14 )  dz_stretch_level_start
372       
373       CALL wrd_write_string( 'e_min' ) 
374       WRITE ( 14 )  e_min
375
376       CALL wrd_write_string( 'end_time_1d' ) 
377       WRITE ( 14 )  end_time_1d
378
379       CALL wrd_write_string( 'fft_method' ) 
380       WRITE ( 14 )  fft_method
381
382       CALL wrd_write_string( 'first_call_lpm' ) 
383       WRITE ( 14 )  first_call_lpm
384
385       CALL wrd_write_string( 'galilei_transformation' ) 
386       WRITE ( 14 )  galilei_transformation
387
388       CALL wrd_write_string( 'hom' ) 
389       WRITE ( 14 )  hom
390
391       CALL wrd_write_string( 'hom_sum' ) 
392       WRITE ( 14 )  hom_sum
393
394       CALL wrd_write_string( 'humidity' ) 
395       WRITE ( 14 )  humidity
396
397       IF ( ALLOCATED( inflow_damping_factor ) )  THEN
398          CALL wrd_write_string( 'inflow_damping_factor' ) 
399          WRITE ( 14 )  inflow_damping_factor
400       ENDIF
401
402       CALL wrd_write_string( 'inflow_damping_height' ) 
403       WRITE ( 14 )  inflow_damping_height
404
405       CALL wrd_write_string( 'inflow_damping_width' ) 
406       WRITE ( 14 )  inflow_damping_width
407
408       CALL wrd_write_string( 'inflow_disturbance_begin' ) 
409       WRITE ( 14 )  inflow_disturbance_begin
410
411       CALL wrd_write_string( 'inflow_disturbance_end' ) 
412       WRITE ( 14 )  inflow_disturbance_end
413
414       CALL wrd_write_string( 'km_constant' ) 
415       WRITE ( 14 )  km_constant
416
417       CALL wrd_write_string( 'large_scale_forcing' ) 
418       WRITE ( 14 )  large_scale_forcing
419
420       CALL wrd_write_string( 'large_scale_subsidence' ) 
421       WRITE ( 14 )  large_scale_subsidence
422
423       CALL wrd_write_string( 'latitude' ) 
424       WRITE ( 14 )  latitude
425
426       CALL wrd_write_string( 'longitude' )
427       WRITE ( 14 )  longitude 
428
429       CALL wrd_write_string( 'loop_optimization' ) 
430       WRITE ( 14 )  loop_optimization
431
432       CALL wrd_write_string( 'masking_method' ) 
433       WRITE ( 14 )  masking_method
434
435       IF ( ALLOCATED( mean_inflow_profiles ) )  THEN
436          CALL wrd_write_string( 'mean_inflow_profiles' ) 
437          WRITE ( 14 )  mean_inflow_profiles
438       ENDIF
439
440       CALL wrd_write_string( 'mg_cycles' ) 
441       WRITE ( 14 )  mg_cycles
442
443       CALL wrd_write_string( 'mg_switch_to_pe0_level' ) 
444       WRITE ( 14 )  mg_switch_to_pe0_level
445
446       CALL wrd_write_string( 'mixing_length_1d' ) 
447       WRITE ( 14 )  mixing_length_1d
448
449       CALL wrd_write_string( 'momentum_advec' ) 
450       WRITE ( 14 )  momentum_advec
451
452       CALL wrd_write_string( 'netcdf_precision' ) 
453       WRITE ( 14 )  netcdf_precision
454
455       CALL wrd_write_string( 'neutral' ) 
456       WRITE ( 14 )  neutral
457
458       CALL wrd_write_string( 'ngsrb' ) 
459       WRITE ( 14 )  ngsrb
460
461       CALL wrd_write_string( 'nsor' ) 
462       WRITE ( 14 )  nsor
463
464       CALL wrd_write_string( 'nsor_ini' ) 
465       WRITE ( 14 )  nsor_ini
466
467       CALL wrd_write_string( 'nudging' ) 
468       WRITE ( 14 )  nudging
469
470       CALL wrd_write_string( 'num_leg' ) 
471       WRITE ( 14 )  num_leg
472
473       CALL wrd_write_string( 'nx' ) 
474       WRITE ( 14 )  nx
475
476       CALL wrd_write_string( 'ny' ) 
477       WRITE ( 14 )  ny
478
479       CALL wrd_write_string( 'ocean_mode' ) 
480       WRITE ( 14 )  ocean_mode
481
482       CALL wrd_write_string( 'omega' ) 
483       WRITE ( 14 )  omega
484
485       CALL wrd_write_string( 'omega_sor' ) 
486       WRITE ( 14 )  omega_sor
487
488       CALL wrd_write_string( 'output_for_t0' ) 
489       WRITE ( 14 )  output_for_t0
490
491       CALL wrd_write_string( 'passive_scalar' ) 
492       WRITE ( 14 )  passive_scalar
493
494       CALL wrd_write_string( 'prandtl_number' ) 
495       WRITE ( 14 )  prandtl_number
496
497       CALL wrd_write_string( 'psolver' )
498       WRITE ( 14 )  psolver 
499
500       CALL wrd_write_string( 'pt_damping_factor' ) 
501       WRITE ( 14 )  pt_damping_factor
502
503       CALL wrd_write_string( 'pt_damping_width' ) 
504       WRITE ( 14 )  pt_damping_width
505
506       CALL wrd_write_string( 'pt_init' ) 
507       WRITE ( 14 )  pt_init
508
509       CALL wrd_write_string( 'pt_reference' ) 
510       WRITE ( 14 )  pt_reference
511
512       CALL wrd_write_string( 'pt_surface' ) 
513       WRITE ( 14 )  pt_surface
514
515       CALL wrd_write_string( 'pt_surface_initial_change' ) 
516       WRITE ( 14 )  pt_surface_initial_change
517
518       CALL wrd_write_string( 'pt_vertical_gradient' ) 
519       WRITE ( 14 )  pt_vertical_gradient
520
521       CALL wrd_write_string( 'pt_vertical_gradient_level' ) 
522       WRITE ( 14 )  pt_vertical_gradient_level
523
524       CALL wrd_write_string( 'pt_vertical_gradient_level_ind' ) 
525       WRITE ( 14 )  pt_vertical_gradient_level_ind
526
527       CALL wrd_write_string( 'q_init' ) 
528       WRITE ( 14 )  q_init
529
530       CALL wrd_write_string( 'q_surface' ) 
531       WRITE ( 14 )  q_surface
532
533       CALL wrd_write_string( 'q_surface_initial_change' ) 
534       WRITE ( 14 )  q_surface_initial_change
535
536       CALL wrd_write_string( 'q_vertical_gradient' ) 
537       WRITE ( 14 )  q_vertical_gradient
538
539       CALL wrd_write_string( 'q_vertical_gradient_level' ) 
540       WRITE ( 14 )  q_vertical_gradient_level
541
542       CALL wrd_write_string( 'q_vertical_gradient_level_ind' ) 
543       WRITE ( 14 )  q_vertical_gradient_level_ind
544
545       CALL wrd_write_string( 'random_generator' ) 
546       WRITE ( 14 )  random_generator
547
548       CALL wrd_write_string( 'random_heatflux' ) 
549       WRITE ( 14 )  random_heatflux
550
551       CALL wrd_write_string( 'rans_mode' ) 
552       WRITE ( 14 )  rans_mode
553
554       CALL wrd_write_string( 'rayleigh_damping_factor' ) 
555       WRITE ( 14 )  rayleigh_damping_factor
556
557       CALL wrd_write_string( 'rayleigh_damping_height' ) 
558       WRITE ( 14 )  rayleigh_damping_height
559
560       CALL wrd_write_string( 'recycling_width' ) 
561       WRITE ( 14 )  recycling_width
562
563       CALL wrd_write_string( 'ref_state' ) 
564       WRITE ( 14 )  ref_state
565
566       CALL wrd_write_string( 'reference_state' ) 
567       WRITE ( 14 )  reference_state
568
569       CALL wrd_write_string( 'residual_limit' ) 
570       WRITE ( 14 )  residual_limit
571
572       CALL wrd_write_string( 'roughness_length' ) 
573       WRITE ( 14 )  roughness_length
574
575       CALL wrd_write_string( 'run_coupled' ) 
576       WRITE ( 14 )  run_coupled
577
578       CALL wrd_write_string( 'runnr' ) 
579       WRITE ( 14 )  runnr
580
581       CALL wrd_write_string( 's_init' ) 
582       WRITE ( 14 )  s_init
583
584       CALL wrd_write_string( 's_surface' ) 
585       WRITE ( 14 )  s_surface
586
587       CALL wrd_write_string( 's_surface_initial_change' ) 
588       WRITE ( 14 )  s_surface_initial_change
589
590       CALL wrd_write_string( 's_vertical_gradient' ) 
591       WRITE ( 14 )  s_vertical_gradient
592
593       CALL wrd_write_string( 's_vertical_gradient_level' ) 
594       WRITE ( 14 )  s_vertical_gradient_level
595
596       CALL wrd_write_string( 's_vertical_gradient_level_ind' ) 
597       WRITE ( 14 )  s_vertical_gradient_level_ind
598
599       CALL wrd_write_string( 'scalar_advec' ) 
600       WRITE ( 14 )  scalar_advec
601
602       CALL wrd_write_string( 'simulated_time' ) 
603       WRITE ( 14 )  simulated_time
604
605       IF ( ALLOCATED( spectrum_x ) )  THEN
606          CALL wrd_write_string( 'spectrum_x' ) 
607          WRITE ( 14 )  spectrum_x
608          CALL wrd_write_string( 'spectrum_y' ) 
609          WRITE ( 14 )  spectrum_y
610       ENDIF
611
612       CALL wrd_write_string( 'spinup_time ' ) 
613       WRITE ( 14 )  spinup_time 
614
615       CALL wrd_write_string( 'surface_heatflux' ) 
616       WRITE ( 14 )  surface_heatflux
617
618       CALL wrd_write_string( 'surface_pressure' ) 
619       WRITE ( 14 )  surface_pressure
620
621       CALL wrd_write_string( 'surface_scalarflux' ) 
622       WRITE ( 14 )  surface_scalarflux
623
624       CALL wrd_write_string( 'surface_waterflux' ) 
625       WRITE ( 14 )  surface_waterflux
626
627       CALL wrd_write_string( 'time_coupling' ) 
628       WRITE ( 14 )  time_coupling
629
630       CALL wrd_write_string( 'time_disturb' ) 
631       WRITE ( 14 )  time_disturb
632
633       CALL wrd_write_string( 'time_do2d_xy' ) 
634       WRITE ( 14 )  time_do2d_xy
635
636       CALL wrd_write_string( 'time_do2d_xz' ) 
637       WRITE ( 14 )  time_do2d_xz
638
639       CALL wrd_write_string( 'time_do2d_yz' ) 
640       WRITE ( 14 )  time_do2d_yz
641
642       CALL wrd_write_string( 'time_do3d' ) 
643       WRITE ( 14 )  time_do3d
644
645       CALL wrd_write_string( 'time_do_av' ) 
646       WRITE ( 14 )  time_do_av
647
648       CALL wrd_write_string( 'time_do_sla' ) 
649       WRITE ( 14 )  time_do_sla
650
651       CALL wrd_write_string( 'time_domask' ) 
652       WRITE ( 14 )  time_domask
653
654       CALL wrd_write_string( 'time_dopr' ) 
655       WRITE ( 14 )  time_dopr
656
657       CALL wrd_write_string( 'time_dopr_av' ) 
658       WRITE ( 14 )  time_dopr_av
659
660       CALL wrd_write_string( 'time_dopr_listing' ) 
661       WRITE ( 14 )  time_dopr_listing
662
663       CALL wrd_write_string( 'time_dopts' ) 
664       WRITE ( 14 )  time_dopts
665
666       CALL wrd_write_string( 'time_dosp' ) 
667       WRITE ( 14 )  time_dosp
668
669       CALL wrd_write_string( 'time_dots' ) 
670       WRITE ( 14 )  time_dots
671
672       CALL wrd_write_string( 'time_radiation' ) 
673       WRITE ( 14 )  time_radiation
674
675       CALL wrd_write_string( 'time_restart' ) 
676       WRITE ( 14 )  time_restart
677
678       CALL wrd_write_string( 'time_run_control' ) 
679       WRITE ( 14 )  time_run_control
680
681       CALL wrd_write_string( 'time_since_reference_point' ) 
682       WRITE ( 14 )  time_since_reference_point
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 ( humidity )  THEN
948
949          CALL wrd_write_string( 'q' ) 
950          WRITE ( 14 )  q
951
952          IF ( ALLOCATED( q_av ) )  THEN
953             CALL wrd_write_string( 'q_av' ) 
954             WRITE ( 14 )  q_av
955          ENDIF
956
957          IF ( cloud_droplets )  THEN
958
959             CALL wrd_write_string( 'ql' )
960             WRITE ( 14 )  ql
961
962             IF ( ALLOCATED( ql_av ) )  THEN
963                CALL wrd_write_string( 'ql_av' )
964                WRITE ( 14 )  ql_av
965             ENDIF
966
967          ENDIF
968
969          IF ( ALLOCATED( qsws_av ) )  THEN
970             CALL wrd_write_string( 'qsws_av' ) 
971             WRITE ( 14 )  qsws_av
972          ENDIF
973
974       ENDIF
975
976       IF ( passive_scalar )  THEN
977
978          CALL wrd_write_string( 's' ) 
979          WRITE ( 14 )  s
980
981          IF ( ALLOCATED( s_av ) )  THEN
982             CALL wrd_write_string( 's_av' ) 
983             WRITE ( 14 )  s_av
984          ENDIF
985
986          IF ( ALLOCATED( ssws_av ) )  THEN
987             CALL wrd_write_string( 'ssws_av' ) 
988             WRITE ( 14 )  ssws_av
989          ENDIF
990
991       ENDIF
992       
993       IF ( ALLOCATED( ql_c_av ) )  THEN
994          CALL wrd_write_string( 'ql_c_av' ) 
995          WRITE ( 14 )  ql_c_av
996       ENDIF
997
998       IF ( ALLOCATED( ql_v_av ) )  THEN
999          CALL wrd_write_string( 'ql_v_av' ) 
1000          WRITE ( 14 )  ql_v_av
1001       ENDIF
1002
1003       IF ( ALLOCATED( ql_vp_av ) )  THEN
1004          CALL wrd_write_string( 'ql_vp_av' ) 
1005          WRITE ( 14 )  ql_vp_av
1006       ENDIF
1007
1008       IF ( ALLOCATED( qv_av ) )  THEN
1009          CALL wrd_write_string( 'qv_av' ) 
1010          WRITE ( 14 )  qv_av
1011       ENDIF
1012
1013       CALL wrd_write_string( 'random_iv' ) 
1014       WRITE ( 14 )  random_iv
1015       WRITE ( 14 )  random_iy
1016
1017       IF ( ALLOCATED( seq_random_array ) )  THEN
1018          CALL wrd_write_string( 'seq_random_array' ) 
1019          WRITE ( 14 )  id_random_array
1020          WRITE ( 14 )  seq_random_array 
1021       ENDIF
1022
1023       IF ( ALLOCATED( s_av ) )  THEN
1024          CALL wrd_write_string( 's_av' ) 
1025          WRITE ( 14 )  s_av
1026       ENDIF
1027
1028       IF ( ALLOCATED( shf_av ) )  THEN
1029          CALL wrd_write_string( 'shf_av' ) 
1030          WRITE ( 14 )  shf_av
1031       ENDIF
1032
1033       IF ( ALLOCATED( ts_av ) )  THEN
1034          CALL wrd_write_string( 'ts_av' ) 
1035          WRITE ( 14 ) ts_av
1036       ENDIF
1037
1038       CALL wrd_write_string( 'u' ) 
1039       WRITE ( 14 )  u
1040
1041       IF ( ALLOCATED( u_av ) )  THEN
1042          CALL wrd_write_string( 'u_av' ) 
1043          WRITE ( 14 )  u_av
1044       ENDIF
1045
1046       IF ( ALLOCATED( u_m_l ) )  THEN
1047          CALL wrd_write_string( 'u_m_l' ) 
1048          WRITE ( 14 )  u_m_l
1049       ENDIF
1050
1051       IF ( ALLOCATED( u_m_n ) )  THEN
1052          CALL wrd_write_string( 'u_m_n' ) 
1053          WRITE ( 14 )  u_m_n
1054       ENDIF
1055
1056       IF ( ALLOCATED( u_m_r ) )  THEN
1057          CALL wrd_write_string( 'u_m_r' ) 
1058          WRITE ( 14 )  u_m_r
1059       ENDIF
1060
1061       IF ( ALLOCATED( u_m_s ) )  THEN
1062          CALL wrd_write_string( 'u_m_s' ) 
1063          WRITE ( 14 )  u_m_s
1064       ENDIF
1065
1066       IF ( ALLOCATED( us_av ) )  THEN
1067          CALL wrd_write_string( 'us_av' ) 
1068          WRITE ( 14 )  us_av
1069       ENDIF
1070
1071       CALL wrd_write_string( 'v' ) 
1072       WRITE ( 14 )  v
1073
1074       IF ( ALLOCATED( v_av ) )  THEN
1075          CALL wrd_write_string( 'v_av' ) 
1076          WRITE ( 14 )  v_av
1077       ENDIF
1078
1079       IF ( ALLOCATED( v_m_l  ) )  THEN
1080          CALL wrd_write_string( 'v_m_l' ) 
1081          WRITE ( 14 )  v_m_l
1082       ENDIF
1083
1084       IF ( ALLOCATED( v_m_n ) )  THEN
1085          CALL wrd_write_string( 'v_m_n' ) 
1086          WRITE ( 14 )  v_m_n
1087       ENDIF
1088
1089       IF ( ALLOCATED( v_m_r ) )  THEN
1090          CALL wrd_write_string( 'v_m_r' ) 
1091          WRITE ( 14 )  v_m_r
1092       ENDIF
1093
1094       IF ( ALLOCATED( v_m_s ) )  THEN
1095          CALL wrd_write_string( 'v_m_s' ) 
1096          WRITE ( 14 )  v_m_s
1097       ENDIF
1098
1099       IF ( humidity )  THEN
1100
1101          CALL wrd_write_string( 'vpt' ) 
1102          WRITE ( 14 )  vpt
1103
1104          IF ( ALLOCATED( vpt_av ) )  THEN
1105             CALL wrd_write_string( 'vpt_av' ) 
1106             WRITE ( 14 ) vpt_av
1107          ENDIF
1108
1109       ENDIF
1110
1111       CALL wrd_write_string( 'w' ) 
1112       WRITE ( 14 )  w
1113
1114       IF ( ALLOCATED( w_av ) )  THEN
1115          CALL wrd_write_string( 'w_av' ) 
1116          WRITE ( 14 )  w_av
1117       ENDIF
1118
1119       IF ( ALLOCATED( w_m_l ) )  THEN
1120          CALL wrd_write_string( 'w_m_l' ) 
1121          WRITE ( 14 )  w_m_l
1122       ENDIF
1123
1124       IF ( ALLOCATED( w_m_n ) )  THEN
1125          CALL wrd_write_string( 'w_m_n' ) 
1126          WRITE ( 14 )  w_m_n
1127       ENDIF
1128
1129       IF ( ALLOCATED( w_m_r ) )  THEN
1130          CALL wrd_write_string( 'w_m_r' ) 
1131          WRITE ( 14 )  w_m_r
1132       ENDIF
1133
1134       IF ( ALLOCATED( w_m_s ) )  THEN
1135          CALL wrd_write_string( 'w_m_s' ) 
1136          WRITE ( 14 )  w_m_s
1137       ENDIF
1138
1139       IF ( ALLOCATED( z0_av ) )  THEN
1140          CALL wrd_write_string( 'z0_av' ) 
1141          WRITE ( 14 )  z0_av
1142       ENDIF
1143
1144       IF ( ALLOCATED( z0h_av ) )  THEN
1145          CALL wrd_write_string( 'z0h_av' ) 
1146          WRITE ( 14 )  z0h_av
1147       ENDIF
1148
1149       IF ( ALLOCATED( z0q_av ) )  THEN
1150          CALL wrd_write_string( 'z0q_av' ) 
1151          WRITE ( 14 )  z0q_av
1152       ENDIF
1153
1154       IF ( land_surface  .OR.  urban_surface )  THEN
1155
1156          IF ( ALLOCATED( ghf_av ) )  THEN
1157             CALL wrd_write_string( 'ghf_av' ) 
1158             WRITE ( 14 )  ghf_av
1159          ENDIF
1160
1161          IF ( ALLOCATED( r_a_av ) )  THEN
1162             CALL wrd_write_string( 'r_a_av' ) 
1163             WRITE ( 14 )  r_a_av
1164          ENDIF
1165
1166       ENDIF
1167
1168       IF ( ALLOCATED( tsurf_av ) )  THEN
1169          CALL wrd_write_string( 'tsurf_av' ) 
1170          WRITE ( 14 )  tsurf_av
1171       ENDIF
1172
1173
1174       CALL surface_wrd_local
1175
1176!
1177!--    Write restart data of other modules
1178       CALL module_interface_wrd_local
1179
1180!
1181!--    Write end label
1182       CALL wrd_write_string( '*** end ***' )
1183
1184    END SUBROUTINE wrd_local
1185
1186
1187 END MODULE write_restart_data_mod
Note: See TracBrowser for help on using the repository browser.