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

Last change on this file since 1111 was 1111, checked in by raasch, 11 years ago

New:
---

GPU porting of pres, swap_timelevel. Adjustments of openACC directives.
Further porting of poisfft, which now runs completely on GPU without any
host/device data transfer for serial an parallel runs (but parallel runs
require data transfer before and after the MPI transpositions).
GPU-porting of tridiagonal solver:
tridiagonal routines split into extermal subroutines (instead using CONTAINS),
no distinction between parallel/non-parallel in poisfft and tridia any more,
tridia routines moved to end of file because of probable bug in PGI compiler
(otherwise "invalid device function" is indicated during runtime).
(cuda_fft_interfaces, fft_xy, flow_statistics, init_3d_model, palm, poisfft, pres, prognostic_equations, swap_timelevel, time_integration, transpose)
output of accelerator board information. (header)

optimization of tridia routines: constant elements and coefficients of tri are
stored in seperate arrays ddzuw and tric, last dimension of tri reduced from 5 to 2,
(init_grid, init_3d_model, modules, palm, poisfft)

poisfft_init is now called internally from poisfft,
(Makefile, Makefile_check, init_pegrid, poisfft, poisfft_hybrid)

CPU-time per grid point and timestep is output to CPU_MEASURES file
(cpu_statistics, modules, time_integration)

Changed:


resorting from/to array work changed, work now has 4 dimensions instead of 1 (transpose)
array diss allocated only if required (init_3d_model)

pressure boundary condition "Neumann+inhomo" removed from the code
(check_parameters, header, poisfft, poisfft_hybrid, pres)

Errors:


bugfix: dependency added for cuda_fft_interfaces (Makefile)
bugfix: CUDA fft plans adjusted for domain decomposition (before they always
used total domain) (fft_xy)

  • Property svn:keywords set to Id
