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

Last change on this file since 2119 was 2119, checked in by raasch, 7 years ago

last commit documented

  • Property svn:keywords set to Id
File size: 88.5 KB
Line 
1!> @file header.f90
2!------------------------------------------------------------------------------!
3! This file is part of PALM.
4!
5! PALM is free software: you can redistribute it and/or modify it under the
6! terms of the GNU General Public License as published by the Free Software
7! Foundation, either version 3 of the License, or (at your option) any later
8! version.
9!
10! PALM is distributed in the hope that it will be useful, but WITHOUT ANY
11! WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12! A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
13!
14! You should have received a copy of the GNU General Public License along with
15! PALM. If not, see <http://www.gnu.org/licenses/>.
16!
17! Copyright 1997-2017 Leibniz Universitaet Hannover
18!------------------------------------------------------------------------------!
19!
20! Current revisions:
21! -----------------
22!
23!
24! Former revisions:
25! -----------------
26! $Id: header.f90 2119 2017-01-17 16:51:50Z raasch $
27!
28! 2118 2017-01-17 16:38:49Z raasch
29! OpenACC relatec code removed
30!
31! 2073 2016-11-30 14:34:05Z raasch
32! small bugfix concerning output of scalar profiles
33!
34! 2050 2016-11-08 15:00:55Z gronemeier
35! Implement turbulent outflow condition
36!
37! 2037 2016-10-26 11:15:40Z knoop
38! Anelastic approximation implemented
39!
40! 2000 2016-08-20 18:09:15Z knoop
41! Forced header and separation lines into 80 columns
42!
43! 1992 2016-08-12 15:14:59Z suehring
44! Adapted for top_scalarflux
45!
46! 1960 2016-07-12 16:34:24Z suehring
47! Treat humidity and passive scalar separately.
48! Modify misleading information concerning humidity.
49! Bugfix, change unit for humidity flux.
50!
51! 1957 2016-07-07 10:43:48Z suehring
52! flight module added
53!
54! 1931 2016-06-10 12:06:59Z suehring
55! Rename multigrid into multigrid_noopt
56!
57! 1902 2016-05-09 11:18:56Z suehring
58! Write information about masking_method only for multigrid solver
59!
60! 1849 2016-04-08 11:33:18Z hoffmann
61! Adapted for modularization of microphysics
62!
63! 1833 2016-04-07 14:23:03Z raasch
64! spectrum renamed spectra_mod, output of spectra related quantities moved to
65! spectra_mod
66!
67! 1831 2016-04-07 13:15:51Z hoffmann
68! turbulence renamed collision_turbulence,
69! drizzle renamed cloud_water_sedimentation
70!
71! 1826 2016-04-07 12:01:39Z maronga
72! Moved radiation model header output to the respective module.
73! Moved canopy model header output to the respective module.
74!
75! 1822 2016-04-07 07:49:42Z hoffmann
76! Tails removed. icloud_scheme replaced by microphysics_*
77!
78! 1817 2016-04-06 15:44:20Z maronga
79! Moved land_surface_model header output to the respective module.
80!
81! 1808 2016-04-05 19:44:00Z raasch
82! routine local_flush replaced by FORTRAN statement
83!
84! 1797 2016-03-21 16:50:28Z raasch
85! output of nesting datatransfer mode
86!
87! 1791 2016-03-11 10:41:25Z raasch
88! output of nesting informations of all domains
89!
90! 1788 2016-03-10 11:01:04Z maronga
91! Parameter dewfall removed
92!
93! 1786 2016-03-08 05:49:27Z raasch
94! cpp-direktives for spectra removed
95!
96! 1783 2016-03-06 18:36:17Z raasch
97! netcdf module and variable names changed, output of netcdf_deflate
98!
99! 1764 2016-02-28 12:45:19Z raasch
100! output of nesting informations
101!
102! 1697 2015-10-28 17:14:10Z raasch
103! small E- and F-FORMAT changes to avoid informative compiler messages about
104! insufficient field width
105!
106! 1691 2015-10-26 16:17:44Z maronga
107! Renamed prandtl_layer to constant_flux_layer, renames rif_min/rif_max to
108! zeta_min/zeta_max.
109!
110! 1682 2015-10-07 23:56:08Z knoop
111! Code annotations made doxygen readable
112!
113! 1675 2015-10-02 08:28:59Z gronemeier
114! Bugfix: Definition of topography grid levels
115!
116! 1660 2015-09-21 08:15:16Z gronemeier
117! Bugfix: Definition of building/street canyon height if vertical grid stretching
118!         starts below the maximum topography height.
119!
120! 1590 2015-05-08 13:56:27Z maronga
121! Bugfix: Added TRIM statements for character strings for LSM and radiation code
122!
123! 1585 2015-04-30 07:05:52Z maronga
124! Further output for radiation model(s).
125!
126! 1575 2015-03-27 09:56:27Z raasch
127! adjustments for psolver-queries, output of seed_follows_topography
128!
129! 1560 2015-03-06 10:48:54Z keck
130! output for recycling y shift
131!
132! 1557 2015-03-05 16:43:04Z suehring
133! output for monotonic limiter
134!
135! 1551 2015-03-03 14:18:16Z maronga
136! Added informal output for land surface model and radiation model. Removed typo.
137!
138! 1496 2014-12-02 17:25:50Z maronga
139! Renamed: "radiation -> "cloud_top_radiation"
140!
141! 1484 2014-10-21 10:53:05Z kanani
142! Changes due to new module structure of the plant canopy model:
143!   module plant_canopy_model_mod and output for new canopy model parameters
144!   (alpha_lad, beta_lad, lai_beta,...) added,
145!   drag_coefficient, leaf_surface_concentration and scalar_exchange_coefficient
146!   renamed to canopy_drag_coeff, leaf_surface_conc and leaf_scalar_exch_coeff,
147!   learde renamed leaf_area_density.
148! Bugfix: DO-WHILE-loop for lad header information additionally restricted
149! by maximum number of gradient levels (currently 10)
150!
151! 1482 2014-10-18 12:34:45Z raasch
152! information about calculated or predefined virtual processor topology adjusted
153!
154! 1468 2014-09-24 14:06:57Z maronga
155! Adapted for use on up to 6-digit processor cores
156!
157! 1429 2014-07-15 12:53:45Z knoop
158! header exended to provide ensemble_member_nr if specified
159!
160! 1376 2014-04-26 11:21:22Z boeske
161! Correction of typos
162!
163! 1365 2014-04-22 15:03:56Z boeske
164! New section 'Large scale forcing and nudging':
165! output of large scale forcing and nudging information,
166! new section for initial profiles created
167!
168! 1359 2014-04-11 17:15:14Z hoffmann
169! dt_sort_particles removed
170!
171! 1353 2014-04-08 15:21:23Z heinze
172! REAL constants provided with KIND-attribute
173!
174! 1327 2014-03-21 11:00:16Z raasch
175! parts concerning iso2d and avs output removed,
176! -netcdf output queries
177!
178! 1324 2014-03-21 09:13:16Z suehring
179! Bugfix: module spectrum added
180!
181! 1322 2014-03-20 16:38:49Z raasch
182! REAL functions provided with KIND-attribute,
183! some REAL constants defined as wp-kind
184!
185! 1320 2014-03-20 08:40:49Z raasch
186! ONLY-attribute added to USE-statements,
187! kind-parameters added to all INTEGER and REAL declaration statements,
188! kinds are defined in new module kinds,
189! revision history before 2012 removed,
190! comment fields (!:) to be used for variable explanations added to
191! all variable declaration statements
192!
193! 1308 2014-03-13 14:58:42Z fricke
194! output of the fixed number of output time levels
195! output_format adjusted for masked data if netcdf_data_format > 5
196!
197! 1299 2014-03-06 13:15:21Z heinze
198! output for using large_scale subsidence in combination
199! with large_scale_forcing
200! reformatting, more detailed explanations
201!
202! 1241 2013-10-30 11:36:58Z heinze
203! output for nudging + large scale forcing from external file
204!
205! 1216 2013-08-26 09:31:42Z raasch
206! output for transpose_compute_overlap
207!
208! 1212 2013-08-15 08:46:27Z raasch
209! output for poisfft_hybrid removed
210!
211! 1179 2013-06-14 05:57:58Z raasch
212! output of reference_state, use_reference renamed use_single_reference_value
213!
214! 1159 2013-05-21 11:58:22Z fricke
215! +use_cmax
216!
217! 1115 2013-03-26 18:16:16Z hoffmann
218! descriptions for Seifert-Beheng-cloud-physics-scheme added
219!
220! 1111 2013-03-08 23:54:10Z raasch
221! output of accelerator board information
222! ibc_p_b = 2 removed
223!
224! 1108 2013-03-05 07:03:32Z raasch
225! bugfix for r1106
226!
227! 1106 2013-03-04 05:31:38Z raasch
228! some format changes for coupled runs
229!
230! 1092 2013-02-02 11:24:22Z raasch
231! unused variables removed
232!
233! 1036 2012-10-22 13:43:42Z raasch
234! code put under GPL (PALM 3.9)
235!
236! 1031 2012-10-19 14:35:30Z raasch
237! output of netCDF data format modified
238!
239! 1015 2012-09-27 09:23:24Z raasch
240! output of Adjustment of mixing length to the Prandtl mixing length at first
241! grid point above ground removed
242!
243! 1003 2012-09-14 14:35:53Z raasch
244! output of information about equal/unequal subdomain size removed
245!
246! 1001 2012-09-13 14:08:46Z raasch
247! all actions concerning leapfrog- and upstream-spline-scheme removed
248!
249! 978 2012-08-09 08:28:32Z fricke
250! -km_damp_max, outflow_damping_width
251! +pt_damping_factor, pt_damping_width
252! +z0h
253!
254! 964 2012-07-26 09:14:24Z raasch
255! output of profil-related quantities removed
256!
257! 940 2012-07-09 14:31:00Z raasch
258! Output in case of simulations for pure neutral stratification (no pt-equation
259! solved)
260!
261! 927 2012-06-06 19:15:04Z raasch
262! output of masking_method for mg-solver
263!
264! 868 2012-03-28 12:21:07Z raasch
265! translation velocity in Galilean transformation changed to 0.6 * ug
266!
267! 833 2012-02-22 08:55:55Z maronga
268! Adjusted format for leaf area density
269!
270! 828 2012-02-21 12:00:36Z raasch
271! output of dissipation_classes + radius_classes
272!
273! 825 2012-02-19 03:03:44Z raasch
274! Output of cloud physics parameters/quantities complemented and restructured
275!
276! Revision 1.1  1997/08/11 06:17:20  raasch
277! Initial revision
278!
279!
280! Description:
281! ------------
282!> Writing a header with all important information about the current run.
283!> This subroutine is called three times, two times at the beginning
284!> (writing information on files RUN_CONTROL and HEADER) and one time at the
285!> end of the run, then writing additional information about CPU-usage on file
286!> header.
287!-----------------------------------------------------------------------------!
288 SUBROUTINE header
289 
290
291    USE arrays_3d,                                                             &
292        ONLY:  pt_init, qsws, q_init, s_init, sa_init, shf, ug, vg, w_subs, zu,&
293               zw
294       
295    USE control_parameters
296       
297    USE cloud_parameters,                                                      &
298        ONLY:  cp, l_v, r_d
299
300    USE cpulog,                                                                &
301        ONLY:  log_point_s
302       
303    USE dvrp_variables,                                                        &
304        ONLY:  use_seperate_pe_for_dvrp_output
305       
306    USE flight_mod,                                                            &
307        ONLY:  flight_header
308       
309    USE grid_variables,                                                        &
310        ONLY:  dx, dy
311       
312    USE indices,                                                               &
313        ONLY:  mg_loc_ind, nnx, nny, nnz, nx, ny, nxl_mg, nxr_mg, nyn_mg,      &
314               nys_mg, nzt, nzt_mg
315       
316    USE kinds
317 
318    USE land_surface_model_mod,                                                &
319        ONLY: land_surface, lsm_header
320
321    USE microphysics_mod,                                                      &
322        ONLY:  cloud_water_sedimentation, collision_turbulence,                &
323               c_sedimentation, limiter_sedimentation, nc_const,               &
324               ventilation_effect
325
326    USE model_1d,                                                              &
327        ONLY:  damp_level_ind_1d, dt_pr_1d, dt_run_control_1d, end_time_1d
328       
329    USE netcdf_interface,                                                      &
330        ONLY:  netcdf_data_format, netcdf_data_format_string, netcdf_deflate
331
332    USE particle_attributes,                                                   &
333        ONLY:  bc_par_b, bc_par_lr, bc_par_ns, bc_par_t, collision_kernel,     &
334               curvature_solution_effects,                                     &
335               density_ratio, dissipation_classes, dt_min_part, dt_prel,       &
336               dt_write_particle_data, end_time_prel,                          &
337               number_of_particle_groups, particle_advection,                  &
338               particle_advection_start,                                       &
339               particles_per_point, pdx, pdy, pdz,  psb, psl, psn, psr, pss,   &
340               pst, radius, radius_classes, random_start_position,             &
341               seed_follows_topography,                                        &
342               total_number_of_particles, use_sgs_for_particles,               &
343               vertical_particle_advection, write_particle_statistics
344       
345    USE pegrid
346
347    USE plant_canopy_model_mod,                                                &
348        ONLY:  pcm_header, plant_canopy
349
350    USE pmc_handle_communicator,                                               &
351        ONLY:  pmc_get_model_info
352
353    USE pmc_interface,                                                         &
354        ONLY:  nested_run, nesting_datatransfer_mode, nesting_mode
355
356    USE radiation_model_mod,                                                   &
357        ONLY:  radiation, radiation_header
358   
359    USE spectra_mod,                                                           &
360        ONLY:  calculate_spectra, spectra_header
361
362    IMPLICIT NONE
363
364    CHARACTER (LEN=1)  ::  prec                !<
365   
366    CHARACTER (LEN=2)  ::  do2d_mode           !<
367   
368    CHARACTER (LEN=5)  ::  section_chr         !<
369   
370    CHARACTER (LEN=10) ::  coor_chr            !<
371    CHARACTER (LEN=10) ::  host_chr            !<
372   
373    CHARACTER (LEN=16) ::  begin_chr           !<
374   
375    CHARACTER (LEN=26) ::  ver_rev             !<
376
377    CHARACTER (LEN=32) ::  cpl_name            !<
378   
379    CHARACTER (LEN=40) ::  output_format       !<
380   
381    CHARACTER (LEN=70) ::  char1               !<
382    CHARACTER (LEN=70) ::  char2               !<
383    CHARACTER (LEN=70) ::  dopr_chr            !<
384    CHARACTER (LEN=70) ::  do2d_xy             !<
385    CHARACTER (LEN=70) ::  do2d_xz             !<
386    CHARACTER (LEN=70) ::  do2d_yz             !<
387    CHARACTER (LEN=70) ::  do3d_chr            !<
388    CHARACTER (LEN=70) ::  domask_chr          !<
389    CHARACTER (LEN=70) ::  run_classification  !<
390   
391    CHARACTER (LEN=85) ::  r_upper             !<
392    CHARACTER (LEN=85) ::  r_lower             !<
393   
394    CHARACTER (LEN=86) ::  coordinates         !<
395    CHARACTER (LEN=86) ::  gradients           !<
396    CHARACTER (LEN=86) ::  slices              !<
397    CHARACTER (LEN=86) ::  temperatures        !<
398    CHARACTER (LEN=86) ::  ugcomponent         !<
399    CHARACTER (LEN=86) ::  vgcomponent         !<
400
401    CHARACTER (LEN=1), DIMENSION(1:3) ::  dir = (/ 'x', 'y', 'z' /)  !<
402
403    INTEGER(iwp) ::  av             !<
404    INTEGER(iwp) ::  bh             !<
405    INTEGER(iwp) ::  blx            !<
406    INTEGER(iwp) ::  bly            !<
407    INTEGER(iwp) ::  bxl            !<
408    INTEGER(iwp) ::  bxr            !<
409    INTEGER(iwp) ::  byn            !<
410    INTEGER(iwp) ::  bys            !<
411    INTEGER(iwp) ::  ch             !<
412    INTEGER(iwp) ::  count          !<
413    INTEGER(iwp) ::  cpl_parent_id  !<
414    INTEGER(iwp) ::  cwx            !<
415    INTEGER(iwp) ::  cwy            !<
416    INTEGER(iwp) ::  cxl            !<
417    INTEGER(iwp) ::  cxr            !<
418    INTEGER(iwp) ::  cyn            !<
419    INTEGER(iwp) ::  cys            !<
420    INTEGER(iwp) ::  dim            !<
421    INTEGER(iwp) ::  i              !<
422    INTEGER(iwp) ::  io             !<
423    INTEGER(iwp) ::  j              !<
424    INTEGER(iwp) ::  k              !<
425    INTEGER(iwp) ::  l              !<
426    INTEGER(iwp) ::  ll             !<
427    INTEGER(iwp) ::  mpi_type       !<
428    INTEGER(iwp) ::  my_cpl_id      !<
429    INTEGER(iwp) ::  n              !<
430    INTEGER(iwp) ::  ncpl           !<
431    INTEGER(iwp) ::  npe_total      !<
432   
433
434    REAL(wp) ::  cpuseconds_per_simulated_second  !<
435    REAL(wp) ::  lower_left_coord_x               !< x-coordinate of nest domain
436    REAL(wp) ::  lower_left_coord_y               !< y-coordinate of nest domain
437
438!
439!-- Open the output file. At the end of the simulation, output is directed
440!-- to unit 19.
441    IF ( ( runnr == 0 .OR. force_print_header )  .AND. &
442         .NOT. simulated_time_at_begin /= simulated_time )  THEN
443       io = 15   !  header output on file RUN_CONTROL
444    ELSE
445       io = 19   !  header output on file HEADER
446    ENDIF
447    CALL check_open( io )
448
449!
450!-- At the end of the run, output file (HEADER) will be rewritten with
451!-- new information
452    IF ( io == 19 .AND. simulated_time_at_begin /= simulated_time ) REWIND( 19 )
453
454!
455!-- Determine kind of model run
456    IF ( TRIM( initializing_actions ) == 'read_restart_data' )  THEN
457       run_classification = 'restart run'
458    ELSEIF ( TRIM( initializing_actions ) == 'cyclic_fill' )  THEN
459       run_classification = 'run with cyclic fill of 3D - prerun data'
460    ELSEIF ( INDEX( initializing_actions, 'set_constant_profiles' ) /= 0 )  THEN
461       run_classification = 'run without 1D - prerun'
462    ELSEIF ( INDEX( initializing_actions, 'set_1d-model_profiles' ) /= 0 )  THEN
463       run_classification = 'run with 1D - prerun'
464    ELSEIF ( INDEX( initializing_actions, 'by_user' ) /=0 )  THEN
465       run_classification = 'run initialized by user'
466    ELSE
467       message_string = ' unknown action(s): ' // TRIM( initializing_actions )
468       CALL message( 'header', 'PA0191', 0, 0, 0, 6, 0 )
469    ENDIF
470    IF ( nested_run )  run_classification = 'nested ' // run_classification
471    IF ( ocean )  THEN
472       run_classification = 'ocean - ' // run_classification
473    ELSE
474       run_classification = 'atmosphere - ' // run_classification
475    ENDIF
476
477!
478!-- Run-identification, date, time, host
479    host_chr = host(1:10)
480    ver_rev = TRIM( version ) // '  ' // TRIM( revision )
481    WRITE ( io, 100 )  ver_rev, TRIM( run_classification )
482    IF ( TRIM( coupling_mode ) /= 'uncoupled' )  THEN
483#if defined( __mpi2 )
484       mpi_type = 2
485#else
486       mpi_type = 1
487#endif
488       WRITE ( io, 101 )  mpi_type, coupling_mode
489    ENDIF
490#if defined( __parallel )
491    IF ( coupling_start_time /= 0.0_wp )  THEN
492       IF ( coupling_start_time > simulated_time_at_begin )  THEN
493          WRITE ( io, 109 )
494       ELSE
495          WRITE ( io, 114 )
496       ENDIF
497    ENDIF
498#endif
499    IF ( ensemble_member_nr /= 0 )  THEN
500       WRITE ( io, 512 )  run_date, run_identifier, run_time, runnr,           &
501                       ADJUSTR( host_chr ), ensemble_member_nr
502    ELSE
503       WRITE ( io, 102 )  run_date, run_identifier, run_time, runnr,           &
504                       ADJUSTR( host_chr )
505    ENDIF
506#if defined( __parallel )
507    IF ( npex == -1  .AND.  npey == -1 )  THEN
508       char1 = 'calculated'
509    ELSE
510       char1 = 'predefined'
511    ENDIF
512    IF ( threads_per_task == 1 )  THEN
513       WRITE ( io, 103 )  numprocs, pdims(1), pdims(2), TRIM( char1 )
514    ELSE
515       WRITE ( io, 104 )  numprocs*threads_per_task, numprocs, &
516                          threads_per_task, pdims(1), pdims(2), TRIM( char1 )
517    ENDIF
518    IF ( ( host(1:3) == 'ibm'  .OR.  host(1:3) == 'nec'  .OR.    &
519           host(1:2) == 'lc'   .OR.  host(1:3) == 'dec' )  .AND. &
520         npex == -1  .AND.  pdims(2) == 1 )                      &
521    THEN
522       WRITE ( io, 106 )
523    ELSEIF ( pdims(2) == 1 )  THEN
524       WRITE ( io, 107 )  'x'
525    ELSEIF ( pdims(1) == 1 )  THEN
526       WRITE ( io, 107 )  'y'
527    ENDIF
528    IF ( use_seperate_pe_for_dvrp_output )  WRITE ( io, 105 )
529    IF ( numprocs /= maximum_parallel_io_streams )  THEN
530       WRITE ( io, 108 )  maximum_parallel_io_streams
531    ENDIF
532#endif
533
534!
535!-- Nesting informations
536    IF ( nested_run )  THEN
537
538       WRITE ( io, 600 )  TRIM( nesting_mode ),                                &
539                          TRIM( nesting_datatransfer_mode )
540       CALL pmc_get_model_info( ncpl = ncpl, cpl_id = my_cpl_id )
541
542       DO  n = 1, ncpl
543          CALL pmc_get_model_info( request_for_cpl_id = n, cpl_name = cpl_name,&
544                                   cpl_parent_id = cpl_parent_id,              &
545                                   lower_left_x = lower_left_coord_x,          &
546                                   lower_left_y = lower_left_coord_y,          &
547                                   npe_total = npe_total )
548          IF ( n == my_cpl_id )  THEN
549             char1 = '*'
550          ELSE
551             char1 = ' '
552          ENDIF
553          WRITE ( io, 601 )  TRIM( char1 ), n, cpl_parent_id, npe_total,       &
554                             lower_left_coord_x, lower_left_coord_y,           &
555                             TRIM( cpl_name )
556       ENDDO
557    ENDIF
558    WRITE ( io, 99 )
559
560!
561!-- Numerical schemes
562    WRITE ( io, 110 )
563    WRITE ( io, 121 )  TRIM( approximation )
564    IF ( psolver(1:7) == 'poisfft' )  THEN
565       WRITE ( io, 111 )  TRIM( fft_method )
566       IF ( transpose_compute_overlap )  WRITE( io, 115 )
567    ELSEIF ( psolver == 'sor' )  THEN
568       WRITE ( io, 112 )  nsor_ini, nsor, omega_sor
569    ELSEIF ( psolver(1:9) == 'multigrid' )  THEN
570       WRITE ( io, 135 )  TRIM(psolver), cycle_mg, maximum_grid_level, ngsrb
571       IF ( mg_cycles == -1 )  THEN
572          WRITE ( io, 140 )  residual_limit
573       ELSE
574          WRITE ( io, 141 )  mg_cycles
575       ENDIF
576       IF ( mg_switch_to_pe0_level == 0 )  THEN
577          WRITE ( io, 136 )  nxr_mg(1)-nxl_mg(1)+1, nyn_mg(1)-nys_mg(1)+1, &
578                             nzt_mg(1)
579       ELSEIF (  mg_switch_to_pe0_level /= -1 )  THEN
580          WRITE ( io, 137 )  mg_switch_to_pe0_level,            &
581                             mg_loc_ind(2,0)-mg_loc_ind(1,0)+1, &
582                             mg_loc_ind(4,0)-mg_loc_ind(3,0)+1, &
583                             nzt_mg(mg_switch_to_pe0_level),    &
584                             nxr_mg(1)-nxl_mg(1)+1, nyn_mg(1)-nys_mg(1)+1, &
585                             nzt_mg(1)
586       ENDIF
587       IF ( psolver == 'multigrid_noopt' .AND. masking_method )  WRITE ( io, 144 )
588    ENDIF
589    IF ( call_psolver_at_all_substeps  .AND. timestep_scheme(1:5) == 'runge' ) &
590    THEN
591       WRITE ( io, 142 )
592    ENDIF
593
594    IF ( momentum_advec == 'pw-scheme' )  THEN
595       WRITE ( io, 113 )
596    ELSEIF (momentum_advec == 'ws-scheme' )  THEN
597       WRITE ( io, 503 )
598    ENDIF
599    IF ( scalar_advec == 'pw-scheme' )  THEN
600       WRITE ( io, 116 )
601    ELSEIF ( scalar_advec == 'ws-scheme' )  THEN
602       WRITE ( io, 504 )
603    ELSEIF ( scalar_advec == 'ws-scheme-mono' )  THEN
604       WRITE ( io, 513 )
605    ELSE
606       WRITE ( io, 118 )
607    ENDIF
608
609    WRITE ( io, 139 )  TRIM( loop_optimization )
610
611    IF ( galilei_transformation )  THEN
612       IF ( use_ug_for_galilei_tr )  THEN
613          char1 = '0.6 * geostrophic wind'
614       ELSE
615          char1 = 'mean wind in model domain'
616       ENDIF
617       IF ( simulated_time_at_begin == simulated_time )  THEN
618          char2 = 'at the start of the run'
619       ELSE
620          char2 = 'at the end of the run'
621       ENDIF
622       WRITE ( io, 119 )  TRIM( char1 ), TRIM( char2 ),                        &
623                          advected_distance_x/1000.0_wp,                       &
624                          advected_distance_y/1000.0_wp
625    ENDIF
626    WRITE ( io, 122 )  timestep_scheme
627    IF ( use_upstream_for_tke )  WRITE ( io, 143 )
628    IF ( rayleigh_damping_factor /= 0.0_wp )  THEN
629       IF ( .NOT. ocean )  THEN
630          WRITE ( io, 123 )  'above', rayleigh_damping_height, &
631               rayleigh_damping_factor
632       ELSE
633          WRITE ( io, 123 )  'below', rayleigh_damping_height, &
634               rayleigh_damping_factor
635       ENDIF
636    ENDIF
637    IF ( neutral )  WRITE ( io, 131 )  pt_surface
638    IF ( humidity )  THEN
639       IF ( .NOT. cloud_physics )  THEN
640          WRITE ( io, 129 )
641       ELSE
642          WRITE ( io, 130 )
643       ENDIF
644    ENDIF
645    IF ( passive_scalar )  WRITE ( io, 134 )
646    IF ( conserve_volume_flow )  THEN
647       WRITE ( io, 150 )  conserve_volume_flow_mode
648       IF ( TRIM( conserve_volume_flow_mode ) == 'bulk_velocity' )  THEN
649          WRITE ( io, 151 )  u_bulk, v_bulk
650       ENDIF
651    ELSEIF ( dp_external )  THEN
652       IF ( dp_smooth )  THEN
653          WRITE ( io, 152 )  dpdxy, dp_level_b, ', vertically smoothed.'
654       ELSE
655          WRITE ( io, 152 )  dpdxy, dp_level_b, '.'
656       ENDIF
657    ENDIF
658    WRITE ( io, 99 )
659
660!
661!-- Runtime and timestep information
662    WRITE ( io, 200 )
663    IF ( .NOT. dt_fixed )  THEN
664       WRITE ( io, 201 )  dt_max, cfl_factor
665    ELSE
666       WRITE ( io, 202 )  dt
667    ENDIF
668    WRITE ( io, 203 )  simulated_time_at_begin, end_time
669
670    IF ( time_restart /= 9999999.9_wp  .AND. &
671         simulated_time_at_begin == simulated_time )  THEN
672       IF ( dt_restart == 9999999.9_wp )  THEN
673          WRITE ( io, 204 )  ' Restart at:       ',time_restart
674       ELSE
675          WRITE ( io, 205 )  ' Restart at:       ',time_restart, dt_restart
676       ENDIF
677    ENDIF
678
679    IF ( simulated_time_at_begin /= simulated_time )  THEN
680       i = MAX ( log_point_s(10)%counts, 1 )
681       IF ( ( simulated_time - simulated_time_at_begin ) == 0.0_wp )  THEN
682          cpuseconds_per_simulated_second = 0.0_wp
683       ELSE
684          cpuseconds_per_simulated_second = log_point_s(10)%sum / &
685                                            ( simulated_time -    &
686                                              simulated_time_at_begin )
687       ENDIF
688       WRITE ( io, 206 )  simulated_time, log_point_s(10)%sum,      &
689                          log_point_s(10)%sum / REAL( i, KIND=wp ), &
690                          cpuseconds_per_simulated_second
691       IF ( time_restart /= 9999999.9_wp  .AND.  time_restart < end_time )  THEN
692          IF ( dt_restart == 9999999.9_wp )  THEN
693             WRITE ( io, 204 )  ' Next restart at:     ',time_restart
694          ELSE
695             WRITE ( io, 205 )  ' Next restart at:     ',time_restart, dt_restart
696          ENDIF
697       ENDIF
698    ENDIF
699
700
701!
702!-- Start time for coupled runs, if independent precursor runs for atmosphere
703!-- and ocean are used or have been used. In this case, coupling_start_time
704!-- defines the time when the coupling is switched on.
705    IF ( coupling_start_time /= 0.0_wp )  THEN
706       WRITE ( io, 207 )  coupling_start_time
707    ENDIF
708
709!
710!-- Computational grid
711    IF ( .NOT. ocean )  THEN
712       WRITE ( io, 250 )  dx, dy, dz, (nx+1)*dx, (ny+1)*dy, zu(nzt+1)
713       IF ( dz_stretch_level_index < nzt+1 )  THEN
714          WRITE ( io, 252 )  dz_stretch_level, dz_stretch_level_index, &
715                             dz_stretch_factor, dz_max
716       ENDIF
717    ELSE
718       WRITE ( io, 250 )  dx, dy, dz, (nx+1)*dx, (ny+1)*dy, zu(0)
719       IF ( dz_stretch_level_index > 0 )  THEN
720          WRITE ( io, 252 )  dz_stretch_level, dz_stretch_level_index, &
721                             dz_stretch_factor, dz_max
722       ENDIF
723    ENDIF
724    WRITE ( io, 254 )  nx, ny, nzt+1, MIN( nnx, nx+1 ), MIN( nny, ny+1 ), &
725                       MIN( nnz+2, nzt+2 )
726    IF ( sloping_surface )  WRITE ( io, 260 )  alpha_surface
727
728!
729!-- Large scale forcing and nudging
730    WRITE ( io, 160 )
731    IF ( large_scale_forcing )  THEN
732       WRITE ( io, 162 )
733       WRITE ( io, 163 )
734
735       IF ( large_scale_subsidence )  THEN
736          IF ( .NOT. use_subsidence_tendencies )  THEN
737             WRITE ( io, 164 )
738          ELSE
739             WRITE ( io, 165 )
740          ENDIF
741       ENDIF
742
743       IF ( bc_pt_b == 'dirichlet' )  THEN
744          WRITE ( io, 180 )
745       ELSEIF ( bc_pt_b == 'neumann' )  THEN
746          WRITE ( io, 181 )
747       ENDIF
748
749       IF ( bc_q_b == 'dirichlet' )  THEN
750          WRITE ( io, 182 )
751       ELSEIF ( bc_q_b == 'neumann' )  THEN
752          WRITE ( io, 183 )
753       ENDIF
754
755       WRITE ( io, 167 )
756       IF ( nudging )  THEN
757          WRITE ( io, 170 )
758       ENDIF
759    ELSE
760       WRITE ( io, 161 )
761       WRITE ( io, 171 )
762    ENDIF
763    IF ( large_scale_subsidence )  THEN
764       WRITE ( io, 168 )
765       WRITE ( io, 169 )
766    ENDIF
767
768!
769!-- Profile for the large scale vertial velocity
770!-- Building output strings, starting with surface value
771    IF ( large_scale_subsidence )  THEN
772       temperatures = '   0.0'
773       gradients = '------'
774       slices = '     0'
775       coordinates = '   0.0'
776       i = 1
777       DO  WHILE ( subs_vertical_gradient_level_i(i) /= -9999 )
778
779          WRITE (coor_chr,'(E10.2,7X)')  &
780                                w_subs(subs_vertical_gradient_level_i(i))
781          temperatures = TRIM( temperatures ) // ' ' // TRIM( coor_chr )
782
783          WRITE (coor_chr,'(E10.2,7X)')  subs_vertical_gradient(i)
784          gradients = TRIM( gradients ) // ' ' // TRIM( coor_chr )
785
786          WRITE (coor_chr,'(I10,7X)')  subs_vertical_gradient_level_i(i)
787          slices = TRIM( slices ) // ' ' // TRIM( coor_chr )
788
789          WRITE (coor_chr,'(F10.2,7X)')  subs_vertical_gradient_level(i)
790          coordinates = TRIM( coordinates ) // ' '  // TRIM( coor_chr )
791
792          IF ( i == 10 )  THEN
793             EXIT
794          ELSE
795             i = i + 1
796          ENDIF
797
798       ENDDO
799
800 
801       IF ( .NOT. large_scale_forcing )  THEN
802          WRITE ( io, 426 )  TRIM( coordinates ), TRIM( temperatures ), &
803                             TRIM( gradients ), TRIM( slices )
804       ENDIF
805
806
807    ENDIF
808
809!-- Profile of the geostrophic wind (component ug)
810!-- Building output strings
811    WRITE ( ugcomponent, '(F6.2)' )  ug_surface
812    gradients = '------'
813    slices = '     0'
814    coordinates = '   0.0'
815    i = 1
816    DO  WHILE ( ug_vertical_gradient_level_ind(i) /= -9999 )
817     
818       WRITE (coor_chr,'(F6.2,1X)')  ug(ug_vertical_gradient_level_ind(i))
819       ugcomponent = TRIM( ugcomponent ) // '  ' // TRIM( coor_chr )
820
821       WRITE (coor_chr,'(F6.2,1X)')  ug_vertical_gradient(i)
822       gradients = TRIM( gradients ) // '  ' // TRIM( coor_chr )
823
824       WRITE (coor_chr,'(I6,1X)')  ug_vertical_gradient_level_ind(i)
825       slices = TRIM( slices ) // '  ' // TRIM( coor_chr )
826
827       WRITE (coor_chr,'(F6.1,1X)')  ug_vertical_gradient_level(i)
828       coordinates = TRIM( coordinates ) // '  ' // TRIM( coor_chr )
829
830       IF ( i == 10 )  THEN
831          EXIT
832       ELSE
833          i = i + 1
834       ENDIF
835
836    ENDDO
837
838    IF ( .NOT. large_scale_forcing )  THEN
839       WRITE ( io, 423 )  TRIM( coordinates ), TRIM( ugcomponent ), &
840                          TRIM( gradients ), TRIM( slices )
841    ENDIF
842
843!-- Profile of the geostrophic wind (component vg)
844!-- Building output strings
845    WRITE ( vgcomponent, '(F6.2)' )  vg_surface
846    gradients = '------'
847    slices = '     0'
848    coordinates = '   0.0'
849    i = 1
850    DO  WHILE ( vg_vertical_gradient_level_ind(i) /= -9999 )
851
852       WRITE (coor_chr,'(F6.2,1X)')  vg(vg_vertical_gradient_level_ind(i))
853       vgcomponent = TRIM( vgcomponent ) // '  ' // TRIM( coor_chr )
854
855       WRITE (coor_chr,'(F6.2,1X)')  vg_vertical_gradient(i)
856       gradients = TRIM( gradients ) // '  ' // TRIM( coor_chr )
857
858       WRITE (coor_chr,'(I6,1X)')  vg_vertical_gradient_level_ind(i)
859       slices = TRIM( slices ) // '  ' // TRIM( coor_chr )
860
861       WRITE (coor_chr,'(F6.1,1X)')  vg_vertical_gradient_level(i)
862       coordinates = TRIM( coordinates ) // '  ' // TRIM( coor_chr )
863
864       IF ( i == 10 )  THEN
865          EXIT
866       ELSE
867          i = i + 1
868       ENDIF
869 
870    ENDDO
871
872    IF ( .NOT. large_scale_forcing )  THEN
873       WRITE ( io, 424 )  TRIM( coordinates ), TRIM( vgcomponent ), &
874                          TRIM( gradients ), TRIM( slices )
875    ENDIF
876
877!
878!-- Topography
879    WRITE ( io, 270 )  topography
880    SELECT CASE ( TRIM( topography ) )
881
882       CASE ( 'flat' )
883          ! no actions necessary
884
885       CASE ( 'single_building' )
886          blx = INT( building_length_x / dx )
887          bly = INT( building_length_y / dy )
888          bh  = MINLOC( ABS( zw - building_height ), 1 ) - 1
889          IF ( ABS( zw(bh  ) - building_height ) == &
890               ABS( zw(bh+1) - building_height )    )  bh = bh + 1
891
892          IF ( building_wall_left == 9999999.9_wp )  THEN
893             building_wall_left = ( nx + 1 - blx ) / 2 * dx
894          ENDIF
895          bxl = INT ( building_wall_left / dx + 0.5_wp )
896          bxr = bxl + blx
897
898          IF ( building_wall_south == 9999999.9_wp )  THEN
899             building_wall_south = ( ny + 1 - bly ) / 2 * dy
900          ENDIF
901          bys = INT ( building_wall_south / dy + 0.5_wp )
902          byn = bys + bly
903
904          WRITE ( io, 271 )  building_length_x, building_length_y, &
905                             building_height, bxl, bxr, bys, byn
906
907       CASE ( 'single_street_canyon' )
908          ch  = MINLOC( ABS( zw - canyon_height ), 1 ) - 1
909          IF ( ABS( zw(ch  ) - canyon_height ) == &
910               ABS( zw(ch+1) - canyon_height )    )  ch = ch + 1
911          IF ( canyon_width_x /= 9999999.9_wp )  THEN
912!
913!--          Street canyon in y direction
914             cwx = NINT( canyon_width_x / dx )
915             IF ( canyon_wall_left == 9999999.9_wp )  THEN
916                canyon_wall_left = ( nx + 1 - cwx ) / 2 * dx
917             ENDIF
918             cxl = NINT( canyon_wall_left / dx )
919             cxr = cxl + cwx
920             WRITE ( io, 272 )  'y', canyon_height, ch, 'u', cxl, cxr
921
922          ELSEIF ( canyon_width_y /= 9999999.9_wp )  THEN
923!
924!--          Street canyon in x direction
925             cwy = NINT( canyon_width_y / dy )
926             IF ( canyon_wall_south == 9999999.9_wp )  THEN
927                canyon_wall_south = ( ny + 1 - cwy ) / 2 * dy
928             ENDIF
929             cys = NINT( canyon_wall_south / dy )
930             cyn = cys + cwy
931             WRITE ( io, 272 )  'x', canyon_height, ch, 'v', cys, cyn
932          ENDIF
933
934    END SELECT
935
936    IF ( TRIM( topography ) /= 'flat' )  THEN
937       IF ( TRIM( topography_grid_convention ) == ' ' )  THEN
938          IF ( TRIM( topography ) == 'single_building' .OR.  &
939               TRIM( topography ) == 'single_street_canyon' )  THEN
940             WRITE ( io, 278 )
941          ELSEIF ( TRIM( topography ) == 'read_from_file' )  THEN
942             WRITE ( io, 279 )
943          ENDIF
944       ELSEIF ( TRIM( topography_grid_convention ) == 'cell_edge' )  THEN
945          WRITE ( io, 278 )
946       ELSEIF ( TRIM( topography_grid_convention ) == 'cell_center' )  THEN
947          WRITE ( io, 279 )
948       ENDIF
949    ENDIF
950
951    IF ( plant_canopy )  CALL pcm_header ( io )
952
953    IF ( land_surface )  CALL lsm_header ( io )
954
955    IF ( radiation )  CALL radiation_header ( io )
956
957!
958!-- Boundary conditions
959    IF ( ibc_p_b == 0 )  THEN
960       r_lower = 'p(0)     = 0      |'
961    ELSEIF ( ibc_p_b == 1 )  THEN
962       r_lower = 'p(0)     = p(1)   |'
963    ENDIF
964    IF ( ibc_p_t == 0 )  THEN
965       r_upper  = 'p(nzt+1) = 0      |'
966    ELSE
967       r_upper  = 'p(nzt+1) = p(nzt) |'
968    ENDIF
969
970    IF ( ibc_uv_b == 0 )  THEN
971       r_lower = TRIM( r_lower ) // ' uv(0)     = -uv(1)                |'
972    ELSE
973       r_lower = TRIM( r_lower ) // ' uv(0)     = uv(1)                 |'
974    ENDIF
975    IF ( TRIM( bc_uv_t ) == 'dirichlet_0' )  THEN
976       r_upper  = TRIM( r_upper  ) // ' uv(nzt+1) = 0                     |'
977    ELSEIF ( ibc_uv_t == 0 )  THEN
978       r_upper  = TRIM( r_upper  ) // ' uv(nzt+1) = ug(nzt+1), vg(nzt+1)  |'
979    ELSE
980       r_upper  = TRIM( r_upper  ) // ' uv(nzt+1) = uv(nzt)               |'
981    ENDIF
982
983    IF ( ibc_pt_b == 0 )  THEN
984       IF ( land_surface )  THEN
985          r_lower = TRIM( r_lower ) // ' pt(0)     = from soil model'
986       ELSE
987          r_lower = TRIM( r_lower ) // ' pt(0)     = pt_surface'
988       ENDIF
989    ELSEIF ( ibc_pt_b == 1 )  THEN
990       r_lower = TRIM( r_lower ) // ' pt(0)     = pt(1)'
991    ELSEIF ( ibc_pt_b == 2 )  THEN
992       r_lower = TRIM( r_lower ) // ' pt(0)     = from coupled model'
993    ENDIF
994    IF ( ibc_pt_t == 0 )  THEN
995       r_upper  = TRIM( r_upper  ) // ' pt(nzt+1) = pt_top'
996    ELSEIF( ibc_pt_t == 1 )  THEN
997       r_upper  = TRIM( r_upper  ) // ' pt(nzt+1) = pt(nzt)'
998    ELSEIF( ibc_pt_t == 2 )  THEN
999       r_upper  = TRIM( r_upper  ) // ' pt(nzt+1) = pt(nzt) + dpt/dz_ini'
1000
1001    ENDIF
1002
1003    WRITE ( io, 300 )  r_lower, r_upper
1004
1005    IF ( .NOT. constant_diffusion )  THEN
1006       IF ( ibc_e_b == 1 )  THEN
1007          r_lower = 'e(0)     = e(1)'
1008       ELSE
1009          r_lower = 'e(0)     = e(1) = (u*/0.1)**2'
1010       ENDIF
1011       r_upper = 'e(nzt+1) = e(nzt) = e(nzt-1)'
1012
1013       WRITE ( io, 301 )  'e', r_lower, r_upper       
1014
1015    ENDIF
1016
1017    IF ( ocean )  THEN
1018       r_lower = 'sa(0)    = sa(1)'
1019       IF ( ibc_sa_t == 0 )  THEN
1020          r_upper =  'sa(nzt+1) = sa_surface'
1021       ELSE
1022          r_upper =  'sa(nzt+1) = sa(nzt)'
1023       ENDIF
1024       WRITE ( io, 301 ) 'sa', r_lower, r_upper
1025    ENDIF
1026
1027    IF ( humidity )  THEN
1028       IF ( ibc_q_b == 0 )  THEN
1029          IF ( land_surface )  THEN
1030             r_lower = 'q(0)     = from soil model'
1031          ELSE
1032             r_lower = 'q(0)     = q_surface'
1033          ENDIF
1034
1035       ELSE
1036          r_lower = 'q(0)      = q(1)'
1037       ENDIF
1038       IF ( ibc_q_t == 0 )  THEN
1039          r_upper =  'q(nzt+1) = q_top'
1040       ELSE
1041          r_upper =  'q(nzt+1) = q(nzt) + dq/dz'
1042       ENDIF
1043       WRITE ( io, 301 ) 'q', r_lower, r_upper
1044    ENDIF
1045
1046    IF ( passive_scalar )  THEN
1047       IF ( ibc_s_b == 0 )  THEN
1048          r_lower = 's(0)      = s_surface'
1049       ELSE
1050          r_lower = 's(0)      = s(1)'
1051       ENDIF
1052       IF ( ibc_s_t == 0 )  THEN
1053          r_upper =  's(nzt+1) = s_top'
1054       ELSEIF ( ibc_s_t == 1 )  THEN
1055          r_upper =  's(nzt+1) = s(nzt)'
1056       ELSEIF ( ibc_s_t == 2 )  THEN
1057          r_upper =  's(nzt+1) = s(nzt) + ds/dz'
1058       ENDIF
1059       WRITE ( io, 301 ) 's', r_lower, r_upper
1060    ENDIF
1061
1062    IF ( use_surface_fluxes )  THEN
1063       WRITE ( io, 303 )
1064       IF ( constant_heatflux )  THEN
1065          IF ( large_scale_forcing .AND. lsf_surf )  THEN
1066             WRITE ( io, 306 )  shf(0,0)
1067          ELSE
1068             WRITE ( io, 306 )  surface_heatflux
1069          ENDIF
1070          IF ( random_heatflux )  WRITE ( io, 307 )
1071       ENDIF
1072       IF ( humidity  .AND.  constant_waterflux )  THEN
1073          IF ( large_scale_forcing .AND. lsf_surf )  THEN
1074             WRITE ( io, 311 ) qsws(0,0)
1075          ELSE
1076             WRITE ( io, 311 ) surface_waterflux
1077          ENDIF
1078       ENDIF
1079       IF ( passive_scalar  .AND.  constant_scalarflux )  THEN
1080          WRITE ( io, 313 ) surface_scalarflux
1081       ENDIF
1082    ENDIF
1083
1084    IF ( use_top_fluxes )  THEN
1085       WRITE ( io, 304 )
1086       IF ( coupling_mode == 'uncoupled' )  THEN
1087          WRITE ( io, 320 )  top_momentumflux_u, top_momentumflux_v
1088          IF ( constant_top_heatflux )  THEN
1089             WRITE ( io, 306 )  top_heatflux
1090          ENDIF
1091       ELSEIF ( coupling_mode == 'ocean_to_atmosphere' )  THEN
1092          WRITE ( io, 316 )
1093       ENDIF
1094       IF ( ocean  .AND.  constant_top_salinityflux )                          &
1095          WRITE ( io, 309 )  top_salinityflux
1096       IF ( humidity       )  WRITE ( io, 315 )
1097       IF ( passive_scalar .AND.  constant_top_scalarflux )                    &
1098          WRITE ( io, 302 ) top_scalarflux
1099    ENDIF
1100
1101    IF ( constant_flux_layer )  THEN
1102       WRITE ( io, 305 )  (zu(1)-zu(0)), roughness_length,                     &
1103                          z0h_factor*roughness_length, kappa,                  &
1104                          zeta_min, zeta_max
1105       IF ( .NOT. constant_heatflux )  WRITE ( io, 308 )
1106       IF ( humidity  .AND.  .NOT. constant_waterflux )  THEN
1107          WRITE ( io, 312 )
1108       ENDIF
1109       IF ( passive_scalar  .AND.  .NOT. constant_scalarflux )  THEN
1110          WRITE ( io, 314 )
1111       ENDIF
1112    ELSE
1113       IF ( INDEX(initializing_actions, 'set_1d-model_profiles') /= 0 )  THEN
1114          WRITE ( io, 310 )  zeta_min, zeta_max
1115       ENDIF
1116    ENDIF
1117
1118    WRITE ( io, 317 )  bc_lr, bc_ns
1119    IF ( .NOT. bc_lr_cyc  .OR.  .NOT. bc_ns_cyc )  THEN
1120       WRITE ( io, 318 )  use_cmax, pt_damping_width, pt_damping_factor       
1121       IF ( turbulent_inflow )  THEN
1122          IF ( .NOT. recycling_yshift ) THEN
1123             WRITE ( io, 319 )  recycling_width, recycling_plane, &
1124                                inflow_damping_height, inflow_damping_width
1125          ELSE
1126             WRITE ( io, 322 )  recycling_width, recycling_plane, &
1127                                inflow_damping_height, inflow_damping_width
1128          END IF
1129       ENDIF
1130       IF ( turbulent_outflow )  THEN
1131          WRITE ( io, 323 )  outflow_source_plane, INT(outflow_source_plane/dx)
1132       ENDIF
1133    ENDIF
1134
1135!
1136!-- Initial Profiles
1137    WRITE ( io, 321 )
1138!
1139!-- Initial wind profiles
1140    IF ( u_profile(1) /= 9999999.9_wp )  WRITE ( io, 427 )
1141
1142!
1143!-- Initial temperature profile
1144!-- Building output strings, starting with surface temperature
1145    WRITE ( temperatures, '(F6.2)' )  pt_surface
1146    gradients = '------'
1147    slices = '     0'
1148    coordinates = '   0.0'
1149    i = 1
1150    DO  WHILE ( pt_vertical_gradient_level_ind(i) /= -9999 )
1151
1152       WRITE (coor_chr,'(F7.2)')  pt_init(pt_vertical_gradient_level_ind(i))
1153       temperatures = TRIM( temperatures ) // ' ' // TRIM( coor_chr )
1154
1155       WRITE (coor_chr,'(F7.2)')  pt_vertical_gradient(i)
1156       gradients = TRIM( gradients ) // ' ' // TRIM( coor_chr )
1157
1158       WRITE (coor_chr,'(I7)')  pt_vertical_gradient_level_ind(i)
1159       slices = TRIM( slices ) // ' ' // TRIM( coor_chr )
1160
1161       WRITE (coor_chr,'(F7.1)')  pt_vertical_gradient_level(i)
1162       coordinates = TRIM( coordinates ) // ' '  // TRIM( coor_chr )
1163
1164       IF ( i == 10 )  THEN
1165          EXIT
1166       ELSE
1167          i = i + 1
1168       ENDIF
1169
1170    ENDDO
1171
1172    IF ( .NOT. nudging )  THEN
1173       WRITE ( io, 420 )  TRIM( coordinates ), TRIM( temperatures ), &
1174                          TRIM( gradients ), TRIM( slices )
1175    ELSE
1176       WRITE ( io, 428 ) 
1177    ENDIF
1178
1179!
1180!-- Initial humidity profile
1181!-- Building output strings, starting with surface humidity
1182    IF ( humidity )  THEN
1183       WRITE ( temperatures, '(E8.1)' )  q_surface
1184       gradients = '--------'
1185       slices = '       0'
1186       coordinates = '     0.0'
1187       i = 1
1188       DO  WHILE ( q_vertical_gradient_level_ind(i) /= -9999 )
1189         
1190          WRITE (coor_chr,'(E8.1,4X)')  q_init(q_vertical_gradient_level_ind(i))
1191          temperatures = TRIM( temperatures ) // '  ' // TRIM( coor_chr )
1192
1193          WRITE (coor_chr,'(E8.1,4X)')  q_vertical_gradient(i)
1194          gradients = TRIM( gradients ) // '  ' // TRIM( coor_chr )
1195         
1196          WRITE (coor_chr,'(I8,4X)')  q_vertical_gradient_level_ind(i)
1197          slices = TRIM( slices ) // '  ' // TRIM( coor_chr )
1198         
1199          WRITE (coor_chr,'(F8.1,4X)')  q_vertical_gradient_level(i)
1200          coordinates = TRIM( coordinates ) // '  '  // TRIM( coor_chr )
1201
1202          IF ( i == 10 )  THEN
1203             EXIT
1204          ELSE
1205             i = i + 1
1206          ENDIF
1207
1208       ENDDO
1209
1210       IF ( .NOT. nudging )  THEN
1211          WRITE ( io, 421 )  TRIM( coordinates ), TRIM( temperatures ),        &
1212                             TRIM( gradients ), TRIM( slices )
1213       ENDIF
1214    ENDIF
1215!
1216!-- Initial scalar profile
1217!-- Building output strings, starting with surface humidity
1218    IF ( passive_scalar )  THEN
1219       WRITE ( temperatures, '(E8.1)' )  s_surface
1220       gradients = '--------'
1221       slices = '       0'
1222       coordinates = '     0.0'
1223       i = 1
1224       DO  WHILE ( s_vertical_gradient_level_ind(i) /= -9999 )
1225         
1226          WRITE (coor_chr,'(E8.1,4X)')  s_init(s_vertical_gradient_level_ind(i))
1227          temperatures = TRIM( temperatures ) // '  ' // TRIM( coor_chr )
1228
1229          WRITE (coor_chr,'(E8.1,4X)')  s_vertical_gradient(i)
1230          gradients = TRIM( gradients ) // '  ' // TRIM( coor_chr )
1231         
1232          WRITE (coor_chr,'(I8,4X)')  s_vertical_gradient_level_ind(i)
1233          slices = TRIM( slices ) // '  ' // TRIM( coor_chr )
1234         
1235          WRITE (coor_chr,'(F8.1,4X)')  s_vertical_gradient_level(i)
1236          coordinates = TRIM( coordinates ) // '  '  // TRIM( coor_chr )
1237
1238          IF ( i == 10 )  THEN
1239             EXIT
1240          ELSE
1241             i = i + 1
1242          ENDIF
1243
1244       ENDDO
1245
1246       WRITE ( io, 422 )  TRIM( coordinates ), TRIM( temperatures ),           &
1247                          TRIM( gradients ), TRIM( slices )
1248    ENDIF   
1249
1250!
1251!-- Initial salinity profile
1252!-- Building output strings, starting with surface salinity
1253    IF ( ocean )  THEN
1254       WRITE ( temperatures, '(F6.2)' )  sa_surface
1255       gradients = '------'
1256       slices = '     0'
1257       coordinates = '   0.0'
1258       i = 1
1259       DO  WHILE ( sa_vertical_gradient_level_ind(i) /= -9999 )
1260
1261          WRITE (coor_chr,'(F7.2)')  sa_init(sa_vertical_gradient_level_ind(i))
1262          temperatures = TRIM( temperatures ) // ' ' // TRIM( coor_chr )
1263
1264          WRITE (coor_chr,'(F7.2)')  sa_vertical_gradient(i)
1265          gradients = TRIM( gradients ) // ' ' // TRIM( coor_chr )
1266
1267          WRITE (coor_chr,'(I7)')  sa_vertical_gradient_level_ind(i)
1268          slices = TRIM( slices ) // ' ' // TRIM( coor_chr )
1269
1270          WRITE (coor_chr,'(F7.1)')  sa_vertical_gradient_level(i)
1271          coordinates = TRIM( coordinates ) // ' '  // TRIM( coor_chr )
1272
1273          IF ( i == 10 )  THEN
1274             EXIT
1275          ELSE
1276             i = i + 1
1277          ENDIF
1278
1279       ENDDO
1280
1281       WRITE ( io, 425 )  TRIM( coordinates ), TRIM( temperatures ), &
1282                          TRIM( gradients ), TRIM( slices )
1283    ENDIF
1284
1285
1286!
1287!-- Listing of 1D-profiles
1288    WRITE ( io, 325 )  dt_dopr_listing
1289    IF ( averaging_interval_pr /= 0.0_wp )  THEN
1290       WRITE ( io, 326 )  averaging_interval_pr, dt_averaging_input_pr
1291    ENDIF
1292
1293!
1294!-- DATA output
1295    WRITE ( io, 330 )
1296    IF ( averaging_interval_pr /= 0.0_wp )  THEN
1297       WRITE ( io, 326 )  averaging_interval_pr, dt_averaging_input_pr
1298    ENDIF
1299
1300!
1301!-- 1D-profiles
1302    dopr_chr = 'Profile:'
1303    IF ( dopr_n /= 0 )  THEN
1304       WRITE ( io, 331 )
1305
1306       output_format = ''
1307       output_format = netcdf_data_format_string
1308       IF ( netcdf_deflate == 0 )  THEN
1309          WRITE ( io, 344 )  output_format
1310       ELSE
1311          WRITE ( io, 354 )  TRIM( output_format ), netcdf_deflate
1312       ENDIF
1313
1314       DO  i = 1, dopr_n
1315          dopr_chr = TRIM( dopr_chr ) // ' ' // TRIM( data_output_pr(i) ) // ','
1316          IF ( LEN_TRIM( dopr_chr ) >= 60 )  THEN
1317             WRITE ( io, 332 )  dopr_chr
1318             dopr_chr = '       :'
1319          ENDIF
1320       ENDDO
1321
1322       IF ( dopr_chr /= '' )  THEN
1323          WRITE ( io, 332 )  dopr_chr
1324       ENDIF
1325       WRITE ( io, 333 )  dt_dopr, averaging_interval_pr, dt_averaging_input_pr
1326       IF ( skip_time_dopr /= 0.0_wp )  WRITE ( io, 339 )  skip_time_dopr
1327    ENDIF
1328
1329!
1330!-- 2D-arrays
1331    DO  av = 0, 1
1332
1333       i = 1
1334       do2d_xy = ''
1335       do2d_xz = ''
1336       do2d_yz = ''
1337       DO  WHILE ( do2d(av,i) /= ' ' )
1338
1339          l = MAX( 2, LEN_TRIM( do2d(av,i) ) )
1340          do2d_mode = do2d(av,i)(l-1:l)
1341
1342          SELECT CASE ( do2d_mode )
1343             CASE ( 'xy' )
1344                ll = LEN_TRIM( do2d_xy )
1345                do2d_xy = do2d_xy(1:ll) // ' ' // do2d(av,i)(1:l-3) // ','
1346             CASE ( 'xz' )
1347                ll = LEN_TRIM( do2d_xz )
1348                do2d_xz = do2d_xz(1:ll) // ' ' // do2d(av,i)(1:l-3) // ','
1349             CASE ( 'yz' )
1350                ll = LEN_TRIM( do2d_yz )
1351                do2d_yz = do2d_yz(1:ll) // ' ' // do2d(av,i)(1:l-3) // ','
1352          END SELECT
1353
1354          i = i + 1
1355
1356       ENDDO
1357
1358       IF ( ( ( do2d_xy /= ''  .AND.  section(1,1) /= -9999 )  .OR.    &
1359              ( do2d_xz /= ''  .AND.  section(1,2) /= -9999 )  .OR.    &
1360              ( do2d_yz /= ''  .AND.  section(1,3) /= -9999 ) ) )  THEN
1361
1362          IF (  av == 0 )  THEN
1363             WRITE ( io, 334 )  ''
1364          ELSE
1365             WRITE ( io, 334 )  '(time-averaged)'
1366          ENDIF
1367
1368          IF ( do2d_at_begin )  THEN
1369             begin_chr = 'and at the start'
1370          ELSE
1371             begin_chr = ''
1372          ENDIF
1373
1374          output_format = ''
1375          output_format = netcdf_data_format_string
1376          IF ( netcdf_deflate == 0 )  THEN
1377             WRITE ( io, 344 )  output_format
1378          ELSE
1379             WRITE ( io, 354 )  TRIM( output_format ), netcdf_deflate
1380          ENDIF
1381
1382          IF ( do2d_xy /= ''  .AND.  section(1,1) /= -9999 )  THEN
1383             i = 1
1384             slices = '/'
1385             coordinates = '/'
1386!
1387!--          Building strings with index and coordinate information of the
1388!--          slices
1389             DO  WHILE ( section(i,1) /= -9999 )
1390
1391                WRITE (section_chr,'(I5)')  section(i,1)
1392                section_chr = ADJUSTL( section_chr )
1393                slices = TRIM( slices ) // TRIM( section_chr ) // '/'
1394
1395                IF ( section(i,1) == -1 )  THEN
1396                   WRITE (coor_chr,'(F10.1)')  -1.0_wp
1397                ELSE
1398                   WRITE (coor_chr,'(F10.1)')  zu(section(i,1))
1399                ENDIF
1400                coor_chr = ADJUSTL( coor_chr )
1401                coordinates = TRIM( coordinates ) // TRIM( coor_chr ) // '/'
1402
1403                i = i + 1
1404             ENDDO
1405             IF ( av == 0 )  THEN
1406                WRITE ( io, 335 )  'XY', do2d_xy, dt_do2d_xy, &
1407                                   TRIM( begin_chr ), 'k', TRIM( slices ), &
1408                                   TRIM( coordinates )
1409                IF ( skip_time_do2d_xy /= 0.0_wp )  THEN
1410                   WRITE ( io, 339 )  skip_time_do2d_xy
1411                ENDIF
1412             ELSE
1413                WRITE ( io, 342 )  'XY', do2d_xy, dt_data_output_av, &
1414                                   TRIM( begin_chr ), averaging_interval, &
1415                                   dt_averaging_input, 'k', TRIM( slices ), &
1416                                   TRIM( coordinates )
1417                IF ( skip_time_data_output_av /= 0.0_wp )  THEN
1418                   WRITE ( io, 339 )  skip_time_data_output_av
1419                ENDIF
1420             ENDIF
1421             IF ( netcdf_data_format > 4 )  THEN
1422                WRITE ( io, 352 )  ntdim_2d_xy(av)
1423             ELSE
1424                WRITE ( io, 353 )
1425             ENDIF
1426          ENDIF
1427
1428          IF ( do2d_xz /= ''  .AND.  section(1,2) /= -9999 )  THEN
1429             i = 1
1430             slices = '/'
1431             coordinates = '/'
1432!
1433!--          Building strings with index and coordinate information of the
1434!--          slices
1435             DO  WHILE ( section(i,2) /= -9999 )
1436
1437                WRITE (section_chr,'(I5)')  section(i,2)
1438                section_chr = ADJUSTL( section_chr )
1439                slices = TRIM( slices ) // TRIM( section_chr ) // '/'
1440
1441                WRITE (coor_chr,'(F10.1)')  section(i,2) * dy
1442                coor_chr = ADJUSTL( coor_chr )
1443                coordinates = TRIM( coordinates ) // TRIM( coor_chr ) // '/'
1444
1445                i = i + 1
1446             ENDDO
1447             IF ( av == 0 )  THEN
1448                WRITE ( io, 335 )  'XZ', do2d_xz, dt_do2d_xz, &
1449                                   TRIM( begin_chr ), 'j', TRIM( slices ), &
1450                                   TRIM( coordinates )
1451                IF ( skip_time_do2d_xz /= 0.0_wp )  THEN
1452                   WRITE ( io, 339 )  skip_time_do2d_xz
1453                ENDIF
1454             ELSE
1455                WRITE ( io, 342 )  'XZ', do2d_xz, dt_data_output_av, &
1456                                   TRIM( begin_chr ), averaging_interval, &
1457                                   dt_averaging_input, 'j', TRIM( slices ), &
1458                                   TRIM( coordinates )
1459                IF ( skip_time_data_output_av /= 0.0_wp )  THEN
1460                   WRITE ( io, 339 )  skip_time_data_output_av
1461                ENDIF
1462             ENDIF
1463             IF ( netcdf_data_format > 4 )  THEN
1464                WRITE ( io, 352 )  ntdim_2d_xz(av)
1465             ELSE
1466                WRITE ( io, 353 )
1467             ENDIF
1468          ENDIF
1469
1470          IF ( do2d_yz /= ''  .AND.  section(1,3) /= -9999 )  THEN
1471             i = 1
1472             slices = '/'
1473             coordinates = '/'
1474!
1475!--          Building strings with index and coordinate information of the
1476!--          slices
1477             DO  WHILE ( section(i,3) /= -9999 )
1478
1479                WRITE (section_chr,'(I5)')  section(i,3)
1480                section_chr = ADJUSTL( section_chr )
1481                slices = TRIM( slices ) // TRIM( section_chr ) // '/'
1482
1483                WRITE (coor_chr,'(F10.1)')  section(i,3) * dx
1484                coor_chr = ADJUSTL( coor_chr )
1485                coordinates = TRIM( coordinates ) // TRIM( coor_chr ) // '/'
1486
1487                i = i + 1
1488             ENDDO
1489             IF ( av == 0 )  THEN
1490                WRITE ( io, 335 )  'YZ', do2d_yz, dt_do2d_yz, &
1491                                   TRIM( begin_chr ), 'i', TRIM( slices ), &
1492                                   TRIM( coordinates )
1493                IF ( skip_time_do2d_yz /= 0.0_wp )  THEN
1494                   WRITE ( io, 339 )  skip_time_do2d_yz
1495                ENDIF
1496             ELSE
1497                WRITE ( io, 342 )  'YZ', do2d_yz, dt_data_output_av, &
1498                                   TRIM( begin_chr ), averaging_interval, &
1499                                   dt_averaging_input, 'i', TRIM( slices ), &
1500                                   TRIM( coordinates )
1501                IF ( skip_time_data_output_av /= 0.0_wp )  THEN
1502                   WRITE ( io, 339 )  skip_time_data_output_av
1503                ENDIF
1504             ENDIF
1505             IF ( netcdf_data_format > 4 )  THEN
1506                WRITE ( io, 352 )  ntdim_2d_yz(av)
1507             ELSE
1508                WRITE ( io, 353 )
1509             ENDIF
1510          ENDIF
1511
1512       ENDIF
1513
1514    ENDDO
1515
1516!
1517!-- 3d-arrays
1518    DO  av = 0, 1
1519
1520       i = 1
1521       do3d_chr = ''
1522       DO  WHILE ( do3d(av,i) /= ' ' )
1523
1524          do3d_chr = TRIM( do3d_chr ) // ' ' // TRIM( do3d(av,i) ) // ','
1525          i = i + 1
1526
1527       ENDDO
1528
1529       IF ( do3d_chr /= '' )  THEN
1530          IF ( av == 0 )  THEN
1531             WRITE ( io, 336 )  ''
1532          ELSE
1533             WRITE ( io, 336 )  '(time-averaged)'
1534          ENDIF
1535
1536          output_format = netcdf_data_format_string
1537          IF ( netcdf_deflate == 0 )  THEN
1538             WRITE ( io, 344 )  output_format
1539          ELSE
1540             WRITE ( io, 354 )  TRIM( output_format ), netcdf_deflate
1541          ENDIF
1542
1543          IF ( do3d_at_begin )  THEN
1544             begin_chr = 'and at the start'
1545          ELSE
1546             begin_chr = ''
1547          ENDIF
1548          IF ( av == 0 )  THEN
1549             WRITE ( io, 337 )  do3d_chr, dt_do3d, TRIM( begin_chr ), &
1550                                zu(nz_do3d), nz_do3d
1551          ELSE
1552             WRITE ( io, 343 )  do3d_chr, dt_data_output_av,           &
1553                                TRIM( begin_chr ), averaging_interval, &
1554                                dt_averaging_input, zu(nz_do3d), nz_do3d
1555          ENDIF
1556
1557          IF ( netcdf_data_format > 4 )  THEN
1558             WRITE ( io, 352 )  ntdim_3d(av)
1559          ELSE
1560             WRITE ( io, 353 )
1561          ENDIF
1562
1563          IF ( av == 0 )  THEN
1564             IF ( skip_time_do3d /= 0.0_wp )  THEN
1565                WRITE ( io, 339 )  skip_time_do3d
1566             ENDIF
1567          ELSE
1568             IF ( skip_time_data_output_av /= 0.0_wp )  THEN
1569                WRITE ( io, 339 )  skip_time_data_output_av
1570             ENDIF
1571          ENDIF
1572
1573       ENDIF
1574
1575    ENDDO
1576
1577!
1578!-- masked arrays
1579    IF ( masks > 0 )  WRITE ( io, 345 )  &
1580         mask_scale_x, mask_scale_y, mask_scale_z
1581    DO  mid = 1, masks
1582       DO  av = 0, 1
1583
1584          i = 1
1585          domask_chr = ''
1586          DO  WHILE ( domask(mid,av,i) /= ' ' )
1587             domask_chr = TRIM( domask_chr ) // ' ' //  &
1588                          TRIM( domask(mid,av,i) ) // ','
1589             i = i + 1
1590          ENDDO
1591
1592          IF ( domask_chr /= '' )  THEN
1593             IF ( av == 0 )  THEN
1594                WRITE ( io, 346 )  '', mid
1595             ELSE
1596                WRITE ( io, 346 )  ' (time-averaged)', mid
1597             ENDIF
1598
1599             output_format = netcdf_data_format_string
1600!--          Parallel output not implemented for mask data, hence
1601!--          output_format must be adjusted.
1602             IF ( netcdf_data_format == 5 ) output_format = 'netCDF4/HDF5'
1603             IF ( netcdf_data_format == 6 ) output_format = 'netCDF4/HDF5 classic'
1604             IF ( netcdf_deflate == 0 )  THEN
1605                WRITE ( io, 344 )  output_format
1606             ELSE
1607                WRITE ( io, 354 )  TRIM( output_format ), netcdf_deflate
1608             ENDIF
1609
1610             IF ( av == 0 )  THEN
1611                WRITE ( io, 347 )  domask_chr, dt_domask(mid)
1612             ELSE
1613                WRITE ( io, 348 )  domask_chr, dt_data_output_av, &
1614                                   averaging_interval, dt_averaging_input
1615             ENDIF
1616
1617             IF ( av == 0 )  THEN
1618                IF ( skip_time_domask(mid) /= 0.0_wp )  THEN
1619                   WRITE ( io, 339 )  skip_time_domask(mid)
1620                ENDIF
1621             ELSE
1622                IF ( skip_time_data_output_av /= 0.0_wp )  THEN
1623                   WRITE ( io, 339 )  skip_time_data_output_av
1624                ENDIF
1625             ENDIF
1626!
1627!--          output locations
1628             DO  dim = 1, 3
1629                IF ( mask(mid,dim,1) >= 0.0_wp )  THEN
1630                   count = 0
1631                   DO  WHILE ( mask(mid,dim,count+1) >= 0.0_wp )
1632                      count = count + 1
1633                   ENDDO
1634                   WRITE ( io, 349 )  dir(dim), dir(dim), mid, dir(dim), &
1635                                      mask(mid,dim,:count)
1636                ELSEIF ( mask_loop(mid,dim,1) < 0.0_wp .AND.  &
1637                         mask_loop(mid,dim,2) < 0.0_wp .AND.  &
1638                         mask_loop(mid,dim,3) == 0.0_wp )  THEN
1639                   WRITE ( io, 350 )  dir(dim), dir(dim)
1640                ELSEIF ( mask_loop(mid,dim,3) == 0.0_wp )  THEN
1641                   WRITE ( io, 351 )  dir(dim), dir(dim), mid, dir(dim), &
1642                                      mask_loop(mid,dim,1:2)
1643                ELSE
1644                   WRITE ( io, 351 )  dir(dim), dir(dim), mid, dir(dim), &
1645                                      mask_loop(mid,dim,1:3)
1646                ENDIF
1647             ENDDO
1648          ENDIF
1649
1650       ENDDO
1651    ENDDO
1652
1653!
1654!-- Timeseries
1655    IF ( dt_dots /= 9999999.9_wp )  THEN
1656       WRITE ( io, 340 )
1657
1658       output_format = netcdf_data_format_string
1659       IF ( netcdf_deflate == 0 )  THEN
1660          WRITE ( io, 344 )  output_format
1661       ELSE
1662          WRITE ( io, 354 )  TRIM( output_format ), netcdf_deflate
1663       ENDIF
1664       WRITE ( io, 341 )  dt_dots
1665    ENDIF
1666
1667#if defined( __dvrp_graphics )
1668!
1669!-- Dvrp-output
1670    IF ( dt_dvrp /= 9999999.9_wp )  THEN
1671       WRITE ( io, 360 )  dt_dvrp, TRIM( dvrp_output ), TRIM( dvrp_host ), &
1672                          TRIM( dvrp_username ), TRIM( dvrp_directory )
1673       i = 1
1674       l = 0
1675       m = 0
1676       DO WHILE ( mode_dvrp(i) /= ' ' )
1677          IF ( mode_dvrp(i)(1:10) == 'isosurface' )  THEN
1678             READ ( mode_dvrp(i), '(10X,I2)' )  j
1679             l = l + 1
1680             IF ( do3d(0,j) /= ' ' )  THEN
1681                WRITE ( io, 361 )  TRIM( do3d(0,j) ), threshold(l), &
1682                                   isosurface_color(:,l)
1683             ENDIF
1684          ELSEIF ( mode_dvrp(i)(1:6) == 'slicer' )  THEN
1685             READ ( mode_dvrp(i), '(6X,I2)' )  j
1686             m = m + 1
1687             IF ( do2d(0,j) /= ' ' )  THEN
1688                WRITE ( io, 362 )  TRIM( do2d(0,j) ), &
1689                                   slicer_range_limits_dvrp(:,m)
1690             ENDIF
1691          ENDIF
1692          i = i + 1
1693       ENDDO
1694
1695       WRITE ( io, 365 )  groundplate_color, superelevation_x, &
1696                          superelevation_y, superelevation, clip_dvrp_l, &
1697                          clip_dvrp_r, clip_dvrp_s, clip_dvrp_n
1698
1699       IF ( TRIM( topography ) /= 'flat' )  THEN
1700          WRITE ( io, 366 )  topography_color
1701          IF ( cluster_size > 1 )  THEN
1702             WRITE ( io, 367 )  cluster_size
1703          ENDIF
1704       ENDIF
1705
1706    ENDIF
1707#endif
1708!
1709!-- Output of virtual flight information
1710    IF ( virtual_flight )  CALL flight_header( io )
1711
1712!
1713!-- Output of spectra related quantities
1714    IF ( calculate_spectra )  CALL spectra_header( io )
1715
1716    WRITE ( io, 99 )
1717
1718!
1719!-- Physical quantities
1720    WRITE ( io, 400 )
1721
1722!
1723!-- Geostrophic parameters
1724    WRITE ( io, 410 )  phi, omega, f, fs
1725
1726!
1727!-- Other quantities
1728    WRITE ( io, 411 )  g
1729
1730    WRITE ( io, 412 )  TRIM( reference_state )
1731    IF ( use_single_reference_value )  THEN
1732       IF ( ocean )  THEN
1733          WRITE ( io, 413 )  prho_reference
1734       ELSE
1735          WRITE ( io, 414 )  pt_reference
1736       ENDIF
1737    ENDIF
1738
1739!
1740!-- Cloud physics parameters
1741    IF ( cloud_physics )  THEN
1742       WRITE ( io, 415 )
1743       WRITE ( io, 416 ) surface_pressure, r_d, rho_surface, cp, l_v
1744       IF ( microphysics_seifert )  THEN
1745          WRITE ( io, 510 ) 1.0E-6_wp * nc_const
1746          WRITE ( io, 511 ) c_sedimentation
1747       ENDIF
1748    ENDIF
1749
1750!
1751!-- Cloud physcis parameters / quantities / numerical methods
1752    WRITE ( io, 430 )
1753    IF ( humidity .AND. .NOT. cloud_physics .AND. .NOT. cloud_droplets)  THEN
1754       WRITE ( io, 431 )
1755    ELSEIF ( humidity  .AND.  cloud_physics )  THEN
1756       WRITE ( io, 432 )
1757       IF ( cloud_top_radiation )  WRITE ( io, 132 )
1758       IF ( microphysics_kessler )  THEN
1759          WRITE ( io, 133 )
1760       ELSEIF ( microphysics_seifert )  THEN
1761          IF ( cloud_water_sedimentation )  WRITE ( io, 506 )
1762          WRITE ( io, 505 )
1763          IF ( collision_turbulence )  WRITE ( io, 507 )
1764          IF ( ventilation_effect )  WRITE ( io, 508 )
1765          IF ( limiter_sedimentation )  WRITE ( io, 509 )
1766       ENDIF
1767    ELSEIF ( humidity  .AND.  cloud_droplets )  THEN
1768       WRITE ( io, 433 )
1769       IF ( curvature_solution_effects )  WRITE ( io, 434 )
1770       IF ( collision_kernel /= 'none' )  THEN
1771          WRITE ( io, 435 )  TRIM( collision_kernel )
1772          IF ( collision_kernel(6:9) == 'fast' )  THEN
1773             WRITE ( io, 436 )  radius_classes, dissipation_classes
1774          ENDIF
1775       ELSE
1776          WRITE ( io, 437 )
1777       ENDIF
1778    ENDIF
1779
1780!
1781!-- LES / turbulence parameters
1782    WRITE ( io, 450 )
1783
1784!--
1785! ... LES-constants used must still be added here
1786!--
1787    IF ( constant_diffusion )  THEN
1788       WRITE ( io, 451 )  km_constant, km_constant/prandtl_number, &
1789                          prandtl_number
1790    ENDIF
1791    IF ( .NOT. constant_diffusion)  THEN
1792       IF ( e_init > 0.0_wp )  WRITE ( io, 455 )  e_init
1793       IF ( e_min > 0.0_wp )  WRITE ( io, 454 )  e_min
1794       IF ( wall_adjustment )  WRITE ( io, 453 )  wall_adjustment_factor
1795    ENDIF
1796
1797!
1798!-- Special actions during the run
1799    WRITE ( io, 470 )
1800    IF ( create_disturbances )  THEN
1801       WRITE ( io, 471 )  dt_disturb, disturbance_amplitude,                   &
1802                          zu(disturbance_level_ind_b), disturbance_level_ind_b,&
1803                          zu(disturbance_level_ind_t), disturbance_level_ind_t
1804       IF ( .NOT. bc_lr_cyc  .OR.  .NOT. bc_ns_cyc )  THEN
1805          WRITE ( io, 472 )  inflow_disturbance_begin, inflow_disturbance_end
1806       ELSE
1807          WRITE ( io, 473 )  disturbance_energy_limit
1808       ENDIF
1809       WRITE ( io, 474 )  TRIM( random_generator )
1810    ENDIF
1811    IF ( pt_surface_initial_change /= 0.0_wp )  THEN
1812       WRITE ( io, 475 )  pt_surface_initial_change
1813    ENDIF
1814    IF ( humidity  .AND.  q_surface_initial_change /= 0.0_wp )  THEN
1815       WRITE ( io, 476 )  q_surface_initial_change       
1816    ENDIF
1817    IF ( passive_scalar  .AND.  q_surface_initial_change /= 0.0_wp )  THEN
1818       WRITE ( io, 477 )  q_surface_initial_change       
1819    ENDIF
1820
1821    IF ( particle_advection )  THEN
1822!
1823!--    Particle attributes
1824       WRITE ( io, 480 )  particle_advection_start, dt_prel, bc_par_lr, &
1825                          bc_par_ns, bc_par_b, bc_par_t, particle_maximum_age, &
1826                          end_time_prel
1827       IF ( use_sgs_for_particles )  WRITE ( io, 488 )  dt_min_part
1828       IF ( random_start_position )  WRITE ( io, 481 )
1829       IF ( seed_follows_topography )  WRITE ( io, 496 )
1830       IF ( particles_per_point > 1 )  WRITE ( io, 489 )  particles_per_point
1831       WRITE ( io, 495 )  total_number_of_particles
1832       IF ( dt_write_particle_data /= 9999999.9_wp )  THEN
1833          WRITE ( io, 485 )  dt_write_particle_data
1834          IF ( netcdf_data_format > 1 )  THEN
1835             output_format = 'netcdf (64 bit offset) and binary'
1836          ELSE
1837             output_format = 'netcdf and binary'
1838          ENDIF
1839          IF ( netcdf_deflate == 0 )  THEN
1840             WRITE ( io, 344 )  output_format
1841          ELSE
1842             WRITE ( io, 354 )  TRIM( output_format ), netcdf_deflate
1843          ENDIF
1844       ENDIF
1845       IF ( dt_dopts /= 9999999.9_wp )  WRITE ( io, 494 )  dt_dopts
1846       IF ( write_particle_statistics )  WRITE ( io, 486 )
1847
1848       WRITE ( io, 487 )  number_of_particle_groups
1849
1850       DO  i = 1, number_of_particle_groups
1851          IF ( i == 1  .AND.  density_ratio(i) == 9999999.9_wp )  THEN
1852             WRITE ( io, 490 )  i, 0.0_wp
1853             WRITE ( io, 492 )
1854          ELSE
1855             WRITE ( io, 490 )  i, radius(i)
1856             IF ( density_ratio(i) /= 0.0_wp )  THEN
1857                WRITE ( io, 491 )  density_ratio(i)
1858             ELSE
1859                WRITE ( io, 492 )
1860             ENDIF
1861          ENDIF
1862          WRITE ( io, 493 )  psl(i), psr(i), pss(i), psn(i), psb(i), pst(i), &
1863                             pdx(i), pdy(i), pdz(i)
1864          IF ( .NOT. vertical_particle_advection(i) )  WRITE ( io, 482 )
1865       ENDDO
1866
1867    ENDIF
1868
1869
1870!
1871!-- Parameters of 1D-model
1872    IF ( INDEX( initializing_actions, 'set_1d-model_profiles' ) /= 0 )  THEN
1873       WRITE ( io, 500 )  end_time_1d, dt_run_control_1d, dt_pr_1d, &
1874                          mixing_length_1d, dissipation_1d
1875       IF ( damp_level_ind_1d /= nzt+1 )  THEN
1876          WRITE ( io, 502 )  zu(damp_level_ind_1d), damp_level_ind_1d
1877       ENDIF
1878    ENDIF
1879
1880!
1881!-- User-defined information
1882    CALL user_header( io )
1883
1884    WRITE ( io, 99 )
1885
1886!
1887!-- Write buffer contents to disc immediately
1888    FLUSH( io )
1889
1890!
1891!-- Here the FORMATs start
1892
1893 99 FORMAT (1X,78('-'))
1894100 FORMAT (/1X,'******************************',4X,44('-')/        &
1895            1X,'* ',A,' *',4X,A/                               &
1896            1X,'******************************',4X,44('-'))
1897101 FORMAT (35X,'coupled run using MPI-',I1,': ',A/ &
1898            35X,42('-'))
1899102 FORMAT (/' Date:                 ',A8,4X,'Run:       ',A20/      &
1900            ' Time:                 ',A8,4X,'Run-No.:   ',I2.2/     &
1901            ' Run on host:        ',A10)
1902#if defined( __parallel )
1903103 FORMAT (' Number of PEs:',10X,I6,4X,'Processor grid (x,y): (',I4,',',I4, &
1904              ')',1X,A)
1905104 FORMAT (' Number of PEs:',10X,I6,4X,'Tasks:',I4,'   threads per task:',I4/ &
1906              35X,'Processor grid (x,y): (',I4,',',I4,')',1X,A)
1907105 FORMAT (35X,'One additional PE is used to handle'/37X,'the dvrp output!')
1908106 FORMAT (35X,'A 1d-decomposition along x is forced'/ &
1909            35X,'because the job is running on an SMP-cluster')
1910107 FORMAT (35X,'A 1d-decomposition along ',A,' is used')
1911108 FORMAT (35X,'Max. # of parallel I/O streams is ',I5)
1912109 FORMAT (35X,'Precursor run for coupled atmos-ocean run'/ &
1913            35X,42('-'))
1914114 FORMAT (35X,'Coupled atmosphere-ocean run following'/ &
1915            35X,'independent precursor runs'/             &
1916            35X,42('-'))
1917#endif
1918110 FORMAT (/' Numerical Schemes:'/ &
1919             ' -----------------'/)
1920121 FORMAT (' --> Use the ',A,' approximation for the model equations.')
1921111 FORMAT (' --> Solve perturbation pressure via FFT using ',A,' routines')
1922112 FORMAT (' --> Solve perturbation pressure via SOR-Red/Black-Schema'/ &
1923            '     Iterations (initial/other): ',I3,'/',I3,'  omega =',F6.3)
1924113 FORMAT (' --> Momentum advection via Piascek-Williams-Scheme (Form C3)', &
1925                  ' or Upstream')
1926115 FORMAT ('     FFT and transpositions are overlapping')
1927116 FORMAT (' --> Scalar advection via Piascek-Williams-Scheme (Form C3)', &
1928                  ' or Upstream')
1929118 FORMAT (' --> Scalar advection via Bott-Chlond-Scheme')
1930119 FORMAT (' --> Galilei-Transform applied to horizontal advection:'/ &
1931            '     translation velocity = ',A/ &
1932            '     distance advected ',A,':  ',F8.3,' km(x)  ',F8.3,' km(y)')
1933122 FORMAT (' --> Time differencing scheme: ',A)
1934123 FORMAT (' --> Rayleigh-Damping active, starts ',A,' z = ',F8.2,' m'/ &
1935            '     maximum damping coefficient:',F6.3, ' 1/s')
1936129 FORMAT (' --> Additional prognostic equation for the specific humidity')
1937130 FORMAT (' --> Additional prognostic equation for the total water content')
1938131 FORMAT (' --> No pt-equation solved. Neutral stratification with pt = ', &
1939                  F6.2, ' K assumed')
1940132 FORMAT ('     Parameterization of long-wave radiation processes via'/ &
1941            '     effective emissivity scheme')
1942133 FORMAT ('     Precipitation parameterization via Kessler-Scheme')
1943134 FORMAT (' --> Additional prognostic equation for a passive scalar')
1944135 FORMAT (' --> Solve perturbation pressure via ',A,' method (', &
1945                  A,'-cycle)'/ &
1946            '     number of grid levels:                   ',I2/ &
1947            '     Gauss-Seidel red/black iterations:       ',I2)
1948136 FORMAT ('     gridpoints of coarsest subdomain (x,y,z): (',I3,',',I3,',', &
1949                  I3,')')
1950137 FORMAT ('     level data gathered on PE0 at level:     ',I2/ &
1951            '     gridpoints of coarsest subdomain (x,y,z): (',I3,',',I3,',', &
1952                  I3,')'/ &
1953            '     gridpoints of coarsest domain (x,y,z):    (',I3,',',I3,',', &
1954                  I3,')')
1955139 FORMAT (' --> Loop optimization method: ',A)
1956140 FORMAT ('     maximum residual allowed:                ',E10.3)
1957141 FORMAT ('     fixed number of multigrid cycles:        ',I4)
1958142 FORMAT ('     perturbation pressure is calculated at every Runge-Kutta ', &
1959                  'step')
1960143 FORMAT ('     Euler/upstream scheme is used for the SGS turbulent ', &
1961                  'kinetic energy')
1962144 FORMAT ('     masking method is used')
1963150 FORMAT (' --> Volume flow at the right and north boundary will be ', &
1964                  'conserved'/ &
1965            '     using the ',A,' mode')
1966151 FORMAT ('     with u_bulk = ',F7.3,' m/s and v_bulk = ',F7.3,' m/s')
1967152 FORMAT (' --> External pressure gradient directly prescribed by the user:',&
1968           /'     ',2(1X,E12.5),'Pa/m in x/y direction', &
1969           /'     starting from dp_level_b =', F8.3, 'm', A /)
1970160 FORMAT (//' Large scale forcing and nudging:'/ &
1971              ' -------------------------------'/)
1972161 FORMAT (' --> No large scale forcing from external is used (default) ')
1973162 FORMAT (' --> Large scale forcing from external file LSF_DATA is used: ')
1974163 FORMAT ('     - large scale advection tendencies ')
1975164 FORMAT ('     - large scale subsidence velocity w_subs ')
1976165 FORMAT ('     - large scale subsidence tendencies ')
1977167 FORMAT ('     - and geostrophic wind components ug and vg')
1978168 FORMAT (' --> Large-scale vertical motion is used in the ', &
1979                  'prognostic equation(s) for')
1980169 FORMAT ('     the scalar(s) only')
1981170 FORMAT (' --> Nudging is used')
1982171 FORMAT (' --> No nudging is used (default) ')
1983180 FORMAT ('     - prescribed surface values for temperature')
1984181 FORMAT ('     - prescribed surface fluxes for temperature')
1985182 FORMAT ('     - prescribed surface values for humidity')
1986183 FORMAT ('     - prescribed surface fluxes for humidity')
1987200 FORMAT (//' Run time and time step information:'/ &
1988             ' ----------------------------------'/)
1989201 FORMAT ( ' Timestep:             variable     maximum value: ',F6.3,' s', &
1990             '    CFL-factor:',F5.2)
1991202 FORMAT ( ' Timestep:          dt = ',F6.3,' s'/)
1992203 FORMAT ( ' Start time:          ',F9.3,' s'/ &
1993             ' End time:            ',F9.3,' s')
1994204 FORMAT ( A,F9.3,' s')
1995205 FORMAT ( A,F9.3,' s',5X,'restart every',17X,F9.3,' s')
1996206 FORMAT (/' Time reached:        ',F9.3,' s'/ &
1997             ' CPU-time used:       ',F9.3,' s     per timestep:               ', &
1998               '  ',F9.3,' s'/                                                    &
1999             '                                      per second of simulated tim', &
2000               'e: ',F9.3,' s')
2001207 FORMAT ( ' Coupling start time: ',F9.3,' s')
2002250 FORMAT (//' Computational grid and domain size:'/ &
2003              ' ----------------------------------'// &
2004              ' Grid length:      dx =    ',F7.3,' m    dy =    ',F7.3, &
2005              ' m    dz =    ',F7.3,' m'/ &
2006              ' Domain size:       x = ',F10.3,' m     y = ',F10.3, &
2007              ' m  z(u) = ',F10.3,' m'/)
2008252 FORMAT (' dz constant up to ',F10.3,' m (k=',I4,'), then stretched by', &
2009              ' factor:',F6.3/ &
2010            ' maximum dz not to be exceeded is dz_max = ',F10.3,' m'/)
2011254 FORMAT (' Number of gridpoints (x,y,z):  (0:',I4,', 0:',I4,', 0:',I4,')'/ &
2012            ' Subdomain size (x,y,z):        (  ',I4,',   ',I4,',   ',I4,')'/)
2013260 FORMAT (/' The model has a slope in x-direction. Inclination angle: ',F6.2,&
2014             ' degrees')
2015270 FORMAT (//' Topography information:'/ &
2016              ' ----------------------'// &
2017              1X,'Topography: ',A)
2018271 FORMAT (  ' Building size (x/y/z) in m: ',F5.1,' / ',F5.1,' / ',F5.1/ &
2019              ' Horizontal index bounds (l/r/s/n): ',I4,' / ',I4,' / ',I4, &
2020                ' / ',I4)
2021272 FORMAT (  ' Single quasi-2D street canyon of infinite length in ',A, &
2022              ' direction' / &
2023              ' Canyon height: ', F6.2, 'm, ch = ', I4, '.'      / &
2024              ' Canyon position (',A,'-walls): cxl = ', I4,', cxr = ', I4, '.')
2025278 FORMAT (' Topography grid definition convention:'/ &
2026            ' cell edge (staggered grid points'/  &
2027            ' (u in x-direction, v in y-direction))' /)
2028279 FORMAT (' Topography grid definition convention:'/ &
2029            ' cell center (scalar grid points)' /)
2030300 FORMAT (//' Boundary conditions:'/ &
2031             ' -------------------'// &
2032             '                     p                    uv             ', &
2033             '                     pt'// &
2034             ' B. bound.: ',A/ &
2035             ' T. bound.: ',A)
2036301 FORMAT (/'                     ',A// &
2037             ' B. bound.: ',A/ &
2038             ' T. bound.: ',A)
2039303 FORMAT (/' Bottom surface fluxes are used in diffusion terms at k=1')
2040304 FORMAT (/' Top surface fluxes are used in diffusion terms at k=nzt')
2041305 FORMAT (//'    Prandtl-Layer between bottom surface and first ', &
2042               'computational u,v-level:'// &
2043             '       zp = ',F6.2,' m   z0 =',F7.4,' m   z0h =',F8.5,&
2044             ' m   kappa =',F5.2/ &
2045             '       Rif value range:   ',F8.2,' <= rif <=',F6.2)
2046306 FORMAT ('       Predefined constant heatflux:   ',F9.6,' K m/s')
2047307 FORMAT ('       Heatflux has a random normal distribution')
2048308 FORMAT ('       Predefined surface temperature')
2049309 FORMAT ('       Predefined constant salinityflux:   ',F9.6,' psu m/s')
2050310 FORMAT (//'    1D-Model:'// &
2051             '       Rif value range:   ',F6.2,' <= rif <=',F6.2)
2052311 FORMAT ('       Predefined constant humidity flux: ',E10.3,' kg/kg m/s')
2053312 FORMAT ('       Predefined surface humidity')
2054313 FORMAT ('       Predefined constant scalar flux: ',E10.3,' kg/(m**2 s)')
2055314 FORMAT ('       Predefined scalar value at the surface')
2056302 FORMAT ('       Predefined constant scalarflux:   ',F9.6,' kg/(m**2 s)')
2057315 FORMAT ('       Humidity flux at top surface is 0.0')
2058316 FORMAT ('       Sensible heatflux and momentum flux from coupled ', &
2059                    'atmosphere model')
2060317 FORMAT (//' Lateral boundaries:'/ &
2061            '       left/right:  ',A/    &
2062            '       north/south: ',A)
2063318 FORMAT (/'       use_cmax: ',L1 / &
2064            '       pt damping layer width = ',F8.2,' m, pt ', &
2065                    'damping factor =',F7.4)
2066319 FORMAT ('       turbulence recycling at inflow switched on'/ &
2067            '       width of recycling domain: ',F7.1,' m   grid index: ',I4/ &
2068            '       inflow damping height: ',F6.1,' m   width: ',F6.1,' m')
2069320 FORMAT ('       Predefined constant momentumflux:  u: ',F9.6,' m**2/s**2'/ &
2070            '                                          v: ',F9.6,' m**2/s**2')
2071321 FORMAT (//' Initial profiles:'/ &
2072              ' ----------------')
2073322 FORMAT ('       turbulence recycling at inflow switched on'/ &
2074            '       y shift of the recycled inflow turbulence switched on'/ &
2075            '       width of recycling domain: ',F7.1,' m   grid index: ',I4/ &
2076            '       inflow damping height: ',F6.1,' m   width: ',F6.1,' m'/)
2077323 FORMAT ('       turbulent outflow conditon switched on'/ &
2078            '       position of outflow source plane: ',F7.1,' m   ', &
2079                    'grid index: ', I4)
2080325 FORMAT (//' List output:'/ &
2081             ' -----------'//  &
2082            '    1D-Profiles:'/    &
2083            '       Output every             ',F8.2,' s')
2084326 FORMAT ('       Time averaged over       ',F8.2,' s'/ &
2085            '       Averaging input every    ',F8.2,' s')
2086330 FORMAT (//' Data output:'/ &
2087             ' -----------'/)
2088331 FORMAT (/'    1D-Profiles:')
2089332 FORMAT (/'       ',A)
2090333 FORMAT ('       Output every             ',F8.2,' s',/ &
2091            '       Time averaged over       ',F8.2,' s'/ &
2092            '       Averaging input every    ',F8.2,' s')
2093334 FORMAT (/'    2D-Arrays',A,':')
2094335 FORMAT (/'       ',A2,'-cross-section  Arrays: ',A/ &
2095            '       Output every             ',F8.2,' s  ',A/ &
2096            '       Cross sections at ',A1,' = ',A/ &
2097            '       scalar-coordinates:   ',A,' m'/)
2098336 FORMAT (/'    3D-Arrays',A,':')
2099337 FORMAT (/'       Arrays: ',A/ &
2100            '       Output every             ',F8.2,' s  ',A/ &
2101            '       Upper output limit at    ',F8.2,' m  (GP ',I4,')'/)
2102339 FORMAT ('       No output during initial ',F8.2,' s')
2103340 FORMAT (/'    Time series:')
2104341 FORMAT ('       Output every             ',F8.2,' s'/)
2105342 FORMAT (/'       ',A2,'-cross-section  Arrays: ',A/ &
2106            '       Output every             ',F8.2,' s  ',A/ &
2107            '       Time averaged over       ',F8.2,' s'/ &
2108            '       Averaging input every    ',F8.2,' s'/ &
2109            '       Cross sections at ',A1,' = ',A/ &
2110            '       scalar-coordinates:   ',A,' m'/)
2111343 FORMAT (/'       Arrays: ',A/ &
2112            '       Output every             ',F8.2,' s  ',A/ &
2113            '       Time averaged over       ',F8.2,' s'/ &
2114            '       Averaging input every    ',F8.2,' s'/ &
2115            '       Upper output limit at    ',F8.2,' m  (GP ',I4,')'/)
2116344 FORMAT ('       Output format: ',A/)
2117345 FORMAT (/'    Scaling lengths for output locations of all subsequent mask IDs:',/ &
2118            '       mask_scale_x (in x-direction): ',F9.3, ' m',/ &
2119            '       mask_scale_y (in y-direction): ',F9.3, ' m',/ &
2120            '       mask_scale_z (in z-direction): ',F9.3, ' m' )
2121346 FORMAT (/'    Masked data output',A,' for mask ID ',I2, ':')
2122347 FORMAT ('       Variables: ',A/ &
2123            '       Output every             ',F8.2,' s')
2124348 FORMAT ('       Variables: ',A/ &
2125            '       Output every             ',F8.2,' s'/ &
2126            '       Time averaged over       ',F8.2,' s'/ &
2127            '       Averaging input every    ',F8.2,' s')
2128349 FORMAT (/'       Output locations in ',A,'-direction in multiples of ', &
2129            'mask_scale_',A,' predefined by array mask_',I2.2,'_',A,':'/ &
2130            13('       ',8(F8.2,',')/) )
2131350 FORMAT (/'       Output locations in ',A,'-direction: ', &
2132            'all gridpoints along ',A,'-direction (default).' )
2133351 FORMAT (/'       Output locations in ',A,'-direction in multiples of ', &
2134            'mask_scale_',A,' constructed from array mask_',I2.2,'_',A,'_loop:'/ &
2135            '          loop begin:',F8.2,', end:',F8.2,', stride:',F8.2 )
2136352 FORMAT  (/'       Number of output time levels allowed: ',I3 /)
2137353 FORMAT  (/'       Number of output time levels allowed: unlimited' /)
2138354 FORMAT ('       Output format: ',A, '   compressed with level: ',I1/)
2139#if defined( __dvrp_graphics )
2140360 FORMAT ('    Plot-Sequence with dvrp-software:'/ &
2141            '       Output every      ',F7.1,' s'/ &
2142            '       Output mode:      ',A/ &
2143            '       Host / User:      ',A,' / ',A/ &
2144            '       Directory:        ',A// &
2145            '       The sequence contains:')
2146361 FORMAT (/'       Isosurface of "',A,'"    Threshold value: ', E12.3/ &
2147            '          Isosurface color: (',F4.2,',',F4.2,',',F4.2,') (R,G,B)')
2148362 FORMAT (/'       Slicer plane ',A/ &
2149            '       Slicer limits: [',F6.2,',',F6.2,']')
2150365 FORMAT (/'       Groundplate color: (',F4.2,',',F4.2,',',F4.2,') (R,G,B)'/ &
2151            '       Superelevation along (x,y,z): (',F4.1,',',F4.1,',',F4.1, &
2152                     ')'/ &
2153            '       Clipping limits: from x = ',F9.1,' m to x = ',F9.1,' m'/ &
2154            '                        from y = ',F9.1,' m to y = ',F9.1,' m')
2155366 FORMAT (/'       Topography color: (',F4.2,',',F4.2,',',F4.2,') (R,G,B)')
2156367 FORMAT ('       Polygon reduction for topography: cluster_size = ', I1)
2157#endif
2158400 FORMAT (//' Physical quantities:'/ &
2159              ' -------------------'/)
2160410 FORMAT ('    Geograph. latitude  :   phi    = ',F4.1,' degr'/   &
2161            '    Angular velocity    :   omega  =',E10.3,' rad/s'/  &
2162            '    Coriolis parameter  :   f      = ',F9.6,' 1/s'/    &
2163            '                            f*     = ',F9.6,' 1/s')
2164411 FORMAT (/'    Gravity             :   g      = ',F4.1,' m/s**2')
2165412 FORMAT (/'    Reference state used in buoyancy terms: ',A)
2166413 FORMAT ('       Reference density in buoyancy terms: ',F8.3,' kg/m**3')
2167414 FORMAT ('       Reference temperature in buoyancy terms: ',F8.4,' K')
2168415 FORMAT (/' Cloud physics parameters:'/ &
2169             ' ------------------------'/)
2170416 FORMAT ('    Surface pressure   :   p_0   = ',F7.2,' hPa'/      &
2171            '    Gas constant       :   R     = ',F5.1,' J/(kg K)'/ &
2172            '    Density of air     :   rho_0 =',F6.3,' kg/m**3'/  &
2173            '    Specific heat cap. :   c_p   = ',F6.1,' J/(kg K)'/ &
2174            '    Vapourization heat :   L_v   =',E9.2,' J/kg')
2175417 FORMAT ('    Geograph. longitude :   lambda = ',F4.1,' degr')
2176418 FORMAT (/'    Day of the year at model start :   day_init      =     ',I3 &
2177            /'    UTC time at model start        :   time_utc_init = ',F7.1' s')
2178420 FORMAT (/'    Characteristic levels of the initial temperature profile:'// &
2179            '       Height:        ',A,'  m'/ &
2180            '       Temperature:   ',A,'  K'/ &
2181            '       Gradient:      ',A,'  K/100m'/ &
2182            '       Gridpoint:     ',A)
2183421 FORMAT (/'    Characteristic levels of the initial humidity profile:'// &
2184            '       Height:      ',A,'  m'/ &
2185            '       Humidity:    ',A,'  kg/kg'/ &
2186            '       Gradient:    ',A,'  (kg/kg)/100m'/ &
2187            '       Gridpoint:   ',A)
2188422 FORMAT (/'    Characteristic levels of the initial scalar profile:'// &
2189            '       Height:                  ',A,'  m'/ &
2190            '       Scalar concentration:    ',A,'  kg/m**3'/ &
2191            '       Gradient:                ',A,'  (kg/m**3)/100m'/ &
2192            '       Gridpoint:               ',A)
2193423 FORMAT (/'    Characteristic levels of the geo. wind component ug:'// &
2194            '       Height:      ',A,'  m'/ &
2195            '       ug:          ',A,'  m/s'/ &
2196            '       Gradient:    ',A,'  1/100s'/ &
2197            '       Gridpoint:   ',A)
2198424 FORMAT (/'    Characteristic levels of the geo. wind component vg:'// &
2199            '       Height:      ',A,'  m'/ &
2200            '       vg:          ',A,'  m/s'/ &
2201            '       Gradient:    ',A,'  1/100s'/ &
2202            '       Gridpoint:   ',A)
2203425 FORMAT (/'    Characteristic levels of the initial salinity profile:'// &
2204            '       Height:     ',A,'  m'/ &
2205            '       Salinity:   ',A,'  psu'/ &
2206            '       Gradient:   ',A,'  psu/100m'/ &
2207            '       Gridpoint:  ',A)
2208426 FORMAT (/'    Characteristic levels of the subsidence/ascent profile:'// &
2209            '       Height:      ',A,'  m'/ &
2210            '       w_subs:      ',A,'  m/s'/ &
2211            '       Gradient:    ',A,'  (m/s)/100m'/ &
2212            '       Gridpoint:   ',A)
2213427 FORMAT (/'    Initial wind profiles (u,v) are interpolated from given'// &
2214                  ' profiles')
2215428 FORMAT (/'    Initial profiles (u, v, pt, q) are taken from file '/ &
2216             '    NUDGING_DATA')
2217430 FORMAT (//' Cloud physics quantities / methods:'/ &
2218              ' ----------------------------------'/)
2219431 FORMAT ('    Humidity is considered, bu no condensation')
2220432 FORMAT ('    Bulk scheme with liquid water potential temperature and'/ &
2221            '    total water content is used.'/ &
2222            '    Condensation is parameterized via 0% - or 100% scheme.')
2223433 FORMAT ('    Cloud droplets treated explicitly using the Lagrangian part', &
2224                 'icle model')
2225434 FORMAT ('    Curvature and solution effecs are considered for growth of', &
2226                 ' droplets < 1.0E-6 m')
2227435 FORMAT ('    Droplet collision is handled by ',A,'-kernel')
2228436 FORMAT ('       Fast kernel with fixed radius- and dissipation classes ', &
2229                    'are used'/ &
2230            '          number of radius classes:       ',I3,'    interval ', &
2231                       '[1.0E-6,2.0E-4] m'/ &
2232            '          number of dissipation classes:   ',I2,'    interval ', &
2233                       '[0,1000] cm**2/s**3')
2234437 FORMAT ('    Droplet collision is switched off')
2235450 FORMAT (//' LES / Turbulence quantities:'/ &
2236              ' ---------------------------'/)
2237451 FORMAT ('    Diffusion coefficients are constant:'/ &
2238            '    Km = ',F6.2,' m**2/s   Kh = ',F6.2,' m**2/s   Pr = ',F5.2)
2239453 FORMAT ('    Mixing length is limited to',F5.2,' * z')
2240454 FORMAT ('    TKE is not allowed to fall below ',E9.2,' (m/s)**2')
2241455 FORMAT ('    initial TKE is prescribed as ',E9.2,' (m/s)**2')
2242470 FORMAT (//' Actions during the simulation:'/ &
2243              ' -----------------------------'/)
2244471 FORMAT ('    Disturbance impulse (u,v) every :   ',F6.2,' s'/            &
2245            '    Disturbance amplitude           :    ',F5.2, ' m/s'/       &
2246            '    Lower disturbance level         : ',F8.2,' m (GP ',I4,')'/  &
2247            '    Upper disturbance level         : ',F8.2,' m (GP ',I4,')')
2248472 FORMAT ('    Disturbances continued during the run from i/j =',I4, &
2249                 ' to i/j =',I4)
2250473 FORMAT ('    Disturbances cease as soon as the disturbance energy exceeds',&
2251                 F6.3, ' m**2/s**2')
2252474 FORMAT ('    Random number generator used    : ',A/)
2253475 FORMAT ('    The surface temperature is increased (or decreased, ', &
2254                 'respectively, if'/ &
2255            '    the value is negative) by ',F5.2,' K at the beginning of the',&
2256                 ' 3D-simulation'/)
2257476 FORMAT ('    The surface humidity is increased (or decreased, ',&
2258                 'respectively, if the'/ &
2259            '    value is negative) by ',E8.1,' kg/kg at the beginning of', &
2260                 ' the 3D-simulation'/)
2261477 FORMAT ('    The scalar value is increased at the surface (or decreased, ',&
2262                 'respectively, if the'/ &
2263            '    value is negative) by ',E8.1,' kg/m**3 at the beginning of', &
2264                 ' the 3D-simulation'/)
2265480 FORMAT ('    Particles:'/ &
2266            '    ---------'// &
2267            '       Particle advection is active (switched on at t = ', F7.1, &
2268                    ' s)'/ &
2269            '       Start of new particle generations every  ',F6.1,' s'/ &
2270            '       Boundary conditions: left/right: ', A, ' north/south: ', A/&
2271            '                            bottom:     ', A, ' top:         ', A/&
2272            '       Maximum particle age:                 ',F9.1,' s'/ &
2273            '       Advection stopped at t = ',F9.1,' s'/)
2274481 FORMAT ('       Particles have random start positions'/)
2275482 FORMAT ('          Particles are advected only horizontally'/)
2276485 FORMAT ('       Particle data are written on file every ', F9.1, ' s')
2277486 FORMAT ('       Particle statistics are written on file'/)
2278487 FORMAT ('       Number of particle groups: ',I2/)
2279488 FORMAT ('       SGS velocity components are used for particle advection'/ &
2280            '          minimum timestep for advection:', F8.5/)
2281489 FORMAT ('       Number of particles simultaneously released at each ', &
2282                    'point: ', I5/)
2283490 FORMAT ('       Particle group ',I2,':'/ &
2284            '          Particle radius: ',E10.3, 'm')
2285491 FORMAT ('          Particle inertia is activated'/ &
2286            '             density_ratio (rho_fluid/rho_particle) =',F6.3/)
2287492 FORMAT ('          Particles are advected only passively (no inertia)'/)
2288493 FORMAT ('          Boundaries of particle source: x:',F8.1,' - ',F8.1,' m'/&
2289            '                                         y:',F8.1,' - ',F8.1,' m'/&
2290            '                                         z:',F8.1,' - ',F8.1,' m'/&
2291            '          Particle distances:  dx = ',F8.1,' m  dy = ',F8.1, &
2292                       ' m  dz = ',F8.1,' m'/)
2293494 FORMAT ('       Output of particle time series in NetCDF format every ', &
2294                    F8.2,' s'/)
2295495 FORMAT ('       Number of particles in total domain: ',I10/)
2296496 FORMAT ('       Initial vertical particle positions are interpreted ', &
2297                    'as relative to the given topography')
2298500 FORMAT (//' 1D-Model parameters:'/                           &
2299              ' -------------------'//                           &
2300            '    Simulation time:                   ',F8.1,' s'/ &
2301            '    Run-controll output every:         ',F8.1,' s'/ &
2302            '    Vertical profile output every:     ',F8.1,' s'/ &
2303            '    Mixing length calculation:         ',A/         &
2304            '    Dissipation calculation:           ',A/)
2305502 FORMAT ('    Damping layer starts from ',F7.1,' m (GP ',I4,')'/)
2306503 FORMAT (' --> Momentum advection via Wicker-Skamarock-Scheme 5th order')
2307504 FORMAT (' --> Scalar advection via Wicker-Skamarock-Scheme 5th order')
2308505 FORMAT ('    Precipitation parameterization via Seifert-Beheng-Scheme')
2309506 FORMAT ('    Cloud water sedimentation parameterization via Stokes law')
2310507 FORMAT ('    Turbulence effects on precipitation process')
2311508 FORMAT ('    Ventilation effects on evaporation of rain drops')
2312509 FORMAT ('    Slope limiter used for sedimentation process')
2313510 FORMAT ('    Droplet density    :   N_c   = ',F6.1,' 1/cm**3')
2314511 FORMAT ('    Sedimentation Courant number:                  '/&
2315            '                               C_s   =',F4.1,'        ')
2316512 FORMAT (/' Date:                 ',A8,6X,'Run:       ',A20/      &
2317            ' Time:                 ',A8,6X,'Run-No.:   ',I2.2/     &
2318            ' Run on host:        ',A10,6X,'En-No.:    ',I2.2)
2319513 FORMAT (' --> Scalar advection via Wicker-Skamarock-Scheme 5th order ' // & 
2320            '+ monotonic adjustment')
2321600 FORMAT (/' Nesting informations:'/ &
2322            ' --------------------'/ &
2323            ' Nesting mode:                     ',A/ &
2324            ' Nesting-datatransfer mode:        ',A// &
2325            ' Nest id  parent  number   lower left coordinates   name'/ &
2326            ' (*=me)     id    of PEs      x (m)     y (m)' )
2327601 FORMAT (2X,A1,1X,I2.2,6X,I2.2,5X,I5,5X,F8.2,2X,F8.2,5X,A)
2328
2329 END SUBROUTINE header
Note: See TracBrowser for help on using the repository browser.