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

Last change on this file since 4492 was 4489, checked in by raasch, 5 years ago

files re-formatted to follow the PALM coding standard

  • Property svn:keywords set to Id
File size: 31.0 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 terms of the GNU General
6! Public License as published by the Free Software Foundation, either version 3 of the License, or
7! (at your option) any later version.
8!
9! PALM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
10! implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
11! Public License for more details.
12!
13! You should have received a copy of the GNU General Public License along with PALM. If not, see
14! <http://www.gnu.org/licenses/>.
15!
16! Copyright 1997-2020 Leibniz Universitaet Hannover
17!--------------------------------------------------------------------------------------------------!
18!
19! Current revisions:
20! -----------------
21!
22!
23! Former revisions:
24! -----------------
25! $Id: write_restart_data_mod.f90 4489 2020-04-04 10:54:08Z pavelkrc $
26! file re-formatted to follow the PALM coding standard
27!
28! 4360 2020-01-07 11:25:50Z suehring
29! - Move 2-m potential temperature to diagnostic_output_quantities.
30!
31! 4301 2019-11-22 12:09:09Z oliver.maas
32! removed recycling_yshift
33!
34! 4227 2019-09-10 18:04:34Z gronemeier
35! implement new palm_date_time_mod and increased binary version
36!
37! 4146 2019-08-07 07:47:36Z gronemeier
38! Corrected "Former revisions" section
39!
40! 4101 2019-07-17 15:14:26Z gronemeier
41! remove old_dt
42!
43! 4039 2019-06-18 10:32:41Z suehring
44! Modularize diagnostic output
45!
46! 4017 2019-06-06 12:16:46Z schwenkel
47! output of turbulence intensity added
48!
49! 3988 2019-05-22 11:32:37Z kanani
50! + time_virtual_measurement (to enable steering of output interval)
51!
52! 3936 2019-04-26 15:38:02Z kanani
53! Enable time-averaged output of theta_2m* with restarts
54!
55! 3668 2019-01-14 12:49:24Z maronga
56! Implementation of the PALM module interface
57!
58! 2894 2018-03-15 09:17:58Z Giersch
59! Initial revision
60!
61!
62! Description:
63! ------------
64!> Writes restart data into binary file(s) for restart runs.
65!--------------------------------------------------------------------------------------------------!
66 MODULE write_restart_data_mod
67
68
69    USE arrays_3d,                                                                                 &
70        ONLY:  e, inflow_damping_factor, kh, km, mean_inflow_profiles, p, pt, pt_init, q, q_init,  &
71               ql, ref_state, s, s_init, u, u_init, ug, u_m_l, u_m_n, u_m_r, u_m_s, v, v_init, vg, &
72               v_m_l, v_m_n, v_m_r, v_m_s, vpt, w, w_m_l, w_m_n, 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:  hom, hom_sum, statistic_regions, u_max, u_max_ijk, v_max, v_max_ijk, w_max,         &
113        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 restarts (binary format).
146!> This information is only written to the file opened by PE0.
147!--------------------------------------------------------------------------------------------------!
148
149
150 SUBROUTINE wrd_global
151
152
153    CHARACTER(LEN=10)  ::  binary_version_global   !<
154
155
156    binary_version_global = '4.9'
157
158    CALL wrd_write_string( 'binary_version_global' )
159    WRITE ( 14 )  binary_version_global
160
161    CALL wrd_write_string( 'numprocs' )
162    WRITE ( 14 )  numprocs
163
164    CALL wrd_write_string( 'hor_index_bounds' )
165    WRITE ( 14 )  hor_index_bounds
166
167    CALL wrd_write_string( 'nz' )
168    WRITE ( 14 )  nz
169
170    CALL wrd_write_string( 'max_pr_user' )
171    WRITE ( 14 )  max_pr_user
172
173    CALL wrd_write_string( 'statistic_regions' )
174    WRITE ( 14 )  statistic_regions
175
176!
177!-- Caution: After changes in the following parameter-list, the version number stored in the
178!-- -------- variable binary_version_global has to be increased. The same changes must also be done
179!--          in the parameter-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 restarts (binary format).
864!> This information is written to the file opened by each PE.
865!--------------------------------------------------------------------------------------------------!
866
867
868 SUBROUTINE wrd_local
869
870
871    CHARACTER(LEN=10) ::  binary_version_local   !<
872
873!
874!-- Write arrays.
875    binary_version_local = '4.7'
876
877    CALL wrd_write_string( 'binary_version_local' )
878    WRITE ( 14 )  binary_version_local
879
880    WRITE ( 14 )  numprocs, myid, nxl, nxr, nys, nyn, nzb, nzt
881
882!
883!-- Attention: After changes to the following output commands the version number of the variable
884!-- ---------- binary_version_local must be changed!
885!--            Also, the list of arrays to be read in rrd_local must be 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.