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

Last change on this file since 3423 was 3355, checked in by knoop, 5 years ago

removed calc_radiation.f90 and related cloud_top_radiation namelist parameter (functionality replaced by radiation model)

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