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

Last change on this file since 3581 was 3467, checked in by suehring, 5 years ago

Branch salsa @3446 re-integrated into trunk

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