source: palm/trunk/SOURCE/header.f90 @ 1558

Last change on this file since 1558 was 1558, checked in by suehring, 10 years ago

last commit documented

  • Property svn:keywords set to Id
File size: 89.7 KB
Line 
1 SUBROUTINE header
2
3!--------------------------------------------------------------------------------!
4! This file is part of PALM.
5!
6! PALM is free software: you can redistribute it and/or modify it under the terms
7! of the GNU General Public License as published by the Free Software Foundation,
8! either version 3 of the License, or (at your option) any later 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-2014 Leibniz Universitaet Hannover
18!--------------------------------------------------------------------------------!
19!
20! Current revisions:
21! -----------------
22!
23!
24! Former revisions:
25! -----------------
26! $Id: header.f90 1558 2015-03-05 16:51:41Z suehring $
27!
28! 1557 2015-03-05 16:43:04Z suehring
29! output for monotonic limiter
30!
31! 1551 2015-03-03 14:18:16Z maronga
32! Added informal output for land surface model and radiation model. Removed typo.
33!
34! 1496 2014-12-02 17:25:50Z maronga
35! Renamed: "radiation -> "cloud_top_radiation"
36!
37! 1484 2014-10-21 10:53:05Z kanani
38! Changes due to new module structure of the plant canopy model:
39!   module plant_canopy_model_mod and output for new canopy model parameters
40!   (alpha_lad, beta_lad, lai_beta,...) added,
41!   drag_coefficient, leaf_surface_concentration and scalar_exchange_coefficient
42!   renamed to canopy_drag_coeff, leaf_surface_conc and leaf_scalar_exch_coeff,
43!   learde renamed leaf_area_density.
44! Bugfix: DO-WHILE-loop for lad header information additionally restricted
45! by maximum number of gradient levels (currently 10)
46!
47! 1482 2014-10-18 12:34:45Z raasch
48! information about calculated or predefined virtual processor topology adjusted
49!
50! 1468 2014-09-24 14:06:57Z maronga
51! Adapted for use on up to 6-digit processor cores
52!
53! 1429 2014-07-15 12:53:45Z knoop
54! header exended to provide ensemble_member_nr if specified
55!
56! 1376 2014-04-26 11:21:22Z boeske
57! Correction of typos
58!
59! 1365 2014-04-22 15:03:56Z boeske
60! New section 'Large scale forcing and nudging':
61! output of large scale forcing and nudging information,
62! new section for initial profiles created
63!
64! 1359 2014-04-11 17:15:14Z hoffmann
65! dt_sort_particles removed
66!
67! 1353 2014-04-08 15:21:23Z heinze
68! REAL constants provided with KIND-attribute
69!
70! 1327 2014-03-21 11:00:16Z raasch
71! parts concerning iso2d and avs output removed,
72! -netcdf output queries
73!
74! 1324 2014-03-21 09:13:16Z suehring
75! Bugfix: module spectrum added
76!
77! 1322 2014-03-20 16:38:49Z raasch
78! REAL functions provided with KIND-attribute,
79! some REAL constants defined as wp-kind
80!
81! 1320 2014-03-20 08:40:49Z raasch
82! ONLY-attribute added to USE-statements,
83! kind-parameters added to all INTEGER and REAL declaration statements,
84! kinds are defined in new module kinds,
85! revision history before 2012 removed,
86! comment fields (!:) to be used for variable explanations added to
87! all variable declaration statements
88!
89! 1308 2014-03-13 14:58:42Z fricke
90! output of the fixed number of output time levels
91! output_format adjusted for masked data if netcdf_data_format > 5
92!
93! 1299 2014-03-06 13:15:21Z heinze
94! output for using large_scale subsidence in combination
95! with large_scale_forcing
96! reformatting, more detailed explanations
97!
98! 1241 2013-10-30 11:36:58Z heinze
99! output for nudging + large scale forcing from external file
100!
101! 1216 2013-08-26 09:31:42Z raasch
102! output for transpose_compute_overlap
103!
104! 1212 2013-08-15 08:46:27Z raasch
105! output for poisfft_hybrid removed
106!
107! 1179 2013-06-14 05:57:58Z raasch
108! output of reference_state, use_reference renamed use_single_reference_value
109!
110! 1159 2013-05-21 11:58:22Z fricke
111! +use_cmax
112!
113! 1115 2013-03-26 18:16:16Z hoffmann
114! descriptions for Seifert-Beheng-cloud-physics-scheme added
115!
116! 1111 2013-03-08 23:54:10Z raasch
117! output of accelerator board information
118! ibc_p_b = 2 removed
119!
120! 1108 2013-03-05 07:03:32Z raasch
121! bugfix for r1106
122!
123! 1106 2013-03-04 05:31:38Z raasch
124! some format changes for coupled runs
125!
126! 1092 2013-02-02 11:24:22Z raasch
127! unused variables removed
128!
129! 1036 2012-10-22 13:43:42Z raasch
130! code put under GPL (PALM 3.9)
131!
132! 1031 2012-10-19 14:35:30Z raasch
133! output of netCDF data format modified
134!
135! 1015 2012-09-27 09:23:24Z raasch
136! output of Adjustment of mixing length to the Prandtl mixing length at first
137! grid point above ground removed
138!
139! 1003 2012-09-14 14:35:53Z raasch
140! output of information about equal/unequal subdomain size removed
141!
142! 1001 2012-09-13 14:08:46Z raasch
143! all actions concerning leapfrog- and upstream-spline-scheme removed
144!
145! 978 2012-08-09 08:28:32Z fricke
146! -km_damp_max, outflow_damping_width
147! +pt_damping_factor, pt_damping_width
148! +z0h
149!
150! 964 2012-07-26 09:14:24Z raasch
151! output of profil-related quantities removed
152!
153! 940 2012-07-09 14:31:00Z raasch
154! Output in case of simulations for pure neutral stratification (no pt-equation
155! solved)
156!
157! 927 2012-06-06 19:15:04Z raasch
158! output of masking_method for mg-solver
159!
160! 868 2012-03-28 12:21:07Z raasch
161! translation velocity in Galilean transformation changed to 0.6 * ug
162!
163! 833 2012-02-22 08:55:55Z maronga
164! Adjusted format for leaf area density
165!
166! 828 2012-02-21 12:00:36Z raasch
167! output of dissipation_classes + radius_classes
168!
169! 825 2012-02-19 03:03:44Z raasch
170! Output of cloud physics parameters/quantities complemented and restructured
171!
172! Revision 1.1  1997/08/11 06:17:20  raasch
173! Initial revision
174!
175!
176! Description:
177! ------------
178! Writing a header with all important information about the actual run.
179! This subroutine is called three times, two times at the beginning
180! (writing information on files RUN_CONTROL and HEADER) and one time at the
181! end of the run, then writing additional information about CPU-usage on file
182! header.
183!-----------------------------------------------------------------------------!
184
185    USE arrays_3d,                                                             &
186        ONLY:  pt_init, qsws, q_init, sa_init, shf, ug, vg, w_subs, zu
187       
188    USE control_parameters
189       
190    USE cloud_parameters,                                                      &
191        ONLY:  cp, curvature_solution_effects, c_sedimentation,                &
192               limiter_sedimentation, l_v, nc_const, r_d, ventilation_effect
193       
194    USE cpulog,                                                                &
195        ONLY:  log_point_s
196       
197    USE dvrp_variables,                                                        &
198        ONLY:  use_seperate_pe_for_dvrp_output
199       
200    USE grid_variables,                                                        &
201        ONLY:  dx, dy
202       
203    USE indices,                                                               &
204        ONLY:  mg_loc_ind, nnx, nny, nnz, nx, ny, nxl_mg, nxr_mg, nyn_mg,      &
205               nys_mg, nzt, nzt_mg
206       
207    USE kinds
208   
209    USE land_surface_model_mod,                                                &
210        ONLY:  conserve_water_content, dewfall, land_surface, nzb_soil,        &
211               nzt_soil, root_fraction, soil_moisture, soil_temperature,       &
212               soil_type, soil_type_name, veg_type, veg_type_name, zs
213 
214    USE model_1d,                                                              &
215        ONLY:  damp_level_ind_1d, dt_pr_1d, dt_run_control_1d, end_time_1d
216       
217    USE particle_attributes,                                                   &
218        ONLY:  bc_par_b, bc_par_lr, bc_par_ns, bc_par_t, collision_kernel,     &
219               density_ratio, dissipation_classes, dt_min_part, dt_prel,       &
220               dt_write_particle_data, end_time_prel,                          &
221               maximum_number_of_tailpoints, maximum_tailpoint_age,            &
222               minimum_tailpoint_distance, number_of_particle_groups,          &
223               particle_advection, particle_advection_start,                   &
224               particles_per_point, pdx, pdy, pdz,  psb, psl, psn, psr, pss,   &
225               pst, radius, radius_classes, random_start_position,             &
226               total_number_of_particles, use_particle_tails,                  &
227               use_sgs_for_particles, total_number_of_tails,                   &
228               vertical_particle_advection, write_particle_statistics
229       
230    USE pegrid
231
232    USE plant_canopy_model_mod,                                                &
233        ONLY:  alpha_lad, beta_lad, calc_beta_lad_profile, canopy_drag_coeff,  &
234               canopy_mode, cthf, lad, lad_surface, lad_vertical_gradient,     &
235               lad_vertical_gradient_level, lad_vertical_gradient_level_ind,   &
236               lai_beta, leaf_scalar_exch_coeff, leaf_surface_conc, pch_index, &
237               plant_canopy
238
239    USE radiation_model_mod,                                                   &
240        ONLY:  albedo, day_init, dt_radiation, lambda, net_radiation,          &
241               radiation, radiation_scheme, time_utc_init
242   
243    USE spectrum,                                                              &
244        ONLY:  comp_spectra_level, data_output_sp, plot_spectra_level,         &
245               spectra_direction
246
247    IMPLICIT NONE
248
249    CHARACTER (LEN=1)  ::  prec                !:
250   
251    CHARACTER (LEN=2)  ::  do2d_mode           !:
252   
253    CHARACTER (LEN=5)  ::  section_chr         !:
254   
255    CHARACTER (LEN=10) ::  coor_chr            !:
256    CHARACTER (LEN=10) ::  host_chr            !:
257   
258    CHARACTER (LEN=16) ::  begin_chr           !:
259   
260    CHARACTER (LEN=26) ::  ver_rev             !:
261   
262    CHARACTER (LEN=40) ::  output_format       !:
263   
264    CHARACTER (LEN=70) ::  char1               !:
265    CHARACTER (LEN=70) ::  char2               !:
266    CHARACTER (LEN=70) ::  dopr_chr            !:
267    CHARACTER (LEN=70) ::  do2d_xy             !:
268    CHARACTER (LEN=70) ::  do2d_xz             !:
269    CHARACTER (LEN=70) ::  do2d_yz             !:
270    CHARACTER (LEN=70) ::  do3d_chr            !:
271    CHARACTER (LEN=70) ::  domask_chr          !:
272    CHARACTER (LEN=70) ::  run_classification  !:
273   
274    CHARACTER (LEN=85) ::  roben               !:
275    CHARACTER (LEN=85) ::  runten              !:
276   
277    CHARACTER (LEN=86) ::  coordinates         !:
278    CHARACTER (LEN=86) ::  gradients           !:
279    CHARACTER (LEN=86) ::  leaf_area_density   !:
280    CHARACTER (LEN=86) ::  roots               !:
281    CHARACTER (LEN=86) ::  slices              !:
282    CHARACTER (LEN=86) ::  temperatures        !:
283    CHARACTER (LEN=86) ::  ugcomponent         !:
284    CHARACTER (LEN=86) ::  vgcomponent         !:
285
286    CHARACTER (LEN=1), DIMENSION(1:3) ::  dir = (/ 'x', 'y', 'z' /)  !:
287
288    INTEGER(iwp) ::  av        !:
289    INTEGER(iwp) ::  bh        !:
290    INTEGER(iwp) ::  blx       !:
291    INTEGER(iwp) ::  bly       !:
292    INTEGER(iwp) ::  bxl       !:
293    INTEGER(iwp) ::  bxr       !:
294    INTEGER(iwp) ::  byn       !:
295    INTEGER(iwp) ::  bys       !:
296    INTEGER(iwp) ::  ch        !:
297    INTEGER(iwp) ::  count     !:
298    INTEGER(iwp) ::  cwx       !:
299    INTEGER(iwp) ::  cwy       !:
300    INTEGER(iwp) ::  cxl       !:
301    INTEGER(iwp) ::  cxr       !:
302    INTEGER(iwp) ::  cyn       !:
303    INTEGER(iwp) ::  cys       !:
304    INTEGER(iwp) ::  dim       !:
305    INTEGER(iwp) ::  i         !:
306    INTEGER(iwp) ::  io        !:
307    INTEGER(iwp) ::  j         !:
308    INTEGER(iwp) ::  k         !:
309    INTEGER(iwp) ::  l         !:
310    INTEGER(iwp) ::  ll        !:
311    INTEGER(iwp) ::  mpi_type  !:
312   
313    REAL(wp) ::  canopy_height                    !: canopy height (in m)
314    REAL(wp) ::  cpuseconds_per_simulated_second  !:
315
316!
317!-- Open the output file. At the end of the simulation, output is directed
318!-- to unit 19.
319    IF ( ( runnr == 0 .OR. force_print_header )  .AND. &
320         .NOT. simulated_time_at_begin /= simulated_time )  THEN
321       io = 15   !  header output on file RUN_CONTROL
322    ELSE
323       io = 19   !  header output on file HEADER
324    ENDIF
325    CALL check_open( io )
326
327!
328!-- At the end of the run, output file (HEADER) will be rewritten with
329!-- new information
330    IF ( io == 19 .AND. simulated_time_at_begin /= simulated_time ) REWIND( 19 )
331
332!
333!-- Determine kind of model run
334    IF ( TRIM( initializing_actions ) == 'read_restart_data' )  THEN
335       run_classification = '3D - restart run'
336    ELSEIF ( TRIM( initializing_actions ) == 'cyclic_fill' )  THEN
337       run_classification = '3D - run with cyclic fill of 3D - prerun data'
338    ELSEIF ( INDEX( initializing_actions, 'set_constant_profiles' ) /= 0 )  THEN
339       run_classification = '3D - run without 1D - prerun'
340    ELSEIF ( INDEX( initializing_actions, 'set_1d-model_profiles' ) /= 0 )  THEN
341       run_classification = '3D - run with 1D - prerun'
342    ELSEIF ( INDEX( initializing_actions, 'by_user' ) /=0 )  THEN
343       run_classification = '3D - run initialized by user'
344    ELSE
345       message_string = ' unknown action(s): ' // TRIM( initializing_actions )
346       CALL message( 'header', 'PA0191', 0, 0, 0, 6, 0 )
347    ENDIF
348    IF ( ocean )  THEN
349       run_classification = 'ocean - ' // run_classification
350    ELSE
351       run_classification = 'atmosphere - ' // run_classification
352    ENDIF
353
354!
355!-- Run-identification, date, time, host
356    host_chr = host(1:10)
357    ver_rev = TRIM( version ) // '  ' // TRIM( revision )
358    WRITE ( io, 100 )  ver_rev, TRIM( run_classification )
359    IF ( TRIM( coupling_mode ) /= 'uncoupled' )  THEN
360#if defined( __mpi2 )
361       mpi_type = 2
362#else
363       mpi_type = 1
364#endif
365       WRITE ( io, 101 )  mpi_type, coupling_mode
366    ENDIF
367#if defined( __parallel )
368    IF ( coupling_start_time /= 0.0_wp )  THEN
369       IF ( coupling_start_time > simulated_time_at_begin )  THEN
370          WRITE ( io, 109 )
371       ELSE
372          WRITE ( io, 114 )
373       ENDIF
374    ENDIF
375#endif
376    IF ( ensemble_member_nr /= 0 )  THEN
377       WRITE ( io, 512 )  run_date, run_identifier, run_time, runnr,           &
378                       ADJUSTR( host_chr ), ensemble_member_nr
379    ELSE
380       WRITE ( io, 102 )  run_date, run_identifier, run_time, runnr,           &
381                       ADJUSTR( host_chr )
382    ENDIF
383#if defined( __parallel )
384    IF ( npex == -1  .AND.  npey == -1 )  THEN
385       char1 = 'calculated'
386    ELSE
387       char1 = 'predefined'
388    ENDIF
389    IF ( threads_per_task == 1 )  THEN
390       WRITE ( io, 103 )  numprocs, pdims(1), pdims(2), TRIM( char1 )
391    ELSE
392       WRITE ( io, 104 )  numprocs*threads_per_task, numprocs, &
393                          threads_per_task, pdims(1), pdims(2), TRIM( char1 )
394    ENDIF
395    IF ( num_acc_per_node /= 0 )  WRITE ( io, 117 )  num_acc_per_node   
396    IF ( ( host(1:3) == 'ibm'  .OR.  host(1:3) == 'nec'  .OR.    &
397           host(1:2) == 'lc'   .OR.  host(1:3) == 'dec' )  .AND. &
398         npex == -1  .AND.  pdims(2) == 1 )                      &
399    THEN
400       WRITE ( io, 106 )
401    ELSEIF ( pdims(2) == 1 )  THEN
402       WRITE ( io, 107 )  'x'
403    ELSEIF ( pdims(1) == 1 )  THEN
404       WRITE ( io, 107 )  'y'
405    ENDIF
406    IF ( use_seperate_pe_for_dvrp_output )  WRITE ( io, 105 )
407    IF ( numprocs /= maximum_parallel_io_streams )  THEN
408       WRITE ( io, 108 )  maximum_parallel_io_streams
409    ENDIF
410#else
411    IF ( num_acc_per_node /= 0 )  WRITE ( io, 120 )  num_acc_per_node
412#endif
413    WRITE ( io, 99 )
414
415!
416!-- Numerical schemes
417    WRITE ( io, 110 )
418    IF ( psolver(1:7) == 'poisfft' )  THEN
419       WRITE ( io, 111 )  TRIM( fft_method )
420       IF ( transpose_compute_overlap )  WRITE( io, 115 )
421    ELSEIF ( psolver == 'sor' )  THEN
422       WRITE ( io, 112 )  nsor_ini, nsor, omega_sor
423    ELSEIF ( psolver == 'multigrid' )  THEN
424       WRITE ( io, 135 )  cycle_mg, maximum_grid_level, ngsrb
425       IF ( mg_cycles == -1 )  THEN
426          WRITE ( io, 140 )  residual_limit
427       ELSE
428          WRITE ( io, 141 )  mg_cycles
429       ENDIF
430       IF ( mg_switch_to_pe0_level == 0 )  THEN
431          WRITE ( io, 136 )  nxr_mg(1)-nxl_mg(1)+1, nyn_mg(1)-nys_mg(1)+1, &
432                             nzt_mg(1)
433       ELSEIF (  mg_switch_to_pe0_level /= -1 )  THEN
434          WRITE ( io, 137 )  mg_switch_to_pe0_level,            &
435                             mg_loc_ind(2,0)-mg_loc_ind(1,0)+1, &
436                             mg_loc_ind(4,0)-mg_loc_ind(3,0)+1, &
437                             nzt_mg(mg_switch_to_pe0_level),    &
438                             nxr_mg(1)-nxl_mg(1)+1, nyn_mg(1)-nys_mg(1)+1, &
439                             nzt_mg(1)
440       ENDIF
441       IF ( masking_method )  WRITE ( io, 144 )
442    ENDIF
443    IF ( call_psolver_at_all_substeps  .AND. timestep_scheme(1:5) == 'runge' ) &
444    THEN
445       WRITE ( io, 142 )
446    ENDIF
447
448    IF ( momentum_advec == 'pw-scheme' )  THEN
449       WRITE ( io, 113 )
450    ELSEIF (momentum_advec == 'ws-scheme' )  THEN
451       WRITE ( io, 503 )
452    ENDIF
453    IF ( scalar_advec == 'pw-scheme' )  THEN
454       WRITE ( io, 116 )
455    ELSEIF ( scalar_advec == 'ws-scheme' )  THEN
456       WRITE ( io, 504 )
457    ELSEIF ( scalar_advec == 'ws-scheme-mono' )  THEN
458       WRITE ( io, 513 )
459    ELSE
460       WRITE ( io, 118 )
461    ENDIF
462
463    WRITE ( io, 139 )  TRIM( loop_optimization )
464
465    IF ( galilei_transformation )  THEN
466       IF ( use_ug_for_galilei_tr )  THEN
467          char1 = '0.6 * geostrophic wind'
468       ELSE
469          char1 = 'mean wind in model domain'
470       ENDIF
471       IF ( simulated_time_at_begin == simulated_time )  THEN
472          char2 = 'at the start of the run'
473       ELSE
474          char2 = 'at the end of the run'
475       ENDIF
476       WRITE ( io, 119 )  TRIM( char1 ), TRIM( char2 ),                        &
477                          advected_distance_x/1000.0_wp,                       &
478                          advected_distance_y/1000.0_wp
479    ENDIF
480    WRITE ( io, 122 )  timestep_scheme
481    IF ( use_upstream_for_tke )  WRITE ( io, 143 )
482    IF ( rayleigh_damping_factor /= 0.0_wp )  THEN
483       IF ( .NOT. ocean )  THEN
484          WRITE ( io, 123 )  'above', rayleigh_damping_height, &
485               rayleigh_damping_factor
486       ELSE
487          WRITE ( io, 123 )  'below', rayleigh_damping_height, &
488               rayleigh_damping_factor
489       ENDIF
490    ENDIF
491    IF ( neutral )  WRITE ( io, 131 )  pt_surface
492    IF ( humidity )  THEN
493       IF ( .NOT. cloud_physics )  THEN
494          WRITE ( io, 129 )
495       ELSE
496          WRITE ( io, 130 )
497       ENDIF
498    ENDIF
499    IF ( passive_scalar )  WRITE ( io, 134 )
500    IF ( conserve_volume_flow )  THEN
501       WRITE ( io, 150 )  conserve_volume_flow_mode
502       IF ( TRIM( conserve_volume_flow_mode ) == 'bulk_velocity' )  THEN
503          WRITE ( io, 151 )  u_bulk, v_bulk
504       ENDIF
505    ELSEIF ( dp_external )  THEN
506       IF ( dp_smooth )  THEN
507          WRITE ( io, 152 )  dpdxy, dp_level_b, ', vertically smoothed.'
508       ELSE
509          WRITE ( io, 152 )  dpdxy, dp_level_b, '.'
510       ENDIF
511    ENDIF
512    WRITE ( io, 99 )
513
514!
515!-- Runtime and timestep information
516    WRITE ( io, 200 )
517    IF ( .NOT. dt_fixed )  THEN
518       WRITE ( io, 201 )  dt_max, cfl_factor
519    ELSE
520       WRITE ( io, 202 )  dt
521    ENDIF
522    WRITE ( io, 203 )  simulated_time_at_begin, end_time
523
524    IF ( time_restart /= 9999999.9_wp  .AND. &
525         simulated_time_at_begin == simulated_time )  THEN
526       IF ( dt_restart == 9999999.9_wp )  THEN
527          WRITE ( io, 204 )  ' Restart at:       ',time_restart
528       ELSE
529          WRITE ( io, 205 )  ' Restart at:       ',time_restart, dt_restart
530       ENDIF
531    ENDIF
532
533    IF ( simulated_time_at_begin /= simulated_time )  THEN
534       i = MAX ( log_point_s(10)%counts, 1 )
535       IF ( ( simulated_time - simulated_time_at_begin ) == 0.0_wp )  THEN
536          cpuseconds_per_simulated_second = 0.0_wp
537       ELSE
538          cpuseconds_per_simulated_second = log_point_s(10)%sum / &
539                                            ( simulated_time -    &
540                                              simulated_time_at_begin )
541       ENDIF
542       WRITE ( io, 206 )  simulated_time, log_point_s(10)%sum,      &
543                          log_point_s(10)%sum / REAL( i, KIND=wp ), &
544                          cpuseconds_per_simulated_second
545       IF ( time_restart /= 9999999.9_wp  .AND.  time_restart < end_time )  THEN
546          IF ( dt_restart == 9999999.9_wp )  THEN
547             WRITE ( io, 204 )  ' Next restart at:     ',time_restart
548          ELSE
549             WRITE ( io, 205 )  ' Next restart at:     ',time_restart, dt_restart
550          ENDIF
551       ENDIF
552    ENDIF
553
554
555!
556!-- Start time for coupled runs, if independent precursor runs for atmosphere
557!-- and ocean are used or have been used. In this case, coupling_start_time
558!-- defines the time when the coupling is switched on.
559    IF ( coupling_start_time /= 0.0_wp )  THEN
560       WRITE ( io, 207 )  coupling_start_time
561    ENDIF
562
563!
564!-- Computational grid
565    IF ( .NOT. ocean )  THEN
566       WRITE ( io, 250 )  dx, dy, dz, (nx+1)*dx, (ny+1)*dy, zu(nzt+1)
567       IF ( dz_stretch_level_index < nzt+1 )  THEN
568          WRITE ( io, 252 )  dz_stretch_level, dz_stretch_level_index, &
569                             dz_stretch_factor, dz_max
570       ENDIF
571    ELSE
572       WRITE ( io, 250 )  dx, dy, dz, (nx+1)*dx, (ny+1)*dy, zu(0)
573       IF ( dz_stretch_level_index > 0 )  THEN
574          WRITE ( io, 252 )  dz_stretch_level, dz_stretch_level_index, &
575                             dz_stretch_factor, dz_max
576       ENDIF
577    ENDIF
578    WRITE ( io, 254 )  nx, ny, nzt+1, MIN( nnx, nx+1 ), MIN( nny, ny+1 ), &
579                       MIN( nnz+2, nzt+2 )
580    IF ( sloping_surface )  WRITE ( io, 260 )  alpha_surface
581
582!
583!-- Large scale forcing and nudging
584    WRITE ( io, 160 )
585    IF ( large_scale_forcing )  THEN
586       WRITE ( io, 162 )
587       WRITE ( io, 163 )
588
589       IF ( large_scale_subsidence )  THEN
590          IF ( .NOT. use_subsidence_tendencies )  THEN
591             WRITE ( io, 164 )
592          ELSE
593             WRITE ( io, 165 )
594          ENDIF
595       ENDIF
596
597       IF ( bc_pt_b == 'dirichlet' )  THEN
598          WRITE ( io, 180 )
599       ELSEIF ( bc_pt_b == 'neumann' )  THEN
600          WRITE ( io, 181 )
601       ENDIF
602
603       IF ( bc_q_b == 'dirichlet' )  THEN
604          WRITE ( io, 182 )
605       ELSEIF ( bc_q_b == 'neumann' )  THEN
606          WRITE ( io, 183 )
607       ENDIF
608
609       WRITE ( io, 167 )
610       IF ( nudging )  THEN
611          WRITE ( io, 170 )
612       ENDIF
613    ELSE
614       WRITE ( io, 161 )
615       WRITE ( io, 171 )
616    ENDIF
617    IF ( large_scale_subsidence )  THEN
618       WRITE ( io, 168 )
619       WRITE ( io, 169 )
620    ENDIF
621
622!
623!-- Profile for the large scale vertial velocity
624!-- Building output strings, starting with surface value
625    IF ( large_scale_subsidence )  THEN
626       temperatures = '   0.0'
627       gradients = '------'
628       slices = '     0'
629       coordinates = '   0.0'
630       i = 1
631       DO  WHILE ( subs_vertical_gradient_level_i(i) /= -9999 )
632
633          WRITE (coor_chr,'(E10.2,7X)')  &
634                                w_subs(subs_vertical_gradient_level_i(i))
635          temperatures = TRIM( temperatures ) // ' ' // TRIM( coor_chr )
636
637          WRITE (coor_chr,'(E10.2,7X)')  subs_vertical_gradient(i)
638          gradients = TRIM( gradients ) // ' ' // TRIM( coor_chr )
639
640          WRITE (coor_chr,'(I10,7X)')  subs_vertical_gradient_level_i(i)
641          slices = TRIM( slices ) // ' ' // TRIM( coor_chr )
642
643          WRITE (coor_chr,'(F10.2,7X)')  subs_vertical_gradient_level(i)
644          coordinates = TRIM( coordinates ) // ' '  // TRIM( coor_chr )
645
646          IF ( i == 10 )  THEN
647             EXIT
648          ELSE
649             i = i + 1
650          ENDIF
651
652       ENDDO
653
654 
655       IF ( .NOT. large_scale_forcing )  THEN
656          WRITE ( io, 426 )  TRIM( coordinates ), TRIM( temperatures ), &
657                             TRIM( gradients ), TRIM( slices )
658       ENDIF
659
660
661    ENDIF
662
663!-- Profile of the geostrophic wind (component ug)
664!-- Building output strings
665    WRITE ( ugcomponent, '(F6.2)' )  ug_surface
666    gradients = '------'
667    slices = '     0'
668    coordinates = '   0.0'
669    i = 1
670    DO  WHILE ( ug_vertical_gradient_level_ind(i) /= -9999 )
671     
672       WRITE (coor_chr,'(F6.2,1X)')  ug(ug_vertical_gradient_level_ind(i))
673       ugcomponent = TRIM( ugcomponent ) // '  ' // TRIM( coor_chr )
674
675       WRITE (coor_chr,'(F6.2,1X)')  ug_vertical_gradient(i)
676       gradients = TRIM( gradients ) // '  ' // TRIM( coor_chr )
677
678       WRITE (coor_chr,'(I6,1X)')  ug_vertical_gradient_level_ind(i)
679       slices = TRIM( slices ) // '  ' // TRIM( coor_chr )
680
681       WRITE (coor_chr,'(F6.1,1X)')  ug_vertical_gradient_level(i)
682       coordinates = TRIM( coordinates ) // '  ' // TRIM( coor_chr )
683
684       IF ( i == 10 )  THEN
685          EXIT
686       ELSE
687          i = i + 1
688       ENDIF
689
690    ENDDO
691
692    IF ( .NOT. large_scale_forcing )  THEN
693       WRITE ( io, 423 )  TRIM( coordinates ), TRIM( ugcomponent ), &
694                          TRIM( gradients ), TRIM( slices )
695    ENDIF
696
697!-- Profile of the geostrophic wind (component vg)
698!-- Building output strings
699    WRITE ( vgcomponent, '(F6.2)' )  vg_surface
700    gradients = '------'
701    slices = '     0'
702    coordinates = '   0.0'
703    i = 1
704    DO  WHILE ( vg_vertical_gradient_level_ind(i) /= -9999 )
705
706       WRITE (coor_chr,'(F6.2,1X)')  vg(vg_vertical_gradient_level_ind(i))
707       vgcomponent = TRIM( vgcomponent ) // '  ' // TRIM( coor_chr )
708
709       WRITE (coor_chr,'(F6.2,1X)')  vg_vertical_gradient(i)
710       gradients = TRIM( gradients ) // '  ' // TRIM( coor_chr )
711
712       WRITE (coor_chr,'(I6,1X)')  vg_vertical_gradient_level_ind(i)
713       slices = TRIM( slices ) // '  ' // TRIM( coor_chr )
714
715       WRITE (coor_chr,'(F6.1,1X)')  vg_vertical_gradient_level(i)
716       coordinates = TRIM( coordinates ) // '  ' // TRIM( coor_chr )
717
718       IF ( i == 10 )  THEN
719          EXIT
720       ELSE
721          i = i + 1
722       ENDIF
723 
724    ENDDO
725
726    IF ( .NOT. large_scale_forcing )  THEN
727       WRITE ( io, 424 )  TRIM( coordinates ), TRIM( vgcomponent ), &
728                          TRIM( gradients ), TRIM( slices )
729    ENDIF
730
731!
732!-- Topography
733    WRITE ( io, 270 )  topography
734    SELECT CASE ( TRIM( topography ) )
735
736       CASE ( 'flat' )
737          ! no actions necessary
738
739       CASE ( 'single_building' )
740          blx = INT( building_length_x / dx )
741          bly = INT( building_length_y / dy )
742          bh  = INT( building_height / dz )
743
744          IF ( building_wall_left == 9999999.9_wp )  THEN
745             building_wall_left = ( nx + 1 - blx ) / 2 * dx
746          ENDIF
747          bxl = INT ( building_wall_left / dx + 0.5_wp )
748          bxr = bxl + blx
749
750          IF ( building_wall_south == 9999999.9_wp )  THEN
751             building_wall_south = ( ny + 1 - bly ) / 2 * dy
752          ENDIF
753          bys = INT ( building_wall_south / dy + 0.5_wp )
754          byn = bys + bly
755
756          WRITE ( io, 271 )  building_length_x, building_length_y, &
757                             building_height, bxl, bxr, bys, byn
758
759       CASE ( 'single_street_canyon' )
760          ch  = NINT( canyon_height / dz )
761          IF ( canyon_width_x /= 9999999.9_wp )  THEN
762!
763!--          Street canyon in y direction
764             cwx = NINT( canyon_width_x / dx )
765             IF ( canyon_wall_left == 9999999.9_wp )  THEN
766                canyon_wall_left = ( nx + 1 - cwx ) / 2 * dx
767             ENDIF
768             cxl = NINT( canyon_wall_left / dx )
769             cxr = cxl + cwx
770             WRITE ( io, 272 )  'y', canyon_height, ch, 'u', cxl, cxr
771
772          ELSEIF ( canyon_width_y /= 9999999.9_wp )  THEN
773!
774!--          Street canyon in x direction
775             cwy = NINT( canyon_width_y / dy )
776             IF ( canyon_wall_south == 9999999.9_wp )  THEN
777                canyon_wall_south = ( ny + 1 - cwy ) / 2 * dy
778             ENDIF
779             cys = NINT( canyon_wall_south / dy )
780             cyn = cys + cwy
781             WRITE ( io, 272 )  'x', canyon_height, ch, 'v', cys, cyn
782          ENDIF
783
784    END SELECT
785
786    IF ( TRIM( topography ) /= 'flat' )  THEN
787       IF ( TRIM( topography_grid_convention ) == ' ' )  THEN
788          IF ( TRIM( topography ) == 'single_building' .OR.  &
789               TRIM( topography ) == 'single_street_canyon' )  THEN
790             WRITE ( io, 278 )
791          ELSEIF ( TRIM( topography ) == 'read_from_file' )  THEN
792             WRITE ( io, 279 )
793          ENDIF
794       ELSEIF ( TRIM( topography_grid_convention ) == 'cell_edge' )  THEN
795          WRITE ( io, 278 )
796       ELSEIF ( TRIM( topography_grid_convention ) == 'cell_center' )  THEN
797          WRITE ( io, 279 )
798       ENDIF
799    ENDIF
800
801    IF ( plant_canopy )  THEN
802   
803       canopy_height = pch_index * dz
804
805       WRITE ( io, 280 )  canopy_mode, canopy_height, pch_index,               &
806                          canopy_drag_coeff
807       IF ( passive_scalar )  THEN
808          WRITE ( io, 281 )  leaf_scalar_exch_coeff,                           &
809                             leaf_surface_conc
810       ENDIF
811
812!
813!--    Heat flux at the top of vegetation
814       WRITE ( io, 282 )  cthf
815
816!
817!--    Leaf area density profile, calculated either from given vertical
818!--    gradients or from beta probability density function.
819       IF (  .NOT.  calc_beta_lad_profile )  THEN
820
821!--       Building output strings, starting with surface value
822          WRITE ( leaf_area_density, '(F6.4)' )  lad_surface
823          gradients = '------'
824          slices = '     0'
825          coordinates = '   0.0'
826          i = 1
827          DO  WHILE ( i < 11  .AND.  lad_vertical_gradient_level_ind(i) /= -9999 )
828
829             WRITE (coor_chr,'(F7.2)')  lad(lad_vertical_gradient_level_ind(i))
830             leaf_area_density = TRIM( leaf_area_density ) // ' ' // TRIM( coor_chr )
831 
832             WRITE (coor_chr,'(F7.2)')  lad_vertical_gradient(i)
833             gradients = TRIM( gradients ) // ' ' // TRIM( coor_chr )
834
835             WRITE (coor_chr,'(I7)')  lad_vertical_gradient_level_ind(i)
836             slices = TRIM( slices ) // ' ' // TRIM( coor_chr )
837
838             WRITE (coor_chr,'(F7.1)')  lad_vertical_gradient_level(i)
839             coordinates = TRIM( coordinates ) // ' '  // TRIM( coor_chr )
840
841             i = i + 1
842          ENDDO
843
844          WRITE ( io, 283 )  TRIM( coordinates ), TRIM( leaf_area_density ),              &
845                             TRIM( gradients ), TRIM( slices )
846
847       ELSE
848       
849          WRITE ( leaf_area_density, '(F6.4)' )  lad_surface
850          coordinates = '   0.0'
851         
852          DO  k = 1, pch_index
853
854             WRITE (coor_chr,'(F7.2)')  lad(k)
855             leaf_area_density = TRIM( leaf_area_density ) // ' ' // TRIM( coor_chr )
856 
857             WRITE (coor_chr,'(F7.1)')  zu(k)
858             coordinates = TRIM( coordinates ) // ' '  // TRIM( coor_chr )
859
860          ENDDO       
861
862          WRITE ( io, 284 ) TRIM( coordinates ), TRIM( leaf_area_density ), alpha_lad,    &
863                            beta_lad, lai_beta
864
865       ENDIF 
866
867    ENDIF
868
869
870    IF ( land_surface )  THEN
871
872       temperatures = ''
873       gradients    = '' ! use for humidity here
874       coordinates  = '' ! use for height
875       roots        = '' ! use for root fraction
876       slices       = '' ! use for index
877
878       i = 1
879       DO i = nzb_soil, nzt_soil
880          WRITE (coor_chr,'(F10.2,7X)') soil_temperature(i)
881          temperatures = TRIM( temperatures ) // ' ' // TRIM( coor_chr )
882
883          WRITE (coor_chr,'(F10.2,7X)') soil_moisture(i)
884          gradients = TRIM( gradients ) // ' ' // TRIM( coor_chr )
885
886          WRITE (coor_chr,'(F10.2,7X)')  - zs(i)
887          coordinates = TRIM( coordinates ) // ' '  // TRIM( coor_chr )
888
889          WRITE (coor_chr,'(F10.2,7X)')  root_fraction(i)
890          roots = TRIM( roots ) // ' '  // TRIM( coor_chr )
891
892          WRITE (coor_chr,'(I10,7X)')  i
893          slices = TRIM( slices ) // ' '  // TRIM( coor_chr )
894
895
896       ENDDO
897
898!
899!--    Write land surface model header
900       WRITE( io, 419 )
901       IF ( conserve_water_content )  THEN
902          WRITE( io, 440 )
903       ELSE
904          WRITE( io, 441 )
905       ENDIF
906
907       IF ( dewfall )  THEN
908          WRITE( io, 442 )
909       ELSE
910          WRITE( io, 443 )
911       ENDIF
912
913       WRITE( io, 438 ) veg_type_name(veg_type), soil_type_name(soil_type)
914       WRITE( io, 439 ) TRIM( coordinates ), TRIM( temperatures ),             &
915                        TRIM( gradients ), TRIM( roots ), TRIM( slices )
916
917
918    ENDIF
919
920    IF ( radiation )  THEN
921!
922!--    Write land surface model header
923       WRITE( io, 444 )
924
925       IF ( radiation_scheme == "constant" )  THEN
926          WRITE( io, 445 ) net_radiation
927       ELSEIF ( radiation_scheme == "clear-sky" )  THEN
928          WRITE( io, 446 )
929       ELSE
930          WRITE( io, 447 ) radiation_scheme
931       ENDIF
932
933       WRITE( io, 448 ) albedo
934       WRITE( io, 449 ) dt_radiation
935
936    ENDIF
937
938
939!
940!-- Boundary conditions
941    IF ( ibc_p_b == 0 )  THEN
942       runten = 'p(0)     = 0      |'
943    ELSEIF ( ibc_p_b == 1 )  THEN
944       runten = 'p(0)     = p(1)   |'
945    ENDIF
946    IF ( ibc_p_t == 0 )  THEN
947       roben  = 'p(nzt+1) = 0      |'
948    ELSE
949       roben  = 'p(nzt+1) = p(nzt) |'
950    ENDIF
951
952    IF ( ibc_uv_b == 0 )  THEN
953       runten = TRIM( runten ) // ' uv(0)     = -uv(1)                |'
954    ELSE
955       runten = TRIM( runten ) // ' uv(0)     = uv(1)                 |'
956    ENDIF
957    IF ( TRIM( bc_uv_t ) == 'dirichlet_0' )  THEN
958       roben  = TRIM( roben  ) // ' uv(nzt+1) = 0                     |'
959    ELSEIF ( ibc_uv_t == 0 )  THEN
960       roben  = TRIM( roben  ) // ' uv(nzt+1) = ug(nzt+1), vg(nzt+1)  |'
961    ELSE
962       roben  = TRIM( roben  ) // ' uv(nzt+1) = uv(nzt)               |'
963    ENDIF
964
965    IF ( ibc_pt_b == 0 )  THEN
966       IF ( land_surface )  THEN
967          runten = TRIM( runten ) // ' pt(0)     = from soil model'
968       ELSE
969          runten = TRIM( runten ) // ' pt(0)     = pt_surface'
970       ENDIF
971    ELSEIF ( ibc_pt_b == 1 )  THEN
972       runten = TRIM( runten ) // ' pt(0)     = pt(1)'
973    ELSEIF ( ibc_pt_b == 2 )  THEN
974       runten = TRIM( runten ) // ' pt(0)     = from coupled model'
975    ENDIF
976    IF ( ibc_pt_t == 0 )  THEN
977       roben  = TRIM( roben  ) // ' pt(nzt+1) = pt_top'
978    ELSEIF( ibc_pt_t == 1 )  THEN
979       roben  = TRIM( roben  ) // ' pt(nzt+1) = pt(nzt)'
980    ELSEIF( ibc_pt_t == 2 )  THEN
981       roben  = TRIM( roben  ) // ' pt(nzt+1) = pt(nzt) + dpt/dz_ini'
982
983    ENDIF
984
985    WRITE ( io, 300 )  runten, roben
986
987    IF ( .NOT. constant_diffusion )  THEN
988       IF ( ibc_e_b == 1 )  THEN
989          runten = 'e(0)     = e(1)'
990       ELSE
991          runten = 'e(0)     = e(1) = (u*/0.1)**2'
992       ENDIF
993       roben = 'e(nzt+1) = e(nzt) = e(nzt-1)'
994
995       WRITE ( io, 301 )  'e', runten, roben       
996
997    ENDIF
998
999    IF ( ocean )  THEN
1000       runten = 'sa(0)    = sa(1)'
1001       IF ( ibc_sa_t == 0 )  THEN
1002          roben =  'sa(nzt+1) = sa_surface'
1003       ELSE
1004          roben =  'sa(nzt+1) = sa(nzt)'
1005       ENDIF
1006       WRITE ( io, 301 ) 'sa', runten, roben
1007    ENDIF
1008
1009    IF ( humidity )  THEN
1010       IF ( ibc_q_b == 0 )  THEN
1011          IF ( land_surface )  THEN
1012             runten = 'q(0)     = from soil model'
1013          ELSE
1014             runten = 'q(0)     = q_surface'
1015          ENDIF
1016
1017       ELSE
1018          runten = 'q(0)     = q(1)'
1019       ENDIF
1020       IF ( ibc_q_t == 0 )  THEN
1021          roben =  'q(nzt)   = q_top'
1022       ELSE
1023          roben =  'q(nzt)   = q(nzt-1) + dq/dz'
1024       ENDIF
1025       WRITE ( io, 301 ) 'q', runten, roben
1026    ENDIF
1027
1028    IF ( passive_scalar )  THEN
1029       IF ( ibc_q_b == 0 )  THEN
1030          runten = 's(0)     = s_surface'
1031       ELSE
1032          runten = 's(0)     = s(1)'
1033       ENDIF
1034       IF ( ibc_q_t == 0 )  THEN
1035          roben =  's(nzt)   = s_top'
1036       ELSE
1037          roben =  's(nzt)   = s(nzt-1) + ds/dz'
1038       ENDIF
1039       WRITE ( io, 301 ) 's', runten, roben
1040    ENDIF
1041
1042    IF ( use_surface_fluxes )  THEN
1043       WRITE ( io, 303 )
1044       IF ( constant_heatflux )  THEN
1045          IF ( large_scale_forcing .AND. lsf_surf )  THEN
1046             WRITE ( io, 306 )  shf(0,0)
1047          ELSE
1048             WRITE ( io, 306 )  surface_heatflux
1049          ENDIF
1050          IF ( random_heatflux )  WRITE ( io, 307 )
1051       ENDIF
1052       IF ( humidity  .AND.  constant_waterflux )  THEN
1053          IF ( large_scale_forcing .AND. lsf_surf )  THEN
1054             WRITE ( io, 311 ) qsws(0,0)
1055          ELSE
1056             WRITE ( io, 311 ) surface_waterflux
1057          ENDIF
1058       ENDIF
1059       IF ( passive_scalar  .AND.  constant_waterflux )  THEN
1060          WRITE ( io, 313 ) surface_waterflux
1061       ENDIF
1062    ENDIF
1063
1064    IF ( use_top_fluxes )  THEN
1065       WRITE ( io, 304 )
1066       IF ( coupling_mode == 'uncoupled' )  THEN
1067          WRITE ( io, 320 )  top_momentumflux_u, top_momentumflux_v
1068          IF ( constant_top_heatflux )  THEN
1069             WRITE ( io, 306 )  top_heatflux
1070          ENDIF
1071       ELSEIF ( coupling_mode == 'ocean_to_atmosphere' )  THEN
1072          WRITE ( io, 316 )
1073       ENDIF
1074       IF ( ocean  .AND.  constant_top_salinityflux )  THEN
1075          WRITE ( io, 309 )  top_salinityflux
1076       ENDIF
1077       IF ( humidity  .OR.  passive_scalar )  THEN
1078          WRITE ( io, 315 )
1079       ENDIF
1080    ENDIF
1081
1082    IF ( prandtl_layer )  THEN
1083       WRITE ( io, 305 )  (zu(1)-zu(0)), roughness_length, &
1084                          z0h_factor*roughness_length, kappa, &
1085                          rif_min, rif_max
1086       IF ( .NOT. constant_heatflux )  WRITE ( io, 308 )
1087       IF ( humidity  .AND.  .NOT. constant_waterflux )  THEN
1088          WRITE ( io, 312 )
1089       ENDIF
1090       IF ( passive_scalar  .AND.  .NOT. constant_waterflux )  THEN
1091          WRITE ( io, 314 )
1092       ENDIF
1093    ELSE
1094       IF ( INDEX(initializing_actions, 'set_1d-model_profiles') /= 0 )  THEN
1095          WRITE ( io, 310 )  rif_min, rif_max
1096       ENDIF
1097    ENDIF
1098
1099    WRITE ( io, 317 )  bc_lr, bc_ns
1100    IF ( .NOT. bc_lr_cyc  .OR.  .NOT. bc_ns_cyc )  THEN
1101       WRITE ( io, 318 )  use_cmax, pt_damping_width, pt_damping_factor       
1102       IF ( turbulent_inflow )  THEN
1103          WRITE ( io, 319 )  recycling_width, recycling_plane, &
1104                             inflow_damping_height, inflow_damping_width
1105       ENDIF
1106    ENDIF
1107
1108!
1109!-- Initial Profiles
1110    WRITE ( io, 321 )
1111!
1112!-- Initial wind profiles
1113    IF ( u_profile(1) /= 9999999.9_wp )  WRITE ( io, 427 )
1114
1115!
1116!-- Initial temperature profile
1117!-- Building output strings, starting with surface temperature
1118    WRITE ( temperatures, '(F6.2)' )  pt_surface
1119    gradients = '------'
1120    slices = '     0'
1121    coordinates = '   0.0'
1122    i = 1
1123    DO  WHILE ( pt_vertical_gradient_level_ind(i) /= -9999 )
1124
1125       WRITE (coor_chr,'(F7.2)')  pt_init(pt_vertical_gradient_level_ind(i))
1126       temperatures = TRIM( temperatures ) // ' ' // TRIM( coor_chr )
1127
1128       WRITE (coor_chr,'(F7.2)')  pt_vertical_gradient(i)
1129       gradients = TRIM( gradients ) // ' ' // TRIM( coor_chr )
1130
1131       WRITE (coor_chr,'(I7)')  pt_vertical_gradient_level_ind(i)
1132       slices = TRIM( slices ) // ' ' // TRIM( coor_chr )
1133
1134       WRITE (coor_chr,'(F7.1)')  pt_vertical_gradient_level(i)
1135       coordinates = TRIM( coordinates ) // ' '  // TRIM( coor_chr )
1136
1137       IF ( i == 10 )  THEN
1138          EXIT
1139       ELSE
1140          i = i + 1
1141       ENDIF
1142
1143    ENDDO
1144
1145    IF ( .NOT. nudging )  THEN
1146       WRITE ( io, 420 )  TRIM( coordinates ), TRIM( temperatures ), &
1147                          TRIM( gradients ), TRIM( slices )
1148    ELSE
1149       WRITE ( io, 428 ) 
1150    ENDIF
1151
1152!
1153!-- Initial humidity profile
1154!-- Building output strings, starting with surface humidity
1155    IF ( humidity  .OR.  passive_scalar )  THEN
1156       WRITE ( temperatures, '(E8.1)' )  q_surface
1157       gradients = '--------'
1158       slices = '       0'
1159       coordinates = '     0.0'
1160       i = 1
1161       DO  WHILE ( q_vertical_gradient_level_ind(i) /= -9999 )
1162         
1163          WRITE (coor_chr,'(E8.1,4X)')  q_init(q_vertical_gradient_level_ind(i))
1164          temperatures = TRIM( temperatures ) // '  ' // TRIM( coor_chr )
1165
1166          WRITE (coor_chr,'(E8.1,4X)')  q_vertical_gradient(i)
1167          gradients = TRIM( gradients ) // '  ' // TRIM( coor_chr )
1168         
1169          WRITE (coor_chr,'(I8,4X)')  q_vertical_gradient_level_ind(i)
1170          slices = TRIM( slices ) // '  ' // TRIM( coor_chr )
1171         
1172          WRITE (coor_chr,'(F8.1,4X)')  q_vertical_gradient_level(i)
1173          coordinates = TRIM( coordinates ) // '  '  // TRIM( coor_chr )
1174
1175          IF ( i == 10 )  THEN
1176             EXIT
1177          ELSE
1178             i = i + 1
1179          ENDIF
1180
1181       ENDDO
1182
1183       IF ( humidity )  THEN
1184          IF ( .NOT. nudging )  THEN
1185             WRITE ( io, 421 )  TRIM( coordinates ), TRIM( temperatures ), &
1186                                TRIM( gradients ), TRIM( slices )
1187          ENDIF
1188       ELSE
1189          WRITE ( io, 422 )  TRIM( coordinates ), TRIM( temperatures ), &
1190                             TRIM( gradients ), TRIM( slices )
1191       ENDIF
1192    ENDIF
1193
1194!
1195!-- Initial salinity profile
1196!-- Building output strings, starting with surface salinity
1197    IF ( ocean )  THEN
1198       WRITE ( temperatures, '(F6.2)' )  sa_surface
1199       gradients = '------'
1200       slices = '     0'
1201       coordinates = '   0.0'
1202       i = 1
1203       DO  WHILE ( sa_vertical_gradient_level_ind(i) /= -9999 )
1204
1205          WRITE (coor_chr,'(F7.2)')  sa_init(sa_vertical_gradient_level_ind(i))
1206          temperatures = TRIM( temperatures ) // ' ' // TRIM( coor_chr )
1207
1208          WRITE (coor_chr,'(F7.2)')  sa_vertical_gradient(i)
1209          gradients = TRIM( gradients ) // ' ' // TRIM( coor_chr )
1210
1211          WRITE (coor_chr,'(I7)')  sa_vertical_gradient_level_ind(i)
1212          slices = TRIM( slices ) // ' ' // TRIM( coor_chr )
1213
1214          WRITE (coor_chr,'(F7.1)')  sa_vertical_gradient_level(i)
1215          coordinates = TRIM( coordinates ) // ' '  // TRIM( coor_chr )
1216
1217          IF ( i == 10 )  THEN
1218             EXIT
1219          ELSE
1220             i = i + 1
1221          ENDIF
1222
1223       ENDDO
1224
1225       WRITE ( io, 425 )  TRIM( coordinates ), TRIM( temperatures ), &
1226                          TRIM( gradients ), TRIM( slices )
1227    ENDIF
1228
1229
1230!
1231!-- Listing of 1D-profiles
1232    WRITE ( io, 325 )  dt_dopr_listing
1233    IF ( averaging_interval_pr /= 0.0_wp )  THEN
1234       WRITE ( io, 326 )  averaging_interval_pr, dt_averaging_input_pr
1235    ENDIF
1236
1237!
1238!-- DATA output
1239    WRITE ( io, 330 )
1240    IF ( averaging_interval_pr /= 0.0_wp )  THEN
1241       WRITE ( io, 326 )  averaging_interval_pr, dt_averaging_input_pr
1242    ENDIF
1243
1244!
1245!-- 1D-profiles
1246    dopr_chr = 'Profile:'
1247    IF ( dopr_n /= 0 )  THEN
1248       WRITE ( io, 331 )
1249
1250       output_format = ''
1251       output_format = output_format_netcdf
1252       WRITE ( io, 344 )  output_format
1253
1254       DO  i = 1, dopr_n
1255          dopr_chr = TRIM( dopr_chr ) // ' ' // TRIM( data_output_pr(i) ) // ','
1256          IF ( LEN_TRIM( dopr_chr ) >= 60 )  THEN
1257             WRITE ( io, 332 )  dopr_chr
1258             dopr_chr = '       :'
1259          ENDIF
1260       ENDDO
1261
1262       IF ( dopr_chr /= '' )  THEN
1263          WRITE ( io, 332 )  dopr_chr
1264       ENDIF
1265       WRITE ( io, 333 )  dt_dopr, averaging_interval_pr, dt_averaging_input_pr
1266       IF ( skip_time_dopr /= 0.0_wp )  WRITE ( io, 339 )  skip_time_dopr
1267    ENDIF
1268
1269!
1270!-- 2D-arrays
1271    DO  av = 0, 1
1272
1273       i = 1
1274       do2d_xy = ''
1275       do2d_xz = ''
1276       do2d_yz = ''
1277       DO  WHILE ( do2d(av,i) /= ' ' )
1278
1279          l = MAX( 2, LEN_TRIM( do2d(av,i) ) )
1280          do2d_mode = do2d(av,i)(l-1:l)
1281
1282          SELECT CASE ( do2d_mode )
1283             CASE ( 'xy' )
1284                ll = LEN_TRIM( do2d_xy )
1285                do2d_xy = do2d_xy(1:ll) // ' ' // do2d(av,i)(1:l-3) // ','
1286             CASE ( 'xz' )
1287                ll = LEN_TRIM( do2d_xz )
1288                do2d_xz = do2d_xz(1:ll) // ' ' // do2d(av,i)(1:l-3) // ','
1289             CASE ( 'yz' )
1290                ll = LEN_TRIM( do2d_yz )
1291                do2d_yz = do2d_yz(1:ll) // ' ' // do2d(av,i)(1:l-3) // ','
1292          END SELECT
1293
1294          i = i + 1
1295
1296       ENDDO
1297
1298       IF ( ( ( do2d_xy /= ''  .AND.  section(1,1) /= -9999 )  .OR.    &
1299              ( do2d_xz /= ''  .AND.  section(1,2) /= -9999 )  .OR.    &
1300              ( do2d_yz /= ''  .AND.  section(1,3) /= -9999 ) ) )  THEN
1301
1302          IF (  av == 0 )  THEN
1303             WRITE ( io, 334 )  ''
1304          ELSE
1305             WRITE ( io, 334 )  '(time-averaged)'
1306          ENDIF
1307
1308          IF ( do2d_at_begin )  THEN
1309             begin_chr = 'and at the start'
1310          ELSE
1311             begin_chr = ''
1312          ENDIF
1313
1314          output_format = ''
1315          output_format = output_format_netcdf
1316          WRITE ( io, 344 )  output_format
1317
1318          IF ( do2d_xy /= ''  .AND.  section(1,1) /= -9999 )  THEN
1319             i = 1
1320             slices = '/'
1321             coordinates = '/'
1322!
1323!--          Building strings with index and coordinate information of the
1324!--          slices
1325             DO  WHILE ( section(i,1) /= -9999 )
1326
1327                WRITE (section_chr,'(I5)')  section(i,1)
1328                section_chr = ADJUSTL( section_chr )
1329                slices = TRIM( slices ) // TRIM( section_chr ) // '/'
1330
1331                IF ( section(i,1) == -1 )  THEN
1332                   WRITE (coor_chr,'(F10.1)')  -1.0_wp
1333                ELSE
1334                   WRITE (coor_chr,'(F10.1)')  zu(section(i,1))
1335                ENDIF
1336                coor_chr = ADJUSTL( coor_chr )
1337                coordinates = TRIM( coordinates ) // TRIM( coor_chr ) // '/'
1338
1339                i = i + 1
1340             ENDDO
1341             IF ( av == 0 )  THEN
1342                WRITE ( io, 335 )  'XY', do2d_xy, dt_do2d_xy, &
1343                                   TRIM( begin_chr ), 'k', TRIM( slices ), &
1344                                   TRIM( coordinates )
1345                IF ( skip_time_do2d_xy /= 0.0_wp )  THEN
1346                   WRITE ( io, 339 )  skip_time_do2d_xy
1347                ENDIF
1348             ELSE
1349                WRITE ( io, 342 )  'XY', do2d_xy, dt_data_output_av, &
1350                                   TRIM( begin_chr ), averaging_interval, &
1351                                   dt_averaging_input, 'k', TRIM( slices ), &
1352                                   TRIM( coordinates )
1353                IF ( skip_time_data_output_av /= 0.0_wp )  THEN
1354                   WRITE ( io, 339 )  skip_time_data_output_av
1355                ENDIF
1356             ENDIF
1357             IF ( netcdf_data_format > 4 )  THEN
1358                WRITE ( io, 352 )  ntdim_2d_xy(av)
1359             ELSE
1360                WRITE ( io, 353 )
1361             ENDIF
1362          ENDIF
1363
1364          IF ( do2d_xz /= ''  .AND.  section(1,2) /= -9999 )  THEN
1365             i = 1
1366             slices = '/'
1367             coordinates = '/'
1368!
1369!--          Building strings with index and coordinate information of the
1370!--          slices
1371             DO  WHILE ( section(i,2) /= -9999 )
1372
1373                WRITE (section_chr,'(I5)')  section(i,2)
1374                section_chr = ADJUSTL( section_chr )
1375                slices = TRIM( slices ) // TRIM( section_chr ) // '/'
1376
1377                WRITE (coor_chr,'(F10.1)')  section(i,2) * dy
1378                coor_chr = ADJUSTL( coor_chr )
1379                coordinates = TRIM( coordinates ) // TRIM( coor_chr ) // '/'
1380
1381                i = i + 1
1382             ENDDO
1383             IF ( av == 0 )  THEN
1384                WRITE ( io, 335 )  'XZ', do2d_xz, dt_do2d_xz, &
1385                                   TRIM( begin_chr ), 'j', TRIM( slices ), &
1386                                   TRIM( coordinates )
1387                IF ( skip_time_do2d_xz /= 0.0_wp )  THEN
1388                   WRITE ( io, 339 )  skip_time_do2d_xz
1389                ENDIF
1390             ELSE
1391                WRITE ( io, 342 )  'XZ', do2d_xz, dt_data_output_av, &
1392                                   TRIM( begin_chr ), averaging_interval, &
1393                                   dt_averaging_input, 'j', TRIM( slices ), &
1394                                   TRIM( coordinates )
1395                IF ( skip_time_data_output_av /= 0.0_wp )  THEN
1396                   WRITE ( io, 339 )  skip_time_data_output_av
1397                ENDIF
1398             ENDIF
1399             IF ( netcdf_data_format > 4 )  THEN
1400                WRITE ( io, 352 )  ntdim_2d_xz(av)
1401             ELSE
1402                WRITE ( io, 353 )
1403             ENDIF
1404          ENDIF
1405
1406          IF ( do2d_yz /= ''  .AND.  section(1,3) /= -9999 )  THEN
1407             i = 1
1408             slices = '/'
1409             coordinates = '/'
1410!
1411!--          Building strings with index and coordinate information of the
1412!--          slices
1413             DO  WHILE ( section(i,3) /= -9999 )
1414
1415                WRITE (section_chr,'(I5)')  section(i,3)
1416                section_chr = ADJUSTL( section_chr )
1417                slices = TRIM( slices ) // TRIM( section_chr ) // '/'
1418
1419                WRITE (coor_chr,'(F10.1)')  section(i,3) * dx
1420                coor_chr = ADJUSTL( coor_chr )
1421                coordinates = TRIM( coordinates ) // TRIM( coor_chr ) // '/'
1422
1423                i = i + 1
1424             ENDDO
1425             IF ( av == 0 )  THEN
1426                WRITE ( io, 335 )  'YZ', do2d_yz, dt_do2d_yz, &
1427                                   TRIM( begin_chr ), 'i', TRIM( slices ), &
1428                                   TRIM( coordinates )
1429                IF ( skip_time_do2d_yz /= 0.0_wp )  THEN
1430                   WRITE ( io, 339 )  skip_time_do2d_yz
1431                ENDIF
1432             ELSE
1433                WRITE ( io, 342 )  'YZ', do2d_yz, dt_data_output_av, &
1434                                   TRIM( begin_chr ), averaging_interval, &
1435                                   dt_averaging_input, 'i', TRIM( slices ), &
1436                                   TRIM( coordinates )
1437                IF ( skip_time_data_output_av /= 0.0_wp )  THEN
1438                   WRITE ( io, 339 )  skip_time_data_output_av
1439                ENDIF
1440             ENDIF
1441             IF ( netcdf_data_format > 4 )  THEN
1442                WRITE ( io, 352 )  ntdim_2d_yz(av)
1443             ELSE
1444                WRITE ( io, 353 )
1445             ENDIF
1446          ENDIF
1447
1448       ENDIF
1449
1450    ENDDO
1451
1452!
1453!-- 3d-arrays
1454    DO  av = 0, 1
1455
1456       i = 1
1457       do3d_chr = ''
1458       DO  WHILE ( do3d(av,i) /= ' ' )
1459
1460          do3d_chr = TRIM( do3d_chr ) // ' ' // TRIM( do3d(av,i) ) // ','
1461          i = i + 1
1462
1463       ENDDO
1464
1465       IF ( do3d_chr /= '' )  THEN
1466          IF ( av == 0 )  THEN
1467             WRITE ( io, 336 )  ''
1468          ELSE
1469             WRITE ( io, 336 )  '(time-averaged)'
1470          ENDIF
1471
1472          output_format = output_format_netcdf
1473          WRITE ( io, 344 )  output_format
1474
1475          IF ( do3d_at_begin )  THEN
1476             begin_chr = 'and at the start'
1477          ELSE
1478             begin_chr = ''
1479          ENDIF
1480          IF ( av == 0 )  THEN
1481             WRITE ( io, 337 )  do3d_chr, dt_do3d, TRIM( begin_chr ), &
1482                                zu(nz_do3d), nz_do3d
1483          ELSE
1484             WRITE ( io, 343 )  do3d_chr, dt_data_output_av,           &
1485                                TRIM( begin_chr ), averaging_interval, &
1486                                dt_averaging_input, zu(nz_do3d), nz_do3d
1487          ENDIF
1488
1489          IF ( netcdf_data_format > 4 )  THEN
1490             WRITE ( io, 352 )  ntdim_3d(av)
1491          ELSE
1492             WRITE ( io, 353 )
1493          ENDIF
1494
1495          IF ( av == 0 )  THEN
1496             IF ( skip_time_do3d /= 0.0_wp )  THEN
1497                WRITE ( io, 339 )  skip_time_do3d
1498             ENDIF
1499          ELSE
1500             IF ( skip_time_data_output_av /= 0.0_wp )  THEN
1501                WRITE ( io, 339 )  skip_time_data_output_av
1502             ENDIF
1503          ENDIF
1504
1505       ENDIF
1506
1507    ENDDO
1508
1509!
1510!-- masked arrays
1511    IF ( masks > 0 )  WRITE ( io, 345 )  &
1512         mask_scale_x, mask_scale_y, mask_scale_z
1513    DO  mid = 1, masks
1514       DO  av = 0, 1
1515
1516          i = 1
1517          domask_chr = ''
1518          DO  WHILE ( domask(mid,av,i) /= ' ' )
1519             domask_chr = TRIM( domask_chr ) // ' ' //  &
1520                          TRIM( domask(mid,av,i) ) // ','
1521             i = i + 1
1522          ENDDO
1523
1524          IF ( domask_chr /= '' )  THEN
1525             IF ( av == 0 )  THEN
1526                WRITE ( io, 346 )  '', mid
1527             ELSE
1528                WRITE ( io, 346 )  ' (time-averaged)', mid
1529             ENDIF
1530
1531             output_format = output_format_netcdf
1532!--          Parallel output not implemented for mask data, hence
1533!--          output_format must be adjusted.
1534             IF ( netcdf_data_format == 5 ) output_format = 'netCDF4/HDF5'
1535             IF ( netcdf_data_format == 6 ) output_format = 'netCDF4/HDF5 classic'
1536             WRITE ( io, 344 )  output_format
1537
1538             IF ( av == 0 )  THEN
1539                WRITE ( io, 347 )  domask_chr, dt_domask(mid)
1540             ELSE
1541                WRITE ( io, 348 )  domask_chr, dt_data_output_av, &
1542                                   averaging_interval, dt_averaging_input
1543             ENDIF
1544
1545             IF ( av == 0 )  THEN
1546                IF ( skip_time_domask(mid) /= 0.0_wp )  THEN
1547                   WRITE ( io, 339 )  skip_time_domask(mid)
1548                ENDIF
1549             ELSE
1550                IF ( skip_time_data_output_av /= 0.0_wp )  THEN
1551                   WRITE ( io, 339 )  skip_time_data_output_av
1552                ENDIF
1553             ENDIF
1554!
1555!--          output locations
1556             DO  dim = 1, 3
1557                IF ( mask(mid,dim,1) >= 0.0_wp )  THEN
1558                   count = 0
1559                   DO  WHILE ( mask(mid,dim,count+1) >= 0.0_wp )
1560                      count = count + 1
1561                   ENDDO
1562                   WRITE ( io, 349 )  dir(dim), dir(dim), mid, dir(dim), &
1563                                      mask(mid,dim,:count)
1564                ELSEIF ( mask_loop(mid,dim,1) < 0.0_wp .AND.  &
1565                         mask_loop(mid,dim,2) < 0.0_wp .AND.  &
1566                         mask_loop(mid,dim,3) == 0.0_wp )  THEN
1567                   WRITE ( io, 350 )  dir(dim), dir(dim)
1568                ELSEIF ( mask_loop(mid,dim,3) == 0.0_wp )  THEN
1569                   WRITE ( io, 351 )  dir(dim), dir(dim), mid, dir(dim), &
1570                                      mask_loop(mid,dim,1:2)
1571                ELSE
1572                   WRITE ( io, 351 )  dir(dim), dir(dim), mid, dir(dim), &
1573                                      mask_loop(mid,dim,1:3)
1574                ENDIF
1575             ENDDO
1576          ENDIF
1577
1578       ENDDO
1579    ENDDO
1580
1581!
1582!-- Timeseries
1583    IF ( dt_dots /= 9999999.9_wp )  THEN
1584       WRITE ( io, 340 )
1585
1586       output_format = output_format_netcdf
1587       WRITE ( io, 344 )  output_format
1588       WRITE ( io, 341 )  dt_dots
1589    ENDIF
1590
1591#if defined( __dvrp_graphics )
1592!
1593!-- Dvrp-output
1594    IF ( dt_dvrp /= 9999999.9_wp )  THEN
1595       WRITE ( io, 360 )  dt_dvrp, TRIM( dvrp_output ), TRIM( dvrp_host ), &
1596                          TRIM( dvrp_username ), TRIM( dvrp_directory )
1597       i = 1
1598       l = 0
1599       m = 0
1600       DO WHILE ( mode_dvrp(i) /= ' ' )
1601          IF ( mode_dvrp(i)(1:10) == 'isosurface' )  THEN
1602             READ ( mode_dvrp(i), '(10X,I2)' )  j
1603             l = l + 1
1604             IF ( do3d(0,j) /= ' ' )  THEN
1605                WRITE ( io, 361 )  TRIM( do3d(0,j) ), threshold(l), &
1606                                   isosurface_color(:,l)
1607             ENDIF
1608          ELSEIF ( mode_dvrp(i)(1:6) == 'slicer' )  THEN
1609             READ ( mode_dvrp(i), '(6X,I2)' )  j
1610             m = m + 1
1611             IF ( do2d(0,j) /= ' ' )  THEN
1612                WRITE ( io, 362 )  TRIM( do2d(0,j) ), &
1613                                   slicer_range_limits_dvrp(:,m)
1614             ENDIF
1615          ELSEIF ( mode_dvrp(i)(1:9) == 'particles' )  THEN
1616             WRITE ( io, 363 )  dvrp_psize
1617             IF ( particle_dvrpsize /= 'none' )  THEN
1618                WRITE ( io, 364 )  'size', TRIM( particle_dvrpsize ), &
1619                                   dvrpsize_interval
1620             ENDIF
1621             IF ( particle_color /= 'none' )  THEN
1622                WRITE ( io, 364 )  'color', TRIM( particle_color ), &
1623                                   color_interval
1624             ENDIF
1625          ENDIF
1626          i = i + 1
1627       ENDDO
1628
1629       WRITE ( io, 365 )  groundplate_color, superelevation_x, &
1630                          superelevation_y, superelevation, clip_dvrp_l, &
1631                          clip_dvrp_r, clip_dvrp_s, clip_dvrp_n
1632
1633       IF ( TRIM( topography ) /= 'flat' )  THEN
1634          WRITE ( io, 366 )  topography_color
1635          IF ( cluster_size > 1 )  THEN
1636             WRITE ( io, 367 )  cluster_size
1637          ENDIF
1638       ENDIF
1639
1640    ENDIF
1641#endif
1642
1643#if defined( __spectra )
1644!
1645!-- Spectra output
1646    IF ( dt_dosp /= 9999999.9_wp )  THEN
1647       WRITE ( io, 370 )
1648
1649       output_format = output_format_netcdf
1650       WRITE ( io, 344 )  output_format
1651       WRITE ( io, 371 )  dt_dosp
1652       IF ( skip_time_dosp /= 0.0_wp )  WRITE ( io, 339 )  skip_time_dosp
1653       WRITE ( io, 372 )  ( data_output_sp(i), i = 1,10 ),     &
1654                          ( spectra_direction(i), i = 1,10 ),  &
1655                          ( comp_spectra_level(i), i = 1,100 ), &
1656                          ( plot_spectra_level(i), i = 1,100 ), &
1657                          averaging_interval_sp, dt_averaging_input_pr
1658    ENDIF
1659#endif
1660
1661    WRITE ( io, 99 )
1662
1663!
1664!-- Physical quantities
1665    WRITE ( io, 400 )
1666
1667!
1668!-- Geostrophic parameters
1669    IF ( radiation .AND. radiation_scheme /= 'constant' )  THEN
1670       WRITE ( io, 417 )  lambda
1671    ENDIF
1672    WRITE ( io, 410 )  phi, omega, f, fs
1673
1674!
1675!-- Other quantities
1676    WRITE ( io, 411 )  g
1677    IF ( radiation .AND. radiation_scheme /= 'constant' )  THEN
1678       WRITE ( io, 418 )  day_init, time_utc_init
1679    ENDIF
1680
1681    WRITE ( io, 412 )  TRIM( reference_state )
1682    IF ( use_single_reference_value )  THEN
1683       IF ( ocean )  THEN
1684          WRITE ( io, 413 )  prho_reference
1685       ELSE
1686          WRITE ( io, 414 )  pt_reference
1687       ENDIF
1688    ENDIF
1689
1690!
1691!-- Cloud physics parameters
1692    IF ( cloud_physics )  THEN
1693       WRITE ( io, 415 )
1694       WRITE ( io, 416 ) surface_pressure, r_d, rho_surface, cp, l_v
1695       IF ( icloud_scheme == 0 )  THEN
1696          WRITE ( io, 510 ) 1.0E-6_wp * nc_const
1697          IF ( precipitation )  WRITE ( io, 511 ) c_sedimentation
1698       ENDIF
1699    ENDIF
1700
1701!
1702!-- Cloud physcis parameters / quantities / numerical methods
1703    WRITE ( io, 430 )
1704    IF ( humidity .AND. .NOT. cloud_physics .AND. .NOT. cloud_droplets)  THEN
1705       WRITE ( io, 431 )
1706    ELSEIF ( humidity  .AND.  cloud_physics )  THEN
1707       WRITE ( io, 432 )
1708       IF ( cloud_top_radiation )  WRITE ( io, 132 )
1709       IF ( icloud_scheme == 1 )  THEN
1710          IF ( precipitation )  WRITE ( io, 133 )
1711       ELSEIF ( icloud_scheme == 0 )  THEN
1712          IF ( drizzle )  WRITE ( io, 506 )
1713          IF ( precipitation )  THEN
1714             WRITE ( io, 505 )
1715             IF ( turbulence )  WRITE ( io, 507 )
1716             IF ( ventilation_effect )  WRITE ( io, 508 )
1717             IF ( limiter_sedimentation )  WRITE ( io, 509 )
1718          ENDIF
1719       ENDIF
1720    ELSEIF ( humidity  .AND.  cloud_droplets )  THEN
1721       WRITE ( io, 433 )
1722       IF ( curvature_solution_effects )  WRITE ( io, 434 )
1723       IF ( collision_kernel /= 'none' )  THEN
1724          WRITE ( io, 435 )  TRIM( collision_kernel )
1725          IF ( collision_kernel(6:9) == 'fast' )  THEN
1726             WRITE ( io, 436 )  radius_classes, dissipation_classes
1727          ENDIF
1728       ELSE
1729          WRITE ( io, 437 )
1730       ENDIF
1731    ENDIF
1732
1733!
1734!-- LES / turbulence parameters
1735    WRITE ( io, 450 )
1736
1737!--
1738! ... LES-constants used must still be added here
1739!--
1740    IF ( constant_diffusion )  THEN
1741       WRITE ( io, 451 )  km_constant, km_constant/prandtl_number, &
1742                          prandtl_number
1743    ENDIF
1744    IF ( .NOT. constant_diffusion)  THEN
1745       IF ( e_init > 0.0_wp )  WRITE ( io, 455 )  e_init
1746       IF ( e_min > 0.0_wp )  WRITE ( io, 454 )  e_min
1747       IF ( wall_adjustment )  WRITE ( io, 453 )  wall_adjustment_factor
1748    ENDIF
1749
1750!
1751!-- Special actions during the run
1752    WRITE ( io, 470 )
1753    IF ( create_disturbances )  THEN
1754       WRITE ( io, 471 )  dt_disturb, disturbance_amplitude,                   &
1755                          zu(disturbance_level_ind_b), disturbance_level_ind_b,&
1756                          zu(disturbance_level_ind_t), disturbance_level_ind_t
1757       IF ( .NOT. bc_lr_cyc  .OR.  .NOT. bc_ns_cyc )  THEN
1758          WRITE ( io, 472 )  inflow_disturbance_begin, inflow_disturbance_end
1759       ELSE
1760          WRITE ( io, 473 )  disturbance_energy_limit
1761       ENDIF
1762       WRITE ( io, 474 )  TRIM( random_generator )
1763    ENDIF
1764    IF ( pt_surface_initial_change /= 0.0_wp )  THEN
1765       WRITE ( io, 475 )  pt_surface_initial_change
1766    ENDIF
1767    IF ( humidity  .AND.  q_surface_initial_change /= 0.0_wp )  THEN
1768       WRITE ( io, 476 )  q_surface_initial_change       
1769    ENDIF
1770    IF ( passive_scalar  .AND.  q_surface_initial_change /= 0.0_wp )  THEN
1771       WRITE ( io, 477 )  q_surface_initial_change       
1772    ENDIF
1773
1774    IF ( particle_advection )  THEN
1775!
1776!--    Particle attributes
1777       WRITE ( io, 480 )  particle_advection_start, dt_prel, bc_par_lr, &
1778                          bc_par_ns, bc_par_b, bc_par_t, particle_maximum_age, &
1779                          end_time_prel
1780       IF ( use_sgs_for_particles )  WRITE ( io, 488 )  dt_min_part
1781       IF ( random_start_position )  WRITE ( io, 481 )
1782       IF ( particles_per_point > 1 )  WRITE ( io, 489 )  particles_per_point
1783       WRITE ( io, 495 )  total_number_of_particles
1784       IF ( use_particle_tails  .AND.  maximum_number_of_tailpoints /= 0 )  THEN
1785          WRITE ( io, 483 )  maximum_number_of_tailpoints
1786          IF ( minimum_tailpoint_distance /= 0 )  THEN
1787             WRITE ( io, 484 )  total_number_of_tails,      &
1788                                minimum_tailpoint_distance, &
1789                                maximum_tailpoint_age
1790          ENDIF
1791       ENDIF
1792       IF ( dt_write_particle_data /= 9999999.9_wp )  THEN
1793          WRITE ( io, 485 )  dt_write_particle_data
1794          IF ( netcdf_data_format > 1 )  THEN
1795             output_format = 'netcdf (64 bit offset) and binary'
1796          ELSE
1797             output_format = 'netcdf and binary'
1798          ENDIF
1799          WRITE ( io, 344 )  output_format
1800       ENDIF
1801       IF ( dt_dopts /= 9999999.9_wp )  WRITE ( io, 494 )  dt_dopts
1802       IF ( write_particle_statistics )  WRITE ( io, 486 )
1803
1804       WRITE ( io, 487 )  number_of_particle_groups
1805
1806       DO  i = 1, number_of_particle_groups
1807          IF ( i == 1  .AND.  density_ratio(i) == 9999999.9_wp )  THEN
1808             WRITE ( io, 490 )  i, 0.0_wp
1809             WRITE ( io, 492 )
1810          ELSE
1811             WRITE ( io, 490 )  i, radius(i)
1812             IF ( density_ratio(i) /= 0.0_wp )  THEN
1813                WRITE ( io, 491 )  density_ratio(i)
1814             ELSE
1815                WRITE ( io, 492 )
1816             ENDIF
1817          ENDIF
1818          WRITE ( io, 493 )  psl(i), psr(i), pss(i), psn(i), psb(i), pst(i), &
1819                             pdx(i), pdy(i), pdz(i)
1820          IF ( .NOT. vertical_particle_advection(i) )  WRITE ( io, 482 )
1821       ENDDO
1822
1823    ENDIF
1824
1825
1826!
1827!-- Parameters of 1D-model
1828    IF ( INDEX( initializing_actions, 'set_1d-model_profiles' ) /= 0 )  THEN
1829       WRITE ( io, 500 )  end_time_1d, dt_run_control_1d, dt_pr_1d, &
1830                          mixing_length_1d, dissipation_1d
1831       IF ( damp_level_ind_1d /= nzt+1 )  THEN
1832          WRITE ( io, 502 )  zu(damp_level_ind_1d), damp_level_ind_1d
1833       ENDIF
1834    ENDIF
1835
1836!
1837!-- User-defined information
1838    CALL user_header( io )
1839
1840    WRITE ( io, 99 )
1841
1842!
1843!-- Write buffer contents to disc immediately
1844    CALL local_flush( io )
1845
1846!
1847!-- Here the FORMATs start
1848
1849 99 FORMAT (1X,78('-'))
1850100 FORMAT (/1X,'******************************',4X,44('-')/        &
1851            1X,'* ',A,' *',4X,A/                               &
1852            1X,'******************************',4X,44('-'))
1853101 FORMAT (35X,'coupled run using MPI-',I1,': ',A/ &
1854            35X,42('-'))
1855102 FORMAT (/' Date:                 ',A8,4X,'Run:       ',A20/      &
1856            ' Time:                 ',A8,4X,'Run-No.:   ',I2.2/     &
1857            ' Run on host:        ',A10)
1858#if defined( __parallel )
1859103 FORMAT (' Number of PEs:',10X,I6,4X,'Processor grid (x,y): (',I4,',',I4, &
1860              ')',1X,A)
1861104 FORMAT (' Number of PEs:',10X,I6,4X,'Tasks:',I4,'   threads per task:',I4/ &
1862              35X,'Processor grid (x,y): (',I4,',',I4,')',1X,A)
1863105 FORMAT (35X,'One additional PE is used to handle'/37X,'the dvrp output!')
1864106 FORMAT (35X,'A 1d-decomposition along x is forced'/ &
1865            35X,'because the job is running on an SMP-cluster')
1866107 FORMAT (35X,'A 1d-decomposition along ',A,' is used')
1867108 FORMAT (35X,'Max. # of parallel I/O streams is ',I5)
1868109 FORMAT (35X,'Precursor run for coupled atmos-ocean run'/ &
1869            35X,42('-'))
1870114 FORMAT (35X,'Coupled atmosphere-ocean run following'/ &
1871            35X,'independent precursor runs'/             &
1872            35X,42('-'))
1873117 FORMAT (' Accelerator boards / node:  ',I2)
1874#endif
1875110 FORMAT (/' Numerical Schemes:'/ &
1876             ' -----------------'/)
1877111 FORMAT (' --> Solve perturbation pressure via FFT using ',A,' routines')
1878112 FORMAT (' --> Solve perturbation pressure via SOR-Red/Black-Schema'/ &
1879            '     Iterations (initial/other): ',I3,'/',I3,'  omega = ',F5.3)
1880113 FORMAT (' --> Momentum advection via Piascek-Williams-Scheme (Form C3)', &
1881                  ' or Upstream')
1882115 FORMAT ('     FFT and transpositions are overlapping')
1883116 FORMAT (' --> Scalar advection via Piascek-Williams-Scheme (Form C3)', &
1884                  ' or Upstream')
1885118 FORMAT (' --> Scalar advection via Bott-Chlond-Scheme')
1886119 FORMAT (' --> Galilei-Transform applied to horizontal advection:'/ &
1887            '     translation velocity = ',A/ &
1888            '     distance advected ',A,':  ',F8.3,' km(x)  ',F8.3,' km(y)')
1889120 FORMAT (' Accelerator boards: ',8X,I2)
1890122 FORMAT (' --> Time differencing scheme: ',A)
1891123 FORMAT (' --> Rayleigh-Damping active, starts ',A,' z = ',F8.2,' m'/ &
1892            '     maximum damping coefficient: ',F5.3, ' 1/s')
1893129 FORMAT (' --> Additional prognostic equation for the specific humidity')
1894130 FORMAT (' --> Additional prognostic equation for the total water content')
1895131 FORMAT (' --> No pt-equation solved. Neutral stratification with pt = ', &
1896                  F6.2, ' K assumed')
1897132 FORMAT ('     Parameterization of long-wave radiation processes via'/ &
1898            '     effective emissivity scheme')
1899133 FORMAT ('     Precipitation parameterization via Kessler-Scheme')
1900134 FORMAT (' --> Additional prognostic equation for a passive scalar')
1901135 FORMAT (' --> Solve perturbation pressure via multigrid method (', &
1902                  A,'-cycle)'/ &
1903            '     number of grid levels:                   ',I2/ &
1904            '     Gauss-Seidel red/black iterations:       ',I2)
1905136 FORMAT ('     gridpoints of coarsest subdomain (x,y,z): (',I3,',',I3,',', &
1906                  I3,')')
1907137 FORMAT ('     level data gathered on PE0 at level:     ',I2/ &
1908            '     gridpoints of coarsest subdomain (x,y,z): (',I3,',',I3,',', &
1909                  I3,')'/ &
1910            '     gridpoints of coarsest domain (x,y,z):    (',I3,',',I3,',', &
1911                  I3,')')
1912139 FORMAT (' --> Loop optimization method: ',A)
1913140 FORMAT ('     maximum residual allowed:                ',E10.3)
1914141 FORMAT ('     fixed number of multigrid cycles:        ',I4)
1915142 FORMAT ('     perturbation pressure is calculated at every Runge-Kutta ', &
1916                  'step')
1917143 FORMAT ('     Euler/upstream scheme is used for the SGS turbulent ', &
1918                  'kinetic energy')
1919144 FORMAT ('     masking method is used')
1920150 FORMAT (' --> Volume flow at the right and north boundary will be ', &
1921                  'conserved'/ &
1922            '     using the ',A,' mode')
1923151 FORMAT ('     with u_bulk = ',F7.3,' m/s and v_bulk = ',F7.3,' m/s')
1924152 FORMAT (' --> External pressure gradient directly prescribed by the user:',&
1925           /'     ',2(1X,E12.5),'Pa/m in x/y direction', &
1926           /'     starting from dp_level_b =', F8.3, 'm', A /)
1927160 FORMAT (//' Large scale forcing and nudging:'/ &
1928              ' -------------------------------'/)
1929161 FORMAT (' --> No large scale forcing from external is used (default) ')
1930162 FORMAT (' --> Large scale forcing from external file LSF_DATA is used: ')
1931163 FORMAT ('     - large scale advection tendencies ')
1932164 FORMAT ('     - large scale subsidence velocity w_subs ')
1933165 FORMAT ('     - large scale subsidence tendencies ')
1934167 FORMAT ('     - and geostrophic wind components ug and vg')
1935168 FORMAT (' --> Large-scale vertical motion is used in the ', &
1936                  'prognostic equation(s) for')
1937169 FORMAT ('     the scalar(s) only')
1938170 FORMAT (' --> Nudging is used')
1939171 FORMAT (' --> No nudging is used (default) ')
1940180 FORMAT ('     - prescribed surface values for temperature')
1941181 FORMAT ('     - prescribed surface fluxes for temperature')
1942182 FORMAT ('     - prescribed surface values for humidity')
1943183 FORMAT ('     - prescribed surface fluxes for humidity')
1944200 FORMAT (//' Run time and time step information:'/ &
1945             ' ----------------------------------'/)
1946201 FORMAT ( ' Timestep:             variable     maximum value: ',F6.3,' s', &
1947             '    CFL-factor: ',F4.2)
1948202 FORMAT ( ' Timestep:          dt = ',F6.3,' s'/)
1949203 FORMAT ( ' Start time:          ',F9.3,' s'/ &
1950             ' End time:            ',F9.3,' s')
1951204 FORMAT ( A,F9.3,' s')
1952205 FORMAT ( A,F9.3,' s',5X,'restart every',17X,F9.3,' s')
1953206 FORMAT (/' Time reached:        ',F9.3,' s'/ &
1954             ' CPU-time used:       ',F9.3,' s     per timestep:               ', &
1955               '  ',F9.3,' s'/                                                    &
1956             '                                      per second of simulated tim', &
1957               'e: ',F9.3,' s')
1958207 FORMAT ( ' Coupling start time: ',F9.3,' s')
1959250 FORMAT (//' Computational grid and domain size:'/ &
1960              ' ----------------------------------'// &
1961              ' Grid length:      dx =    ',F7.3,' m    dy =    ',F7.3, &
1962              ' m    dz =    ',F7.3,' m'/ &
1963              ' Domain size:       x = ',F10.3,' m     y = ',F10.3, &
1964              ' m  z(u) = ',F10.3,' m'/)
1965252 FORMAT (' dz constant up to ',F10.3,' m (k=',I4,'), then stretched by', &
1966              ' factor: ',F5.3/ &
1967            ' maximum dz not to be exceeded is dz_max = ',F10.3,' m'/)
1968254 FORMAT (' Number of gridpoints (x,y,z):  (0:',I4,', 0:',I4,', 0:',I4,')'/ &
1969            ' Subdomain size (x,y,z):        (  ',I4,',   ',I4,',   ',I4,')'/)
1970260 FORMAT (/' The model has a slope in x-direction. Inclination angle: ',F6.2,&
1971             ' degrees')
1972270 FORMAT (//' Topography information:'/ &
1973              ' ----------------------'// &
1974              1X,'Topography: ',A)
1975271 FORMAT (  ' Building size (x/y/z) in m: ',F5.1,' / ',F5.1,' / ',F5.1/ &
1976              ' Horizontal index bounds (l/r/s/n): ',I4,' / ',I4,' / ',I4, &
1977                ' / ',I4)
1978272 FORMAT (  ' Single quasi-2D street canyon of infinite length in ',A, &
1979              ' direction' / &
1980              ' Canyon height: ', F6.2, 'm, ch = ', I4, '.'      / &
1981              ' Canyon position (',A,'-walls): cxl = ', I4,', cxr = ', I4, '.')
1982278 FORMAT (' Topography grid definition convention:'/ &
1983            ' cell edge (staggered grid points'/  &
1984            ' (u in x-direction, v in y-direction))' /)
1985279 FORMAT (' Topography grid definition convention:'/ &
1986            ' cell center (scalar grid points)' /)
1987280 FORMAT (//' Vegetation canopy (drag) model:'/ &
1988              ' ------------------------------'// &
1989              ' Canopy mode: ', A / &
1990              ' Canopy height: ',F6.2,'m (',I4,' grid points)' / &
1991              ' Leaf drag coefficient: ',F6.2 /)
1992281 FORMAT (/ ' Scalar exchange coefficient: ',F6.2 / &
1993              ' Scalar concentration at leaf surfaces in kg/m**3: ',F6.2 /)
1994282 FORMAT (' Predefined constant heatflux at the top of the vegetation: ',F6.2,' K m/s')
1995283 FORMAT (/ ' Characteristic levels of the leaf area density:'// &
1996              ' Height:              ',A,'  m'/ &
1997              ' Leaf area density:   ',A,'  m**2/m**3'/ &
1998              ' Gradient:            ',A,'  m**2/m**4'/ &
1999              ' Gridpoint:           ',A)
2000284 FORMAT (//' Characteristic levels of the leaf area density and coefficients:'// &
2001              ' Height:              ',A,'  m'/ &
2002              ' Leaf area density:   ',A,'  m**2/m**3'/ &
2003              ' Coefficient alpha: ',F6.2 / &
2004              ' Coefficient beta: ',F6.2 / &
2005              ' Leaf area index: ',F6.2,'  m**2/m**2' /)
2006               
2007300 FORMAT (//' Boundary conditions:'/ &
2008             ' -------------------'// &
2009             '                     p                    uv             ', &
2010             '                     pt'// &
2011             ' B. bound.: ',A/ &
2012             ' T. bound.: ',A)
2013301 FORMAT (/'                     ',A// &
2014             ' B. bound.: ',A/ &
2015             ' T. bound.: ',A)
2016303 FORMAT (/' Bottom surface fluxes are used in diffusion terms at k=1')
2017304 FORMAT (/' Top surface fluxes are used in diffusion terms at k=nzt')
2018305 FORMAT (//'    Prandtl-Layer between bottom surface and first ', &
2019               'computational u,v-level:'// &
2020             '       zp = ',F6.2,' m   z0 = ',F6.4,' m   z0h = ',F7.5,&
2021             ' m   kappa = ',F4.2/ &
2022             '       Rif value range:   ',F6.2,' <= rif <=',F6.2)
2023306 FORMAT ('       Predefined constant heatflux:   ',F9.6,' K m/s')
2024307 FORMAT ('       Heatflux has a random normal distribution')
2025308 FORMAT ('       Predefined surface temperature')
2026309 FORMAT ('       Predefined constant salinityflux:   ',F9.6,' psu m/s')
2027310 FORMAT (//'    1D-Model:'// &
2028             '       Rif value range:   ',F6.2,' <= rif <=',F6.2)
2029311 FORMAT ('       Predefined constant humidity flux: ',E10.3,' m/s')
2030312 FORMAT ('       Predefined surface humidity')
2031313 FORMAT ('       Predefined constant scalar flux: ',E10.3,' kg/(m**2 s)')
2032314 FORMAT ('       Predefined scalar value at the surface')
2033315 FORMAT ('       Humidity / scalar flux at top surface is 0.0')
2034316 FORMAT ('       Sensible heatflux and momentum flux from coupled ', &
2035                    'atmosphere model')
2036317 FORMAT (//' Lateral boundaries:'/ &
2037            '       left/right:  ',A/    &
2038            '       north/south: ',A)
2039318 FORMAT (/'       use_cmax: ',L1 / &
2040            '       pt damping layer width = ',F8.2,' m, pt ', &
2041                    'damping factor = ',F6.4)
2042319 FORMAT ('       turbulence recycling at inflow switched on'/ &
2043            '       width of recycling domain: ',F7.1,' m   grid index: ',I4/ &
2044            '       inflow damping height: ',F6.1,' m   width: ',F6.1,' m')
2045320 FORMAT ('       Predefined constant momentumflux:  u: ',F9.6,' m**2/s**2'/ &
2046            '                                          v: ',F9.6,' m**2/s**2')
2047321 FORMAT (//' Initial profiles:'/ &
2048              ' ----------------')
2049325 FORMAT (//' List output:'/ &
2050             ' -----------'//  &
2051            '    1D-Profiles:'/    &
2052            '       Output every             ',F8.2,' s')
2053326 FORMAT ('       Time averaged over       ',F8.2,' s'/ &
2054            '       Averaging input every    ',F8.2,' s')
2055330 FORMAT (//' Data output:'/ &
2056             ' -----------'/)
2057331 FORMAT (/'    1D-Profiles:')
2058332 FORMAT (/'       ',A)
2059333 FORMAT ('       Output every             ',F8.2,' s',/ &
2060            '       Time averaged over       ',F8.2,' s'/ &
2061            '       Averaging input every    ',F8.2,' s')
2062334 FORMAT (/'    2D-Arrays',A,':')
2063335 FORMAT (/'       ',A2,'-cross-section  Arrays: ',A/ &
2064            '       Output every             ',F8.2,' s  ',A/ &
2065            '       Cross sections at ',A1,' = ',A/ &
2066            '       scalar-coordinates:   ',A,' m'/)
2067336 FORMAT (/'    3D-Arrays',A,':')
2068337 FORMAT (/'       Arrays: ',A/ &
2069            '       Output every             ',F8.2,' s  ',A/ &
2070            '       Upper output limit at    ',F8.2,' m  (GP ',I4,')'/)
2071339 FORMAT ('       No output during initial ',F8.2,' s')
2072340 FORMAT (/'    Time series:')
2073341 FORMAT ('       Output every             ',F8.2,' s'/)
2074342 FORMAT (/'       ',A2,'-cross-section  Arrays: ',A/ &
2075            '       Output every             ',F8.2,' s  ',A/ &
2076            '       Time averaged over       ',F8.2,' s'/ &
2077            '       Averaging input every    ',F8.2,' s'/ &
2078            '       Cross sections at ',A1,' = ',A/ &
2079            '       scalar-coordinates:   ',A,' m'/)
2080343 FORMAT (/'       Arrays: ',A/ &
2081            '       Output every             ',F8.2,' s  ',A/ &
2082            '       Time averaged over       ',F8.2,' s'/ &
2083            '       Averaging input every    ',F8.2,' s'/ &
2084            '       Upper output limit at    ',F8.2,' m  (GP ',I4,')'/)
2085344 FORMAT ('       Output format: ',A/)
2086345 FORMAT (/'    Scaling lengths for output locations of all subsequent mask IDs:',/ &
2087            '       mask_scale_x (in x-direction): ',F9.3, ' m',/ &
2088            '       mask_scale_y (in y-direction): ',F9.3, ' m',/ &
2089            '       mask_scale_z (in z-direction): ',F9.3, ' m' )
2090346 FORMAT (/'    Masked data output',A,' for mask ID ',I2, ':')
2091347 FORMAT ('       Variables: ',A/ &
2092            '       Output every             ',F8.2,' s')
2093348 FORMAT ('       Variables: ',A/ &
2094            '       Output every             ',F8.2,' s'/ &
2095            '       Time averaged over       ',F8.2,' s'/ &
2096            '       Averaging input every    ',F8.2,' s')
2097349 FORMAT (/'       Output locations in ',A,'-direction in multiples of ', &
2098            'mask_scale_',A,' predefined by array mask_',I2.2,'_',A,':'/ &
2099            13('       ',8(F8.2,',')/) )
2100350 FORMAT (/'       Output locations in ',A,'-direction: ', &
2101            'all gridpoints along ',A,'-direction (default).' )
2102351 FORMAT (/'       Output locations in ',A,'-direction in multiples of ', &
2103            'mask_scale_',A,' constructed from array mask_',I2.2,'_',A,'_loop:'/ &
2104            '          loop begin:',F8.2,', end:',F8.2,', stride:',F8.2 )
2105352 FORMAT  (/'       Number of output time levels allowed: ',I3 /)
2106353 FORMAT  (/'       Number of output time levels allowed: unlimited' /)
2107#if defined( __dvrp_graphics )
2108360 FORMAT ('    Plot-Sequence with dvrp-software:'/ &
2109            '       Output every      ',F7.1,' s'/ &
2110            '       Output mode:      ',A/ &
2111            '       Host / User:      ',A,' / ',A/ &
2112            '       Directory:        ',A// &
2113            '       The sequence contains:')
2114361 FORMAT (/'       Isosurface of "',A,'"    Threshold value: ', E12.3/ &
2115            '          Isosurface color: (',F4.2,',',F4.2,',',F4.2,') (R,G,B)')
2116362 FORMAT (/'       Slicer plane ',A/ &
2117            '       Slicer limits: [',F6.2,',',F6.2,']')
2118363 FORMAT (/'       Particles'/ &
2119            '          particle size:  ',F7.2,' m')
2120364 FORMAT ('          particle ',A,' controlled by "',A,'" with interval [', &
2121                       F6.2,',',F6.2,']')
2122365 FORMAT (/'       Groundplate color: (',F4.2,',',F4.2,',',F4.2,') (R,G,B)'/ &
2123            '       Superelevation along (x,y,z): (',F4.1,',',F4.1,',',F4.1, &
2124                     ')'/ &
2125            '       Clipping limits: from x = ',F9.1,' m to x = ',F9.1,' m'/ &
2126            '                        from y = ',F9.1,' m to y = ',F9.1,' m')
2127366 FORMAT (/'       Topography color: (',F4.2,',',F4.2,',',F4.2,') (R,G,B)')
2128367 FORMAT ('       Polygon reduction for topography: cluster_size = ', I1)
2129#endif
2130#if defined( __spectra )
2131370 FORMAT ('    Spectra:')
2132371 FORMAT ('       Output every ',F7.1,' s'/)
2133372 FORMAT ('       Arrays:     ', 10(A5,',')/                         &
2134            '       Directions: ', 10(A5,',')/                         &
2135            '       height levels  k = ', 20(I3,',')/                  &
2136            '                          ', 20(I3,',')/                  &
2137            '                          ', 20(I3,',')/                  &
2138            '                          ', 20(I3,',')/                  &
2139            '                          ', 19(I3,','),I3,'.'/           &
2140            '       height levels selected for standard plot:'/        &
2141            '                      k = ', 20(I3,',')/                  &
2142            '                          ', 20(I3,',')/                  &
2143            '                          ', 20(I3,',')/                  &
2144            '                          ', 20(I3,',')/                  &
2145            '                          ', 19(I3,','),I3,'.'/           &
2146            '       Time averaged over ', F7.1, ' s,' /                &
2147            '       Profiles for the time averaging are taken every ', &
2148                    F6.1,' s')
2149#endif
2150400 FORMAT (//' Physical quantities:'/ &
2151              ' -------------------'/)
2152410 FORMAT ('    Geograph. latitude  :   phi    = ',F4.1,' degr'/   &
2153            '    Angular velocity    :   omega  = ',E9.3,' rad/s'/  &
2154            '    Coriolis parameter  :   f      = ',F9.6,' 1/s'/    &
2155            '                            f*     = ',F9.6,' 1/s')
2156411 FORMAT (/'    Gravity             :   g      = ',F4.1,' m/s**2')
2157412 FORMAT (/'    Reference state used in buoyancy terms: ',A)
2158413 FORMAT ('       Reference density in buoyancy terms: ',F8.3,' kg/m**3')
2159414 FORMAT ('       Reference temperature in buoyancy terms: ',F8.4,' K')
2160415 FORMAT (/' Cloud physics parameters:'/ &
2161             ' ------------------------'/)
2162416 FORMAT ('    Surface pressure   :   p_0   = ',F7.2,' hPa'/      &
2163            '    Gas constant       :   R     = ',F5.1,' J/(kg K)'/ &
2164            '    Density of air     :   rho_0 = ',F5.3,' kg/m**3'/  &
2165            '    Specific heat cap. :   c_p   = ',F6.1,' J/(kg K)'/ &
2166            '    Vapourization heat :   L_v   = ',E8.2,' J/kg')
2167417 FORMAT ('    Geograph. longitude :   lambda = ',F4.1,' degr')
2168418 FORMAT (/'    Day of the year at model start :   day_init      =     ',I3 &
2169            /'    UTC time at model start        :   time_utc_init = ',F7.1' s')
2170419 FORMAT (//' Land surface model information:'/ &
2171              ' ------------------------------'/)
2172420 FORMAT (/'    Characteristic levels of the initial temperature profile:'// &
2173            '       Height:        ',A,'  m'/ &
2174            '       Temperature:   ',A,'  K'/ &
2175            '       Gradient:      ',A,'  K/100m'/ &
2176            '       Gridpoint:     ',A)
2177421 FORMAT (/'    Characteristic levels of the initial humidity profile:'// &
2178            '       Height:      ',A,'  m'/ &
2179            '       Humidity:    ',A,'  kg/kg'/ &
2180            '       Gradient:    ',A,'  (kg/kg)/100m'/ &
2181            '       Gridpoint:   ',A)
2182422 FORMAT (/'    Characteristic levels of the initial scalar profile:'// &
2183            '       Height:                  ',A,'  m'/ &
2184            '       Scalar concentration:    ',A,'  kg/m**3'/ &
2185            '       Gradient:                ',A,'  (kg/m**3)/100m'/ &
2186            '       Gridpoint:               ',A)
2187423 FORMAT (/'    Characteristic levels of the geo. wind component ug:'// &
2188            '       Height:      ',A,'  m'/ &
2189            '       ug:          ',A,'  m/s'/ &
2190            '       Gradient:    ',A,'  1/100s'/ &
2191            '       Gridpoint:   ',A)
2192424 FORMAT (/'    Characteristic levels of the geo. wind component vg:'// &
2193            '       Height:      ',A,'  m'/ &
2194            '       vg:          ',A,'  m/s'/ &
2195            '       Gradient:    ',A,'  1/100s'/ &
2196            '       Gridpoint:   ',A)
2197425 FORMAT (/'    Characteristic levels of the initial salinity profile:'// &
2198            '       Height:     ',A,'  m'/ &
2199            '       Salinity:   ',A,'  psu'/ &
2200            '       Gradient:   ',A,'  psu/100m'/ &
2201            '       Gridpoint:  ',A)
2202426 FORMAT (/'    Characteristic levels of the subsidence/ascent profile:'// &
2203            '       Height:      ',A,'  m'/ &
2204            '       w_subs:      ',A,'  m/s'/ &
2205            '       Gradient:    ',A,'  (m/s)/100m'/ &
2206            '       Gridpoint:   ',A)
2207427 FORMAT (/'    Initial wind profiles (u,v) are interpolated from given'// &
2208                  ' profiles')
2209428 FORMAT (/'    Initial profiles (u, v, pt, q) are taken from file '/ &
2210             '    NUDGING_DATA')
2211430 FORMAT (//' Cloud physics quantities / methods:'/ &
2212              ' ----------------------------------'/)
2213431 FORMAT ('    Humidity is treated as purely passive scalar (no condensati', &
2214                 'on)')
2215432 FORMAT ('    Bulk scheme with liquid water potential temperature and'/ &
2216            '    total water content is used.'/ &
2217            '    Condensation is parameterized via 0% - or 100% scheme.')
2218433 FORMAT ('    Cloud droplets treated explicitly using the Lagrangian part', &
2219                 'icle model')
2220434 FORMAT ('    Curvature and solution effecs are considered for growth of', &
2221                 ' droplets < 1.0E-6 m')
2222435 FORMAT ('    Droplet collision is handled by ',A,'-kernel')
2223436 FORMAT ('       Fast kernel with fixed radius- and dissipation classes ', &
2224                    'are used'/ &
2225            '          number of radius classes:       ',I3,'    interval ', &
2226                       '[1.0E-6,2.0E-4] m'/ &
2227            '          number of dissipation classes:   ',I2,'    interval ', &
2228                       '[0,1000] cm**2/s**3')
2229437 FORMAT ('    Droplet collision is switched off')
2230438 FORMAT (' --> Land surface type  : ',A,/ &
2231            ' --> Soil porosity type : ',A)
2232439 FORMAT (/'    Initial soil temperature and moisture profile:'// &
2233            '       Height:        ',A,'  m'/ &
2234            '       Temperature:   ',A,'  K'/ &
2235            '       Moisture:      ',A,'  m**3/m**3'/ &
2236            '       Root fraction: ',A,'  '/ &
2237            '       Gridpoint:     ',A)
2238440 FORMAT (/' --> Dewfall is allowed (default)')
2239441 FORMAT (' --> Dewfall is inhibited')
2240442 FORMAT (' --> Soil bottom is closed (water content is conserved, default)')
2241443 FORMAT (' --> Soil bottom is open (water content is not conserved)')
2242444 FORMAT (//' Radiation model information:'/                                 &
2243              ' ----------------------------'/)
2244445 FORMAT (' --> Using constant net radiation: net_radiation = ', F6.2, '  W/m**2')
2245446 FORMAT (' --> Simple radiation scheme for clear sky is used (no clouds,',  &
2246                   ' default)')
2247447 FORMAT (' --> Radiation scheme:', A)
2248448 FORMAT (/'    Surface albedo: albedo = ', F5.3)
2249449 FORMAT  ('    Timestep: dt_radiation = ', F5.2, '  s')
2250
2251450 FORMAT (//' LES / Turbulence quantities:'/ &
2252              ' ---------------------------'/)
2253451 FORMAT ('    Diffusion coefficients are constant:'/ &
2254            '    Km = ',F6.2,' m**2/s   Kh = ',F6.2,' m**2/s   Pr = ',F5.2)
2255453 FORMAT ('    Mixing length is limited to ',F4.2,' * z')
2256454 FORMAT ('    TKE is not allowed to fall below ',E9.2,' (m/s)**2')
2257455 FORMAT ('    initial TKE is prescribed as ',E9.2,' (m/s)**2')
2258470 FORMAT (//' Actions during the simulation:'/ &
2259              ' -----------------------------'/)
2260471 FORMAT ('    Disturbance impulse (u,v) every :   ',F6.2,' s'/            &
2261            '    Disturbance amplitude           :     ',F4.2, ' m/s'/       &
2262            '    Lower disturbance level         : ',F8.2,' m (GP ',I4,')'/  &
2263            '    Upper disturbance level         : ',F8.2,' m (GP ',I4,')')
2264472 FORMAT ('    Disturbances continued during the run from i/j =',I4, &
2265                 ' to i/j =',I4)
2266473 FORMAT ('    Disturbances cease as soon as the disturbance energy exceeds',&
2267                 1X,F5.3, ' m**2/s**2')
2268474 FORMAT ('    Random number generator used    : ',A/)
2269475 FORMAT ('    The surface temperature is increased (or decreased, ', &
2270                 'respectively, if'/ &
2271            '    the value is negative) by ',F5.2,' K at the beginning of the',&
2272                 ' 3D-simulation'/)
2273476 FORMAT ('    The surface humidity is increased (or decreased, ',&
2274                 'respectively, if the'/ &
2275            '    value is negative) by ',E8.1,' kg/kg at the beginning of', &
2276                 ' the 3D-simulation'/)
2277477 FORMAT ('    The scalar value is increased at the surface (or decreased, ',&
2278                 'respectively, if the'/ &
2279            '    value is negative) by ',E8.1,' kg/m**3 at the beginning of', &
2280                 ' the 3D-simulation'/)
2281480 FORMAT ('    Particles:'/ &
2282            '    ---------'// &
2283            '       Particle advection is active (switched on at t = ', F7.1, &
2284                    ' s)'/ &
2285            '       Start of new particle generations every  ',F6.1,' s'/ &
2286            '       Boundary conditions: left/right: ', A, ' north/south: ', A/&
2287            '                            bottom:     ', A, ' top:         ', A/&
2288            '       Maximum particle age:                 ',F9.1,' s'/ &
2289            '       Advection stopped at t = ',F9.1,' s'/)
2290481 FORMAT ('       Particles have random start positions'/)
2291482 FORMAT ('          Particles are advected only horizontally'/)
2292483 FORMAT ('       Particles have tails with a maximum of ',I3,' points')
2293484 FORMAT ('            Number of tails of the total domain: ',I10/ &
2294            '            Minimum distance between tailpoints: ',F8.2,' m'/ &
2295            '            Maximum age of the end of the tail:  ',F8.2,' s')
2296485 FORMAT ('       Particle data are written on file every ', F9.1, ' s')
2297486 FORMAT ('       Particle statistics are written on file'/)
2298487 FORMAT ('       Number of particle groups: ',I2/)
2299488 FORMAT ('       SGS velocity components are used for particle advection'/ &
2300            '          minimum timestep for advection: ', F7.5/)
2301489 FORMAT ('       Number of particles simultaneously released at each ', &
2302                    'point: ', I5/)
2303490 FORMAT ('       Particle group ',I2,':'/ &
2304            '          Particle radius: ',E10.3, 'm')
2305491 FORMAT ('          Particle inertia is activated'/ &
2306            '             density_ratio (rho_fluid/rho_particle) = ',F5.3/)
2307492 FORMAT ('          Particles are advected only passively (no inertia)'/)
2308493 FORMAT ('          Boundaries of particle source: x:',F8.1,' - ',F8.1,' m'/&
2309            '                                         y:',F8.1,' - ',F8.1,' m'/&
2310            '                                         z:',F8.1,' - ',F8.1,' m'/&
2311            '          Particle distances:  dx = ',F8.1,' m  dy = ',F8.1, &
2312                       ' m  dz = ',F8.1,' m'/)
2313494 FORMAT ('       Output of particle time series in NetCDF format every ', &
2314                    F8.2,' s'/)
2315495 FORMAT ('       Number of particles in total domain: ',I10/)
2316500 FORMAT (//' 1D-Model parameters:'/                           &
2317              ' -------------------'//                           &
2318            '    Simulation time:                   ',F8.1,' s'/ &
2319            '    Run-controll output every:         ',F8.1,' s'/ &
2320            '    Vertical profile output every:     ',F8.1,' s'/ &
2321            '    Mixing length calculation:         ',A/         &
2322            '    Dissipation calculation:           ',A/)
2323502 FORMAT ('    Damping layer starts from ',F7.1,' m (GP ',I4,')'/)
2324503 FORMAT (' --> Momentum advection via Wicker-Skamarock-Scheme 5th order')
2325504 FORMAT (' --> Scalar advection via Wicker-Skamarock-Scheme 5th order')
2326505 FORMAT ('    Precipitation parameterization via Seifert-Beheng-Scheme')
2327506 FORMAT ('    Drizzle parameterization via Stokes law')
2328507 FORMAT ('    Turbulence effects on precipitation process')
2329508 FORMAT ('    Ventilation effects on evaporation of rain drops')
2330509 FORMAT ('    Slope limiter used for sedimentation process')
2331510 FORMAT ('    Droplet density    :   N_c   = ',F6.1,' 1/cm**3')
2332511 FORMAT ('    Sedimentation Courant number:                  '/&
2333            '                               C_s   = ',F3.1,'        ')
2334512 FORMAT (/' Date:                 ',A8,6X,'Run:       ',A20/      &
2335            ' Time:                 ',A8,6X,'Run-No.:   ',I2.2/     &
2336            ' Run on host:        ',A10,6X,'En-No.:    ',I2.2)
2337513 FORMAT (' --> Scalar advection via Wicker-Skamarock-Scheme 5th order ' // & 
2338            '+ monotonic adjustment')
2339
2340
2341 END SUBROUTINE header
Note: See TracBrowser for help on using the repository browser.