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

Last change on this file since 3354 was 3294, checked in by raasch, 5 years ago

modularization of the ocean code

  • Property svn:keywords set to Id
File size: 36.7 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 3294 2018-10-01 02:37:10Z knoop $
27! changes concerning modularization of ocean option
28!
29! 3274 2018-09-24 15:42:55Z knoop
30! Modularization of all bulk cloud physics code components
31!
32! 3065 2018-06-12 07:03:02Z Giersch
33! New parameters concerning vertical grid stretching have been added
34!
35! 3004 2018-04-27 12:33:25Z Giersch
36! precipitation_rate_av removed
37!
38! 3003 2018-04-23 10:22:58Z Giersch
39! z_i is also written out to use the last known inversion height from the
40! initial run as the first inversion height which is written into the
41! run control file
42!
43! 2956 2018-04-10 11:01:03Z Giersch
44! spectrum_x and spectrum_y have been moved to global data
45!
46! 2921 2018-03-22 15:05:23Z Giersch
47! spinup_time, day_of_year_init and time_utc_init are also written out now
48!
49! 2912 2018-03-20 13:00:05Z knoop
50! Added gust module interface calls
51!
52! 2894 2018-03-15 09:17:58Z Giersch
53! Initial revision
54!
55!
56! Description:
57! ------------
58!> Writes restart data into binary file(s) for restart runs.
59!------------------------------------------------------------------------------!
60 MODULE write_restart_data_mod
61
62
63    USE control_parameters
64 
65    USE kinds     
66
67    USE pegrid,                                                                &
68        ONLY:  myid, numprocs
69     
70
71    IMPLICIT NONE
72
73
74    INTERFACE wrd_global
75       MODULE PROCEDURE wrd_global
76    END INTERFACE wrd_global
77
78    INTERFACE wrd_local
79       MODULE PROCEDURE wrd_local
80    END INTERFACE wrd_local
81
82
83    PUBLIC wrd_local, wrd_global
84
85
86 CONTAINS
87
88
89! Description:
90! ------------
91!> Global data of control variables and arrays is written out for
92!> restarts (binary format).
93!> This information is only written to the file opened by PE0.
94!------------------------------------------------------------------------------!
95    SUBROUTINE wrd_global
96
97
98       USE arrays_3d,                                                          &
99           ONLY:  inflow_damping_factor, mean_inflow_profiles, pt_init,        &
100                  q_init, ref_state, s_init, u_init, ug, v_init, vg
101
102       USE bulk_cloud_model_mod,                                               &
103           ONLY:  bulk_cloud_model, bcm_wrd_global
104
105       USE date_and_time_mod,                                                  &
106           ONLY:  day_of_year_init, time_utc_init
107
108       USE flight_mod,                                                         &
109           ONLY:  flight_wrd_global
110
111       USE grid_variables,                                                     &
112           ONLY:  dx, dy
113
114       USE gust_mod,                                                           &
115           ONLY :  gust_module_enabled, gust_wrd_global
116
117       USE indices,                                                            &
118           ONLY:  nx, ny, nz
119
120       USE model_1d_mod,                                                       &
121           ONLY:  damp_level_1d, dt_pr_1d, dt_run_control_1d, end_time_1d
122
123       USE netcdf_interface,                                                   &
124           ONLY:  netcdf_precision, output_for_t0
125
126       USE ocean_mod,                                                          &
127           ONLY:  ocean_wrd_global
128
129       USE particle_attributes,                                                &
130           ONLY:  curvature_solution_effects
131
132       USE pegrid,                                                             &
133           ONLY:  hor_index_bounds, collective_wait                               
134
135       USE radiation_model_mod,                                                &
136           ONLY:  time_radiation
137
138       USE spectra_mod,                                                        &
139           ONLY:  average_count_sp, spectrum_x, spectrum_y
140
141       USE synthetic_turbulence_generator_mod,                                 &
142           ONLY:  stg_wrd_global
143
144       USE statistics,                                                         &
145           ONLY:  statistic_regions, hom, hom_sum, u_max, u_max_ijk, v_max,    &
146                  v_max_ijk, w_max, w_max_ijk, z_i
147
148       USE user_write_restart_data_mod,                                        &
149           ONLY:  user_wrd_global 
150
151       USE vertical_nesting_mod,                                               &
152           ONLY:  vnest_init
153
154       USE wind_turbine_model_mod,                                             &
155           ONLY:  wtm_wrd_global
156     
157
158       IMPLICIT NONE
159
160       CHARACTER (LEN=10)  ::  binary_version_global   !<
161
162
163       binary_version_global = '4.7'
164
165       CALL wrd_write_string( 'binary_version_global' )
166       WRITE ( 14 )  binary_version_global
167
168       CALL wrd_write_string( 'numprocs' )
169       WRITE ( 14 )  numprocs
170
171       CALL wrd_write_string( 'hor_index_bounds' ) 
172       WRITE ( 14 )  hor_index_bounds
173
174       CALL wrd_write_string( 'nz' ) 
175       WRITE ( 14 )  nz
176
177       CALL wrd_write_string( 'max_pr_user' ) 
178       WRITE ( 14 )  max_pr_user
179
180       CALL wrd_write_string( 'statistic_regions' ) 
181       WRITE ( 14 )  statistic_regions
182
183!
184!-- Caution: After changes in the following parameter-list, the
185!-- -------  version number stored in the variable binary_version_global has to
186!--          be increased. The same changes must also be done in the parameter-
187!--          list in rrd_global.
188
189       CALL wrd_write_string( 'advected_distance_x' ) 
190       WRITE ( 14 )  advected_distance_x
191
192       CALL wrd_write_string( 'advected_distance_y' ) 
193       WRITE ( 14 )  advected_distance_y
194
195       CALL wrd_write_string( 'alpha_surface' ) 
196       WRITE ( 14 )  alpha_surface 
197
198       CALL wrd_write_string( 'average_count_pr' ) 
199       WRITE ( 14 )  average_count_pr
200
201       CALL wrd_write_string( 'average_count_sp' ) 
202       WRITE ( 14 )  average_count_sp
203
204       CALL wrd_write_string( 'average_count_3d' ) 
205       WRITE ( 14 )  average_count_3d
206
207       CALL wrd_write_string( 'bc_e_b' ) 
208       WRITE ( 14 )  bc_e_b
209
210       CALL wrd_write_string( 'bc_lr' ) 
211       WRITE ( 14 )  bc_lr
212
213       CALL wrd_write_string( 'bc_ns' ) 
214       WRITE ( 14 )  bc_ns
215
216       CALL wrd_write_string( 'bc_p_b' ) 
217       WRITE ( 14 )  bc_p_b
218
219       CALL wrd_write_string( 'bc_p_t' ) 
220       WRITE ( 14 )  bc_p_t
221
222       CALL wrd_write_string( 'bc_pt_b' ) 
223       WRITE ( 14 )  bc_pt_b
224
225       CALL wrd_write_string( 'bc_pt_t' ) 
226       WRITE ( 14 )  bc_pt_t
227
228       CALL wrd_write_string( 'bc_pt_t_val' ) 
229       WRITE ( 14 )  bc_pt_t_val
230
231       CALL wrd_write_string( 'bc_q_b' ) 
232       WRITE ( 14 )  bc_q_b
233
234       CALL wrd_write_string( 'bc_q_t' ) 
235       WRITE ( 14 )  bc_q_t
236
237       CALL wrd_write_string( 'bc_q_t_val' ) 
238       WRITE ( 14 )  bc_q_t_val
239
240       CALL wrd_write_string( 'bc_s_b' ) 
241       WRITE ( 14 )  bc_s_b
242
243       CALL wrd_write_string( 'bc_s_t' ) 
244       WRITE ( 14 )  bc_s_t
245
246       CALL wrd_write_string( 'bc_uv_b' ) 
247       WRITE ( 14 )  bc_uv_b
248
249       CALL wrd_write_string( 'bc_uv_t' ) 
250       WRITE ( 14 )  bc_uv_t
251
252       CALL wrd_write_string( 'building_height' ) 
253       WRITE ( 14 )  building_height
254
255       CALL wrd_write_string( 'building_length_x' ) 
256       WRITE ( 14 )  building_length_x
257
258       CALL wrd_write_string( 'building_length_y' ) 
259       WRITE ( 14 )  building_length_y
260
261       CALL wrd_write_string( 'building_wall_left' ) 
262       WRITE ( 14 )  building_wall_left
263
264       CALL wrd_write_string( 'building_wall_south' ) 
265       WRITE ( 14 )  building_wall_south
266
267       CALL wrd_write_string( 'call_psolver_at_all_substeps' ) 
268       WRITE ( 14 )  call_psolver_at_all_substeps
269
270       CALL wrd_write_string( 'canyon_height' ) 
271       WRITE ( 14 )  canyon_height 
272
273       CALL wrd_write_string( 'canyon_wall_left' ) 
274       WRITE ( 14 )  canyon_wall_left
275
276       CALL wrd_write_string( 'canyon_wall_south' ) 
277       WRITE ( 14 )  canyon_wall_south
278
279       CALL wrd_write_string( 'canyon_width_x' ) 
280       WRITE ( 14 )  canyon_width_x
281
282       CALL wrd_write_string( 'canyon_width_y' ) 
283       WRITE ( 14 )  canyon_width_y
284
285       CALL wrd_write_string( 'cfl_factor' ) 
286       WRITE ( 14 )  cfl_factor
287
288       CALL wrd_write_string( 'cloud_droplets' ) 
289       WRITE ( 14 )  cloud_droplets
290
291       CALL wrd_write_string( 'cloud_top_radiation' ) 
292       WRITE ( 14 )  cloud_top_radiation
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 surface_mod,                                                        &
947           ONLY :  surface_wrd_local
948
949       USE urban_surface_mod,                                                  &
950           ONLY:  usm_wrd_local   
951
952       USE user_write_restart_data_mod,                                        &
953           ONLY:  user_wrd_local 
954
955
956       IMPLICIT NONE
957
958       CHARACTER (LEN=10) ::  binary_version_local   !<
959
960
961!
962!-- Write arrays.
963       binary_version_local = '4.7'
964
965       CALL wrd_write_string( 'binary_version_local' )
966       WRITE ( 14 )  binary_version_local
967
968       WRITE ( 14 )  numprocs, myid, nxl, nxr, nys, nyn, nzb, nzt
969
970!
971!-- Attention: After changes to the following output commands the version number
972!-- ---------  of the variable binary_version_local must be changed!
973!--            Also, the list of arrays to be read in rrd_local must be
974!--            adjusted accordingly.
975       CALL wrd_write_string( 'e' ) 
976       WRITE ( 14 )  e
977
978       IF ( ALLOCATED( e_av ) )  THEN
979          CALL wrd_write_string( 'e_av' ) 
980          WRITE ( 14 )  e_av
981       ENDIF
982
983       CALL wrd_write_string( 'iran' ) 
984       WRITE ( 14 )  iran, iran_part 
985
986       CALL wrd_write_string( 'kh' ) 
987       WRITE ( 14 )  kh
988 
989
990       IF ( ALLOCATED( kh_av ) )  THEN
991          CALL wrd_write_string( 'kh_av' ) 
992          WRITE ( 14 )  kh_av
993       ENDIF
994
995       CALL wrd_write_string( 'km' ) 
996       WRITE ( 14 )  km
997
998       IF ( ALLOCATED( km_av ) )  THEN
999          CALL wrd_write_string( 'km_av' ) 
1000          WRITE ( 14 )  km_av
1001       ENDIF
1002
1003       IF ( ALLOCATED( lpt_av ) )  THEN
1004          CALL wrd_write_string( 'lpt_av' ) 
1005          WRITE ( 14 )  lpt_av
1006       ENDIF
1007
1008       IF ( ALLOCATED( lwp_av ) )  THEN
1009          CALL wrd_write_string( 'lwp_av' ) 
1010          WRITE ( 14 )  lwp_av
1011       ENDIF
1012
1013       CALL wrd_write_string( 'p' ) 
1014       WRITE ( 14 )  p
1015
1016       IF ( ALLOCATED( p_av ) )  THEN
1017          CALL wrd_write_string( 'p_av' ) 
1018          WRITE ( 14 )  p_av
1019       ENDIF
1020
1021       IF ( ALLOCATED( pc_av ) )  THEN
1022          CALL wrd_write_string( 'pc_av' ) 
1023          WRITE ( 14 )  pc_av
1024       ENDIF
1025
1026       IF ( ALLOCATED( pr_av ) )  THEN
1027          CALL wrd_write_string( 'pr_av' ) 
1028          WRITE ( 14 )  pr_av
1029       ENDIF
1030
1031       CALL wrd_write_string( 'pt' ) 
1032       WRITE ( 14 )  pt
1033
1034       IF ( ALLOCATED( pt_av ) )  THEN
1035          CALL wrd_write_string( 'pt_av' ) 
1036          WRITE ( 14 )  pt_av
1037       ENDIF
1038
1039       IF ( humidity )  THEN
1040
1041          CALL wrd_write_string( 'q' ) 
1042          WRITE ( 14 )  q
1043
1044          IF ( ALLOCATED( q_av ) )  THEN
1045             CALL wrd_write_string( 'q_av' ) 
1046             WRITE ( 14 )  q_av
1047          ENDIF
1048
1049          IF ( cloud_droplets )  THEN
1050
1051             CALL wrd_write_string( 'ql' )
1052             WRITE ( 14 )  ql
1053
1054             IF ( ALLOCATED( ql_av ) )  THEN
1055                CALL wrd_write_string( 'ql_av' )
1056                WRITE ( 14 )  ql_av
1057             ENDIF
1058
1059          ENDIF
1060
1061          IF ( ALLOCATED( qsws_av ) )  THEN
1062             CALL wrd_write_string( 'qsws_av' ) 
1063             WRITE ( 14 )  qsws_av
1064          ENDIF
1065
1066       ENDIF
1067
1068       IF ( passive_scalar )  THEN
1069
1070          CALL wrd_write_string( 's' ) 
1071          WRITE ( 14 )  s
1072
1073          IF ( ALLOCATED( s_av ) )  THEN
1074             CALL wrd_write_string( 's_av' ) 
1075             WRITE ( 14 )  s_av
1076          ENDIF
1077
1078          IF ( ALLOCATED( ssws_av ) )  THEN
1079             CALL wrd_write_string( 'ssws_av' ) 
1080             WRITE ( 14 )  ssws_av
1081          ENDIF
1082
1083       ENDIF
1084       
1085       IF ( ALLOCATED( ql_c_av ) )  THEN
1086          CALL wrd_write_string( 'ql_c_av' ) 
1087          WRITE ( 14 )  ql_c_av
1088       ENDIF
1089
1090       IF ( ALLOCATED( ql_v_av ) )  THEN
1091          CALL wrd_write_string( 'ql_v_av' ) 
1092          WRITE ( 14 )  ql_v_av
1093       ENDIF
1094
1095       IF ( ALLOCATED( ql_vp_av ) )  THEN
1096          CALL wrd_write_string( 'ql_vp_av' ) 
1097          WRITE ( 14 )  ql_vp_av
1098       ENDIF
1099
1100       IF ( ALLOCATED( qv_av ) )  THEN
1101          CALL wrd_write_string( 'qv_av' ) 
1102          WRITE ( 14 )  qv_av
1103       ENDIF
1104
1105       CALL wrd_write_string( 'random_iv' ) 
1106       WRITE ( 14 )  random_iv
1107       WRITE ( 14 )  random_iy
1108
1109       IF ( ALLOCATED( seq_random_array ) )  THEN
1110          CALL wrd_write_string( 'seq_random_array' ) 
1111          WRITE ( 14 )  id_random_array
1112          WRITE ( 14 )  seq_random_array 
1113       ENDIF
1114
1115       IF ( ALLOCATED( s_av ) )  THEN
1116          CALL wrd_write_string( 's_av' ) 
1117          WRITE ( 14 )  s_av
1118       ENDIF
1119
1120       IF ( ALLOCATED( shf_av ) )  THEN
1121          CALL wrd_write_string( 'shf_av' ) 
1122          WRITE ( 14 )  shf_av
1123       ENDIF
1124
1125       IF ( ALLOCATED( ts_av ) )  THEN
1126          CALL wrd_write_string( 'ts_av' ) 
1127          WRITE ( 14 ) ts_av
1128       ENDIF
1129
1130       CALL wrd_write_string( 'u' ) 
1131       WRITE ( 14 )  u
1132
1133       IF ( ALLOCATED( u_av ) )  THEN
1134          CALL wrd_write_string( 'u_av' ) 
1135          WRITE ( 14 )  u_av
1136       ENDIF
1137
1138       IF ( ALLOCATED( u_m_l ) )  THEN
1139          CALL wrd_write_string( 'u_m_l' ) 
1140          WRITE ( 14 )  u_m_l
1141       ENDIF
1142
1143       IF ( ALLOCATED( u_m_n ) )  THEN
1144          CALL wrd_write_string( 'u_m_n' ) 
1145          WRITE ( 14 )  u_m_n
1146       ENDIF
1147
1148       IF ( ALLOCATED( u_m_r ) )  THEN
1149          CALL wrd_write_string( 'u_m_r' ) 
1150          WRITE ( 14 )  u_m_r
1151       ENDIF
1152
1153       IF ( ALLOCATED( u_m_s ) )  THEN
1154          CALL wrd_write_string( 'u_m_s' ) 
1155          WRITE ( 14 )  u_m_s
1156       ENDIF
1157
1158       IF ( ALLOCATED( us_av ) )  THEN
1159          CALL wrd_write_string( 'us_av' ) 
1160          WRITE ( 14 )  us_av
1161       ENDIF
1162
1163       CALL wrd_write_string( 'v' ) 
1164       WRITE ( 14 )  v
1165
1166       IF ( ALLOCATED( v_av ) )  THEN
1167          CALL wrd_write_string( 'v_av' ) 
1168          WRITE ( 14 )  v_av
1169       ENDIF
1170
1171       IF ( ALLOCATED( v_m_l  ) )  THEN
1172          CALL wrd_write_string( 'v_m_l' ) 
1173          WRITE ( 14 )  v_m_l
1174       ENDIF
1175
1176       IF ( ALLOCATED( v_m_n ) )  THEN
1177          CALL wrd_write_string( 'v_m_n' ) 
1178          WRITE ( 14 )  v_m_n
1179       ENDIF
1180
1181       IF ( ALLOCATED( v_m_r ) )  THEN
1182          CALL wrd_write_string( 'v_m_r' ) 
1183          WRITE ( 14 )  v_m_r
1184       ENDIF
1185
1186       IF ( ALLOCATED( v_m_s ) )  THEN
1187          CALL wrd_write_string( 'v_m_s' ) 
1188          WRITE ( 14 )  v_m_s
1189       ENDIF
1190
1191       IF ( humidity )  THEN
1192
1193          CALL wrd_write_string( 'vpt' ) 
1194          WRITE ( 14 )  vpt
1195
1196          IF ( ALLOCATED( vpt_av ) )  THEN
1197             CALL wrd_write_string( 'vpt_av' ) 
1198             WRITE ( 14 ) vpt_av
1199          ENDIF
1200
1201       ENDIF
1202
1203       CALL wrd_write_string( 'w' ) 
1204       WRITE ( 14 )  w
1205
1206       IF ( ALLOCATED( w_av ) )  THEN
1207          CALL wrd_write_string( 'w_av' ) 
1208          WRITE ( 14 )  w_av
1209       ENDIF
1210
1211       IF ( ALLOCATED( w_m_l ) )  THEN
1212          CALL wrd_write_string( 'w_m_l' ) 
1213          WRITE ( 14 )  w_m_l
1214       ENDIF
1215
1216       IF ( ALLOCATED( w_m_n ) )  THEN
1217          CALL wrd_write_string( 'w_m_n' ) 
1218          WRITE ( 14 )  w_m_n
1219       ENDIF
1220
1221       IF ( ALLOCATED( w_m_r ) )  THEN
1222          CALL wrd_write_string( 'w_m_r' ) 
1223          WRITE ( 14 )  w_m_r
1224       ENDIF
1225
1226       IF ( ALLOCATED( w_m_s ) )  THEN
1227          CALL wrd_write_string( 'w_m_s' ) 
1228          WRITE ( 14 )  w_m_s
1229       ENDIF
1230
1231       IF ( ALLOCATED( z0_av ) )  THEN
1232          CALL wrd_write_string( 'z0_av' ) 
1233          WRITE ( 14 )  z0_av
1234       ENDIF
1235
1236       IF ( ALLOCATED( z0h_av ) )  THEN
1237          CALL wrd_write_string( 'z0h_av' ) 
1238          WRITE ( 14 )  z0h_av
1239       ENDIF
1240
1241       IF ( ALLOCATED( z0q_av ) )  THEN
1242          CALL wrd_write_string( 'z0q_av' ) 
1243          WRITE ( 14 )  z0q_av
1244       ENDIF
1245
1246       IF ( land_surface  .OR.  urban_surface )  THEN
1247
1248          IF ( ALLOCATED( ghf_av ) )  THEN
1249             CALL wrd_write_string( 'ghf_av' ) 
1250             WRITE ( 14 )  ghf_av
1251          ENDIF
1252
1253          IF ( ALLOCATED( r_a_av ) )  THEN
1254             CALL wrd_write_string( 'r_a_av' ) 
1255             WRITE ( 14 )  r_a_av
1256          ENDIF
1257
1258       ENDIF
1259
1260       IF ( ALLOCATED( tsurf_av ) )  THEN
1261          CALL wrd_write_string( 'tsurf_av' ) 
1262          WRITE ( 14 )  tsurf_av
1263       ENDIF
1264
1265!
1266!--    Write restart data of other modules
1267       IF ( bulk_cloud_model )     CALL bcm_wrd_local
1268       IF ( air_chemistry )        CALL chem_wrd_local
1269       IF ( gust_module_enabled )  CALL gust_wrd_local
1270       IF ( land_surface )         CALL lsm_wrd_local
1271       IF ( ocean_mode )           CALL ocean_wrd_local
1272       CALL surface_wrd_local
1273       IF ( radiation )            CALL radiation_wrd_local
1274       IF ( urban_surface )        CALL usm_wrd_local
1275
1276!
1277!--    Write user-defined restart data
1278       CALL user_wrd_local
1279
1280!
1281!--    Write end label
1282       CALL wrd_write_string( '*** end ***' )
1283
1284    END SUBROUTINE wrd_local
1285
1286
1287 END MODULE write_restart_data_mod
Note: See TracBrowser for help on using the repository browser.