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

Last change on this file since 2114 was 2101, checked in by suehring, 7 years ago

last commit documented

  • Property svn:keywords set to Id
File size: 88.7 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 2101 2017-01-05 16:42:31Z kanani $
27!
28! 2073 2016-11-30 14:34:05Z raasch
29! small bugfix concerning output of scalar profiles
30!
31! 2050 2016-11-08 15:00:55Z gronemeier
32! Implement turbulent outflow condition
33!
34! 2037 2016-10-26 11:15:40Z knoop
35! Anelastic approximation implemented
36!
37! 2000 2016-08-20 18:09:15Z knoop
38! Forced header and separation lines into 80 columns
39!
40! 1992 2016-08-12 15:14:59Z suehring
41! Adapted for top_scalarflux
42!
43! 1960 2016-07-12 16:34:24Z suehring
44! Treat humidity and passive scalar separately.
45! Modify misleading information concerning humidity.
46! Bugfix, change unit for humidity flux.
47!
48! 1957 2016-07-07 10:43:48Z suehring
49! flight module added
50!
51! 1931 2016-06-10 12:06:59Z suehring
52! Rename multigrid into multigrid_noopt
53!
54! 1902 2016-05-09 11:18:56Z suehring
55! Write information about masking_method only for multigrid solver
56!
57! 1849 2016-04-08 11:33:18Z hoffmann
58! Adapted for modularization of microphysics
59!
60! 1833 2016-04-07 14:23:03Z raasch
61! spectrum renamed spectra_mod, output of spectra related quantities moved to
62! spectra_mod
63!
64! 1831 2016-04-07 13:15:51Z hoffmann
65! turbulence renamed collision_turbulence,
66! drizzle renamed cloud_water_sedimentation
67!
68! 1826 2016-04-07 12:01:39Z maronga
69! Moved radiation model header output to the respective module.
70! Moved canopy model header output to the respective module.
71!
72! 1822 2016-04-07 07:49:42Z hoffmann
73! Tails removed. icloud_scheme replaced by microphysics_*
74!
75! 1817 2016-04-06 15:44:20Z maronga
76! Moved land_surface_model header output to the respective module.
77!
78! 1808 2016-04-05 19:44:00Z raasch
79! routine local_flush replaced by FORTRAN statement
80!
81! 1797 2016-03-21 16:50:28Z raasch
82! output of nesting datatransfer mode
83!
84! 1791 2016-03-11 10:41:25Z raasch
85! output of nesting informations of all domains
86!
87! 1788 2016-03-10 11:01:04Z maronga
88! Parameter dewfall removed
89!
90! 1786 2016-03-08 05:49:27Z raasch
91! cpp-direktives for spectra removed
92!
93! 1783 2016-03-06 18:36:17Z raasch
94! netcdf module and variable names changed, output of netcdf_deflate
95!
96! 1764 2016-02-28 12:45:19Z raasch
97! output of nesting informations
98!
99! 1697 2015-10-28 17:14:10Z raasch
100! small E- and F-FORMAT changes to avoid informative compiler messages about
101! insufficient field width
102!
103! 1691 2015-10-26 16:17:44Z maronga
104! Renamed prandtl_layer to constant_flux_layer, renames rif_min/rif_max to
105! zeta_min/zeta_max.
106!
107! 1682 2015-10-07 23:56:08Z knoop
108! Code annotations made doxygen readable
109!
110! 1675 2015-10-02 08:28:59Z gronemeier
111! Bugfix: Definition of topography grid levels
112!
113! 1660 2015-09-21 08:15:16Z gronemeier
114! Bugfix: Definition of building/street canyon height if vertical grid stretching
115!         starts below the maximum topography height.
116!
117! 1590 2015-05-08 13:56:27Z maronga
118! Bugfix: Added TRIM statements for character strings for LSM and radiation code
119!
120! 1585 2015-04-30 07:05:52Z maronga
121! Further output for radiation model(s).
122!
123! 1575 2015-03-27 09:56:27Z raasch
124! adjustments for psolver-queries, output of seed_follows_topography
125!
126! 1560 2015-03-06 10:48:54Z keck
127! output for recycling y shift
128!
129! 1557 2015-03-05 16:43:04Z suehring
130! output for monotonic limiter
131!
132! 1551 2015-03-03 14:18:16Z maronga
133! Added informal output for land surface model and radiation model. Removed typo.
134!
135! 1496 2014-12-02 17:25:50Z maronga
136! Renamed: "radiation -> "cloud_top_radiation"
137!
138! 1484 2014-10-21 10:53:05Z kanani
139! Changes due to new module structure of the plant canopy model:
140!   module plant_canopy_model_mod and output for new canopy model parameters
141!   (alpha_lad, beta_lad, lai_beta,...) added,
142!   drag_coefficient, leaf_surface_concentration and scalar_exchange_coefficient
143!   renamed to canopy_drag_coeff, leaf_surface_conc and leaf_scalar_exch_coeff,
144!   learde renamed leaf_area_density.
145! Bugfix: DO-WHILE-loop for lad header information additionally restricted
146! by maximum number of gradient levels (currently 10)
147!
148! 1482 2014-10-18 12:34:45Z raasch
149! information about calculated or predefined virtual processor topology adjusted
150!
151! 1468 2014-09-24 14:06:57Z maronga
152! Adapted for use on up to 6-digit processor cores
153!
154! 1429 2014-07-15 12:53:45Z knoop
155! header exended to provide ensemble_member_nr if specified
156!
157! 1376 2014-04-26 11:21:22Z boeske
158! Correction of typos
159!
160! 1365 2014-04-22 15:03:56Z boeske
161! New section 'Large scale forcing and nudging':
162! output of large scale forcing and nudging information,
163! new section for initial profiles created
164!
165! 1359 2014-04-11 17:15:14Z hoffmann
166! dt_sort_particles removed
167!
168! 1353 2014-04-08 15:21:23Z heinze
169! REAL constants provided with KIND-attribute
170!
171! 1327 2014-03-21 11:00:16Z raasch
172! parts concerning iso2d and avs output removed,
173! -netcdf output queries
174!
175! 1324 2014-03-21 09:13:16Z suehring
176! Bugfix: module spectrum added
177!
178! 1322 2014-03-20 16:38:49Z raasch
179! REAL functions provided with KIND-attribute,
180! some REAL constants defined as wp-kind
181!
182! 1320 2014-03-20 08:40:49Z raasch
183! ONLY-attribute added to USE-statements,
184! kind-parameters added to all INTEGER and REAL declaration statements,
185! kinds are defined in new module kinds,
186! revision history before 2012 removed,
187! comment fields (!:) to be used for variable explanations added to
188! all variable declaration statements
189!
190! 1308 2014-03-13 14:58:42Z fricke
191! output of the fixed number of output time levels
192! output_format adjusted for masked data if netcdf_data_format > 5
193!
194! 1299 2014-03-06 13:15:21Z heinze
195! output for using large_scale subsidence in combination
196! with large_scale_forcing
197! reformatting, more detailed explanations
198!
199! 1241 2013-10-30 11:36:58Z heinze
200! output for nudging + large scale forcing from external file
201!
202! 1216 2013-08-26 09:31:42Z raasch
203! output for transpose_compute_overlap
204!
205! 1212 2013-08-15 08:46:27Z raasch
206! output for poisfft_hybrid removed
207!
208! 1179 2013-06-14 05:57:58Z raasch
209! output of reference_state, use_reference renamed use_single_reference_value
210!
211! 1159 2013-05-21 11:58:22Z fricke
212! +use_cmax
213!
214! 1115 2013-03-26 18:16:16Z hoffmann
215! descriptions for Seifert-Beheng-cloud-physics-scheme added
216!
217! 1111 2013-03-08 23:54:10Z raasch
218! output of accelerator board information
219! ibc_p_b = 2 removed
220!
221! 1108 2013-03-05 07:03:32Z raasch
222! bugfix for r1106
223!
224! 1106 2013-03-04 05:31:38Z raasch
225! some format changes for coupled runs
226!
227! 1092 2013-02-02 11:24:22Z raasch
228! unused variables removed
229!
230! 1036 2012-10-22 13:43:42Z raasch
231! code put under GPL (PALM 3.9)
232!
233! 1031 2012-10-19 14:35:30Z raasch
234! output of netCDF data format modified
235!
236! 1015 2012-09-27 09:23:24Z raasch
237! output of Adjustment of mixing length to the Prandtl mixing length at first
238! grid point above ground removed
239!
240! 1003 2012-09-14 14:35:53Z raasch
241! output of information about equal/unequal subdomain size removed
242!
243! 1001 2012-09-13 14:08:46Z raasch
244! all actions concerning leapfrog- and upstream-spline-scheme removed
245!
246! 978 2012-08-09 08:28:32Z fricke
247! -km_damp_max, outflow_damping_width
248! +pt_damping_factor, pt_damping_width
249! +z0h
250!
251! 964 2012-07-26 09:14:24Z raasch
252! output of profil-related quantities removed
253!
254! 940 2012-07-09 14:31:00Z raasch
255! Output in case of simulations for pure neutral stratification (no pt-equation
256! solved)
257!
258! 927 2012-06-06 19:15:04Z raasch
259! output of masking_method for mg-solver
260!
261! 868 2012-03-28 12:21:07Z raasch
262! translation velocity in Galilean transformation changed to 0.6 * ug
263!
264! 833 2012-02-22 08:55:55Z maronga
265! Adjusted format for leaf area density
266!
267! 828 2012-02-21 12:00:36Z raasch
268! output of dissipation_classes + radius_classes
269!
270! 825 2012-02-19 03:03:44Z raasch
271! Output of cloud physics parameters/quantities complemented and restructured
272!
273! Revision 1.1  1997/08/11 06:17:20  raasch
274! Initial revision
275!
276!
277! Description:
278! ------------
279!> Writing a header with all important information about the current run.
280!> This subroutine is called three times, two times at the beginning
281!> (writing information on files RUN_CONTROL and HEADER) and one time at the
282!> end of the run, then writing additional information about CPU-usage on file
283!> header.
284!-----------------------------------------------------------------------------!
285 SUBROUTINE header
286 
287
288    USE arrays_3d,                                                             &
289        ONLY:  pt_init, qsws, q_init, s_init, sa_init, shf, ug, vg, w_subs, zu,&
290               zw
291       
292    USE control_parameters
293       
294    USE cloud_parameters,                                                      &
295        ONLY:  cp, l_v, r_d
296
297    USE cpulog,                                                                &
298        ONLY:  log_point_s
299       
300    USE dvrp_variables,                                                        &
301        ONLY:  use_seperate_pe_for_dvrp_output
302       
303    USE flight_mod,                                                            &
304        ONLY:  flight_header
305       
306    USE grid_variables,                                                        &
307        ONLY:  dx, dy
308       
309    USE indices,                                                               &
310        ONLY:  mg_loc_ind, nnx, nny, nnz, nx, ny, nxl_mg, nxr_mg, nyn_mg,      &
311               nys_mg, nzt, nzt_mg
312       
313    USE kinds
314 
315    USE land_surface_model_mod,                                                &
316        ONLY: land_surface, lsm_header
317
318    USE microphysics_mod,                                                      &
319        ONLY:  cloud_water_sedimentation, collision_turbulence,                &
320               c_sedimentation, limiter_sedimentation, nc_const,               &
321               ventilation_effect
322
323    USE model_1d,                                                              &
324        ONLY:  damp_level_ind_1d, dt_pr_1d, dt_run_control_1d, end_time_1d
325       
326    USE netcdf_interface,                                                      &
327        ONLY:  netcdf_data_format, netcdf_data_format_string, netcdf_deflate
328
329    USE particle_attributes,                                                   &
330        ONLY:  bc_par_b, bc_par_lr, bc_par_ns, bc_par_t, collision_kernel,     &
331               curvature_solution_effects,                                     &
332               density_ratio, dissipation_classes, dt_min_part, dt_prel,       &
333               dt_write_particle_data, end_time_prel,                          &
334               number_of_particle_groups, particle_advection,                  &
335               particle_advection_start,                                       &
336               particles_per_point, pdx, pdy, pdz,  psb, psl, psn, psr, pss,   &
337               pst, radius, radius_classes, random_start_position,             &
338               seed_follows_topography,                                        &
339               total_number_of_particles, use_sgs_for_particles,               &
340               vertical_particle_advection, write_particle_statistics
341       
342    USE pegrid
343
344    USE plant_canopy_model_mod,                                                &
345        ONLY:  pcm_header, plant_canopy
346
347    USE pmc_handle_communicator,                                               &
348        ONLY:  pmc_get_model_info
349
350    USE pmc_interface,                                                         &
351        ONLY:  nested_run, nesting_datatransfer_mode, nesting_mode
352
353    USE radiation_model_mod,                                                   &
354        ONLY:  radiation, radiation_header
355   
356    USE spectra_mod,                                                           &
357        ONLY:  calculate_spectra, spectra_header
358
359    IMPLICIT NONE
360
361    CHARACTER (LEN=1)  ::  prec                !<
362   
363    CHARACTER (LEN=2)  ::  do2d_mode           !<
364   
365    CHARACTER (LEN=5)  ::  section_chr         !<
366   
367    CHARACTER (LEN=10) ::  coor_chr            !<
368    CHARACTER (LEN=10) ::  host_chr            !<
369   
370    CHARACTER (LEN=16) ::  begin_chr           !<
371   
372    CHARACTER (LEN=26) ::  ver_rev             !<
373
374    CHARACTER (LEN=32) ::  cpl_name            !<
375   
376    CHARACTER (LEN=40) ::  output_format       !<
377   
378    CHARACTER (LEN=70) ::  char1               !<
379    CHARACTER (LEN=70) ::  char2               !<
380    CHARACTER (LEN=70) ::  dopr_chr            !<
381    CHARACTER (LEN=70) ::  do2d_xy             !<
382    CHARACTER (LEN=70) ::  do2d_xz             !<
383    CHARACTER (LEN=70) ::  do2d_yz             !<
384    CHARACTER (LEN=70) ::  do3d_chr            !<
385    CHARACTER (LEN=70) ::  domask_chr          !<
386    CHARACTER (LEN=70) ::  run_classification  !<
387   
388    CHARACTER (LEN=85) ::  r_upper             !<
389    CHARACTER (LEN=85) ::  r_lower             !<
390   
391    CHARACTER (LEN=86) ::  coordinates         !<
392    CHARACTER (LEN=86) ::  gradients           !<
393    CHARACTER (LEN=86) ::  slices              !<
394    CHARACTER (LEN=86) ::  temperatures        !<
395    CHARACTER (LEN=86) ::  ugcomponent         !<
396    CHARACTER (LEN=86) ::  vgcomponent         !<
397
398    CHARACTER (LEN=1), DIMENSION(1:3) ::  dir = (/ 'x', 'y', 'z' /)  !<
399
400    INTEGER(iwp) ::  av             !<
401    INTEGER(iwp) ::  bh             !<
402    INTEGER(iwp) ::  blx            !<
403    INTEGER(iwp) ::  bly            !<
404    INTEGER(iwp) ::  bxl            !<
405    INTEGER(iwp) ::  bxr            !<
406    INTEGER(iwp) ::  byn            !<
407    INTEGER(iwp) ::  bys            !<
408    INTEGER(iwp) ::  ch             !<
409    INTEGER(iwp) ::  count          !<
410    INTEGER(iwp) ::  cpl_parent_id  !<
411    INTEGER(iwp) ::  cwx            !<
412    INTEGER(iwp) ::  cwy            !<
413    INTEGER(iwp) ::  cxl            !<
414    INTEGER(iwp) ::  cxr            !<
415    INTEGER(iwp) ::  cyn            !<
416    INTEGER(iwp) ::  cys            !<
417    INTEGER(iwp) ::  dim            !<
418    INTEGER(iwp) ::  i              !<
419    INTEGER(iwp) ::  io             !<
420    INTEGER(iwp) ::  j              !<
421    INTEGER(iwp) ::  k              !<
422    INTEGER(iwp) ::  l              !<
423    INTEGER(iwp) ::  ll             !<
424    INTEGER(iwp) ::  mpi_type       !<
425    INTEGER(iwp) ::  my_cpl_id      !<
426    INTEGER(iwp) ::  n              !<
427    INTEGER(iwp) ::  ncpl           !<
428    INTEGER(iwp) ::  npe_total      !<
429   
430
431    REAL(wp) ::  cpuseconds_per_simulated_second  !<
432    REAL(wp) ::  lower_left_coord_x               !< x-coordinate of nest domain
433    REAL(wp) ::  lower_left_coord_y               !< y-coordinate of nest domain
434
435!
436!-- Open the output file. At the end of the simulation, output is directed
437!-- to unit 19.
438    IF ( ( runnr == 0 .OR. force_print_header )  .AND. &
439         .NOT. simulated_time_at_begin /= simulated_time )  THEN
440       io = 15   !  header output on file RUN_CONTROL
441    ELSE
442       io = 19   !  header output on file HEADER
443    ENDIF
444    CALL check_open( io )
445
446!
447!-- At the end of the run, output file (HEADER) will be rewritten with
448!-- new information
449    IF ( io == 19 .AND. simulated_time_at_begin /= simulated_time ) REWIND( 19 )
450
451!
452!-- Determine kind of model run
453    IF ( TRIM( initializing_actions ) == 'read_restart_data' )  THEN
454       run_classification = 'restart run'
455    ELSEIF ( TRIM( initializing_actions ) == 'cyclic_fill' )  THEN
456       run_classification = 'run with cyclic fill of 3D - prerun data'
457    ELSEIF ( INDEX( initializing_actions, 'set_constant_profiles' ) /= 0 )  THEN
458       run_classification = 'run without 1D - prerun'
459    ELSEIF ( INDEX( initializing_actions, 'set_1d-model_profiles' ) /= 0 )  THEN
460       run_classification = 'run with 1D - prerun'
461    ELSEIF ( INDEX( initializing_actions, 'by_user' ) /=0 )  THEN
462       run_classification = 'run initialized by user'
463    ELSE
464       message_string = ' unknown action(s): ' // TRIM( initializing_actions )
465       CALL message( 'header', 'PA0191', 0, 0, 0, 6, 0 )
466    ENDIF
467    IF ( nested_run )  run_classification = 'nested ' // run_classification
468    IF ( ocean )  THEN
469       run_classification = 'ocean - ' // run_classification
470    ELSE
471       run_classification = 'atmosphere - ' // run_classification
472    ENDIF
473
474!
475!-- Run-identification, date, time, host
476    host_chr = host(1:10)
477    ver_rev = TRIM( version ) // '  ' // TRIM( revision )
478    WRITE ( io, 100 )  ver_rev, TRIM( run_classification )
479    IF ( TRIM( coupling_mode ) /= 'uncoupled' )  THEN
480#if defined( __mpi2 )
481       mpi_type = 2
482#else
483       mpi_type = 1
484#endif
485       WRITE ( io, 101 )  mpi_type, coupling_mode
486    ENDIF
487#if defined( __parallel )
488    IF ( coupling_start_time /= 0.0_wp )  THEN
489       IF ( coupling_start_time > simulated_time_at_begin )  THEN
490          WRITE ( io, 109 )
491       ELSE
492          WRITE ( io, 114 )
493       ENDIF
494    ENDIF
495#endif
496    IF ( ensemble_member_nr /= 0 )  THEN
497       WRITE ( io, 512 )  run_date, run_identifier, run_time, runnr,           &
498                       ADJUSTR( host_chr ), ensemble_member_nr
499    ELSE
500       WRITE ( io, 102 )  run_date, run_identifier, run_time, runnr,           &
501                       ADJUSTR( host_chr )
502    ENDIF
503#if defined( __parallel )
504    IF ( npex == -1  .AND.  npey == -1 )  THEN
505       char1 = 'calculated'
506    ELSE
507       char1 = 'predefined'
508    ENDIF
509    IF ( threads_per_task == 1 )  THEN
510       WRITE ( io, 103 )  numprocs, pdims(1), pdims(2), TRIM( char1 )
511    ELSE
512       WRITE ( io, 104 )  numprocs*threads_per_task, numprocs, &
513                          threads_per_task, pdims(1), pdims(2), TRIM( char1 )
514    ENDIF
515    IF ( num_acc_per_node /= 0 )  WRITE ( io, 117 )  num_acc_per_node   
516    IF ( ( host(1:3) == 'ibm'  .OR.  host(1:3) == 'nec'  .OR.    &
517           host(1:2) == 'lc'   .OR.  host(1:3) == 'dec' )  .AND. &
518         npex == -1  .AND.  pdims(2) == 1 )                      &
519    THEN
520       WRITE ( io, 106 )
521    ELSEIF ( pdims(2) == 1 )  THEN
522       WRITE ( io, 107 )  'x'
523    ELSEIF ( pdims(1) == 1 )  THEN
524       WRITE ( io, 107 )  'y'
525    ENDIF
526    IF ( use_seperate_pe_for_dvrp_output )  WRITE ( io, 105 )
527    IF ( numprocs /= maximum_parallel_io_streams )  THEN
528       WRITE ( io, 108 )  maximum_parallel_io_streams
529    ENDIF
530#else
531    IF ( num_acc_per_node /= 0 )  WRITE ( io, 120 )  num_acc_per_node
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('-'))
1917117 FORMAT (' Accelerator boards / node:  ',I2)
1918#endif
1919110 FORMAT (/' Numerical Schemes:'/ &
1920             ' -----------------'/)
1921121 FORMAT (' --> Use the ',A,' approximation for the model equations.')
1922111 FORMAT (' --> Solve perturbation pressure via FFT using ',A,' routines')
1923112 FORMAT (' --> Solve perturbation pressure via SOR-Red/Black-Schema'/ &
1924            '     Iterations (initial/other): ',I3,'/',I3,'  omega =',F6.3)
1925113 FORMAT (' --> Momentum advection via Piascek-Williams-Scheme (Form C3)', &
1926                  ' or Upstream')
1927115 FORMAT ('     FFT and transpositions are overlapping')
1928116 FORMAT (' --> Scalar advection via Piascek-Williams-Scheme (Form C3)', &
1929                  ' or Upstream')
1930118 FORMAT (' --> Scalar advection via Bott-Chlond-Scheme')
1931119 FORMAT (' --> Galilei-Transform applied to horizontal advection:'/ &
1932            '     translation velocity = ',A/ &
1933            '     distance advected ',A,':  ',F8.3,' km(x)  ',F8.3,' km(y)')
1934120 FORMAT (' Accelerator boards: ',8X,I2)
1935122 FORMAT (' --> Time differencing scheme: ',A)
1936123 FORMAT (' --> Rayleigh-Damping active, starts ',A,' z = ',F8.2,' m'/ &
1937            '     maximum damping coefficient:',F6.3, ' 1/s')
1938129 FORMAT (' --> Additional prognostic equation for the specific humidity')
1939130 FORMAT (' --> Additional prognostic equation for the total water content')
1940131 FORMAT (' --> No pt-equation solved. Neutral stratification with pt = ', &
1941                  F6.2, ' K assumed')
1942132 FORMAT ('     Parameterization of long-wave radiation processes via'/ &
1943            '     effective emissivity scheme')
1944133 FORMAT ('     Precipitation parameterization via Kessler-Scheme')
1945134 FORMAT (' --> Additional prognostic equation for a passive scalar')
1946135 FORMAT (' --> Solve perturbation pressure via ',A,' method (', &
1947                  A,'-cycle)'/ &
1948            '     number of grid levels:                   ',I2/ &
1949            '     Gauss-Seidel red/black iterations:       ',I2)
1950136 FORMAT ('     gridpoints of coarsest subdomain (x,y,z): (',I3,',',I3,',', &
1951                  I3,')')
1952137 FORMAT ('     level data gathered on PE0 at level:     ',I2/ &
1953            '     gridpoints of coarsest subdomain (x,y,z): (',I3,',',I3,',', &
1954                  I3,')'/ &
1955            '     gridpoints of coarsest domain (x,y,z):    (',I3,',',I3,',', &
1956                  I3,')')
1957139 FORMAT (' --> Loop optimization method: ',A)
1958140 FORMAT ('     maximum residual allowed:                ',E10.3)
1959141 FORMAT ('     fixed number of multigrid cycles:        ',I4)
1960142 FORMAT ('     perturbation pressure is calculated at every Runge-Kutta ', &
1961                  'step')
1962143 FORMAT ('     Euler/upstream scheme is used for the SGS turbulent ', &
1963                  'kinetic energy')
1964144 FORMAT ('     masking method is used')
1965150 FORMAT (' --> Volume flow at the right and north boundary will be ', &
1966                  'conserved'/ &
1967            '     using the ',A,' mode')
1968151 FORMAT ('     with u_bulk = ',F7.3,' m/s and v_bulk = ',F7.3,' m/s')
1969152 FORMAT (' --> External pressure gradient directly prescribed by the user:',&
1970           /'     ',2(1X,E12.5),'Pa/m in x/y direction', &
1971           /'     starting from dp_level_b =', F8.3, 'm', A /)
1972160 FORMAT (//' Large scale forcing and nudging:'/ &
1973              ' -------------------------------'/)
1974161 FORMAT (' --> No large scale forcing from external is used (default) ')
1975162 FORMAT (' --> Large scale forcing from external file LSF_DATA is used: ')
1976163 FORMAT ('     - large scale advection tendencies ')
1977164 FORMAT ('     - large scale subsidence velocity w_subs ')
1978165 FORMAT ('     - large scale subsidence tendencies ')
1979167 FORMAT ('     - and geostrophic wind components ug and vg')
1980168 FORMAT (' --> Large-scale vertical motion is used in the ', &
1981                  'prognostic equation(s) for')
1982169 FORMAT ('     the scalar(s) only')
1983170 FORMAT (' --> Nudging is used')
1984171 FORMAT (' --> No nudging is used (default) ')
1985180 FORMAT ('     - prescribed surface values for temperature')
1986181 FORMAT ('     - prescribed surface fluxes for temperature')
1987182 FORMAT ('     - prescribed surface values for humidity')
1988183 FORMAT ('     - prescribed surface fluxes for humidity')
1989200 FORMAT (//' Run time and time step information:'/ &
1990             ' ----------------------------------'/)
1991201 FORMAT ( ' Timestep:             variable     maximum value: ',F6.3,' s', &
1992             '    CFL-factor:',F5.2)
1993202 FORMAT ( ' Timestep:          dt = ',F6.3,' s'/)
1994203 FORMAT ( ' Start time:          ',F9.3,' s'/ &
1995             ' End time:            ',F9.3,' s')
1996204 FORMAT ( A,F9.3,' s')
1997205 FORMAT ( A,F9.3,' s',5X,'restart every',17X,F9.3,' s')
1998206 FORMAT (/' Time reached:        ',F9.3,' s'/ &
1999             ' CPU-time used:       ',F9.3,' s     per timestep:               ', &
2000               '  ',F9.3,' s'/                                                    &
2001             '                                      per second of simulated tim', &
2002               'e: ',F9.3,' s')
2003207 FORMAT ( ' Coupling start time: ',F9.3,' s')
2004250 FORMAT (//' Computational grid and domain size:'/ &
2005              ' ----------------------------------'// &
2006              ' Grid length:      dx =    ',F7.3,' m    dy =    ',F7.3, &
2007              ' m    dz =    ',F7.3,' m'/ &
2008              ' Domain size:       x = ',F10.3,' m     y = ',F10.3, &
2009              ' m  z(u) = ',F10.3,' m'/)
2010252 FORMAT (' dz constant up to ',F10.3,' m (k=',I4,'), then stretched by', &
2011              ' factor:',F6.3/ &
2012            ' maximum dz not to be exceeded is dz_max = ',F10.3,' m'/)
2013254 FORMAT (' Number of gridpoints (x,y,z):  (0:',I4,', 0:',I4,', 0:',I4,')'/ &
2014            ' Subdomain size (x,y,z):        (  ',I4,',   ',I4,',   ',I4,')'/)
2015260 FORMAT (/' The model has a slope in x-direction. Inclination angle: ',F6.2,&
2016             ' degrees')
2017270 FORMAT (//' Topography information:'/ &
2018              ' ----------------------'// &
2019              1X,'Topography: ',A)
2020271 FORMAT (  ' Building size (x/y/z) in m: ',F5.1,' / ',F5.1,' / ',F5.1/ &
2021              ' Horizontal index bounds (l/r/s/n): ',I4,' / ',I4,' / ',I4, &
2022                ' / ',I4)
2023272 FORMAT (  ' Single quasi-2D street canyon of infinite length in ',A, &
2024              ' direction' / &
2025              ' Canyon height: ', F6.2, 'm, ch = ', I4, '.'      / &
2026              ' Canyon position (',A,'-walls): cxl = ', I4,', cxr = ', I4, '.')
2027278 FORMAT (' Topography grid definition convention:'/ &
2028            ' cell edge (staggered grid points'/  &
2029            ' (u in x-direction, v in y-direction))' /)
2030279 FORMAT (' Topography grid definition convention:'/ &
2031            ' cell center (scalar grid points)' /)
2032300 FORMAT (//' Boundary conditions:'/ &
2033             ' -------------------'// &
2034             '                     p                    uv             ', &
2035             '                     pt'// &
2036             ' B. bound.: ',A/ &
2037             ' T. bound.: ',A)
2038301 FORMAT (/'                     ',A// &
2039             ' B. bound.: ',A/ &
2040             ' T. bound.: ',A)
2041303 FORMAT (/' Bottom surface fluxes are used in diffusion terms at k=1')
2042304 FORMAT (/' Top surface fluxes are used in diffusion terms at k=nzt')
2043305 FORMAT (//'    Prandtl-Layer between bottom surface and first ', &
2044               'computational u,v-level:'// &
2045             '       zp = ',F6.2,' m   z0 =',F7.4,' m   z0h =',F8.5,&
2046             ' m   kappa =',F5.2/ &
2047             '       Rif value range:   ',F8.2,' <= rif <=',F6.2)
2048306 FORMAT ('       Predefined constant heatflux:   ',F9.6,' K m/s')
2049307 FORMAT ('       Heatflux has a random normal distribution')
2050308 FORMAT ('       Predefined surface temperature')
2051309 FORMAT ('       Predefined constant salinityflux:   ',F9.6,' psu m/s')
2052310 FORMAT (//'    1D-Model:'// &
2053             '       Rif value range:   ',F6.2,' <= rif <=',F6.2)
2054311 FORMAT ('       Predefined constant humidity flux: ',E10.3,' kg/kg m/s')
2055312 FORMAT ('       Predefined surface humidity')
2056313 FORMAT ('       Predefined constant scalar flux: ',E10.3,' kg/(m**2 s)')
2057314 FORMAT ('       Predefined scalar value at the surface')
2058302 FORMAT ('       Predefined constant scalarflux:   ',F9.6,' kg/(m**2 s)')
2059315 FORMAT ('       Humidity flux at top surface is 0.0')
2060316 FORMAT ('       Sensible heatflux and momentum flux from coupled ', &
2061                    'atmosphere model')
2062317 FORMAT (//' Lateral boundaries:'/ &
2063            '       left/right:  ',A/    &
2064            '       north/south: ',A)
2065318 FORMAT (/'       use_cmax: ',L1 / &
2066            '       pt damping layer width = ',F8.2,' m, pt ', &
2067                    'damping factor =',F7.4)
2068319 FORMAT ('       turbulence recycling at inflow switched on'/ &
2069            '       width of recycling domain: ',F7.1,' m   grid index: ',I4/ &
2070            '       inflow damping height: ',F6.1,' m   width: ',F6.1,' m')
2071320 FORMAT ('       Predefined constant momentumflux:  u: ',F9.6,' m**2/s**2'/ &
2072            '                                          v: ',F9.6,' m**2/s**2')
2073321 FORMAT (//' Initial profiles:'/ &
2074              ' ----------------')
2075322 FORMAT ('       turbulence recycling at inflow switched on'/ &
2076            '       y shift of the recycled inflow turbulence switched on'/ &
2077            '       width of recycling domain: ',F7.1,' m   grid index: ',I4/ &
2078            '       inflow damping height: ',F6.1,' m   width: ',F6.1,' m'/)
2079323 FORMAT ('       turbulent outflow conditon switched on'/ &
2080            '       position of outflow source plane: ',F7.1,' m   ', &
2081                    'grid index: ', I4)
2082325 FORMAT (//' List output:'/ &
2083             ' -----------'//  &
2084            '    1D-Profiles:'/    &
2085            '       Output every             ',F8.2,' s')
2086326 FORMAT ('       Time averaged over       ',F8.2,' s'/ &
2087            '       Averaging input every    ',F8.2,' s')
2088330 FORMAT (//' Data output:'/ &
2089             ' -----------'/)
2090331 FORMAT (/'    1D-Profiles:')
2091332 FORMAT (/'       ',A)
2092333 FORMAT ('       Output every             ',F8.2,' s',/ &
2093            '       Time averaged over       ',F8.2,' s'/ &
2094            '       Averaging input every    ',F8.2,' s')
2095334 FORMAT (/'    2D-Arrays',A,':')
2096335 FORMAT (/'       ',A2,'-cross-section  Arrays: ',A/ &
2097            '       Output every             ',F8.2,' s  ',A/ &
2098            '       Cross sections at ',A1,' = ',A/ &
2099            '       scalar-coordinates:   ',A,' m'/)
2100336 FORMAT (/'    3D-Arrays',A,':')
2101337 FORMAT (/'       Arrays: ',A/ &
2102            '       Output every             ',F8.2,' s  ',A/ &
2103            '       Upper output limit at    ',F8.2,' m  (GP ',I4,')'/)
2104339 FORMAT ('       No output during initial ',F8.2,' s')
2105340 FORMAT (/'    Time series:')
2106341 FORMAT ('       Output every             ',F8.2,' s'/)
2107342 FORMAT (/'       ',A2,'-cross-section  Arrays: ',A/ &
2108            '       Output every             ',F8.2,' s  ',A/ &
2109            '       Time averaged over       ',F8.2,' s'/ &
2110            '       Averaging input every    ',F8.2,' s'/ &
2111            '       Cross sections at ',A1,' = ',A/ &
2112            '       scalar-coordinates:   ',A,' m'/)
2113343 FORMAT (/'       Arrays: ',A/ &
2114            '       Output every             ',F8.2,' s  ',A/ &
2115            '       Time averaged over       ',F8.2,' s'/ &
2116            '       Averaging input every    ',F8.2,' s'/ &
2117            '       Upper output limit at    ',F8.2,' m  (GP ',I4,')'/)
2118344 FORMAT ('       Output format: ',A/)
2119345 FORMAT (/'    Scaling lengths for output locations of all subsequent mask IDs:',/ &
2120            '       mask_scale_x (in x-direction): ',F9.3, ' m',/ &
2121            '       mask_scale_y (in y-direction): ',F9.3, ' m',/ &
2122            '       mask_scale_z (in z-direction): ',F9.3, ' m' )
2123346 FORMAT (/'    Masked data output',A,' for mask ID ',I2, ':')
2124347 FORMAT ('       Variables: ',A/ &
2125            '       Output every             ',F8.2,' s')
2126348 FORMAT ('       Variables: ',A/ &
2127            '       Output every             ',F8.2,' s'/ &
2128            '       Time averaged over       ',F8.2,' s'/ &
2129            '       Averaging input every    ',F8.2,' s')
2130349 FORMAT (/'       Output locations in ',A,'-direction in multiples of ', &
2131            'mask_scale_',A,' predefined by array mask_',I2.2,'_',A,':'/ &
2132            13('       ',8(F8.2,',')/) )
2133350 FORMAT (/'       Output locations in ',A,'-direction: ', &
2134            'all gridpoints along ',A,'-direction (default).' )
2135351 FORMAT (/'       Output locations in ',A,'-direction in multiples of ', &
2136            'mask_scale_',A,' constructed from array mask_',I2.2,'_',A,'_loop:'/ &
2137            '          loop begin:',F8.2,', end:',F8.2,', stride:',F8.2 )
2138352 FORMAT  (/'       Number of output time levels allowed: ',I3 /)
2139353 FORMAT  (/'       Number of output time levels allowed: unlimited' /)
2140354 FORMAT ('       Output format: ',A, '   compressed with level: ',I1/)
2141#if defined( __dvrp_graphics )
2142360 FORMAT ('    Plot-Sequence with dvrp-software:'/ &
2143            '       Output every      ',F7.1,' s'/ &
2144            '       Output mode:      ',A/ &
2145            '       Host / User:      ',A,' / ',A/ &
2146            '       Directory:        ',A// &
2147            '       The sequence contains:')
2148361 FORMAT (/'       Isosurface of "',A,'"    Threshold value: ', E12.3/ &
2149            '          Isosurface color: (',F4.2,',',F4.2,',',F4.2,') (R,G,B)')
2150362 FORMAT (/'       Slicer plane ',A/ &
2151            '       Slicer limits: [',F6.2,',',F6.2,']')
2152365 FORMAT (/'       Groundplate color: (',F4.2,',',F4.2,',',F4.2,') (R,G,B)'/ &
2153            '       Superelevation along (x,y,z): (',F4.1,',',F4.1,',',F4.1, &
2154                     ')'/ &
2155            '       Clipping limits: from x = ',F9.1,' m to x = ',F9.1,' m'/ &
2156            '                        from y = ',F9.1,' m to y = ',F9.1,' m')
2157366 FORMAT (/'       Topography color: (',F4.2,',',F4.2,',',F4.2,') (R,G,B)')
2158367 FORMAT ('       Polygon reduction for topography: cluster_size = ', I1)
2159#endif
2160400 FORMAT (//' Physical quantities:'/ &
2161              ' -------------------'/)
2162410 FORMAT ('    Geograph. latitude  :   phi    = ',F4.1,' degr'/   &
2163            '    Angular velocity    :   omega  =',E10.3,' rad/s'/  &
2164            '    Coriolis parameter  :   f      = ',F9.6,' 1/s'/    &
2165            '                            f*     = ',F9.6,' 1/s')
2166411 FORMAT (/'    Gravity             :   g      = ',F4.1,' m/s**2')
2167412 FORMAT (/'    Reference state used in buoyancy terms: ',A)
2168413 FORMAT ('       Reference density in buoyancy terms: ',F8.3,' kg/m**3')
2169414 FORMAT ('       Reference temperature in buoyancy terms: ',F8.4,' K')
2170415 FORMAT (/' Cloud physics parameters:'/ &
2171             ' ------------------------'/)
2172416 FORMAT ('    Surface pressure   :   p_0   = ',F7.2,' hPa'/      &
2173            '    Gas constant       :   R     = ',F5.1,' J/(kg K)'/ &
2174            '    Density of air     :   rho_0 =',F6.3,' kg/m**3'/  &
2175            '    Specific heat cap. :   c_p   = ',F6.1,' J/(kg K)'/ &
2176            '    Vapourization heat :   L_v   =',E9.2,' J/kg')
2177417 FORMAT ('    Geograph. longitude :   lambda = ',F4.1,' degr')
2178418 FORMAT (/'    Day of the year at model start :   day_init      =     ',I3 &
2179            /'    UTC time at model start        :   time_utc_init = ',F7.1' s')
2180420 FORMAT (/'    Characteristic levels of the initial temperature profile:'// &
2181            '       Height:        ',A,'  m'/ &
2182            '       Temperature:   ',A,'  K'/ &
2183            '       Gradient:      ',A,'  K/100m'/ &
2184            '       Gridpoint:     ',A)
2185421 FORMAT (/'    Characteristic levels of the initial humidity profile:'// &
2186            '       Height:      ',A,'  m'/ &
2187            '       Humidity:    ',A,'  kg/kg'/ &
2188            '       Gradient:    ',A,'  (kg/kg)/100m'/ &
2189            '       Gridpoint:   ',A)
2190422 FORMAT (/'    Characteristic levels of the initial scalar profile:'// &
2191            '       Height:                  ',A,'  m'/ &
2192            '       Scalar concentration:    ',A,'  kg/m**3'/ &
2193            '       Gradient:                ',A,'  (kg/m**3)/100m'/ &
2194            '       Gridpoint:               ',A)
2195423 FORMAT (/'    Characteristic levels of the geo. wind component ug:'// &
2196            '       Height:      ',A,'  m'/ &
2197            '       ug:          ',A,'  m/s'/ &
2198            '       Gradient:    ',A,'  1/100s'/ &
2199            '       Gridpoint:   ',A)
2200424 FORMAT (/'    Characteristic levels of the geo. wind component vg:'// &
2201            '       Height:      ',A,'  m'/ &
2202            '       vg:          ',A,'  m/s'/ &
2203            '       Gradient:    ',A,'  1/100s'/ &
2204            '       Gridpoint:   ',A)
2205425 FORMAT (/'    Characteristic levels of the initial salinity profile:'// &
2206            '       Height:     ',A,'  m'/ &
2207            '       Salinity:   ',A,'  psu'/ &
2208            '       Gradient:   ',A,'  psu/100m'/ &
2209            '       Gridpoint:  ',A)
2210426 FORMAT (/'    Characteristic levels of the subsidence/ascent profile:'// &
2211            '       Height:      ',A,'  m'/ &
2212            '       w_subs:      ',A,'  m/s'/ &
2213            '       Gradient:    ',A,'  (m/s)/100m'/ &
2214            '       Gridpoint:   ',A)
2215427 FORMAT (/'    Initial wind profiles (u,v) are interpolated from given'// &
2216                  ' profiles')
2217428 FORMAT (/'    Initial profiles (u, v, pt, q) are taken from file '/ &
2218             '    NUDGING_DATA')
2219430 FORMAT (//' Cloud physics quantities / methods:'/ &
2220              ' ----------------------------------'/)
2221431 FORMAT ('    Humidity is considered, bu no condensation')
2222432 FORMAT ('    Bulk scheme with liquid water potential temperature and'/ &
2223            '    total water content is used.'/ &
2224            '    Condensation is parameterized via 0% - or 100% scheme.')
2225433 FORMAT ('    Cloud droplets treated explicitly using the Lagrangian part', &
2226                 'icle model')
2227434 FORMAT ('    Curvature and solution effecs are considered for growth of', &
2228                 ' droplets < 1.0E-6 m')
2229435 FORMAT ('    Droplet collision is handled by ',A,'-kernel')
2230436 FORMAT ('       Fast kernel with fixed radius- and dissipation classes ', &
2231                    'are used'/ &
2232            '          number of radius classes:       ',I3,'    interval ', &
2233                       '[1.0E-6,2.0E-4] m'/ &
2234            '          number of dissipation classes:   ',I2,'    interval ', &
2235                       '[0,1000] cm**2/s**3')
2236437 FORMAT ('    Droplet collision is switched off')
2237450 FORMAT (//' LES / Turbulence quantities:'/ &
2238              ' ---------------------------'/)
2239451 FORMAT ('    Diffusion coefficients are constant:'/ &
2240            '    Km = ',F6.2,' m**2/s   Kh = ',F6.2,' m**2/s   Pr = ',F5.2)
2241453 FORMAT ('    Mixing length is limited to',F5.2,' * z')
2242454 FORMAT ('    TKE is not allowed to fall below ',E9.2,' (m/s)**2')
2243455 FORMAT ('    initial TKE is prescribed as ',E9.2,' (m/s)**2')
2244470 FORMAT (//' Actions during the simulation:'/ &
2245              ' -----------------------------'/)
2246471 FORMAT ('    Disturbance impulse (u,v) every :   ',F6.2,' s'/            &
2247            '    Disturbance amplitude           :    ',F5.2, ' m/s'/       &
2248            '    Lower disturbance level         : ',F8.2,' m (GP ',I4,')'/  &
2249            '    Upper disturbance level         : ',F8.2,' m (GP ',I4,')')
2250472 FORMAT ('    Disturbances continued during the run from i/j =',I4, &
2251                 ' to i/j =',I4)
2252473 FORMAT ('    Disturbances cease as soon as the disturbance energy exceeds',&
2253                 F6.3, ' m**2/s**2')
2254474 FORMAT ('    Random number generator used    : ',A/)
2255475 FORMAT ('    The surface temperature is increased (or decreased, ', &
2256                 'respectively, if'/ &
2257            '    the value is negative) by ',F5.2,' K at the beginning of the',&
2258                 ' 3D-simulation'/)
2259476 FORMAT ('    The surface humidity is increased (or decreased, ',&
2260                 'respectively, if the'/ &
2261            '    value is negative) by ',E8.1,' kg/kg at the beginning of', &
2262                 ' the 3D-simulation'/)
2263477 FORMAT ('    The scalar value is increased at the surface (or decreased, ',&
2264                 'respectively, if the'/ &
2265            '    value is negative) by ',E8.1,' kg/m**3 at the beginning of', &
2266                 ' the 3D-simulation'/)
2267480 FORMAT ('    Particles:'/ &
2268            '    ---------'// &
2269            '       Particle advection is active (switched on at t = ', F7.1, &
2270                    ' s)'/ &
2271            '       Start of new particle generations every  ',F6.1,' s'/ &
2272            '       Boundary conditions: left/right: ', A, ' north/south: ', A/&
2273            '                            bottom:     ', A, ' top:         ', A/&
2274            '       Maximum particle age:                 ',F9.1,' s'/ &
2275            '       Advection stopped at t = ',F9.1,' s'/)
2276481 FORMAT ('       Particles have random start positions'/)
2277482 FORMAT ('          Particles are advected only horizontally'/)
2278485 FORMAT ('       Particle data are written on file every ', F9.1, ' s')
2279486 FORMAT ('       Particle statistics are written on file'/)
2280487 FORMAT ('       Number of particle groups: ',I2/)
2281488 FORMAT ('       SGS velocity components are used for particle advection'/ &
2282            '          minimum timestep for advection:', F8.5/)
2283489 FORMAT ('       Number of particles simultaneously released at each ', &
2284                    'point: ', I5/)
2285490 FORMAT ('       Particle group ',I2,':'/ &
2286            '          Particle radius: ',E10.3, 'm')
2287491 FORMAT ('          Particle inertia is activated'/ &
2288            '             density_ratio (rho_fluid/rho_particle) =',F6.3/)
2289492 FORMAT ('          Particles are advected only passively (no inertia)'/)
2290493 FORMAT ('          Boundaries of particle source: x:',F8.1,' - ',F8.1,' m'/&
2291            '                                         y:',F8.1,' - ',F8.1,' m'/&
2292            '                                         z:',F8.1,' - ',F8.1,' m'/&
2293            '          Particle distances:  dx = ',F8.1,' m  dy = ',F8.1, &
2294                       ' m  dz = ',F8.1,' m'/)
2295494 FORMAT ('       Output of particle time series in NetCDF format every ', &
2296                    F8.2,' s'/)
2297495 FORMAT ('       Number of particles in total domain: ',I10/)
2298496 FORMAT ('       Initial vertical particle positions are interpreted ', &
2299                    'as relative to the given topography')
2300500 FORMAT (//' 1D-Model parameters:'/                           &
2301              ' -------------------'//                           &
2302            '    Simulation time:                   ',F8.1,' s'/ &
2303            '    Run-controll output every:         ',F8.1,' s'/ &
2304            '    Vertical profile output every:     ',F8.1,' s'/ &
2305            '    Mixing length calculation:         ',A/         &
2306            '    Dissipation calculation:           ',A/)
2307502 FORMAT ('    Damping layer starts from ',F7.1,' m (GP ',I4,')'/)
2308503 FORMAT (' --> Momentum advection via Wicker-Skamarock-Scheme 5th order')
2309504 FORMAT (' --> Scalar advection via Wicker-Skamarock-Scheme 5th order')
2310505 FORMAT ('    Precipitation parameterization via Seifert-Beheng-Scheme')
2311506 FORMAT ('    Cloud water sedimentation parameterization via Stokes law')
2312507 FORMAT ('    Turbulence effects on precipitation process')
2313508 FORMAT ('    Ventilation effects on evaporation of rain drops')
2314509 FORMAT ('    Slope limiter used for sedimentation process')
2315510 FORMAT ('    Droplet density    :   N_c   = ',F6.1,' 1/cm**3')
2316511 FORMAT ('    Sedimentation Courant number:                  '/&
2317            '                               C_s   =',F4.1,'        ')
2318512 FORMAT (/' Date:                 ',A8,6X,'Run:       ',A20/      &
2319            ' Time:                 ',A8,6X,'Run-No.:   ',I2.2/     &
2320            ' Run on host:        ',A10,6X,'En-No.:    ',I2.2)
2321513 FORMAT (' --> Scalar advection via Wicker-Skamarock-Scheme 5th order ' // & 
2322            '+ monotonic adjustment')
2323600 FORMAT (/' Nesting informations:'/ &
2324            ' --------------------'/ &
2325            ' Nesting mode:                     ',A/ &
2326            ' Nesting-datatransfer mode:        ',A// &
2327            ' Nest id  parent  number   lower left coordinates   name'/ &
2328            ' (*=me)     id    of PEs      x (m)     y (m)' )
2329601 FORMAT (2X,A1,1X,I2.2,6X,I2.2,5X,I5,5X,F8.2,2X,F8.2,5X,A)
2330
2331 END SUBROUTINE header
Note: See TracBrowser for help on using the repository browser.