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

Last change on this file since 1078 was 1037, checked in by raasch, 12 years ago

last commit documented

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