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

Last change on this file since 3988 was 3988, checked in by kanani, 2 years ago

enable steering of output interval for virtual measurements

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