File size: 77.0 KB
Line 
1 SUBROUTINE header
2
3!--------------------------------------------------------------------------------!
4! This file is part of PALM.
5!
6! PALM is free software: you can redistribute it and/or modify it under the terms
7! of the GNU General Public License as published by the Free Software Foundation,
8! either version 3 of the License, or (at your option) any later version.
9!
10! PALM is distributed in the hope that it will be useful, but WITHOUT ANY
11! WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12! A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
13!
14! You should have received a copy of the GNU General Public License along with
15! PALM. If not, see <http://www.gnu.org/licenses/>.
16!
17! Copyright 1997-2012  Leibniz University Hannover
18!--------------------------------------------------------------------------------!
19!
20! Current revisions:
21! -----------------
22! output of accelerator board information
23! ibc_p_b = 2 removed
24!
25! Former revisions:
26! -----------------
27! $Id: header.f90 1111 2013-03-08 23:54:10Z raasch $
28!
29! 1108 2013-03-05 07:03:32Z raasch
30! bugfix for r1106
31!
32! 1106 2013-03-04 05:31:38Z raasch
33! some format changes for coupled runs
34!
35! 1092 2013-02-02 11:24:22Z raasch
36! unused variables removed
37!
38! 1036 2012-10-22 13:43:42Z raasch
39! code put under GPL (PALM 3.9)
40!
41! 1031 2012-10-19 14:35:30Z raasch
42! output of netCDF data format modified
43!
44! 1015 2012-09-27 09:23:24Z raasch
45! output of Aajustment of mixing length to the Prandtl mixing length at first
46! grid point above ground removed
47!
48! 1003 2012-09-14 14:35:53Z raasch
49! output of information about equal/unequal subdomain size removed
50!
51! 1001 2012-09-13 14:08:46Z raasch
52! all actions concerning leapfrog- and upstream-spline-scheme removed
53!
54! 978 2012-08-09 08:28:32Z fricke
55! -km_damp_max, outflow_damping_width
56! +pt_damping_factor, pt_damping_width
57! +z0h
58!
59! 964 2012-07-26 09:14:24Z raasch
60! output of profil-related quantities removed
61!
62! 940 2012-07-09 14:31:00Z raasch
63! Output in case of simulations for pure neutral stratification (no pt-equation
64! solved)
65!
66! 927 2012-06-06 19:15:04Z raasch
67! output of masking_method for mg-solver
68!
69! 868 2012-03-28 12:21:07Z raasch
70! translation velocity in Galilean transformation changed to 0.6 * ug
71!
72! 833 2012-02-22 08:55:55Z maronga
73! Adjusted format for leaf area density
74!
75! 828 2012-02-21 12:00:36Z raasch
76! output of dissipation_classes + radius_classes
77!
78! 825 2012-02-19 03:03:44Z raasch
79! Output of cloud physics parameters/quantities complemented and restructured
80!
81! 767 2011-10-14 06:39:12Z raasch
82! Output of given initial u,v-profiles
83!
84! 759 2011-09-15 13:58:31Z raasch
85! output of maximum number of parallel io streams
86!
87! 707 2011-03-29 11:39:40Z raasch
88! bc_lr/ns replaced by bc_lr/ns_cyc
89!
90! 667 2010-12-23 12:06:00Z suehring/gryschka
91! Output of advection scheme.
92! Modified output of Prandtl-layer height.
93!
94! 580 2010-10-05 13:59:11Z heinze
95! Renaming of ws_vertical_gradient to subs_vertical_gradient,
96! ws_vertical_gradient_level to subs_vertical_gradient_level and
97! ws_vertical_gradient_level_ind to subs_vertical_gradient_level_i
98!
99! 493 2010-03-01 08:30:24Z raasch
100! NetCDF data output format extendend for NetCDF4/HDF5
101!
102! 449 2010-02-02 11:23:59Z raasch
103! +large scale vertical motion (subsidence/ascent)
104! Bugfix: index problem concerning gradient_level indices removed
105!
106! 410 2009-12-04 17:05:40Z letzel
107! Masked data output: + dt_domask, mask_01~20_x|y|z, mask_01~20_x|y|z_loop,
108! mask_scale|_x|y|z, masks, skip_time_domask
109!
110! 346 2009-07-06 10:13:41Z raasch
111! initializing_actions='read_data_for_recycling' renamed to 'cyclic_fill'
112! Coupling with independent precursor runs.
113! Output of messages replaced by message handling routine.
114! Output of several additional dvr parameters
115! +canyon_height, canyon_width_x, canyon_width_y, canyon_wall_left,
116! canyon_wall_south, conserve_volume_flow_mode, dp_external, dp_level_b,
117! dp_smooth, dpdxy, u_bulk, v_bulk
118! topography_grid_convention moved from user_header
119! small bugfix concerning 3d 64bit netcdf output format
120!
121! 206 2008-10-13 14:59:11Z raasch
122! Bugfix: error in zu index in case of section_xy = -1
123!
124! 198 2008-09-17 08:55:28Z raasch
125! Format adjustments allowing output of larger revision numbers
126!
127! 197 2008-09-16 15:29:03Z raasch
128! allow 100 spectra levels instead of 10 for consistency with
129! define_netcdf_header,
130! bugfix in the output of the characteristic levels of potential temperature,
131! geostrophic wind, scalar concentration, humidity and leaf area density,
132! output of turbulence recycling informations
133!
134! 138 2007-11-28 10:03:58Z letzel
135! Allow new case bc_uv_t = 'dirichlet_0' for channel flow.
136! Allow two instead of one digit to specify isosurface and slicer variables.
137! Output of sorting frequency of particles
138!
139! 108 2007-08-24 15:10:38Z letzel
140! Output of informations for coupled model runs (boundary conditions etc.)
141! + output of momentumfluxes at the top boundary
142! Rayleigh damping for ocean, e_init
143!
144! 97 2007-06-21 08:23:15Z raasch
145! Adjustments for the ocean version.
146! use_pt_reference renamed use_reference
147!
148! 87 2007-05-22 15:46:47Z raasch
149! Bugfix: output of use_upstream_for_tke
150!
151! 82 2007-04-16 15:40:52Z raasch
152! Preprocessor strings for different linux clusters changed to "lc",
153! routine local_flush is used for buffer flushing
154!
155! 76 2007-03-29 00:58:32Z raasch
156! Output of netcdf_64bit_3d, particles-package is now part of the default code,
157! output of the loop optimization method, moisture renamed humidity,
158! output of subversion revision number
159!
160! 19 2007-02-23 04:53:48Z raasch
161! Output of scalar flux applied at top boundary
162!
163! RCS Log replace by Id keyword, revision history cleaned up
164!
165! Revision 1.63  2006/08/22 13:53:13  raasch
166! Output of dz_max
167!
168! Revision 1.1  1997/08/11 06:17:20  raasch
169! Initial revision
170!
171!
172! Description:
173! ------------
174! Writing a header with all important informations about the actual run.
175! This subroutine is called three times, two times at the beginning
176! (writing information on files RUN_CONTROL and HEADER) and one time at the
177! end of the run, then writing additional information about CPU-usage on file
178! header.
179!-----------------------------------------------------------------------------!
180
181    USE arrays_3d
182    USE control_parameters
183    USE cloud_parameters
184    USE cpulog
185    USE dvrp_variables
186    USE grid_variables
187    USE indices
188    USE model_1d
189    USE particle_attributes
190    USE pegrid
191    USE subsidence_mod
192    USE spectrum
193
194    IMPLICIT NONE
195
196    CHARACTER (LEN=1)  ::  prec
197    CHARACTER (LEN=2)  ::  do2d_mode
198    CHARACTER (LEN=5)  ::  section_chr
199    CHARACTER (LEN=10) ::  coor_chr, host_chr
200    CHARACTER (LEN=16) ::  begin_chr
201    CHARACTER (LEN=26) ::  ver_rev
202    CHARACTER (LEN=40) ::  output_format
203    CHARACTER (LEN=70) ::  char1, char2, dopr_chr, &
204                           do2d_xy, do2d_xz, do2d_yz, do3d_chr, &
205                           domask_chr, run_classification
206    CHARACTER (LEN=86) ::  coordinates, gradients, learde, slices,  &
207                           temperatures, ugcomponent, vgcomponent
208    CHARACTER (LEN=85) ::  roben, runten
209
210    CHARACTER (LEN=1), DIMENSION(1:3) ::  dir = (/ 'x', 'y', 'z' /)
211
212    INTEGER ::  av, bh, blx, bly, bxl, bxr, byn, bys, ch, count, cwx, cwy,  &
213                cxl, cxr, cyn, cys, dim, i, io, j, l, ll, mpi_type
214    REAL    ::  cpuseconds_per_simulated_second
215
216!
217!-- Open the output file. At the end of the simulation, output is directed
218!-- to unit 19.
219    IF ( ( runnr == 0 .OR. force_print_header )  .AND. &
220         .NOT. simulated_time_at_begin /= simulated_time )  THEN
221       io = 15   !  header output on file RUN_CONTROL
222    ELSE
223       io = 19   !  header output on file HEADER
224    ENDIF
225    CALL check_open( io )
226
227!
228!-- At the end of the run, output file (HEADER) will be rewritten with
229!-- new informations
230    IF ( io == 19 .AND. simulated_time_at_begin /= simulated_time ) REWIND( 19 )
231
232!
233!-- Determine kind of model run
234    IF ( TRIM( initializing_actions ) == 'read_restart_data' )  THEN
235       run_classification = '3D - restart run'
236    ELSEIF ( TRIM( initializing_actions ) == 'cyclic_fill' )  THEN
237       run_classification = '3D - run with cyclic fill of 3D - prerun data'
238    ELSEIF ( INDEX( initializing_actions, 'set_constant_profiles' ) /= 0 )  THEN
239       run_classification = '3D - run without 1D - prerun'
240    ELSEIF ( INDEX( initializing_actions, 'set_1d-model_profiles' ) /= 0 )  THEN
241       run_classification = '3D - run with 1D - prerun'
242    ELSEIF ( INDEX( initializing_actions, 'by_user' ) /=0 )  THEN
243       run_classification = '3D - run initialized by user'
244    ELSE
245       message_string = ' unknown action(s): ' // TRIM( initializing_actions )
246       CALL message( 'header', 'PA0191', 0, 0, 0, 6, 0 )
247    ENDIF
248    IF ( ocean )  THEN
249       run_classification = 'ocean - ' // run_classification
250    ELSE
251       run_classification = 'atmosphere - ' // run_classification
252    ENDIF
253
254!
255!-- Run-identification, date, time, host
256    host_chr = host(1:10)
257    ver_rev = TRIM( version ) // '  ' // TRIM( revision )
258    WRITE ( io, 100 )  ver_rev, TRIM( run_classification )
259    IF ( TRIM( coupling_mode ) /= 'uncoupled' )  THEN
260#if defined( __mpi2 )
261       mpi_type = 2
262#else
263       mpi_type = 1
264#endif
265       WRITE ( io, 101 )  mpi_type, coupling_mode
266    ENDIF
267#if defined( __parallel )
268    IF ( coupling_start_time /= 0.0 )  THEN
269       IF ( coupling_start_time > simulated_time_at_begin )  THEN
270          WRITE ( io, 109 )
271       ELSE
272          WRITE ( io, 114 )
273       ENDIF
274    ENDIF
275#endif
276    WRITE ( io, 102 )  run_date, run_identifier, run_time, runnr, &
277                       ADJUSTR( host_chr )
278#if defined( __parallel )
279    IF ( npex == -1  .AND.  pdims(2) /= 1 )  THEN
280       char1 = 'calculated'
281    ELSEIF ( ( host(1:3) == 'ibm'  .OR.  host(1:3) == 'nec'  .OR.  &
282               host(1:2) == 'lc' )  .AND.                          &
283             npex == -1  .AND.  pdims(2) == 1 )  THEN
284       char1 = 'forced'
285    ELSE
286       char1 = 'predefined'
287    ENDIF
288    IF ( threads_per_task == 1 )  THEN
289       WRITE ( io, 103 )  numprocs, pdims(1), pdims(2), TRIM( char1 )
290    ELSE
291       WRITE ( io, 104 )  numprocs*threads_per_task, numprocs, &
292                          threads_per_task, pdims(1), pdims(2), TRIM( char1 )
293    ENDIF
294    IF ( num_acc_per_node /= 0 )  WRITE ( io, 117 )  num_acc_per_node   
295    IF ( ( host(1:3) == 'ibm'  .OR.  host(1:3) == 'nec'  .OR.    &
296           host(1:2) == 'lc'   .OR.  host(1:3) == 'dec' )  .AND. &
297         npex == -1  .AND.  pdims(2) == 1 )                      &
298    THEN
299       WRITE ( io, 106 )
300    ELSEIF ( pdims(2) == 1 )  THEN
301       WRITE ( io, 107 )  'x'
302    ELSEIF ( pdims(1) == 1 )  THEN
303       WRITE ( io, 107 )  'y'
304    ENDIF
305    IF ( use_seperate_pe_for_dvrp_output )  WRITE ( io, 105 )
306    IF ( numprocs /= maximum_parallel_io_streams )  THEN
307       WRITE ( io, 108 )  maximum_parallel_io_streams
308    ENDIF
309#else
310    IF ( num_acc_per_node /= 0 )  WRITE ( io, 120 )  num_acc_per_node
311#endif
312    WRITE ( io, 99 )
313
314!
315!-- Numerical schemes
316    WRITE ( io, 110 )
317    IF ( psolver(1:7) == 'poisfft' )  THEN
318       WRITE ( io, 111 )  TRIM( fft_method )
319       IF ( psolver == 'poisfft_hybrid' )  WRITE ( io, 138 )
320    ELSEIF ( psolver == 'sor' )  THEN
321       WRITE ( io, 112 )  nsor_ini, nsor, omega_sor
322    ELSEIF ( psolver == 'multigrid' )  THEN
323       WRITE ( io, 135 )  cycle_mg, maximum_grid_level, ngsrb
324       IF ( mg_cycles == -1 )  THEN
325          WRITE ( io, 140 )  residual_limit
326       ELSE
327          WRITE ( io, 141 )  mg_cycles
328       ENDIF
329       IF ( mg_switch_to_pe0_level == 0 )  THEN
330          WRITE ( io, 136 )  nxr_mg(1)-nxl_mg(1)+1, nyn_mg(1)-nys_mg(1)+1, &
331                             nzt_mg(1)
332       ELSEIF (  mg_switch_to_pe0_level /= -1 )  THEN
333          WRITE ( io, 137 )  mg_switch_to_pe0_level,            &
334                             mg_loc_ind(2,0)-mg_loc_ind(1,0)+1, &
335                             mg_loc_ind(4,0)-mg_loc_ind(3,0)+1, &
336                             nzt_mg(mg_switch_to_pe0_level),    &
337                             nxr_mg(1)-nxl_mg(1)+1, nyn_mg(1)-nys_mg(1)+1, &
338                             nzt_mg(1)
339       ENDIF
340       IF ( masking_method )  WRITE ( io, 144 )
341    ENDIF
342    IF ( call_psolver_at_all_substeps  .AND. timestep_scheme(1:5) == 'runge' ) &
343    THEN
344       WRITE ( io, 142 )
345    ENDIF
346
347    IF ( momentum_advec == 'pw-scheme' )  THEN
348       WRITE ( io, 113 )
349    ELSEIF (momentum_advec == 'ws-scheme' ) THEN
350       WRITE ( io, 503 )
351    ENDIF
352    IF ( scalar_advec == 'pw-scheme' )  THEN
353       WRITE ( io, 116 )
354    ELSEIF ( scalar_advec == 'ws-scheme' )  THEN
355       WRITE ( io, 504 )
356    ELSE
357       WRITE ( io, 118 )
358    ENDIF
359
360    WRITE ( io, 139 )  TRIM( loop_optimization )
361
362    IF ( galilei_transformation )  THEN
363       IF ( use_ug_for_galilei_tr )  THEN
364          char1 = '0.6 * geostrophic wind'
365       ELSE
366          char1 = 'mean wind in model domain'
367       ENDIF
368       IF ( simulated_time_at_begin == simulated_time )  THEN
369          char2 = 'at the start of the run'
370       ELSE
371          char2 = 'at the end of the run'
372       ENDIF
373       WRITE ( io, 119 )  TRIM( char1 ), TRIM( char2 ), &
374                          advected_distance_x/1000.0, advected_distance_y/1000.0
375    ENDIF
376    WRITE ( io, 122 )  timestep_scheme
377    IF ( use_upstream_for_tke )  WRITE ( io, 143 )
378    IF ( rayleigh_damping_factor /= 0.0 )  THEN
379       IF ( .NOT. ocean )  THEN
380          WRITE ( io, 123 )  'above', rayleigh_damping_height, &
381               rayleigh_damping_factor
382       ELSE
383          WRITE ( io, 123 )  'below', rayleigh_damping_height, &
384               rayleigh_damping_factor
385       ENDIF
386    ENDIF
387    IF ( neutral )  WRITE ( io, 131 )  pt_surface
388    IF ( humidity )  THEN
389       IF ( .NOT. cloud_physics )  THEN
390          WRITE ( io, 129 )
391       ELSE
392          WRITE ( io, 130 )
393       ENDIF
394    ENDIF
395    IF ( passive_scalar )  WRITE ( io, 134 )
396    IF ( conserve_volume_flow )  THEN
397       WRITE ( io, 150 )  conserve_volume_flow_mode
398       IF ( TRIM( conserve_volume_flow_mode ) == 'bulk_velocity' )  THEN
399          WRITE ( io, 151 )  u_bulk, v_bulk
400       ENDIF
401    ELSEIF ( dp_external )  THEN
402       IF ( dp_smooth )  THEN
403          WRITE ( io, 152 )  dpdxy, dp_level_b, ', vertically smoothed.'
404       ELSE
405          WRITE ( io, 152 )  dpdxy, dp_level_b, '.'
406       ENDIF
407    ENDIF
408    IF ( large_scale_subsidence )  THEN
409        WRITE ( io, 153 )
410        WRITE ( io, 154 )
411    ENDIF
412    WRITE ( io, 99 )
413
414!
415!-- Runtime and timestep informations
416    WRITE ( io, 200 )
417    IF ( .NOT. dt_fixed )  THEN
418       WRITE ( io, 201 )  dt_max, cfl_factor
419    ELSE
420       WRITE ( io, 202 )  dt
421    ENDIF
422    WRITE ( io, 203 )  simulated_time_at_begin, end_time
423
424    IF ( time_restart /= 9999999.9  .AND. &
425         simulated_time_at_begin == simulated_time )  THEN
426       IF ( dt_restart == 9999999.9 )  THEN
427          WRITE ( io, 204 )  ' Restart at:       ',time_restart
428       ELSE
429          WRITE ( io, 205 )  ' Restart at:       ',time_restart, dt_restart
430       ENDIF
431    ENDIF
432
433    IF ( simulated_time_at_begin /= simulated_time )  THEN
434       i = MAX ( log_point_s(10)%counts, 1 )
435       IF ( ( simulated_time - simulated_time_at_begin ) == 0.0 )  THEN
436          cpuseconds_per_simulated_second = 0.0
437       ELSE
438          cpuseconds_per_simulated_second = log_point_s(10)%sum / &
439                                            ( simulated_time -    &
440                                              simulated_time_at_begin )
441       ENDIF
442       WRITE ( io, 206 )  simulated_time, log_point_s(10)%sum, &
443                          log_point_s(10)%sum / REAL( i ),     &
444                          cpuseconds_per_simulated_second
445       IF ( time_restart /= 9999999.9  .AND.  time_restart < end_time )  THEN
446          IF ( dt_restart == 9999999.9 )  THEN
447             WRITE ( io, 204 )  ' Next restart at:     ',time_restart
448          ELSE
449             WRITE ( io, 205 )  ' Next restart at:     ',time_restart, dt_restart
450          ENDIF
451       ENDIF
452    ENDIF
453
454!
455!-- Start time for coupled runs, if independent precursor runs for atmosphere
456!-- and ocean are used or have been used. In this case, coupling_start_time
457!-- defines the time when the coupling is switched on.
458    IF ( coupling_start_time /= 0.0 )  THEN
459       WRITE ( io, 207 )  coupling_start_time
460    ENDIF
461
462!
463!-- Computational grid
464    IF ( .NOT. ocean )  THEN
465       WRITE ( io, 250 )  dx, dy, dz, (nx+1)*dx, (ny+1)*dy, zu(nzt+1)
466       IF ( dz_stretch_level_index < nzt+1 )  THEN
467          WRITE ( io, 252 )  dz_stretch_level, dz_stretch_level_index, &
468                             dz_stretch_factor, dz_max
469       ENDIF
470    ELSE
471       WRITE ( io, 250 )  dx, dy, dz, (nx+1)*dx, (ny+1)*dy, zu(0)
472       IF ( dz_stretch_level_index > 0 )  THEN
473          WRITE ( io, 252 )  dz_stretch_level, dz_stretch_level_index, &
474                             dz_stretch_factor, dz_max
475       ENDIF
476    ENDIF
477    WRITE ( io, 254 )  nx, ny, nzt+1, MIN( nnx, nx+1 ), MIN( nny, ny+1 ), &
478                       MIN( nnz+2, nzt+2 )
479    IF ( sloping_surface )  WRITE ( io, 260 )  alpha_surface
480
481!
482!-- Topography
483    WRITE ( io, 270 )  topography
484    SELECT CASE ( TRIM( topography ) )
485
486       CASE ( 'flat' )
487          ! no actions necessary
488
489       CASE ( 'single_building' )
490          blx = INT( building_length_x / dx )
491          bly = INT( building_length_y / dy )
492          bh  = INT( building_height / dz )
493
494          IF ( building_wall_left == 9999999.9 )  THEN
495             building_wall_left = ( nx + 1 - blx ) / 2 * dx
496          ENDIF
497          bxl = INT ( building_wall_left / dx + 0.5 )
498          bxr = bxl + blx
499
500          IF ( building_wall_south == 9999999.9 )  THEN
501             building_wall_south = ( ny + 1 - bly ) / 2 * dy
502          ENDIF
503          bys = INT ( building_wall_south / dy + 0.5 )
504          byn = bys + bly
505
506          WRITE ( io, 271 )  building_length_x, building_length_y, &
507                             building_height, bxl, bxr, bys, byn
508
509       CASE ( 'single_street_canyon' )
510          ch  = NINT( canyon_height / dz )
511          IF ( canyon_width_x /= 9999999.9 )  THEN
512!
513!--          Street canyon in y direction
514             cwx = NINT( canyon_width_x / dx )
515             IF ( canyon_wall_left == 9999999.9 )  THEN
516                canyon_wall_left = ( nx + 1 - cwx ) / 2 * dx
517             ENDIF
518             cxl = NINT( canyon_wall_left / dx )
519             cxr = cxl + cwx
520             WRITE ( io, 272 )  'y', canyon_height, ch, 'u', cxl, cxr
521
522          ELSEIF ( canyon_width_y /= 9999999.9 )  THEN
523!
524!--          Street canyon in x direction
525             cwy = NINT( canyon_width_y / dy )
526             IF ( canyon_wall_south == 9999999.9 )  THEN
527                canyon_wall_south = ( ny + 1 - cwy ) / 2 * dy
528             ENDIF
529             cys = NINT( canyon_wall_south / dy )
530             cyn = cys + cwy
531             WRITE ( io, 272 )  'x', canyon_height, ch, 'v', cys, cyn
532          ENDIF
533
534    END SELECT
535
536    IF ( TRIM( topography ) /= 'flat' )  THEN
537       IF ( TRIM( topography_grid_convention ) == ' ' )  THEN
538          IF ( TRIM( topography ) == 'single_building' .OR.  &
539               TRIM( topography ) == 'single_street_canyon' )  THEN
540             WRITE ( io, 278 )
541          ELSEIF ( TRIM( topography ) == 'read_from_file' )  THEN
542             WRITE ( io, 279 )
543          ENDIF
544       ELSEIF ( TRIM( topography_grid_convention ) == 'cell_edge' )  THEN
545          WRITE ( io, 278 )
546       ELSEIF ( TRIM( topography_grid_convention ) == 'cell_center' )  THEN
547          WRITE ( io, 279 )
548       ENDIF
549    ENDIF
550
551    IF ( plant_canopy ) THEN
552
553       WRITE ( io, 280 ) canopy_mode, pch_index, drag_coefficient
554       IF ( passive_scalar ) THEN
555          WRITE ( io, 281 ) scalar_exchange_coefficient,   &
556                            leaf_surface_concentration
557       ENDIF
558
559!
560!--    Heat flux at the top of vegetation
561       WRITE ( io, 282 ) cthf
562
563!
564!--    Leaf area density profile
565!--    Building output strings, starting with surface value
566       WRITE ( learde, '(F6.4)' )  lad_surface
567       gradients = '------'
568       slices = '     0'
569       coordinates = '   0.0'
570       i = 1
571       DO  WHILE ( lad_vertical_gradient_level_ind(i) /= -9999 )
572
573          WRITE (coor_chr,'(F7.2)')  lad(lad_vertical_gradient_level_ind(i))
574          learde = TRIM( learde ) // ' ' // TRIM( coor_chr )
575
576          WRITE (coor_chr,'(F7.2)')  lad_vertical_gradient(i)
577          gradients = TRIM( gradients ) // ' ' // TRIM( coor_chr )
578
579          WRITE (coor_chr,'(I7)')  lad_vertical_gradient_level_ind(i)
580          slices = TRIM( slices ) // ' ' // TRIM( coor_chr )
581
582          WRITE (coor_chr,'(F7.1)')  lad_vertical_gradient_level(i)
583          coordinates = TRIM( coordinates ) // ' '  // TRIM( coor_chr )
584
585          i = i + 1
586       ENDDO
587
588       WRITE ( io, 283 )  TRIM( coordinates ), TRIM( learde ), &
589                          TRIM( gradients ), TRIM( slices )
590
591    ENDIF
592
593!
594!-- Boundary conditions
595    IF ( ibc_p_b == 0 )  THEN
596       runten = 'p(0)     = 0      |'
597    ELSEIF ( ibc_p_b == 1 )  THEN
598       runten = 'p(0)     = p(1)   |'
599    ENDIF
600    IF ( ibc_p_t == 0 )  THEN
601       roben  = 'p(nzt+1) = 0      |'
602    ELSE
603       roben  = 'p(nzt+1) = p(nzt) |'
604    ENDIF
605
606    IF ( ibc_uv_b == 0 )  THEN
607       runten = TRIM( runten ) // ' uv(0)     = -uv(1)                |'
608    ELSE
609       runten = TRIM( runten ) // ' uv(0)     = uv(1)                 |'
610    ENDIF
611    IF ( TRIM( bc_uv_t ) == 'dirichlet_0' )  THEN
612       roben  = TRIM( roben  ) // ' uv(nzt+1) = 0                     |'
613    ELSEIF ( ibc_uv_t == 0 )  THEN
614       roben  = TRIM( roben  ) // ' uv(nzt+1) = ug(nzt+1), vg(nzt+1)  |'
615    ELSE
616       roben  = TRIM( roben  ) // ' uv(nzt+1) = uv(nzt)               |'
617    ENDIF
618
619    IF ( ibc_pt_b == 0 )  THEN
620       runten = TRIM( runten ) // ' pt(0)   = pt_surface'
621    ELSEIF ( ibc_pt_b == 1 )  THEN
622       runten = TRIM( runten ) // ' pt(0)   = pt(1)'
623    ELSEIF ( ibc_pt_b == 2 )  THEN
624       runten = TRIM( runten ) // ' pt(0) = from coupled model'
625    ENDIF
626    IF ( ibc_pt_t == 0 )  THEN
627       roben  = TRIM( roben  ) // ' pt(nzt+1) = pt_top'
628    ELSEIF( ibc_pt_t == 1 )  THEN
629       roben  = TRIM( roben  ) // ' pt(nzt+1) = pt(nzt)'
630    ELSEIF( ibc_pt_t == 2 )  THEN
631       roben  = TRIM( roben  ) // ' pt(nzt+1) = pt(nzt) + dpt/dz_ini'
632
633    ENDIF
634
635    WRITE ( io, 300 )  runten, roben
636
637    IF ( .NOT. constant_diffusion )  THEN
638       IF ( ibc_e_b == 1 )  THEN
639          runten = 'e(0)     = e(1)'
640       ELSE
641          runten = 'e(0)     = e(1) = (u*/0.1)**2'
642       ENDIF
643       roben = 'e(nzt+1) = e(nzt) = e(nzt-1)'
644
645       WRITE ( io, 301 )  'e', runten, roben       
646
647    ENDIF
648
649    IF ( ocean )  THEN
650       runten = 'sa(0)    = sa(1)'
651       IF ( ibc_sa_t == 0 )  THEN
652          roben =  'sa(nzt+1) = sa_surface'
653       ELSE
654          roben =  'sa(nzt+1) = sa(nzt)'
655       ENDIF
656       WRITE ( io, 301 ) 'sa', runten, roben
657    ENDIF
658
659    IF ( humidity )  THEN
660       IF ( ibc_q_b == 0 )  THEN
661          runten = 'q(0)     = q_surface'
662       ELSE
663          runten = 'q(0)     = q(1)'
664       ENDIF
665       IF ( ibc_q_t == 0 )  THEN
666          roben =  'q(nzt)   = q_top'
667       ELSE
668          roben =  'q(nzt)   = q(nzt-1) + dq/dz'
669       ENDIF
670       WRITE ( io, 301 ) 'q', runten, roben
671    ENDIF
672
673    IF ( passive_scalar )  THEN
674       IF ( ibc_q_b == 0 )  THEN
675          runten = 's(0)     = s_surface'
676       ELSE
677          runten = 's(0)     = s(1)'
678       ENDIF
679       IF ( ibc_q_t == 0 )  THEN
680          roben =  's(nzt)   = s_top'
681       ELSE
682          roben =  's(nzt)   = s(nzt-1) + ds/dz'
683       ENDIF
684       WRITE ( io, 301 ) 's', runten, roben
685    ENDIF
686
687    IF ( use_surface_fluxes )  THEN
688       WRITE ( io, 303 )
689       IF ( constant_heatflux )  THEN
690          WRITE ( io, 306 )  surface_heatflux
691          IF ( random_heatflux )  WRITE ( io, 307 )
692       ENDIF
693       IF ( humidity  .AND.  constant_waterflux )  THEN
694          WRITE ( io, 311 ) surface_waterflux
695       ENDIF
696       IF ( passive_scalar  .AND.  constant_waterflux )  THEN
697          WRITE ( io, 313 ) surface_waterflux
698       ENDIF
699    ENDIF
700
701    IF ( use_top_fluxes )  THEN
702       WRITE ( io, 304 )
703       IF ( coupling_mode == 'uncoupled' )  THEN
704          WRITE ( io, 320 )  top_momentumflux_u, top_momentumflux_v
705          IF ( constant_top_heatflux )  THEN
706             WRITE ( io, 306 )  top_heatflux
707          ENDIF
708       ELSEIF ( coupling_mode == 'ocean_to_atmosphere' )  THEN
709          WRITE ( io, 316 )
710       ENDIF
711       IF ( ocean  .AND.  constant_top_salinityflux )  THEN
712          WRITE ( io, 309 )  top_salinityflux
713       ENDIF
714       IF ( humidity  .OR.  passive_scalar )  THEN
715          WRITE ( io, 315 )
716       ENDIF
717    ENDIF
718
719    IF ( prandtl_layer )  THEN
720       WRITE ( io, 305 )  (zu(1)-zu(0)), roughness_length, &
721                          z0h_factor*roughness_length, kappa, &
722                          rif_min, rif_max
723       IF ( .NOT. constant_heatflux )  WRITE ( io, 308 )
724       IF ( humidity  .AND.  .NOT. constant_waterflux )  THEN
725          WRITE ( io, 312 )
726       ENDIF
727       IF ( passive_scalar  .AND.  .NOT. constant_waterflux )  THEN
728          WRITE ( io, 314 )
729       ENDIF
730    ELSE
731       IF ( INDEX(initializing_actions, 'set_1d-model_profiles') /= 0 )  THEN
732          WRITE ( io, 310 )  rif_min, rif_max
733       ENDIF
734    ENDIF
735
736    WRITE ( io, 317 )  bc_lr, bc_ns
737    IF ( .NOT. bc_lr_cyc  .OR.  .NOT. bc_ns_cyc )  THEN
738       WRITE ( io, 318 )  pt_damping_width, pt_damping_factor       
739       IF ( turbulent_inflow )  THEN
740          WRITE ( io, 319 )  recycling_width, recycling_plane, &
741                             inflow_damping_height, inflow_damping_width
742       ENDIF
743    ENDIF
744
745!
746!-- Listing of 1D-profiles
747    WRITE ( io, 325 )  dt_dopr_listing
748    IF ( averaging_interval_pr /= 0.0 )  THEN
749       WRITE ( io, 326 )  averaging_interval_pr, dt_averaging_input_pr
750    ENDIF
751
752!
753!-- DATA output
754    WRITE ( io, 330 )
755    IF ( averaging_interval_pr /= 0.0 )  THEN
756       WRITE ( io, 326 )  averaging_interval_pr, dt_averaging_input_pr
757    ENDIF
758
759!
760!-- 1D-profiles
761    dopr_chr = 'Profile:'
762    IF ( dopr_n /= 0 )  THEN
763       WRITE ( io, 331 )
764
765       output_format = ''
766       IF ( netcdf_output )  THEN
767          output_format = output_format_netcdf
768       ENDIF
769       WRITE ( io, 344 )  output_format
770
771       DO  i = 1, dopr_n
772          dopr_chr = TRIM( dopr_chr ) // ' ' // TRIM( data_output_pr(i) ) // ','
773          IF ( LEN_TRIM( dopr_chr ) >= 60 )  THEN
774             WRITE ( io, 332 )  dopr_chr
775             dopr_chr = '       :'
776          ENDIF
777       ENDDO
778
779       IF ( dopr_chr /= '' )  THEN
780          WRITE ( io, 332 )  dopr_chr
781       ENDIF
782       WRITE ( io, 333 )  dt_dopr, averaging_interval_pr, dt_averaging_input_pr
783       IF ( skip_time_dopr /= 0.0 )  WRITE ( io, 339 )  skip_time_dopr
784    ENDIF
785
786!
787!-- 2D-arrays
788    DO  av = 0, 1
789
790       i = 1
791       do2d_xy = ''
792       do2d_xz = ''
793       do2d_yz = ''
794       DO  WHILE ( do2d(av,i) /= ' ' )
795
796          l = MAX( 2, LEN_TRIM( do2d(av,i) ) )
797          do2d_mode = do2d(av,i)(l-1:l)
798
799          SELECT CASE ( do2d_mode )
800             CASE ( 'xy' )
801                ll = LEN_TRIM( do2d_xy )
802                do2d_xy = do2d_xy(1:ll) // ' ' // do2d(av,i)(1:l-3) // ','
803             CASE ( 'xz' )
804                ll = LEN_TRIM( do2d_xz )
805                do2d_xz = do2d_xz(1:ll) // ' ' // do2d(av,i)(1:l-3) // ','
806             CASE ( 'yz' )
807                ll = LEN_TRIM( do2d_yz )
808                do2d_yz = do2d_yz(1:ll) // ' ' // do2d(av,i)(1:l-3) // ','
809          END SELECT
810
811          i = i + 1
812
813       ENDDO
814
815       IF ( ( ( do2d_xy /= ''  .AND.  section(1,1) /= -9999 )  .OR.    &
816              ( do2d_xz /= ''  .AND.  section(1,2) /= -9999 )  .OR.    &
817              ( do2d_yz /= ''  .AND.  section(1,3) /= -9999 ) )  .AND. &
818            ( netcdf_output  .OR.  iso2d_output ) )  THEN
819
820          IF (  av == 0 )  THEN
821             WRITE ( io, 334 )  ''
822          ELSE
823             WRITE ( io, 334 )  '(time-averaged)'
824          ENDIF
825
826          IF ( do2d_at_begin )  THEN
827             begin_chr = 'and at the start'
828          ELSE
829             begin_chr = ''
830          ENDIF
831
832          output_format = ''
833          IF ( netcdf_output )  THEN
834             output_format = output_format_netcdf
835          ENDIF
836          IF ( iso2d_output )  THEN
837             IF ( netcdf_output )  THEN
838                output_format = TRIM( output_format_netcdf ) // ' and iso2d'
839             ELSE
840                output_format = 'iso2d'
841             ENDIF
842          ENDIF
843          WRITE ( io, 344 )  output_format
844
845          IF ( do2d_xy /= ''  .AND.  section(1,1) /= -9999 )  THEN
846             i = 1
847             slices = '/'
848             coordinates = '/'
849!
850!--          Building strings with index and coordinate informations of the
851!--          slices
852             DO  WHILE ( section(i,1) /= -9999 )
853
854                WRITE (section_chr,'(I5)')  section(i,1)
855                section_chr = ADJUSTL( section_chr )
856                slices = TRIM( slices ) // TRIM( section_chr ) // '/'
857
858                IF ( section(i,1) == -1 )  THEN
859                   WRITE (coor_chr,'(F10.1)')  -1.0
860                ELSE
861                   WRITE (coor_chr,'(F10.1)')  zu(section(i,1))
862                ENDIF
863                coor_chr = ADJUSTL( coor_chr )
864                coordinates = TRIM( coordinates ) // TRIM( coor_chr ) // '/'
865
866                i = i + 1
867             ENDDO
868             IF ( av == 0 )  THEN
869                WRITE ( io, 335 )  'XY', do2d_xy, dt_do2d_xy, &
870                                   TRIM( begin_chr ), 'k', TRIM( slices ), &
871                                   TRIM( coordinates )
872                IF ( skip_time_do2d_xy /= 0.0 )  THEN
873                   WRITE ( io, 339 )  skip_time_do2d_xy
874                ENDIF
875             ELSE
876                WRITE ( io, 342 )  'XY', do2d_xy, dt_data_output_av, &
877                                   TRIM( begin_chr ), averaging_interval, &
878                                   dt_averaging_input, 'k', TRIM( slices ), &
879                                   TRIM( coordinates )
880                IF ( skip_time_data_output_av /= 0.0 )  THEN
881                   WRITE ( io, 339 )  skip_time_data_output_av
882                ENDIF
883             ENDIF
884
885          ENDIF
886
887          IF ( do2d_xz /= ''  .AND.  section(1,2) /= -9999 )  THEN
888             i = 1
889             slices = '/'
890             coordinates = '/'
891!
892!--          Building strings with index and coordinate informations of the
893!--          slices
894             DO  WHILE ( section(i,2) /= -9999 )
895
896                WRITE (section_chr,'(I5)')  section(i,2)
897                section_chr = ADJUSTL( section_chr )
898                slices = TRIM( slices ) // TRIM( section_chr ) // '/'
899
900                WRITE (coor_chr,'(F10.1)')  section(i,2) * dy
901                coor_chr = ADJUSTL( coor_chr )
902                coordinates = TRIM( coordinates ) // TRIM( coor_chr ) // '/'
903
904                i = i + 1
905             ENDDO
906             IF ( av == 0 )  THEN
907                WRITE ( io, 335 )  'XZ', do2d_xz, dt_do2d_xz, &
908                                   TRIM( begin_chr ), 'j', TRIM( slices ), &
909                                   TRIM( coordinates )
910                IF ( skip_time_do2d_xz /= 0.0 )  THEN
911                   WRITE ( io, 339 )  skip_time_do2d_xz
912                ENDIF
913             ELSE
914                WRITE ( io, 342 )  'XZ', do2d_xz, dt_data_output_av, &
915                                   TRIM( begin_chr ), averaging_interval, &
916                                   dt_averaging_input, 'j', TRIM( slices ), &
917                                   TRIM( coordinates )
918                IF ( skip_time_data_output_av /= 0.0 )  THEN
919                   WRITE ( io, 339 )  skip_time_data_output_av
920                ENDIF
921             ENDIF
922          ENDIF
923
924          IF ( do2d_yz /= ''  .AND.  section(1,3) /= -9999 )  THEN
925             i = 1
926             slices = '/'
927             coordinates = '/'
928!
929!--          Building strings with index and coordinate informations of the
930!--          slices
931             DO  WHILE ( section(i,3) /= -9999 )
932
933                WRITE (section_chr,'(I5)')  section(i,3)
934                section_chr = ADJUSTL( section_chr )
935                slices = TRIM( slices ) // TRIM( section_chr ) // '/'
936
937                WRITE (coor_chr,'(F10.1)')  section(i,3) * dx
938                coor_chr = ADJUSTL( coor_chr )
939                coordinates = TRIM( coordinates ) // TRIM( coor_chr ) // '/'
940
941                i = i + 1
942             ENDDO
943             IF ( av == 0 )  THEN
944                WRITE ( io, 335 )  'YZ', do2d_yz, dt_do2d_yz, &
945                                   TRIM( begin_chr ), 'i', TRIM( slices ), &
946                                   TRIM( coordinates )
947                IF ( skip_time_do2d_yz /= 0.0 )  THEN
948                   WRITE ( io, 339 )  skip_time_do2d_yz
949                ENDIF
950             ELSE
951                WRITE ( io, 342 )  'YZ', do2d_yz, dt_data_output_av, &
952                                   TRIM( begin_chr ), averaging_interval, &
953                                   dt_averaging_input, 'i', TRIM( slices ), &
954                                   TRIM( coordinates )
955                IF ( skip_time_data_output_av /= 0.0 )  THEN
956                   WRITE ( io, 339 )  skip_time_data_output_av
957                ENDIF
958             ENDIF
959          ENDIF
960
961       ENDIF
962
963    ENDDO
964
965!
966!-- 3d-arrays
967    DO  av = 0, 1
968
969       i = 1
970       do3d_chr = ''
971       DO  WHILE ( do3d(av,i) /= ' ' )
972
973          do3d_chr = TRIM( do3d_chr ) // ' ' // TRIM( do3d(av,i) ) // ','
974          i = i + 1
975
976       ENDDO
977
978       IF ( do3d_chr /= '' )  THEN
979          IF ( av == 0 )  THEN
980             WRITE ( io, 336 )  ''
981          ELSE
982             WRITE ( io, 336 )  '(time-averaged)'
983          ENDIF
984
985          output_format = ''
986          IF ( netcdf_output )  THEN
987             output_format = output_format_netcdf
988          ENDIF
989          IF ( avs_output )  THEN
990             IF ( netcdf_output )  THEN
991                output_format = TRIM( output_format_netcdf ) // ' and avs'
992             ELSE
993                output_format = 'avs'
994             ENDIF
995          ENDIF
996          WRITE ( io, 344 )  output_format
997
998          IF ( do3d_at_begin )  THEN
999             begin_chr = 'and at the start'
1000          ELSE
1001             begin_chr = ''
1002          ENDIF
1003          IF ( av == 0 )  THEN
1004             WRITE ( io, 337 )  do3d_chr, dt_do3d, TRIM( begin_chr ), &
1005                                zu(nz_do3d), nz_do3d
1006          ELSE
1007             WRITE ( io, 343 )  do3d_chr, dt_data_output_av,           &
1008                                TRIM( begin_chr ), averaging_interval, &
1009                                dt_averaging_input, zu(nz_do3d), nz_do3d
1010          ENDIF
1011
1012          IF ( do3d_compress )  THEN
1013             do3d_chr = ''
1014             i = 1
1015             DO WHILE ( do3d(av,i) /= ' ' )
1016
1017                SELECT CASE ( do3d(av,i) )
1018                   CASE ( 'u' )
1019                      j = 1
1020                   CASE ( 'v' )
1021                      j = 2
1022                   CASE ( 'w' )
1023                      j = 3
1024                   CASE ( 'p' )
1025                      j = 4
1026                   CASE ( 'pt' )
1027                      j = 5
1028                END SELECT
1029                WRITE ( prec, '(I1)' )  plot_3d_precision(j)%precision
1030                do3d_chr = TRIM( do3d_chr ) // ' ' // TRIM( do3d(av,i) ) // &
1031                           ':' // prec // ','
1032                i = i + 1
1033
1034             ENDDO
1035             WRITE ( io, 338 )  do3d_chr
1036
1037          ENDIF
1038
1039          IF ( av == 0 )  THEN
1040             IF ( skip_time_do3d /= 0.0 )  THEN
1041                WRITE ( io, 339 )  skip_time_do3d
1042             ENDIF
1043          ELSE
1044             IF ( skip_time_data_output_av /= 0.0 )  THEN
1045                WRITE ( io, 339 )  skip_time_data_output_av
1046             ENDIF
1047          ENDIF
1048
1049       ENDIF
1050
1051    ENDDO
1052
1053!
1054!-- masked arrays
1055    IF ( masks > 0 )  WRITE ( io, 345 )  &
1056         mask_scale_x, mask_scale_y, mask_scale_z
1057    DO  mid = 1, masks
1058       DO  av = 0, 1
1059
1060          i = 1
1061          domask_chr = ''
1062          DO  WHILE ( domask(mid,av,i) /= ' ' )
1063             domask_chr = TRIM( domask_chr ) // ' ' //  &
1064                          TRIM( domask(mid,av,i) ) // ','
1065             i = i + 1
1066          ENDDO
1067
1068          IF ( domask_chr /= '' )  THEN
1069             IF ( av == 0 )  THEN
1070                WRITE ( io, 346 )  '', mid
1071             ELSE
1072                WRITE ( io, 346 )  ' (time-averaged)', mid
1073             ENDIF
1074
1075             output_format = ' '
1076             IF ( netcdf_output )  THEN
1077                output_format = output_format_netcdf
1078             ENDIF
1079             WRITE ( io, 344 )  output_format
1080
1081             IF ( av == 0 )  THEN
1082                WRITE ( io, 347 )  domask_chr, dt_domask(mid)
1083             ELSE
1084                WRITE ( io, 348 )  domask_chr, dt_data_output_av, &
1085                                   averaging_interval, dt_averaging_input
1086             ENDIF
1087
1088             IF ( av == 0 )  THEN
1089                IF ( skip_time_domask(mid) /= 0.0 )  THEN
1090                   WRITE ( io, 339 )  skip_time_domask(mid)
1091                ENDIF
1092             ELSE
1093                IF ( skip_time_data_output_av /= 0.0 )  THEN
1094                   WRITE ( io, 339 )  skip_time_data_output_av
1095                ENDIF
1096             ENDIF
1097!
1098!--          output locations
1099             DO  dim = 1, 3
1100                IF ( mask(mid,dim,1) >= 0.0 )  THEN
1101                   count = 0
1102                   DO  WHILE ( mask(mid,dim,count+1) >= 0.0 )
1103                      count = count + 1
1104                   ENDDO
1105                   WRITE ( io, 349 )  dir(dim), dir(dim), mid, dir(dim), &
1106                                      mask(mid,dim,:count)
1107                ELSEIF ( mask_loop(mid,dim,1) < 0.0 .AND.  &
1108                         mask_loop(mid,dim,2) < 0.0 .AND.  &
1109                         mask_loop(mid,dim,3) == 0.0 )  THEN
1110                   WRITE ( io, 350 )  dir(dim), dir(dim)
1111                ELSEIF ( mask_loop(mid,dim,3) == 0.0 )  THEN
1112                   WRITE ( io, 351 )  dir(dim), dir(dim), mid, dir(dim), &
1113                                      mask_loop(mid,dim,1:2)
1114                ELSE
1115                   WRITE ( io, 351 )  dir(dim), dir(dim), mid, dir(dim), &
1116                                      mask_loop(mid,dim,1:3)
1117                ENDIF
1118             ENDDO
1119          ENDIF
1120
1121       ENDDO
1122    ENDDO
1123
1124!
1125!-- Timeseries
1126    IF ( dt_dots /= 9999999.9 )  THEN
1127       WRITE ( io, 340 )
1128
1129       output_format = ''
1130       IF ( netcdf_output )  THEN
1131          output_format = output_format_netcdf
1132       ENDIF
1133       WRITE ( io, 344 )  output_format
1134       WRITE ( io, 341 )  dt_dots
1135    ENDIF
1136
1137#if defined( __dvrp_graphics )
1138!
1139!-- Dvrp-output
1140    IF ( dt_dvrp /= 9999999.9 )  THEN
1141       WRITE ( io, 360 )  dt_dvrp, TRIM( dvrp_output ), TRIM( dvrp_host ), &
1142                          TRIM( dvrp_username ), TRIM( dvrp_directory )
1143       i = 1
1144       l = 0
1145       m = 0
1146       DO WHILE ( mode_dvrp(i) /= ' ' )
1147          IF ( mode_dvrp(i)(1:10) == 'isosurface' )  THEN
1148             READ ( mode_dvrp(i), '(10X,I2)' )  j
1149             l = l + 1
1150             IF ( do3d(0,j) /= ' ' )  THEN
1151                WRITE ( io, 361 )  TRIM( do3d(0,j) ), threshold(l), &
1152                                   isosurface_color(:,l)
1153             ENDIF
1154          ELSEIF ( mode_dvrp(i)(1:6) == 'slicer' )  THEN
1155             READ ( mode_dvrp(i), '(6X,I2)' )  j
1156             m = m + 1
1157             IF ( do2d(0,j) /= ' ' )  THEN
1158                WRITE ( io, 362 )  TRIM( do2d(0,j) ), &
1159                                   slicer_range_limits_dvrp(:,m)
1160             ENDIF
1161          ELSEIF ( mode_dvrp(i)(1:9) == 'particles' )  THEN
1162             WRITE ( io, 363 )  dvrp_psize
1163             IF ( particle_dvrpsize /= 'none' )  THEN
1164                WRITE ( io, 364 )  'size', TRIM( particle_dvrpsize ), &
1165                                   dvrpsize_interval
1166             ENDIF
1167             IF ( particle_color /= 'none' )  THEN
1168                WRITE ( io, 364 )  'color', TRIM( particle_color ), &
1169                                   color_interval
1170             ENDIF
1171          ENDIF
1172          i = i + 1
1173       ENDDO
1174
1175       WRITE ( io, 365 )  groundplate_color, superelevation_x, &
1176                          superelevation_y, superelevation, clip_dvrp_l, &
1177                          clip_dvrp_r, clip_dvrp_s, clip_dvrp_n
1178
1179       IF ( TRIM( topography ) /= 'flat' )  THEN
1180          WRITE ( io, 366 )  topography_color
1181          IF ( cluster_size > 1 )  THEN
1182             WRITE ( io, 367 )  cluster_size
1183          ENDIF
1184       ENDIF
1185
1186    ENDIF
1187#endif
1188
1189#if defined( __spectra )
1190!
1191!-- Spectra output
1192    IF ( dt_dosp /= 9999999.9 ) THEN
1193       WRITE ( io, 370 )
1194
1195       output_format = ' '
1196       IF ( netcdf_output )  THEN
1197          output_format = output_format_netcdf
1198       ENDIF
1199       WRITE ( io, 344 )  output_format
1200       WRITE ( io, 371 )  dt_dosp
1201       IF ( skip_time_dosp /= 0.0 )  WRITE ( io, 339 )  skip_time_dosp
1202       WRITE ( io, 372 )  ( data_output_sp(i), i = 1,10 ),     &
1203                          ( spectra_direction(i), i = 1,10 ),  &
1204                          ( comp_spectra_level(i), i = 1,100 ), &
1205                          ( plot_spectra_level(i), i = 1,100 ), &
1206                          averaging_interval_sp, dt_averaging_input_pr
1207    ENDIF
1208#endif
1209
1210    WRITE ( io, 99 )
1211
1212!
1213!-- Physical quantities
1214    WRITE ( io, 400 )
1215
1216!
1217!-- Geostrophic parameters
1218    WRITE ( io, 410 )  omega, phi, f, fs
1219
1220!
1221!-- Other quantities
1222    WRITE ( io, 411 )  g
1223    IF ( use_reference )  THEN
1224       IF ( ocean )  THEN
1225          WRITE ( io, 412 )  prho_reference
1226       ELSE
1227          WRITE ( io, 413 )  pt_reference
1228       ENDIF
1229    ENDIF
1230
1231!
1232!-- Cloud physics parameters
1233    IF ( cloud_physics ) THEN
1234       WRITE ( io, 415 )
1235       WRITE ( io, 416 ) surface_pressure, r_d, rho_surface, cp, l_v
1236    ENDIF
1237
1238!-- Profile of the geostrophic wind (component ug)
1239!-- Building output strings
1240    WRITE ( ugcomponent, '(F6.2)' )  ug_surface
1241    gradients = '------'
1242    slices = '     0'
1243    coordinates = '   0.0'
1244    i = 1
1245    DO  WHILE ( ug_vertical_gradient_level_ind(i) /= -9999 )
1246     
1247       WRITE (coor_chr,'(F6.2,1X)')  ug(ug_vertical_gradient_level_ind(i))
1248       ugcomponent = TRIM( ugcomponent ) // '  ' // TRIM( coor_chr )
1249
1250       WRITE (coor_chr,'(F6.2,1X)')  ug_vertical_gradient(i)
1251       gradients = TRIM( gradients ) // '  ' // TRIM( coor_chr )
1252
1253       WRITE (coor_chr,'(I6,1X)')  ug_vertical_gradient_level_ind(i)
1254       slices = TRIM( slices ) // '  ' // TRIM( coor_chr )
1255
1256       WRITE (coor_chr,'(F6.1,1X)')  ug_vertical_gradient_level(i)
1257       coordinates = TRIM( coordinates ) // '  ' // TRIM( coor_chr )
1258
1259       IF ( i == 10 )  THEN
1260          EXIT
1261       ELSE
1262          i = i + 1
1263       ENDIF
1264
1265    ENDDO
1266
1267    WRITE ( io, 423 )  TRIM( coordinates ), TRIM( ugcomponent ), &
1268                       TRIM( gradients ), TRIM( slices )
1269
1270!-- Profile of the geostrophic wind (component vg)
1271!-- Building output strings
1272    WRITE ( vgcomponent, '(F6.2)' )  vg_surface
1273    gradients = '------'
1274    slices = '     0'
1275    coordinates = '   0.0'
1276    i = 1
1277    DO  WHILE ( vg_vertical_gradient_level_ind(i) /= -9999 )
1278
1279       WRITE (coor_chr,'(F6.2,1X)')  vg(vg_vertical_gradient_level_ind(i))
1280       vgcomponent = TRIM( vgcomponent ) // '  ' // TRIM( coor_chr )
1281
1282       WRITE (coor_chr,'(F6.2,1X)')  vg_vertical_gradient(i)
1283       gradients = TRIM( gradients ) // '  ' // TRIM( coor_chr )
1284
1285       WRITE (coor_chr,'(I6,1X)')  vg_vertical_gradient_level_ind(i)
1286       slices = TRIM( slices ) // '  ' // TRIM( coor_chr )
1287
1288       WRITE (coor_chr,'(F6.1,1X)')  vg_vertical_gradient_level(i)
1289       coordinates = TRIM( coordinates ) // '  ' // TRIM( coor_chr )
1290
1291       IF ( i == 10 )  THEN
1292          EXIT
1293       ELSE
1294          i = i + 1
1295       ENDIF
1296 
1297    ENDDO
1298
1299    WRITE ( io, 424 )  TRIM( coordinates ), TRIM( vgcomponent ), &
1300                       TRIM( gradients ), TRIM( slices )
1301
1302!
1303!-- Initial wind profiles
1304    IF ( u_profile(1) /= 9999999.9 )  WRITE ( io, 427 )
1305
1306!
1307!-- Initial temperature profile
1308!-- Building output strings, starting with surface temperature
1309    WRITE ( temperatures, '(F6.2)' )  pt_surface
1310    gradients = '------'
1311    slices = '     0'
1312    coordinates = '   0.0'
1313    i = 1
1314    DO  WHILE ( pt_vertical_gradient_level_ind(i) /= -9999 )
1315
1316       WRITE (coor_chr,'(F7.2)')  pt_init(pt_vertical_gradient_level_ind(i))
1317       temperatures = TRIM( temperatures ) // ' ' // TRIM( coor_chr )
1318
1319       WRITE (coor_chr,'(F7.2)')  pt_vertical_gradient(i)
1320       gradients = TRIM( gradients ) // ' ' // TRIM( coor_chr )
1321
1322       WRITE (coor_chr,'(I7)')  pt_vertical_gradient_level_ind(i)
1323       slices = TRIM( slices ) // ' ' // TRIM( coor_chr )
1324
1325       WRITE (coor_chr,'(F7.1)')  pt_vertical_gradient_level(i)
1326       coordinates = TRIM( coordinates ) // ' '  // TRIM( coor_chr )
1327
1328       IF ( i == 10 )  THEN
1329          EXIT
1330       ELSE
1331          i = i + 1
1332       ENDIF
1333
1334    ENDDO
1335
1336    WRITE ( io, 420 )  TRIM( coordinates ), TRIM( temperatures ), &
1337                       TRIM( gradients ), TRIM( slices )
1338
1339!
1340!-- Initial humidity profile
1341!-- Building output strings, starting with surface humidity
1342    IF ( humidity  .OR.  passive_scalar )  THEN
1343       WRITE ( temperatures, '(E8.1)' )  q_surface
1344       gradients = '--------'
1345       slices = '       0'
1346       coordinates = '     0.0'
1347       i = 1
1348       DO  WHILE ( q_vertical_gradient_level_ind(i) /= -9999 )
1349         
1350          WRITE (coor_chr,'(E8.1,4X)')  q_init(q_vertical_gradient_level_ind(i))
1351          temperatures = TRIM( temperatures ) // '  ' // TRIM( coor_chr )
1352
1353          WRITE (coor_chr,'(E8.1,4X)')  q_vertical_gradient(i)
1354          gradients = TRIM( gradients ) // '  ' // TRIM( coor_chr )
1355         
1356          WRITE (coor_chr,'(I8,4X)')  q_vertical_gradient_level_ind(i)
1357          slices = TRIM( slices ) // '  ' // TRIM( coor_chr )
1358         
1359          WRITE (coor_chr,'(F8.1,4X)')  q_vertical_gradient_level(i)
1360          coordinates = TRIM( coordinates ) // '  '  // TRIM( coor_chr )
1361
1362          IF ( i == 10 )  THEN
1363             EXIT
1364          ELSE
1365             i = i + 1
1366          ENDIF
1367
1368       ENDDO
1369
1370       IF ( humidity )  THEN
1371          WRITE ( io, 421 )  TRIM( coordinates ), TRIM( temperatures ), &
1372                             TRIM( gradients ), TRIM( slices )
1373       ELSE
1374          WRITE ( io, 422 )  TRIM( coordinates ), TRIM( temperatures ), &
1375                             TRIM( gradients ), TRIM( slices )
1376       ENDIF
1377    ENDIF
1378
1379!
1380!-- Initial salinity profile
1381!-- Building output strings, starting with surface salinity
1382    IF ( ocean )  THEN
1383       WRITE ( temperatures, '(F6.2)' )  sa_surface
1384       gradients = '------'
1385       slices = '     0'
1386       coordinates = '   0.0'
1387       i = 1
1388       DO  WHILE ( sa_vertical_gradient_level_ind(i) /= -9999 )
1389
1390          WRITE (coor_chr,'(F7.2)')  sa_init(sa_vertical_gradient_level_ind(i))
1391          temperatures = TRIM( temperatures ) // ' ' // TRIM( coor_chr )
1392
1393          WRITE (coor_chr,'(F7.2)')  sa_vertical_gradient(i)
1394          gradients = TRIM( gradients ) // ' ' // TRIM( coor_chr )
1395
1396          WRITE (coor_chr,'(I7)')  sa_vertical_gradient_level_ind(i)
1397          slices = TRIM( slices ) // ' ' // TRIM( coor_chr )
1398
1399          WRITE (coor_chr,'(F7.1)')  sa_vertical_gradient_level(i)
1400          coordinates = TRIM( coordinates ) // ' '  // TRIM( coor_chr )
1401
1402          IF ( i == 10 )  THEN
1403             EXIT
1404          ELSE
1405             i = i + 1
1406          ENDIF
1407
1408       ENDDO
1409
1410       WRITE ( io, 425 )  TRIM( coordinates ), TRIM( temperatures ), &
1411                          TRIM( gradients ), TRIM( slices )
1412    ENDIF
1413
1414!
1415!-- Profile for the large scale vertial velocity
1416!-- Building output strings, starting with surface value
1417    IF ( large_scale_subsidence )  THEN
1418       temperatures = '   0.0'
1419       gradients = '------'
1420       slices = '     0'
1421       coordinates = '   0.0'
1422       i = 1
1423       DO  WHILE ( subs_vertical_gradient_level_i(i) /= -9999 )
1424
1425          WRITE (coor_chr,'(E10.2,7X)')  &
1426                                w_subs(subs_vertical_gradient_level_i(i))
1427          temperatures = TRIM( temperatures ) // ' ' // TRIM( coor_chr )
1428
1429          WRITE (coor_chr,'(E10.2,7X)')  subs_vertical_gradient(i)
1430          gradients = TRIM( gradients ) // ' ' // TRIM( coor_chr )
1431
1432          WRITE (coor_chr,'(I10,7X)')  subs_vertical_gradient_level_i(i)
1433          slices = TRIM( slices ) // ' ' // TRIM( coor_chr )
1434
1435          WRITE (coor_chr,'(F10.2,7X)')  subs_vertical_gradient_level(i)
1436          coordinates = TRIM( coordinates ) // ' '  // TRIM( coor_chr )
1437
1438          IF ( i == 10 )  THEN
1439             EXIT
1440          ELSE
1441             i = i + 1
1442          ENDIF
1443
1444       ENDDO
1445
1446       WRITE ( io, 426 )  TRIM( coordinates ), TRIM( temperatures ), &
1447                          TRIM( gradients ), TRIM( slices )
1448    ENDIF
1449
1450!
1451!-- Cloud physcis parameters / quantities / numerical methods
1452    WRITE ( io, 430 )
1453    IF ( humidity .AND. .NOT. cloud_physics .AND. .NOT. cloud_droplets)  THEN
1454       WRITE ( io, 431 )
1455    ELSEIF ( humidity  .AND.  cloud_physics )  THEN
1456       WRITE ( io, 432 )
1457       IF ( radiation )      WRITE ( io, 132 )
1458       IF ( precipitation )  WRITE ( io, 133 )
1459    ELSEIF ( humidity  .AND.  cloud_droplets )  THEN
1460       WRITE ( io, 433 )
1461       IF ( curvature_solution_effects )  WRITE ( io, 434 )
1462       IF ( collision_kernel /= 'none' )  THEN
1463          WRITE ( io, 435 )  TRIM( collision_kernel )
1464          IF ( collision_kernel(6:9) == 'fast' )  THEN
1465             WRITE ( io, 436 )  radius_classes, dissipation_classes
1466          ENDIF
1467       ELSE
1468          WRITE ( io, 437 )
1469       ENDIF
1470    ENDIF
1471
1472!
1473!-- LES / turbulence parameters
1474    WRITE ( io, 450 )
1475
1476!--
1477! ... LES-constants used must still be added here
1478!--
1479    IF ( constant_diffusion )  THEN
1480       WRITE ( io, 451 )  km_constant, km_constant/prandtl_number, &
1481                          prandtl_number
1482    ENDIF
1483    IF ( .NOT. constant_diffusion)  THEN
1484       IF ( e_init > 0.0 )  WRITE ( io, 455 )  e_init
1485       IF ( e_min > 0.0 )  WRITE ( io, 454 )  e_min
1486       IF ( wall_adjustment )  WRITE ( io, 453 )  wall_adjustment_factor
1487    ENDIF
1488
1489!
1490!-- Special actions during the run
1491    WRITE ( io, 470 )
1492    IF ( create_disturbances )  THEN
1493       WRITE ( io, 471 )  dt_disturb, disturbance_amplitude,                   &
1494                          zu(disturbance_level_ind_b), disturbance_level_ind_b,&
1495                          zu(disturbance_level_ind_t), disturbance_level_ind_t
1496       IF ( .NOT. bc_lr_cyc  .OR.  .NOT. bc_ns_cyc )  THEN
1497          WRITE ( io, 472 )  inflow_disturbance_begin, inflow_disturbance_end
1498       ELSE
1499          WRITE ( io, 473 )  disturbance_energy_limit
1500       ENDIF
1501       WRITE ( io, 474 )  TRIM( random_generator )
1502    ENDIF
1503    IF ( pt_surface_initial_change /= 0.0 )  THEN
1504       WRITE ( io, 475 )  pt_surface_initial_change
1505    ENDIF
1506    IF ( humidity  .AND.  q_surface_initial_change /= 0.0 )  THEN
1507       WRITE ( io, 476 )  q_surface_initial_change       
1508    ENDIF
1509    IF ( passive_scalar  .AND.  q_surface_initial_change /= 0.0 )  THEN
1510       WRITE ( io, 477 )  q_surface_initial_change       
1511    ENDIF
1512
1513    IF ( particle_advection )  THEN
1514!
1515!--    Particle attributes
1516       WRITE ( io, 480 )  particle_advection_start, dt_prel, bc_par_lr, &
1517                          bc_par_ns, bc_par_b, bc_par_t, particle_maximum_age, &
1518                          end_time_prel, dt_sort_particles
1519       IF ( use_sgs_for_particles )  WRITE ( io, 488 )  dt_min_part
1520       IF ( random_start_position )  WRITE ( io, 481 )
1521       IF ( particles_per_point > 1 )  WRITE ( io, 489 )  particles_per_point
1522       WRITE ( io, 495 )  total_number_of_particles
1523       IF ( use_particle_tails  .AND.  maximum_number_of_tailpoints /= 0 )  THEN
1524          WRITE ( io, 483 )  maximum_number_of_tailpoints
1525          IF ( minimum_tailpoint_distance /= 0 )  THEN
1526             WRITE ( io, 484 )  total_number_of_tails,      &
1527                                minimum_tailpoint_distance, &
1528                                maximum_tailpoint_age
1529          ENDIF
1530       ENDIF
1531       IF ( dt_write_particle_data /= 9999999.9 )  THEN
1532          WRITE ( io, 485 )  dt_write_particle_data
1533          output_format = ' '
1534          IF ( netcdf_output )  THEN
1535             IF ( netcdf_data_format > 1 )  THEN
1536                output_format = 'netcdf (64 bit offset) and binary'
1537             ELSE
1538                output_format = 'netcdf and binary'
1539             ENDIF
1540          ELSE
1541             output_format = 'binary'
1542          ENDIF
1543          WRITE ( io, 344 )  output_format
1544       ENDIF
1545       IF ( dt_dopts /= 9999999.9 )  WRITE ( io, 494 )  dt_dopts
1546       IF ( write_particle_statistics )  WRITE ( io, 486 )
1547
1548       WRITE ( io, 487 )  number_of_particle_groups
1549
1550       DO  i = 1, number_of_particle_groups
1551          IF ( i == 1  .AND.  density_ratio(i) == 9999999.9 )  THEN
1552             WRITE ( io, 490 )  i, 0.0
1553             WRITE ( io, 492 )
1554          ELSE
1555             WRITE ( io, 490 )  i, radius(i)
1556             IF ( density_ratio(i) /= 0.0 )  THEN
1557                WRITE ( io, 491 )  density_ratio(i)
1558             ELSE
1559                WRITE ( io, 492 )
1560             ENDIF
1561          ENDIF
1562          WRITE ( io, 493 )  psl(i), psr(i), pss(i), psn(i), psb(i), pst(i), &
1563                             pdx(i), pdy(i), pdz(i)
1564          IF ( .NOT. vertical_particle_advection(i) )  WRITE ( io, 482 )
1565       ENDDO
1566
1567    ENDIF
1568
1569
1570!
1571!-- Parameters of 1D-model
1572    IF ( INDEX( initializing_actions, 'set_1d-model_profiles' ) /= 0 )  THEN
1573       WRITE ( io, 500 )  end_time_1d, dt_run_control_1d, dt_pr_1d, &
1574                          mixing_length_1d, dissipation_1d
1575       IF ( damp_level_ind_1d /= nzt+1 )  THEN
1576          WRITE ( io, 502 )  zu(damp_level_ind_1d), damp_level_ind_1d
1577       ENDIF
1578    ENDIF
1579
1580!
1581!-- User-defined informations
1582    CALL user_header( io )
1583
1584    WRITE ( io, 99 )
1585
1586!
1587!-- Write buffer contents to disc immediately
1588    CALL local_flush( io )
1589
1590!
1591!-- Here the FORMATs start
1592
1593 99 FORMAT (1X,78('-'))
1594100 FORMAT (/1X,'******************************',6X,42('-')/        &
1595            1X,'* ',A,' *',6X,A/                               &
1596            1X,'******************************',6X,42('-'))
1597101 FORMAT (37X,'coupled run using MPI-',I1,': ',A/ &
1598            37X,42('-'))
1599102 FORMAT (/' Date:                 ',A8,6X,'Run:       ',A20/      &
1600            ' Time:                 ',A8,6X,'Run-No.:   ',I2.2/     &
1601            ' Run on host:        ',A10)
1602#if defined( __parallel )
1603103 FORMAT (' Number of PEs:',10X,I6,6X,'Processor grid (x,y): (',I3,',',I3, &
1604              ')',1X,A)
1605104 FORMAT (' Number of PEs:',8X,I5,9X,'Tasks:',I4,'   threads per task:',I4/ &
1606              37X,'Processor grid (x,y): (',I3,',',I3,')',1X,A)
1607105 FORMAT (37X,'One additional PE is used to handle'/37X,'the dvrp output!')
1608106 FORMAT (37X,'A 1d-decomposition along x is forced'/ &
1609            37X,'because the job is running on an SMP-cluster')
1610107 FORMAT (37X,'A 1d-decomposition along ',A,' is used')
1611108 FORMAT (37X,'Max. # of parallel I/O streams is ',I5)
1612109 FORMAT (37X,'Precursor run for coupled atmos-ocean run'/ &
1613            37X,42('-'))
1614114 FORMAT (37X,'Coupled atmosphere-ocean run following'/ &
1615            37X,'independent precursor runs'/             &
1616            37X,42('-'))
1617117 FORMAT (' Accelerator boards / node:  ',I2)
1618#endif
1619110 FORMAT (/' Numerical Schemes:'/ &
1620             ' -----------------'/)
1621111 FORMAT (' --> Solve perturbation pressure via FFT using ',A,' routines')
1622112 FORMAT (' --> Solve perturbation pressure via SOR-Red/Black-Schema'/ &
1623            '     Iterations (initial/other): ',I3,'/',I3,'  omega = ',F5.3)
1624113 FORMAT (' --> Momentum advection via Piascek-Williams-Scheme (Form C3)', &
1625                  ' or Upstream')
1626116 FORMAT (' --> Scalar advection via Piascek-Williams-Scheme (Form C3)', &
1627                  ' or Upstream')
1628118 FORMAT (' --> Scalar advection via Bott-Chlond-Scheme')
1629119 FORMAT (' --> Galilei-Transform applied to horizontal advection:'/ &
1630            '     translation velocity = ',A/ &
1631            '     distance advected ',A,':  ',F8.3,' km(x)  ',F8.3,' km(y)')
1632120 FORMAT (' Accelerator boards: ',8X,I2)
1633122 FORMAT (' --> Time differencing scheme: ',A)
1634123 FORMAT (' --> Rayleigh-Damping active, starts ',A,' z = ',F8.2,' m'/ &
1635            '     maximum damping coefficient: ',F5.3, ' 1/s')
1636129 FORMAT (' --> Additional prognostic equation for the specific humidity')
1637130 FORMAT (' --> Additional prognostic equation for the total water content')
1638131 FORMAT (' --> No pt-equation solved. Neutral stratification with pt = ', &
1639                  F6.2, ' K assumed')
1640132 FORMAT ('     Parameterization of long-wave radiation processes via'/ &
1641            '     effective emissivity scheme')
1642133 FORMAT ('     Precipitation parameterization via Kessler-Scheme')
1643134 FORMAT (' --> Additional prognostic equation for a passive scalar')
1644135 FORMAT (' --> Solve perturbation pressure via multigrid method (', &
1645                  A,'-cycle)'/ &
1646            '     number of grid levels:                   ',I2/ &
1647            '     Gauss-Seidel red/black iterations:       ',I2)
1648136 FORMAT ('     gridpoints of coarsest subdomain (x,y,z): (',I3,',',I3,',', &
1649                  I3,')')
1650137 FORMAT ('     level data gathered on PE0 at level:     ',I2/ &
1651            '     gridpoints of coarsest subdomain (x,y,z): (',I3,',',I3,',', &
1652                  I3,')'/ &
1653            '     gridpoints of coarsest domain (x,y,z):    (',I3,',',I3,',', &
1654                  I3,')')
1655138 FORMAT ('     Using hybrid version for 1d-domain-decomposition')
1656139 FORMAT (' --> Loop optimization method: ',A)
1657140 FORMAT ('     maximum residual allowed:                ',E10.3)
1658141 FORMAT ('     fixed number of multigrid cycles:        ',I4)
1659142 FORMAT ('     perturbation pressure is calculated at every Runge-Kutta ', &
1660                  'step')
1661143 FORMAT ('     Euler/upstream scheme is used for the SGS turbulent ', &
1662                  'kinetic energy')
1663144 FORMAT ('     masking method is used')
1664150 FORMAT (' --> Volume flow at the right and north boundary will be ', &
1665                  'conserved'/ &
1666            '     using the ',A,' mode')
1667151 FORMAT ('     with u_bulk = ',F7.3,' m/s and v_bulk = ',F7.3,' m/s')
1668152 FORMAT (' --> External pressure gradient directly prescribed by the user:',&
1669           /'     ',2(1X,E12.5),'Pa/m in x/y direction', &
1670           /'     starting from dp_level_b =', F8.3, 'm', A /)
1671153 FORMAT (' --> Large-scale vertical motion is used in the ', &
1672                  'prognostic equation for')
1673154 FORMAT ('     the potential temperature')
1674200 FORMAT (//' Run time and time step information:'/ &
1675             ' ----------------------------------'/)
1676201 FORMAT ( ' Timestep:             variable     maximum value: ',F6.3,' s', &
1677             '    CFL-factor: ',F4.2)
1678202 FORMAT ( ' Timestep:          dt = ',F6.3,' s'/)
1679203 FORMAT ( ' Start time:          ',F9.3,' s'/ &
1680             ' End time:            ',F9.3,' s')
1681204 FORMAT ( A,F9.3,' s')
1682205 FORMAT ( A,F9.3,' s',5X,'restart every',17X,F9.3,' s')
1683206 FORMAT (/' Time reached:        ',F9.3,' s'/ &
1684             ' CPU-time used:       ',F9.3,' s     per timestep:               ', &
1685               '  ',F9.3,' s'/                                                    &
1686             '                                      per second of simulated tim', &
1687               'e: ',F9.3,' s')
1688207 FORMAT ( ' Coupling start time: ',F9.3,' s')
1689250 FORMAT (//' Computational grid and domain size:'/ &
1690              ' ----------------------------------'// &
1691              ' Grid length:      dx =    ',F7.3,' m    dy =    ',F7.3, &
1692              ' m    dz =    ',F7.3,' m'/ &
1693              ' Domain size:       x = ',F10.3,' m     y = ',F10.3, &
1694              ' m  z(u) = ',F10.3,' m'/)
1695252 FORMAT (' dz constant up to ',F10.3,' m (k=',I4,'), then stretched by', &
1696              ' factor: ',F5.3/ &
1697            ' maximum dz not to be exceeded is dz_max = ',F10.3,' m'/)
1698254 FORMAT (' Number of gridpoints (x,y,z):  (0:',I4,', 0:',I4,', 0:',I4,')'/ &
1699            ' Subdomain size (x,y,z):        (  ',I4,',   ',I4,',   ',I4,')'/)
1700260 FORMAT (/' The model has a slope in x-direction. Inclination angle: ',F6.2,&
1701             ' degrees')
1702270 FORMAT (//' Topography informations:'/ &
1703              ' -----------------------'// &
1704              1X,'Topography: ',A)
1705271 FORMAT (  ' Building size (x/y/z) in m: ',F5.1,' / ',F5.1,' / ',F5.1/ &
1706              ' Horizontal index bounds (l/r/s/n): ',I4,' / ',I4,' / ',I4, &
1707                ' / ',I4)
1708272 FORMAT (  ' Single quasi-2D street canyon of infinite length in ',A, &
1709              ' direction' / &
1710              ' Canyon height: ', F6.2, 'm, ch = ', I4, '.'      / &
1711              ' Canyon position (',A,'-walls): cxl = ', I4,', cxr = ', I4, '.')
1712278 FORMAT (' Topography grid definition convention:'/ &
1713            ' cell edge (staggered grid points'/  &
1714            ' (u in x-direction, v in y-direction))' /)
1715279 FORMAT (' Topography grid definition convention:'/ &
1716            ' cell center (scalar grid points)' /)
1717280 FORMAT (//' Vegetation canopy (drag) model:'/ &
1718              ' ------------------------------'// &
1719              ' Canopy mode: ', A / &
1720              ' Canopy top: ',I4 / &
1721              ' Leaf drag coefficient: ',F6.2 /)
1722281 FORMAT (/ ' Scalar_exchange_coefficient: ',F6.2 / &
1723              ' Scalar concentration at leaf surfaces in kg/m**3: ',F6.2 /)
1724282 FORMAT (' Predefined constant heatflux at the top of the vegetation: ',F6.2,' K m/s')
1725283 FORMAT (/ ' Characteristic levels of the leaf area density:'// &
1726              ' Height:              ',A,'  m'/ &
1727              ' Leaf area density:   ',A,'  m**2/m**3'/ &
1728              ' Gradient:            ',A,'  m**2/m**4'/ &
1729              ' Gridpoint:           ',A)
1730               
1731300 FORMAT (//' Boundary conditions:'/ &
1732             ' -------------------'// &
1733             '                     p                    uv             ', &
1734             '                   pt'// &
1735             ' B. bound.: ',A/ &
1736             ' T. bound.: ',A)
1737301 FORMAT (/'                     ',A// &
1738             ' B. bound.: ',A/ &
1739             ' T. bound.: ',A)
1740303 FORMAT (/' Bottom surface fluxes are used in diffusion terms at k=1')
1741304 FORMAT (/' Top surface fluxes are used in diffusion terms at k=nzt')
1742305 FORMAT (//'    Prandtl-Layer between bottom surface and first ', &
1743               'computational u,v-level:'// &
1744             '       zp = ',F6.2,' m   z0 = ',F6.4,' m   z0h = ',F7.5,&
1745             ' m   kappa = ',F4.2/ &
1746             '       Rif value range:   ',F6.2,' <= rif <=',F6.2)
1747306 FORMAT ('       Predefined constant heatflux:   ',F9.6,' K m/s')
1748307 FORMAT ('       Heatflux has a random normal distribution')
1749308 FORMAT ('       Predefined surface temperature')
1750309 FORMAT ('       Predefined constant salinityflux:   ',F9.6,' psu m/s')
1751310 FORMAT (//'    1D-Model:'// &
1752             '       Rif value range:   ',F6.2,' <= rif <=',F6.2)
1753311 FORMAT ('       Predefined constant humidity flux: ',E10.3,' m/s')
1754312 FORMAT ('       Predefined surface humidity')
1755313 FORMAT ('       Predefined constant scalar flux: ',E10.3,' kg/(m**2 s)')
1756314 FORMAT ('       Predefined scalar value at the surface')
1757315 FORMAT ('       Humidity / scalar flux at top surface is 0.0')
1758316 FORMAT ('       Sensible heatflux and momentum flux from coupled ', &
1759                    'atmosphere model')
1760317 FORMAT (//' Lateral boundaries:'/ &
1761            '       left/right:  ',A/    &
1762            '       north/south: ',A)
1763318 FORMAT (/'       pt damping layer width = ',F7.2,' m, pt ', &
1764                    'damping factor = ',F6.4)
1765319 FORMAT ('       turbulence recycling at inflow switched on'/ &
1766            '       width of recycling domain: ',F7.1,' m   grid index: ',I4/ &
1767            '       inflow damping height: ',F6.1,' m   width: ',F6.1,' m')
1768320 FORMAT ('       Predefined constant momentumflux:  u: ',F9.6,' m**2/s**2'/ &
1769            '                                          v: ',F9.6,' m**2/s**2')
1770325 FORMAT (//' List output:'/ &
1771             ' -----------'//  &
1772            '    1D-Profiles:'/    &
1773            '       Output every             ',F8.2,' s')
1774326 FORMAT ('       Time averaged over       ',F8.2,' s'/ &
1775            '       Averaging input every    ',F8.2,' s')
1776330 FORMAT (//' Data output:'/ &
1777             ' -----------'/)
1778331 FORMAT (/'    1D-Profiles:')
1779332 FORMAT (/'       ',A)
1780333 FORMAT ('       Output every             ',F8.2,' s',/ &
1781            '       Time averaged over       ',F8.2,' s'/ &
1782            '       Averaging input every    ',F8.2,' s')
1783334 FORMAT (/'    2D-Arrays',A,':')
1784335 FORMAT (/'       ',A2,'-cross-section  Arrays: ',A/ &
1785            '       Output every             ',F8.2,' s  ',A/ &
1786            '       Cross sections at ',A1,' = ',A/ &
1787            '       scalar-coordinates:   ',A,' m'/)
1788336 FORMAT (/'    3D-Arrays',A,':')
1789337 FORMAT (/'       Arrays: ',A/ &
1790            '       Output every             ',F8.2,' s  ',A/ &
1791            '       Upper output limit at    ',F8.2,' m  (GP ',I4,')'/)
1792338 FORMAT ('       Compressed data output'/ &
1793            '       Decimal precision: ',A/)
1794339 FORMAT ('       No output during initial ',F8.2,' s')
1795340 FORMAT (/'    Time series:')
1796341 FORMAT ('       Output every             ',F8.2,' s'/)
1797342 FORMAT (/'       ',A2,'-cross-section  Arrays: ',A/ &
1798            '       Output every             ',F8.2,' s  ',A/ &
1799            '       Time averaged over       ',F8.2,' s'/ &
1800            '       Averaging input every    ',F8.2,' s'/ &
1801            '       Cross sections at ',A1,' = ',A/ &
1802            '       scalar-coordinates:   ',A,' m'/)
1803343 FORMAT (/'       Arrays: ',A/ &
1804            '       Output every             ',F8.2,' s  ',A/ &
1805            '       Time averaged over       ',F8.2,' s'/ &
1806            '       Averaging input every    ',F8.2,' s'/ &
1807            '       Upper output limit at    ',F8.2,' m  (GP ',I4,')'/)
1808344 FORMAT ('       Output format: ',A/)
1809345 FORMAT (/'    Scaling lengths for output locations of all subsequent mask IDs:',/ &
1810            '       mask_scale_x (in x-direction): ',F9.3, ' m',/ &
1811            '       mask_scale_y (in y-direction): ',F9.3, ' m',/ &
1812            '       mask_scale_z (in z-direction): ',F9.3, ' m' )
1813346 FORMAT (/'    Masked data output',A,' for mask ID ',I2, ':')
1814347 FORMAT ('       Variables: ',A/ &
1815            '       Output every             ',F8.2,' s')
1816348 FORMAT ('       Variables: ',A/ &
1817            '       Output every             ',F8.2,' s'/ &
1818            '       Time averaged over       ',F8.2,' s'/ &
1819            '       Averaging input every    ',F8.2,' s')
1820349 FORMAT (/'       Output locations in ',A,'-direction in multiples of ', &
1821            'mask_scale_',A,' predefined by array mask_',I2.2,'_',A,':'/ &
1822            13('       ',8(F8.2,',')/) )
1823350 FORMAT (/'       Output locations in ',A,'-direction: ', &
1824            'all gridpoints along ',A,'-direction (default).' )
1825351 FORMAT (/'       Output locations in ',A,'-direction in multiples of ', &
1826            'mask_scale_',A,' constructed from array mask_',I2.2,'_',A,'_loop:'/ &
1827            '          loop begin:',F8.2,', end:',F8.2,', stride:',F8.2 )
1828#if defined( __dvrp_graphics )
1829360 FORMAT ('    Plot-Sequence with dvrp-software:'/ &
1830            '       Output every      ',F7.1,' s'/ &
1831            '       Output mode:      ',A/ &
1832            '       Host / User:      ',A,' / ',A/ &
1833            '       Directory:        ',A// &
1834            '       The sequence contains:')
1835361 FORMAT (/'       Isosurface of "',A,'"    Threshold value: ', E12.3/ &
1836            '          Isosurface color: (',F4.2,',',F4.2,',',F4.2,') (R,G,B)')
1837362 FORMAT (/'       Slicer plane ',A/ &
1838            '       Slicer limits: [',F6.2,',',F6.2,']')
1839363 FORMAT (/'       Particles'/ &
1840            '          particle size:  ',F7.2,' m')
1841364 FORMAT ('          particle ',A,' controlled by "',A,'" with interval [', &
1842                       F6.2,',',F6.2,']')
1843365 FORMAT (/'       Groundplate color: (',F4.2,',',F4.2,',',F4.2,') (R,G,B)'/ &
1844            '       Superelevation along (x,y,z): (',F4.1,',',F4.1,',',F4.1, &
1845                     ')'/ &
1846            '       Clipping limits: from x = ',F9.1,' m to x = ',F9.1,' m'/ &
1847            '                        from y = ',F9.1,' m to y = ',F9.1,' m')
1848366 FORMAT (/'       Topography color: (',F4.2,',',F4.2,',',F4.2,') (R,G,B)')
1849367 FORMAT ('       Polygon reduction for topography: cluster_size = ', I1)
1850#endif
1851#if defined( __spectra )
1852370 FORMAT ('    Spectra:')
1853371 FORMAT ('       Output every ',F7.1,' s'/)
1854372 FORMAT ('       Arrays:     ', 10(A5,',')/                         &
1855            '       Directions: ', 10(A5,',')/                         &
1856            '       height levels  k = ', 20(I3,',')/                  &
1857            '                          ', 20(I3,',')/                  &
1858            '                          ', 20(I3,',')/                  &
1859            '                          ', 20(I3,',')/                  &
1860            '                          ', 19(I3,','),I3,'.'/           &
1861            '       height levels selected for standard plot:'/        &
1862            '                      k = ', 20(I3,',')/                  &
1863            '                          ', 20(I3,',')/                  &
1864            '                          ', 20(I3,',')/                  &
1865            '                          ', 20(I3,',')/                  &
1866            '                          ', 19(I3,','),I3,'.'/           &
1867            '       Time averaged over ', F7.1, ' s,' /                &
1868            '       Profiles for the time averaging are taken every ', &
1869                    F6.1,' s')
1870#endif
1871400 FORMAT (//' Physical quantities:'/ &
1872              ' -------------------'/)
1873410 FORMAT ('    Angular velocity    :   omega = ',E9.3,' rad/s'/  &
1874            '    Geograph. latitude  :   phi   = ',F4.1,' degr'/   &
1875            '    Coriolis parameter  :   f     = ',F9.6,' 1/s'/    &
1876            '                            f*    = ',F9.6,' 1/s')
1877411 FORMAT (/'    Gravity             :   g     = ',F4.1,' m/s**2')
1878412 FORMAT (/'    Reference density in buoyancy terms: ',F8.3,' kg/m**3')
1879413 FORMAT (/'    Reference temperature in buoyancy terms: ',F8.4,' K')
1880415 FORMAT (/'    Cloud physics parameters:'/ &
1881             '    ------------------------'/)
1882416 FORMAT ('        Surface pressure   :   p_0   = ',F7.2,' hPa'/      &
1883            '        Gas constant       :   R     = ',F5.1,' J/(kg K)'/ &
1884            '        Density of air     :   rho_0 = ',F5.3,' kg/m**3'/  &
1885            '        Specific heat cap. :   c_p   = ',F6.1,' J/(kg K)'/ &
1886            '        Vapourization heat :   L_v   = ',E8.2,' J/kg')
1887420 FORMAT (/'    Characteristic levels of the initial temperature profile:'// &
1888            '       Height:        ',A,'  m'/ &
1889            '       Temperature:   ',A,'  K'/ &
1890            '       Gradient:      ',A,'  K/100m'/ &
1891            '       Gridpoint:     ',A)
1892421 FORMAT (/'    Characteristic levels of the initial humidity profile:'// &
1893            '       Height:      ',A,'  m'/ &
1894            '       Humidity:    ',A,'  kg/kg'/ &
1895            '       Gradient:    ',A,'  (kg/kg)/100m'/ &
1896            '       Gridpoint:   ',A)
1897422 FORMAT (/'    Characteristic levels of the initial scalar profile:'// &
1898            '       Height:                  ',A,'  m'/ &
1899            '       Scalar concentration:    ',A,'  kg/m**3'/ &
1900            '       Gradient:                ',A,'  (kg/m**3)/100m'/ &
1901            '       Gridpoint:               ',A)
1902423 FORMAT (/'    Characteristic levels of the geo. wind component ug:'// &
1903            '       Height:      ',A,'  m'/ &
1904            '       ug:          ',A,'  m/s'/ &
1905            '       Gradient:    ',A,'  1/100s'/ &
1906            '       Gridpoint:   ',A)
1907424 FORMAT (/'    Characteristic levels of the geo. wind component vg:'// &
1908            '       Height:      ',A,'  m'/ &
1909            '       vg:          ',A,'  m/s'/ &
1910            '       Gradient:    ',A,'  1/100s'/ &
1911            '       Gridpoint:   ',A)
1912425 FORMAT (/'    Characteristic levels of the initial salinity profile:'// &
1913            '       Height:     ',A,'  m'/ &
1914            '       Salinity:   ',A,'  psu'/ &
1915            '       Gradient:   ',A,'  psu/100m'/ &
1916            '       Gridpoint:  ',A)
1917426 FORMAT (/'    Characteristic levels of the subsidence/ascent profile:'// &
1918            '       Height:      ',A,'  m'/ &
1919            '       w_subs:      ',A,'  m/s'/ &
1920            '       Gradient:    ',A,'  (m/s)/100m'/ &
1921            '       Gridpoint:   ',A)
1922427 FORMAT (/'    Initial wind profiles (u,v) are interpolated from given'// &
1923                  ' profiles')
1924430 FORMAT (//' Cloud physics quantities / methods:'/ &
1925              ' ----------------------------------'/)
1926431 FORMAT ('    Humidity is treated as purely passive scalar (no condensati', &
1927                 'on)')
1928432 FORMAT ('    Bulk scheme with liquid water potential temperature and'/ &
1929            '    total water content is used.'/ &
1930            '    Condensation is parameterized via 0% - or 100% scheme.')
1931433 FORMAT ('    Cloud droplets treated explicitly using the Lagrangian part', &
1932                 'icle model')
1933434 FORMAT ('    Curvature and solution effecs are considered for growth of', &
1934                 ' droplets < 1.0E-6 m')
1935435 FORMAT ('    Droplet collision is handled by ',A,'-kernel')
1936436 FORMAT ('       Fast kernel with fixed radius- and dissipation classes ', &
1937                    'are used'/ &
1938            '          number of radius classes:       ',I3,'    interval ', &
1939                       '[1.0E-6,2.0E-4] m'/ &
1940            '          number of dissipation classes:   ',I2,'    interval ', &
1941                       '[0,1000] cm**2/s**3')
1942437 FORMAT ('    Droplet collision is switched off')
1943450 FORMAT (//' LES / Turbulence quantities:'/ &
1944              ' ---------------------------'/)
1945451 FORMAT ('    Diffusion coefficients are constant:'/ &
1946            '    Km = ',F6.2,' m**2/s   Kh = ',F6.2,' m**2/s   Pr = ',F5.2)
1947453 FORMAT ('    Mixing length is limited to ',F4.2,' * z')
1948454 FORMAT ('    TKE is not allowed to fall below ',E9.2,' (m/s)**2')
1949455 FORMAT ('    initial TKE is prescribed as ',E9.2,' (m/s)**2')
1950470 FORMAT (//' Actions during the simulation:'/ &
1951              ' -----------------------------'/)
1952471 FORMAT ('    Disturbance impulse (u,v) every :   ',F6.2,' s'/            &
1953            '    Disturbance amplitude           :     ',F4.2, ' m/s'/       &
1954            '    Lower disturbance level         : ',F8.2,' m (GP ',I4,')'/  &
1955            '    Upper disturbance level         : ',F8.2,' m (GP ',I4,')')
1956472 FORMAT ('    Disturbances continued during the run from i/j =',I4, &
1957                 ' to i/j =',I4)
1958473 FORMAT ('    Disturbances cease as soon as the disturbance energy exceeds',&
1959                 1X,F5.3, ' m**2/s**2')
1960474 FORMAT ('    Random number generator used    : ',A/)
1961475 FORMAT ('    The surface temperature is increased (or decreased, ', &
1962                 'respectively, if'/ &
1963            '    the value is negative) by ',F5.2,' K at the beginning of the',&
1964                 ' 3D-simulation'/)
1965476 FORMAT ('    The surface humidity is increased (or decreased, ',&
1966                 'respectively, if the'/ &
1967            '    value is negative) by ',E8.1,' kg/kg at the beginning of', &
1968                 ' the 3D-simulation'/)
1969477 FORMAT ('    The scalar value is increased at the surface (or decreased, ',&
1970                 'respectively, if the'/ &
1971            '    value is negative) by ',E8.1,' kg/m**3 at the beginning of', &
1972                 ' the 3D-simulation'/)
1973480 FORMAT ('    Particles:'/ &
1974            '    ---------'// &
1975            '       Particle advection is active (switched on at t = ', F7.1, &
1976                    ' s)'/ &
1977            '       Start of new particle generations every  ',F6.1,' s'/ &
1978            '       Boundary conditions: left/right: ', A, ' north/south: ', A/&
1979            '                            bottom:     ', A, ' top:         ', A/&
1980            '       Maximum particle age:                 ',F9.1,' s'/ &
1981            '       Advection stopped at t = ',F9.1,' s'/ &
1982            '       Particles are sorted every ',F9.1,' s'/)
1983481 FORMAT ('       Particles have random start positions'/)
1984482 FORMAT ('          Particles are advected only horizontally'/)
1985483 FORMAT ('       Particles have tails with a maximum of ',I3,' points')
1986484 FORMAT ('            Number of tails of the total domain: ',I10/ &
1987            '            Minimum distance between tailpoints: ',F8.2,' m'/ &
1988            '            Maximum age of the end of the tail:  ',F8.2,' s')
1989485 FORMAT ('       Particle data are written on file every ', F9.1, ' s')
1990486 FORMAT ('       Particle statistics are written on file'/)
1991487 FORMAT ('       Number of particle groups: ',I2/)
1992488 FORMAT ('       SGS velocity components are used for particle advection'/ &
1993            '          minimum timestep for advection: ', F7.5/)
1994489 FORMAT ('       Number of particles simultaneously released at each ', &
1995                    'point: ', I5/)
1996490 FORMAT ('       Particle group ',I2,':'/ &
1997            '          Particle radius: ',E10.3, 'm')
1998491 FORMAT ('          Particle inertia is activated'/ &
1999            '             density_ratio (rho_fluid/rho_particle) = ',F5.3/)
2000492 FORMAT ('          Particles are advected only passively (no inertia)'/)
2001493 FORMAT ('          Boundaries of particle source: x:',F8.1,' - ',F8.1,' m'/&
2002            '                                         y:',F8.1,' - ',F8.1,' m'/&
2003            '                                         z:',F8.1,' - ',F8.1,' m'/&
2004            '          Particle distances:  dx = ',F8.1,' m  dy = ',F8.1, &
2005                       ' m  dz = ',F8.1,' m'/)
2006494 FORMAT ('       Output of particle time series in NetCDF format every ', &
2007                    F8.2,' s'/)
2008495 FORMAT ('       Number of particles in total domain: ',I10/)
2009500 FORMAT (//' 1D-Model parameters:'/                           &
2010              ' -------------------'//                           &
2011            '    Simulation time:                   ',F8.1,' s'/ &
2012            '    Run-controll output every:         ',F8.1,' s'/ &
2013            '    Vertical profile output every:     ',F8.1,' s'/ &
2014            '    Mixing length calculation:         ',A/         &
2015            '    Dissipation calculation:           ',A/)
2016502 FORMAT ('    Damping layer starts from ',F7.1,' m (GP ',I4,')'/)
2017503 FORMAT (' --> Momentum advection via Wicker-Skamarock-Scheme 5th order')
2018504 FORMAT (' --> Scalar advection via Wicker-Skamarock-Scheme 5th order')
2019
2020
2021 END SUBROUTINE header
Note: See TracBrowser for help on using the repository browser.