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

Last change on this file since 3582 was 3582, checked in by suehring, 3 years ago

Merge branch salsa with trunk

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