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

Last change on this file since 4295 was 4227, checked in by gronemeier, 5 years ago

implement new palm_date_time_mod; replaced namelist parameters time_utc_init and day_of_year_init by origin_date_time

  • Property svn:keywords set to Id
File size: 33.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
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 4227 2019-09-10 18:04:34Z monakurppa $
27! implement new palm_date_time_mod and increased binary version
28!
29! 4146 2019-08-07 07:47:36Z gronemeier
30! Corrected "Former revisions" section
31!
32! 4101 2019-07-17 15:14:26Z gronemeier
33! remove old_dt
34!
35! 4039 2019-06-18 10:32:41Z suehring
36! Modularize diagnostic output
37!
38! 4017 2019-06-06 12:16:46Z schwenkel
39! output of turbulence intensity added
40!
41! 3988 2019-05-22 11:32:37Z kanani
42! + time_virtual_measurement (to enable steering of output interval)
43!
44! 3936 2019-04-26 15:38:02Z kanani
45! Enable time-averaged output of theta_2m* with restarts
46!
47! 3668 2019-01-14 12:49:24Z maronga
48! Implementation of the PALM module interface
49!
50! 2894 2018-03-15 09:17:58Z Giersch
51! Initial revision
52!
53!
54! Description:
55! ------------
56!> Writes restart data into binary file(s) for restart runs.
57!------------------------------------------------------------------------------!
58 MODULE write_restart_data_mod
59
60
61    USE arrays_3d,                                                          &
62        ONLY:  inflow_damping_factor, mean_inflow_profiles, pt_init,        &
63               q_init, ref_state, s_init, u_init, ug, v_init, vg,           &
64               e, kh, km, p, pt, q, ql, s, u, u_m_l, u_m_n, u_m_r,          &
65               u_m_s, v, v_m_l, v_m_n, v_m_r, v_m_s, vpt, w, w_m_l, w_m_n,  &
66               w_m_r, w_m_s
67
68    USE averaging
69
70    USE control_parameters
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.9'
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( 'origin_date_time' ) 
302       WRITE ( 14 )  origin_date_time
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_virtual_measurement' ) 
682       WRITE ( 14 )  time_virtual_measurement
683
684       CALL wrd_write_string( 'timestep_scheme' ) 
685       WRITE ( 14 )  timestep_scheme
686
687       CALL wrd_write_string( 'top_heatflux' ) 
688       WRITE ( 14 )  top_heatflux
689
690       CALL wrd_write_string( 'top_momentumflux_u' ) 
691       WRITE ( 14 )  top_momentumflux_u
692
693       CALL wrd_write_string( 'top_momentumflux_v' ) 
694       WRITE ( 14 )  top_momentumflux_v
695
696       CALL wrd_write_string( 'top_scalarflux' ) 
697       WRITE ( 14 )  top_scalarflux
698
699       CALL wrd_write_string( 'topography' ) 
700       WRITE ( 14 )  topography
701
702       CALL wrd_write_string( 'topography_grid_convention' ) 
703       WRITE ( 14 )  topography_grid_convention
704
705       CALL wrd_write_string( 'tsc' ) 
706       WRITE ( 14 )  tsc
707
708       CALL wrd_write_string( 'tunnel_height' ) 
709       WRITE ( 14 )  tunnel_height
710
711       CALL wrd_write_string( 'tunnel_length' ) 
712       WRITE ( 14 )  tunnel_length
713
714       CALL wrd_write_string( 'tunnel_wall_depth' ) 
715       WRITE ( 14 )  tunnel_wall_depth
716
717       CALL wrd_write_string( 'tunnel_width_x' ) 
718       WRITE ( 14 )  tunnel_width_x
719
720       CALL wrd_write_string( 'tunnel_width_y' ) 
721       WRITE ( 14 )  tunnel_width_y
722
723       CALL wrd_write_string( 'turbulence_closure' ) 
724       WRITE ( 14 )  turbulence_closure
725
726       CALL wrd_write_string( 'turbulent_inflow' ) 
727       WRITE ( 14 )  turbulent_inflow
728
729       CALL wrd_write_string( 'u_bulk' ) 
730       WRITE ( 14 )  u_bulk
731
732       CALL wrd_write_string( 'u_init' ) 
733       WRITE ( 14 )  u_init
734
735       CALL wrd_write_string( 'u_max' ) 
736       WRITE ( 14 )  u_max
737
738       CALL wrd_write_string( 'u_max_ijk' ) 
739       WRITE ( 14 )  u_max_ijk
740
741       CALL wrd_write_string( 'ug' ) 
742       WRITE ( 14 )  ug
743
744       CALL wrd_write_string( 'ug_surface' ) 
745       WRITE ( 14 )  ug_surface
746
747       CALL wrd_write_string( 'ug_vertical_gradient' ) 
748       WRITE ( 14 )  ug_vertical_gradient
749
750       CALL wrd_write_string( 'ug_vertical_gradient_level' ) 
751       WRITE ( 14 )  ug_vertical_gradient_level
752
753       CALL wrd_write_string( 'ug_vertical_gradient_level_ind' ) 
754       WRITE ( 14 )  ug_vertical_gradient_level_ind
755
756       CALL wrd_write_string( 'use_surface_fluxes' ) 
757       WRITE ( 14 )  use_surface_fluxes
758
759       CALL wrd_write_string( 'use_top_fluxes' ) 
760       WRITE ( 14 )  use_top_fluxes
761
762       CALL wrd_write_string( 'use_ug_for_galilei_tr' ) 
763       WRITE ( 14 )  use_ug_for_galilei_tr
764
765       CALL wrd_write_string( 'use_upstream_for_tke' ) 
766       WRITE ( 14 )  use_upstream_for_tke
767
768       CALL wrd_write_string( 'v_bulk' ) 
769       WRITE ( 14 )  v_bulk
770
771       CALL wrd_write_string( 'v_init' ) 
772       WRITE ( 14 )  v_init
773
774       CALL wrd_write_string( 'v_max' ) 
775       WRITE ( 14 )  v_max
776
777       CALL wrd_write_string( 'v_max_ijk' ) 
778       WRITE ( 14 )  v_max_ijk
779
780       CALL wrd_write_string( 'vg' ) 
781       WRITE ( 14 )  vg
782
783       CALL wrd_write_string( 'vg_surface' ) 
784       WRITE ( 14 )  vg_surface
785
786       CALL wrd_write_string( 'vg_vertical_gradient' ) 
787       WRITE ( 14 ) vg_vertical_gradient
788
789       CALL wrd_write_string( 'vg_vertical_gradient_level' ) 
790       WRITE ( 14 )  vg_vertical_gradient_level
791
792       CALL wrd_write_string( 'vg_vertical_gradient_level_ind' ) 
793       WRITE ( 14 )  vg_vertical_gradient_level_ind
794
795       CALL wrd_write_string( 'virtual_flight' ) 
796       WRITE ( 14 )  virtual_flight
797
798       CALL wrd_write_string( 'vnest_init' ) 
799       WRITE ( 14 )  vnest_init
800
801       CALL wrd_write_string( 'volume_flow_area' ) 
802       WRITE ( 14 )  volume_flow_area
803
804       CALL wrd_write_string( 'volume_flow_initial' ) 
805       WRITE ( 14 )  volume_flow_initial
806
807       CALL wrd_write_string( 'subs_vertical_gradient' ) 
808       WRITE ( 14 )  subs_vertical_gradient
809
810       CALL wrd_write_string( 'subs_vertical_gradient_level' ) 
811       WRITE ( 14 )  subs_vertical_gradient_level
812
813       CALL wrd_write_string( 'subs_vertical_gradient_level_i' ) 
814       WRITE ( 14 )  subs_vertical_gradient_level_i
815
816       CALL wrd_write_string( 'w_max' ) 
817       WRITE ( 14 )  w_max
818
819       CALL wrd_write_string( 'w_max_ijk' ) 
820       WRITE ( 14 )  w_max_ijk
821
822       CALL wrd_write_string( 'wall_adjustment' ) 
823       WRITE ( 14 )  wall_adjustment
824
825       CALL wrd_write_string( 'wall_heatflux' ) 
826       WRITE ( 14 )  wall_heatflux
827
828       CALL wrd_write_string( 'wall_humidityflux' ) 
829       WRITE ( 14 )  wall_humidityflux
830
831       CALL wrd_write_string( 'wall_scalarflux' ) 
832       WRITE ( 14 )  wall_scalarflux
833
834       CALL wrd_write_string( 'y_shift' ) 
835       WRITE ( 14 )  y_shift
836
837       CALL wrd_write_string( 'z0h_factor' ) 
838       WRITE ( 14 )  z0h_factor
839
840       CALL wrd_write_string( 'zeta_max' ) 
841       WRITE ( 14 )  zeta_max
842
843       CALL wrd_write_string( 'zeta_min' ) 
844       WRITE ( 14 )  zeta_min
845
846       CALL wrd_write_string( 'z_i' ) 
847       WRITE ( 14 )  z_i
848
849!
850!--    Write restart data of the other modules
851       CALL module_interface_wrd_global
852
853
854    END SUBROUTINE wrd_global
855
856
857!------------------------------------------------------------------------------!
858! Description:
859! ------------
860!> Processor specific data of variables and arrays is written out for
861!> restarts (binary format).
862!> This information is written to the file opened by each PE.
863!------------------------------------------------------------------------------!
864    SUBROUTINE wrd_local
865
866
867       CHARACTER (LEN=10) ::  binary_version_local   !<
868
869!
870!-- Write arrays.
871       binary_version_local = '4.7'
872
873       CALL wrd_write_string( 'binary_version_local' )
874       WRITE ( 14 )  binary_version_local
875
876       WRITE ( 14 )  numprocs, myid, nxl, nxr, nys, nyn, nzb, nzt
877
878!
879!-- Attention: After changes to the following output commands the version number
880!-- ---------  of the variable binary_version_local must be changed!
881!--            Also, the list of arrays to be read in rrd_local must be
882!--            adjusted accordingly.
883       CALL wrd_write_string( 'e' ) 
884       WRITE ( 14 )  e
885
886       IF ( ALLOCATED( e_av ) )  THEN
887          CALL wrd_write_string( 'e_av' ) 
888          WRITE ( 14 )  e_av
889       ENDIF
890
891       CALL wrd_write_string( 'kh' ) 
892       WRITE ( 14 )  kh
893 
894
895       IF ( ALLOCATED( kh_av ) )  THEN
896          CALL wrd_write_string( 'kh_av' ) 
897          WRITE ( 14 )  kh_av
898       ENDIF
899
900       CALL wrd_write_string( 'km' ) 
901       WRITE ( 14 )  km
902
903       IF ( ALLOCATED( km_av ) )  THEN
904          CALL wrd_write_string( 'km_av' ) 
905          WRITE ( 14 )  km_av
906       ENDIF
907
908       IF ( ALLOCATED( lpt_av ) )  THEN
909          CALL wrd_write_string( 'lpt_av' ) 
910          WRITE ( 14 )  lpt_av
911       ENDIF
912
913       IF ( ALLOCATED( lwp_av ) )  THEN
914          CALL wrd_write_string( 'lwp_av' ) 
915          WRITE ( 14 )  lwp_av
916       ENDIF
917
918       CALL wrd_write_string( 'p' ) 
919       WRITE ( 14 )  p
920
921       IF ( ALLOCATED( p_av ) )  THEN
922          CALL wrd_write_string( 'p_av' ) 
923          WRITE ( 14 )  p_av
924       ENDIF
925
926       IF ( ALLOCATED( pc_av ) )  THEN
927          CALL wrd_write_string( 'pc_av' ) 
928          WRITE ( 14 )  pc_av
929       ENDIF
930
931       IF ( ALLOCATED( pr_av ) )  THEN
932          CALL wrd_write_string( 'pr_av' ) 
933          WRITE ( 14 )  pr_av
934       ENDIF
935
936       CALL wrd_write_string( 'pt' ) 
937       WRITE ( 14 )  pt
938
939       IF ( ALLOCATED( pt_av ) )  THEN
940          CALL wrd_write_string( 'pt_av' ) 
941          WRITE ( 14 )  pt_av
942       ENDIF
943
944       IF ( ALLOCATED( pt_2m_av ) )  THEN
945          CALL wrd_write_string( 'pt_2m_av' ) 
946          WRITE ( 14 )  pt_2m_av
947       ENDIF
948
949       IF ( humidity )  THEN
950
951          CALL wrd_write_string( 'q' ) 
952          WRITE ( 14 )  q
953
954          IF ( ALLOCATED( q_av ) )  THEN
955             CALL wrd_write_string( 'q_av' ) 
956             WRITE ( 14 )  q_av
957          ENDIF
958
959          IF ( cloud_droplets )  THEN
960
961             CALL wrd_write_string( 'ql' )
962             WRITE ( 14 )  ql
963
964             IF ( ALLOCATED( ql_av ) )  THEN
965                CALL wrd_write_string( 'ql_av' )
966                WRITE ( 14 )  ql_av
967             ENDIF
968
969          ENDIF
970
971          IF ( ALLOCATED( qsws_av ) )  THEN
972             CALL wrd_write_string( 'qsws_av' ) 
973             WRITE ( 14 )  qsws_av
974          ENDIF
975
976       ENDIF
977
978       IF ( passive_scalar )  THEN
979
980          CALL wrd_write_string( 's' ) 
981          WRITE ( 14 )  s
982
983          IF ( ALLOCATED( s_av ) )  THEN
984             CALL wrd_write_string( 's_av' ) 
985             WRITE ( 14 )  s_av
986          ENDIF
987
988          IF ( ALLOCATED( ssws_av ) )  THEN
989             CALL wrd_write_string( 'ssws_av' ) 
990             WRITE ( 14 )  ssws_av
991          ENDIF
992
993       ENDIF
994       
995       IF ( ALLOCATED( ql_c_av ) )  THEN
996          CALL wrd_write_string( 'ql_c_av' ) 
997          WRITE ( 14 )  ql_c_av
998       ENDIF
999
1000       IF ( ALLOCATED( ql_v_av ) )  THEN
1001          CALL wrd_write_string( 'ql_v_av' ) 
1002          WRITE ( 14 )  ql_v_av
1003       ENDIF
1004
1005       IF ( ALLOCATED( ql_vp_av ) )  THEN
1006          CALL wrd_write_string( 'ql_vp_av' ) 
1007          WRITE ( 14 )  ql_vp_av
1008       ENDIF
1009
1010       IF ( ALLOCATED( qv_av ) )  THEN
1011          CALL wrd_write_string( 'qv_av' ) 
1012          WRITE ( 14 )  qv_av
1013       ENDIF
1014
1015       CALL wrd_write_string( 'random_iv' ) 
1016       WRITE ( 14 )  random_iv
1017       WRITE ( 14 )  random_iy
1018
1019       IF ( ALLOCATED( seq_random_array ) )  THEN
1020          CALL wrd_write_string( 'seq_random_array' ) 
1021          WRITE ( 14 )  id_random_array
1022          WRITE ( 14 )  seq_random_array 
1023       ENDIF
1024
1025       IF ( ALLOCATED( s_av ) )  THEN
1026          CALL wrd_write_string( 's_av' ) 
1027          WRITE ( 14 )  s_av
1028       ENDIF
1029
1030       IF ( ALLOCATED( shf_av ) )  THEN
1031          CALL wrd_write_string( 'shf_av' ) 
1032          WRITE ( 14 )  shf_av
1033       ENDIF
1034
1035       IF ( ALLOCATED( ts_av ) )  THEN
1036          CALL wrd_write_string( 'ts_av' ) 
1037          WRITE ( 14 ) ts_av
1038       ENDIF
1039
1040       CALL wrd_write_string( 'u' ) 
1041       WRITE ( 14 )  u
1042
1043       IF ( ALLOCATED( u_av ) )  THEN
1044          CALL wrd_write_string( 'u_av' ) 
1045          WRITE ( 14 )  u_av
1046       ENDIF
1047
1048       IF ( ALLOCATED( u_m_l ) )  THEN
1049          CALL wrd_write_string( 'u_m_l' ) 
1050          WRITE ( 14 )  u_m_l
1051       ENDIF
1052
1053       IF ( ALLOCATED( u_m_n ) )  THEN
1054          CALL wrd_write_string( 'u_m_n' ) 
1055          WRITE ( 14 )  u_m_n
1056       ENDIF
1057
1058       IF ( ALLOCATED( u_m_r ) )  THEN
1059          CALL wrd_write_string( 'u_m_r' ) 
1060          WRITE ( 14 )  u_m_r
1061       ENDIF
1062
1063       IF ( ALLOCATED( u_m_s ) )  THEN
1064          CALL wrd_write_string( 'u_m_s' ) 
1065          WRITE ( 14 )  u_m_s
1066       ENDIF
1067
1068       IF ( ALLOCATED( us_av ) )  THEN
1069          CALL wrd_write_string( 'us_av' ) 
1070          WRITE ( 14 )  us_av
1071       ENDIF
1072
1073       CALL wrd_write_string( 'v' ) 
1074       WRITE ( 14 )  v
1075
1076       IF ( ALLOCATED( v_av ) )  THEN
1077          CALL wrd_write_string( 'v_av' ) 
1078          WRITE ( 14 )  v_av
1079       ENDIF
1080
1081       IF ( ALLOCATED( v_m_l  ) )  THEN
1082          CALL wrd_write_string( 'v_m_l' ) 
1083          WRITE ( 14 )  v_m_l
1084       ENDIF
1085
1086       IF ( ALLOCATED( v_m_n ) )  THEN
1087          CALL wrd_write_string( 'v_m_n' ) 
1088          WRITE ( 14 )  v_m_n
1089       ENDIF
1090
1091       IF ( ALLOCATED( v_m_r ) )  THEN
1092          CALL wrd_write_string( 'v_m_r' ) 
1093          WRITE ( 14 )  v_m_r
1094       ENDIF
1095
1096       IF ( ALLOCATED( v_m_s ) )  THEN
1097          CALL wrd_write_string( 'v_m_s' ) 
1098          WRITE ( 14 )  v_m_s
1099       ENDIF
1100
1101       IF ( humidity )  THEN
1102
1103          CALL wrd_write_string( 'vpt' ) 
1104          WRITE ( 14 )  vpt
1105
1106          IF ( ALLOCATED( vpt_av ) )  THEN
1107             CALL wrd_write_string( 'vpt_av' ) 
1108             WRITE ( 14 ) vpt_av
1109          ENDIF
1110
1111       ENDIF
1112
1113       CALL wrd_write_string( 'w' ) 
1114       WRITE ( 14 )  w
1115
1116       IF ( ALLOCATED( w_av ) )  THEN
1117          CALL wrd_write_string( 'w_av' ) 
1118          WRITE ( 14 )  w_av
1119       ENDIF
1120
1121       IF ( ALLOCATED( w_m_l ) )  THEN
1122          CALL wrd_write_string( 'w_m_l' ) 
1123          WRITE ( 14 )  w_m_l
1124       ENDIF
1125
1126       IF ( ALLOCATED( w_m_n ) )  THEN
1127          CALL wrd_write_string( 'w_m_n' ) 
1128          WRITE ( 14 )  w_m_n
1129       ENDIF
1130
1131       IF ( ALLOCATED( w_m_r ) )  THEN
1132          CALL wrd_write_string( 'w_m_r' ) 
1133          WRITE ( 14 )  w_m_r
1134       ENDIF
1135
1136       IF ( ALLOCATED( w_m_s ) )  THEN
1137          CALL wrd_write_string( 'w_m_s' ) 
1138          WRITE ( 14 )  w_m_s
1139       ENDIF
1140
1141       IF ( ALLOCATED( z0_av ) )  THEN
1142          CALL wrd_write_string( 'z0_av' ) 
1143          WRITE ( 14 )  z0_av
1144       ENDIF
1145
1146       IF ( ALLOCATED( z0h_av ) )  THEN
1147          CALL wrd_write_string( 'z0h_av' ) 
1148          WRITE ( 14 )  z0h_av
1149       ENDIF
1150
1151       IF ( ALLOCATED( z0q_av ) )  THEN
1152          CALL wrd_write_string( 'z0q_av' ) 
1153          WRITE ( 14 )  z0q_av
1154       ENDIF
1155
1156       IF ( land_surface  .OR.  urban_surface )  THEN
1157
1158          IF ( ALLOCATED( ghf_av ) )  THEN
1159             CALL wrd_write_string( 'ghf_av' ) 
1160             WRITE ( 14 )  ghf_av
1161          ENDIF
1162
1163          IF ( ALLOCATED( r_a_av ) )  THEN
1164             CALL wrd_write_string( 'r_a_av' ) 
1165             WRITE ( 14 )  r_a_av
1166          ENDIF
1167
1168       ENDIF
1169
1170       IF ( ALLOCATED( tsurf_av ) )  THEN
1171          CALL wrd_write_string( 'tsurf_av' ) 
1172          WRITE ( 14 )  tsurf_av
1173       ENDIF
1174
1175
1176       CALL surface_wrd_local
1177
1178!
1179!--    Write restart data of other modules
1180       CALL module_interface_wrd_local
1181
1182!
1183!--    Write end label
1184       CALL wrd_write_string( '*** end ***' )
1185
1186    END SUBROUTINE wrd_local
1187
1188
1189 END MODULE write_restart_data_mod
Note: See TracBrowser for help on using the repository browser.