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

Last change on this file since 3924 was 3668, checked in by maronga, 6 years ago

removed most_methods circular and lookup. added improved version of palm_csd

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