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

Last change on this file since 404 was 392, checked in by raasch, 15 years ago

New:
---

Adapted for machine lck
(mrun, mbuild, subjob)

bc_lr/bc_ns in most subroutines replaced by LOGICAL variables bc_lr_cyc,
bc_ns_cyc for speed optimization
(check_parameters, diffusion_u, diffusion_v, diffusion_w, modules)

Additional timestep criterion in case of simulations with plant canopy (timestep)

Check for illegal entries in section_xy|xz|yz that exceed nz+1|ny+1|nx+1
(check_parameters)

Clipping of dvrp output implemented. Default colourtable for particles
implemented, particle attributes (color, dvrp_size) can be set with new
parameters particle_color, particle_dvrpsize, color_interval,
dvrpsize_interval (init_dvrp, data_output_dvrp, modules, user_data_output_dvrp).
Slicer attributes (dvrp) are set with new routine set_slicer_attributes_dvrp
and are controlled with existing parameters slicer_range_limits.
(set_slicer_attributes_dvrp)

Ocean atmosphere coupling allows to use independent precursor runs in order
to account for different spin-up times. The time when coupling has to be
started is given by new inipar parameter coupling_start_time. The precursor
ocean run has to be started using new mrun option "-y" in order to add
appendix "_O" to all output files.
(check_for_restart, check_parameters, data_output_2d, data_output_3d,
data_output_profiles, data_output_ptseries, data_output_spectra,
data_output_tseries, header, init_coupling, modules, mrun,
parin, read_var_list, surface_coupler, time_integration, write_var_list)

Polygon reduction for topography and ground plate isosurface. Reduction level
for buildings can be chosen with parameter cluster_size. (init_dvrp)

External pressure gradient (check_parameters, header, init_3d_model, modules,
parin, prognostic_equations, read_var_list, write_var_list)

New topography case 'single_street_canyon' (header, init_grid, modules, parin,
read_var_list, user_check_parameters, user_header, user_init_grid, write_var_list)

Option to predefine a target bulk velocity for conserve_volume_flow
(check_parameters, header, init_3d_model, modules, parin, read_var_list,
write_var_list)

Option for user defined 2D data output in xy cross sections at z=nzb+1
(data_output_2d, user_data_output_2d)

xy cross section output of surface heatfluxes (latent, sensible)
(average_3d_data, check_parameters, data_output_2d, modules, read_3d_binary,
sum_up_3d_data, write_3d_binary)

average_3d_data, check_for_restart, check_parameters, data_output_2d, data_output_3d, data_output_dvrp, data_output_profiles, data_output_ptseries, data_output_spectra, data_output_tseries, init_coupling, init_dvrp, init_grid, init_3d_model, header, mbuild, modules, mrun, package_parin, parin, prognostic_equations, read_3d_binary, read_var_list, subjob, surface_coupler, timestep, time_integration, user_check_parameters, user_data_output_2d, user_data_output_dvrp, user_header, user_init_grid, write_3d_binary, write_var_list

New: set_particle_attributes, set_slicer_attributes_dvrp

Changed:


lcmuk changed to lc to avoid problems with Intel compiler on sgi-ice
(poisfft)

For extended NetCDF files, the updated title attribute includes an update of
time_average_text where appropriate. (netcdf)

In case of restart runs without extension, initial profiles are not written
to NetCDF-file anymore. (data_output_profiles, modules, read_var_list, write_var_list)

Small change in formatting of the message handling routine concering the output in the
job protocoll. (message)

initializing_actions='read_data_for_recycling' renamed to 'cyclic_fill', now
independent of turbulent_inflow (check_parameters, header, init_3d_model)

2 NetCDF error numbers changed. (data_output_3d)

A Link to the website appendix_a.html is printed for further information
about the possible errors. (message)

Temperature gradient criterion for estimating the boundary layer height
replaced by the gradient criterion of Sullivan et al. (1998). (flow_statistics)

NetCDF unit attribute in timeseries output in case of statistic regions added
(netcdf)

Output of NetCDF messages with aid of message handling routine.
(check_open, close_file, data_output_2d, data_output_3d,
data_output_profiles, data_output_ptseries, data_output_spectra,
data_output_tseries, netcdf, output_particles_netcdf)

Output of messages replaced by message handling routine.
(advec_particles, advec_s_bc, buoyancy, calc_spectra, check_for_restart,
check_open, coriolis, cpu_log, data_output_2d, data_output_3d, data_output_dvrp,
data_output_profiles, data_output_spectra, fft_xy, flow_statistics, header,
init_1d_model, init_3d_model, init_dvrp, init_grid, init_particles, init_pegrid,
netcdf, parin, plant_canopy_model, poisfft_hybrid, poismg, read_3d_binary,
read_var_list, surface_coupler, temperton_fft, timestep, user_actions,
user_data_output_dvrp, user_dvrp_coltab, user_init_grid, user_init_plant_canopy,
user_parin, user_read_restart_data, user_spectra )

Maximum number of tails is calculated from maximum number of particles and
skip_particles_for_tail (init_particles)

Value of vertical_particle_advection may differ for each particle group
(advec_particles, header, modules)

First constant in array den also defined as type double. (eqn_state_seawater)

Parameter dvrp_psize moved from particles_par to dvrp_graphics_par. (package_parin)

topography_grid_convention moved from userpar to inipar (check_parameters,
header, parin, read_var_list, user_check_parameters, user_header,
user_init_grid, user_parin, write_var_list)

Default value of grid_matching changed to strict.

Adjustments for runs on lcxt4 (necessary due to an software update on CRAY) and
for coupled runs on ibmy (mrun, subjob)

advec_particles, advec_s_bc, buoyancy, calc_spectra, check_for_restart, check_open, check_parameters, close_file, coriolis, cpu_log, data_output_2d, data_output_3d, data_output_dvrp, data_output_profiles, data_output_ptseries, data_output_spectra, data_output_tseries, eqn_state_seawater, fft_xy, flow_statistics, header, init_1d_model, init_3d_model, init_dvrp, init_grid, init_particles, init_pegrid, message, mrun, netcdf, output_particles_netcdf, package_parin, parin, plant_canopy_model, poisfft, poisfft_hybrid, poismg, read_3d_binary, read_var_list, sort_particles, subjob, user_check_parameters, user_header, user_init_grid, user_parin, surface_coupler, temperton_fft, timestep, user_actions, user_data_output_dvrp, user_dvrp_coltab, user_init_grid, user_init_plant_canopy, user_parin, user_read_restart_data, user_spectra, write_var_list

Errors:


Bugfix: Initial hydrostatic pressure profile in case of ocean runs is now
calculated in 5 iteration steps. (init_ocean)

Bugfix: wrong sign in buoyancy production of ocean part in case of not using
the reference density (only in 3D routine production_e) (production_e)

Bugfix: output of averaged 2d/3d quantities requires that an avaraging
interval has been set, respective error message is included (check_parameters)

Bugfix: Output on unit 14 only if requested by write_binary.
(user_last_actions)

Bugfix to avoid zero division by km_neutral (production_e)

Bugfix for extended NetCDF files: In order to avoid 'data mode' errors if
updated attributes are larger than their original size, NF90_PUT_ATT is called
in 'define mode' enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a
possible performance loss; an alternative strategy would be to ensure equal
attribute size in a job chain. (netcdf)

Bugfix: correction of initial volume flow for non-flat topography (init_3d_model)
Bugfix: zero initialization of arrays within buildings for 'cyclic_fill' (init_3d_model)

Bugfix: to_be_resorted => s_av for time-averaged scalars (data_output_2d, data_output_3d)

Bugfix: error in formatting the output (message)

Bugfix: avoid that ngp_2dh_s_inner becomes zero (init_3_model)

Typographical error: unit of wpt in dots_unit (modules)

Bugfix: error in check, if particles moved further than one subdomain length.
This check must not be applied for newly released particles. (advec_particles)

Bugfix: several tail counters are initialized, particle_tail_coordinates is
only written to file if its third index is > 0, arrays for tails are allocated
with a minimum size of 10 tails if there is no tail initially (init_particles,
advec_particles)

Bugfix: pressure included for profile output (check_parameters)

Bugfix: Type of count and count_rate changed to default INTEGER on NEC machines
(cpu_log)

Bugfix: output if particle time series only if particle advection is switched
on. (time_integration)

Bugfix: qsws was calculated in case of constant heatflux = .FALSE. (prandtl_fluxes)

Bugfix: averaging along z is not allowed for 2d quantities (e.g. u* and z0) (data_output_2d)

Typographical errors (netcdf)

If the inversion height calculated by the prerun is zero, inflow_damping_height
must be explicitly specified (init_3d_model)

Small bugfix concerning 3d 64bit netcdf output format (header)

Bugfix: dt_fixed removed from the restart file, because otherwise, no change
from a fixed to a variable timestep would be possible in restart runs.
(read_var_list, write_var_list)

Bugfix: initial setting of time_coupling in coupled restart runs (time_integration)

advec_particles, check_parameters, cpu_log, data_output_2d, data_output_3d, header, init_3d_model, init_particles, init_ocean, modules, netcdf, prandtl_fluxes, production_e, read_var_list, time_integration, user_last_actions, write_var_list

  • Property svn:keywords set to Id
File size: 69.1 KB
RevLine 
[1]1 SUBROUTINE header
2
3!------------------------------------------------------------------------------!
[254]4! Current revisions:
[1]5! -----------------
[392]6!
7!
8! Former revisions:
9! -----------------
10! $Id: header.f90 392 2009-09-24 10:39:14Z raasch $
11!
12! 346 2009-07-06 10:13:41Z raasch
[328]13! initializing_actions='read_data_for_recycling' renamed to 'cyclic_fill'
[291]14! Coupling with independent precursor runs.
[254]15! Output of messages replaced by message handling routine.
[336]16! Output of several additional dvr parameters
[240]17! +canyon_height, canyon_width_x, canyon_width_y, canyon_wall_left,
[241]18! canyon_wall_south, conserve_volume_flow_mode, dp_external, dp_level_b,
19! dp_smooth, dpdxy, u_bulk, v_bulk
[256]20! topography_grid_convention moved from user_header
[292]21! small bugfix concerning 3d 64bit netcdf output format
[1]22!
[226]23! 206 2008-10-13 14:59:11Z raasch
24! Bugfix: error in zu index in case of section_xy = -1
25!
[200]26! 198 2008-09-17 08:55:28Z raasch
27! Format adjustments allowing output of larger revision numbers
28!
[198]29! 197 2008-09-16 15:29:03Z raasch
30! allow 100 spectra levels instead of 10 for consistency with
31! define_netcdf_header,
32! bugfix in the output of the characteristic levels of potential temperature,
33! geostrophic wind, scalar concentration, humidity and leaf area density,
34! output of turbulence recycling informations
35!
[139]36! 138 2007-11-28 10:03:58Z letzel
37! Allow new case bc_uv_t = 'dirichlet_0' for channel flow.
38! Allow two instead of one digit to specify isosurface and slicer variables.
39! Output of sorting frequency of particles
40!
[110]41! 108 2007-08-24 15:10:38Z letzel
42! Output of informations for coupled model runs (boundary conditions etc.)
43! + output of momentumfluxes at the top boundary
44! Rayleigh damping for ocean, e_init
45!
[98]46! 97 2007-06-21 08:23:15Z raasch
47! Adjustments for the ocean version.
48! use_pt_reference renamed use_reference
49!
[90]50! 87 2007-05-22 15:46:47Z raasch
51! Bugfix: output of use_upstream_for_tke
52!
[83]53! 82 2007-04-16 15:40:52Z raasch
54! Preprocessor strings for different linux clusters changed to "lc",
55! routine local_flush is used for buffer flushing
56!
[77]57! 76 2007-03-29 00:58:32Z raasch
58! Output of netcdf_64bit_3d, particles-package is now part of the default code,
59! output of the loop optimization method, moisture renamed humidity,
60! output of subversion revision number
61!
[39]62! 19 2007-02-23 04:53:48Z raasch
63! Output of scalar flux applied at top boundary
64!
[3]65! RCS Log replace by Id keyword, revision history cleaned up
66!
[1]67! Revision 1.63  2006/08/22 13:53:13  raasch
68! Output of dz_max
69!
70! Revision 1.1  1997/08/11 06:17:20  raasch
71! Initial revision
72!
73!
74! Description:
75! ------------
76! Writing a header with all important informations about the actual run.
77! This subroutine is called three times, two times at the beginning
78! (writing information on files RUN_CONTROL and HEADER) and one time at the
79! end of the run, then writing additional information about CPU-usage on file
80! header.
81!------------------------------------------------------------------------------!
82
83    USE arrays_3d
84    USE control_parameters
85    USE cloud_parameters
86    USE cpulog
87    USE dvrp_variables
88    USE grid_variables
89    USE indices
90    USE model_1d
91    USE particle_attributes
92    USE pegrid
93    USE spectrum
94
95    IMPLICIT NONE
96
97    CHARACTER (LEN=1)  ::  prec
98    CHARACTER (LEN=2)  ::  do2d_mode
99    CHARACTER (LEN=5)  ::  section_chr
100    CHARACTER (LEN=9)  ::  time_to_string
101    CHARACTER (LEN=10) ::  coor_chr, host_chr
102    CHARACTER (LEN=16) ::  begin_chr
[200]103    CHARACTER (LEN=23) ::  ver_rev
[1]104    CHARACTER (LEN=40) ::  output_format
[167]105    CHARACTER (LEN=70) ::  char1, char2, dopr_chr, &
[1]106                           do2d_xy, do2d_xz, do2d_yz, do3d_chr, &
[167]107                           run_classification
108    CHARACTER (LEN=86) ::  coordinates, gradients, learde, slices,  &
109                           temperatures, ugcomponent, vgcomponent
[1]110    CHARACTER (LEN=85) ::  roben, runten
111
[240]112    INTEGER ::  av, bh, blx, bly, bxl, bxr, byn, bys, ch, cwx, cwy, cxl, cxr, &
[336]113                cyn, cys, i, ihost, io, j, l, ll, m, mpi_type
[1]114    REAL    ::  cpuseconds_per_simulated_second
115
116!
117!-- Open the output file. At the end of the simulation, output is directed
118!-- to unit 19.
119    IF ( ( runnr == 0 .OR. force_print_header )  .AND. &
120         .NOT. simulated_time_at_begin /= simulated_time )  THEN
121       io = 15   !  header output on file RUN_CONTROL
122    ELSE
123       io = 19   !  header output on file HEADER
124    ENDIF
125    CALL check_open( io )
126
127!
128!-- At the end of the run, output file (HEADER) will be rewritten with
129!-- new informations
130    IF ( io == 19 .AND. simulated_time_at_begin /= simulated_time ) REWIND( 19 )
131
132!
133!-- Determine kind of model run
134    IF ( TRIM( initializing_actions ) == 'read_restart_data' )  THEN
135       run_classification = '3D - restart run'
[328]136    ELSEIF ( TRIM( initializing_actions ) == 'cyclic_fill' )  THEN
137       run_classification = '3D - run with cyclic fill of 3D - prerun data'
[147]138    ELSEIF ( INDEX( initializing_actions, 'set_constant_profiles' ) /= 0 )  THEN
139       run_classification = '3D - run without 1D - prerun'
[197]140    ELSEIF ( INDEX( initializing_actions, 'set_1d-model_profiles' ) /= 0 )  THEN
[147]141       run_classification = '3D - run with 1D - prerun'
[197]142    ELSEIF ( INDEX( initializing_actions, 'by_user' ) /=0 )  THEN
143       run_classification = '3D - run initialized by user'
[1]144    ELSE
[254]145       message_string = ' unknown action(s): ' // TRIM( initializing_actions )
146       CALL message( 'header', 'PA0191', 0, 0, 0, 6, 0 )
[1]147    ENDIF
[97]148    IF ( ocean )  THEN
149       run_classification = 'ocean - ' // run_classification
150    ELSE
151       run_classification = 'atmosphere - ' // run_classification
152    ENDIF
[1]153
154!
155!-- Run-identification, date, time, host
156    host_chr = host(1:10)
[75]157    ver_rev = TRIM( version ) // '  ' // TRIM( revision )
[102]158    WRITE ( io, 100 )  ver_rev, TRIM( run_classification )
[291]159    IF ( TRIM( coupling_mode ) /= 'uncoupled' )  THEN
160#if defined( __mpi2 )
161       mpi_type = 2
162#else
163       mpi_type = 1
164#endif
165       WRITE ( io, 101 )  mpi_type, coupling_mode
166    ENDIF
[102]167    WRITE ( io, 102 )  run_date, run_identifier, run_time, runnr, &
168                       ADJUSTR( host_chr )
[1]169#if defined( __parallel )
170    IF ( npex == -1  .AND.  pdims(2) /= 1 )  THEN
171       char1 = 'calculated'
172    ELSEIF ( ( host(1:3) == 'ibm'  .OR.  host(1:3) == 'nec'  .OR.  &
173               host(1:2) == 'lc' )  .AND.                          &
174             npex == -1  .AND.  pdims(2) == 1 )  THEN
175       char1 = 'forced'
176    ELSE
177       char1 = 'predefined'
178    ENDIF
179    IF ( threads_per_task == 1 )  THEN
[102]180       WRITE ( io, 103 )  numprocs, pdims(1), pdims(2), TRIM( char1 )
[1]181    ELSE
[102]182       WRITE ( io, 104 )  numprocs*threads_per_task, numprocs, &
[1]183                          threads_per_task, pdims(1), pdims(2), TRIM( char1 )
184    ENDIF
185    IF ( ( host(1:3) == 'ibm'  .OR.  host(1:3) == 'nec'  .OR.    &
186           host(1:2) == 'lc'   .OR.  host(1:3) == 'dec' )  .AND. &
187         npex == -1  .AND.  pdims(2) == 1 )                      &
188    THEN
[102]189       WRITE ( io, 106 )
[1]190    ELSEIF ( pdims(2) == 1 )  THEN
[102]191       WRITE ( io, 107 )  'x'
[1]192    ELSEIF ( pdims(1) == 1 )  THEN
[102]193       WRITE ( io, 107 )  'y'
[1]194    ENDIF
[102]195    IF ( use_seperate_pe_for_dvrp_output )  WRITE ( io, 105 )
[1]196#endif
197    WRITE ( io, 99 )
198
199!
200!-- Numerical schemes
201    WRITE ( io, 110 )
202    IF ( psolver(1:7) == 'poisfft' )  THEN
203       WRITE ( io, 111 )  TRIM( fft_method )
204       IF ( psolver == 'poisfft_hybrid' )  WRITE ( io, 138 )
205    ELSEIF ( psolver == 'sor' )  THEN
206       WRITE ( io, 112 )  nsor_ini, nsor, omega_sor
207    ELSEIF ( psolver == 'multigrid' )  THEN
208       WRITE ( io, 135 )  cycle_mg, maximum_grid_level, ngsrb
209       IF ( mg_cycles == -1 )  THEN
210          WRITE ( io, 140 )  residual_limit
211       ELSE
212          WRITE ( io, 141 )  mg_cycles
213       ENDIF
214       IF ( mg_switch_to_pe0_level == 0 )  THEN
215          WRITE ( io, 136 )  nxr_mg(1)-nxl_mg(1)+1, nyn_mg(1)-nys_mg(1)+1, &
216                             nzt_mg(1)
[197]217       ELSEIF (  mg_switch_to_pe0_level /= -1 )  THEN
[1]218          WRITE ( io, 137 )  mg_switch_to_pe0_level,            &
219                             mg_loc_ind(2,0)-mg_loc_ind(1,0)+1, &
220                             mg_loc_ind(4,0)-mg_loc_ind(3,0)+1, &
221                             nzt_mg(mg_switch_to_pe0_level),    &
222                             nxr_mg(1)-nxl_mg(1)+1, nyn_mg(1)-nys_mg(1)+1, &
223                             nzt_mg(1)
224       ENDIF
225    ENDIF
226    IF ( call_psolver_at_all_substeps  .AND. timestep_scheme(1:5) == 'runge' ) &
227    THEN
228       WRITE ( io, 142 )
229    ENDIF
230
231    IF ( momentum_advec == 'pw-scheme' )  THEN
232       WRITE ( io, 113 )
233    ELSE
234       WRITE ( io, 114 )
235       IF ( cut_spline_overshoot )  WRITE ( io, 124 )
236       IF ( overshoot_limit_u /= 0.0  .OR.  overshoot_limit_v /= 0.0  .OR. &
237            overshoot_limit_w /= 0.0 )  THEN
238          WRITE ( io, 127 )  overshoot_limit_u, overshoot_limit_v, &
239                             overshoot_limit_w
240       ENDIF
241       IF ( ups_limit_u /= 0.0  .OR.  ups_limit_v /= 0.0  .OR. &
242            ups_limit_w /= 0.0 )                               &
243       THEN
244          WRITE ( io, 125 )  ups_limit_u, ups_limit_v, ups_limit_w
245       ENDIF
246       IF ( long_filter_factor /= 0.0 )  WRITE ( io, 115 )  long_filter_factor
247    ENDIF
248    IF ( scalar_advec == 'pw-scheme' )  THEN
249       WRITE ( io, 116 )
250    ELSEIF ( scalar_advec == 'ups-scheme' )  THEN
251       WRITE ( io, 117 )
252       IF ( cut_spline_overshoot )  WRITE ( io, 124 )
253       IF ( overshoot_limit_e /= 0.0  .OR.  overshoot_limit_pt /= 0.0 )  THEN
254          WRITE ( io, 128 )  overshoot_limit_e, overshoot_limit_pt
255       ENDIF
256       IF ( ups_limit_e /= 0.0  .OR.  ups_limit_pt /= 0.0 )  THEN
257          WRITE ( io, 126 )  ups_limit_e, ups_limit_pt
258       ENDIF
259    ELSE
260       WRITE ( io, 118 )
261    ENDIF
[63]262
263    WRITE ( io, 139 )  TRIM( loop_optimization )
264
[1]265    IF ( galilei_transformation )  THEN
266       IF ( use_ug_for_galilei_tr )  THEN
267          char1 = 'geostrophic wind'
268       ELSE
269          char1 = 'mean wind in model domain'
270       ENDIF
271       IF ( simulated_time_at_begin == simulated_time )  THEN
272          char2 = 'at the start of the run'
273       ELSE
274          char2 = 'at the end of the run'
275       ENDIF
276       WRITE ( io, 119 )  TRIM( char1 ), TRIM( char2 ), &
277                          advected_distance_x/1000.0, advected_distance_y/1000.0
278    ENDIF
279    IF ( timestep_scheme == 'leapfrog' )  THEN
280       WRITE ( io, 120 )
281    ELSEIF ( timestep_scheme == 'leapfrog+euler' )  THEN
282       WRITE ( io, 121 )
283    ELSE
284       WRITE ( io, 122 )  timestep_scheme
285    ENDIF
[87]286    IF ( use_upstream_for_tke )  WRITE ( io, 143 )
[1]287    IF ( rayleigh_damping_factor /= 0.0 )  THEN
[108]288       IF ( .NOT. ocean )  THEN
289          WRITE ( io, 123 )  'above', rayleigh_damping_height, &
290               rayleigh_damping_factor
291       ELSE
292          WRITE ( io, 123 )  'below', rayleigh_damping_height, &
293               rayleigh_damping_factor
294       ENDIF
[1]295    ENDIF
[75]296    IF ( humidity )  THEN
[1]297       IF ( .NOT. cloud_physics )  THEN
298          WRITE ( io, 129 )
299       ELSE
300          WRITE ( io, 130 )
301          WRITE ( io, 131 )
302          IF ( radiation )      WRITE ( io, 132 )
303          IF ( precipitation )  WRITE ( io, 133 )
304       ENDIF
305    ENDIF
306    IF ( passive_scalar )  WRITE ( io, 134 )
[240]307    IF ( conserve_volume_flow )  THEN
[241]308       WRITE ( io, 150 )  conserve_volume_flow_mode
309       IF ( TRIM( conserve_volume_flow_mode ) == 'bulk_velocity' )  THEN
310          WRITE ( io, 151 )  u_bulk, v_bulk
311       ENDIF
[240]312    ELSEIF ( dp_external )  THEN
313       IF ( dp_smooth )  THEN
[241]314          WRITE ( io, 152 )  dpdxy, dp_level_b, ', vertically smoothed.'
[240]315       ELSE
[241]316          WRITE ( io, 152 )  dpdxy, dp_level_b, '.'
[240]317       ENDIF
318    ENDIF
[1]319    WRITE ( io, 99 )
320
321!
322!-- Runtime and timestep informations
323    WRITE ( io, 200 )
324    IF ( .NOT. dt_fixed )  THEN
325       WRITE ( io, 201 )  dt_max, cfl_factor
326    ELSE
327       WRITE ( io, 202 )  dt
328    ENDIF
329    WRITE ( io, 203 )  simulated_time_at_begin, end_time
330
331    IF ( time_restart /= 9999999.9  .AND. &
332         simulated_time_at_begin == simulated_time )  THEN
333       IF ( dt_restart == 9999999.9 )  THEN
334          WRITE ( io, 204 )  ' Restart at:       ',time_restart
335       ELSE
336          WRITE ( io, 205 )  ' Restart at:       ',time_restart, dt_restart
337       ENDIF
338    ENDIF
339
340    IF ( simulated_time_at_begin /= simulated_time )  THEN
341       i = MAX ( log_point_s(10)%counts, 1 )
342       IF ( ( simulated_time - simulated_time_at_begin ) == 0.0 )  THEN
343          cpuseconds_per_simulated_second = 0.0
344       ELSE
345          cpuseconds_per_simulated_second = log_point_s(10)%sum / &
346                                            ( simulated_time -    &
347                                              simulated_time_at_begin )
348       ENDIF
349       WRITE ( io, 206 )  simulated_time, log_point_s(10)%sum, &
350                          log_point_s(10)%sum / REAL( i ),     &
351                          cpuseconds_per_simulated_second
352       IF ( time_restart /= 9999999.9  .AND.  time_restart < end_time )  THEN
353          IF ( dt_restart == 9999999.9 )  THEN
354             WRITE ( io, 204 )  ' Next restart at:  ',time_restart
355          ELSE
356             WRITE ( io, 205 )  ' Next restart at:  ',time_restart, dt_restart
357          ENDIF
358       ENDIF
359    ENDIF
360
361!
[291]362!-- Start time for coupled runs, if independent precursor runs for atmosphere
363!-- and ocean are used. In this case, coupling_start_time defines the time
364!-- when the coupling is switched on.
365    IF ( coupling_start_time /= 0.0 )  THEN
366       IF ( coupling_start_time >= simulated_time_at_begin )  THEN
367          char1 = 'Precursor run for a coupled atmosphere-ocean run'
368       ELSE
369          char1 = 'Coupled atmosphere-ocean run following independent ' // &
370                  'precursor runs'
371       ENDIF
372       WRITE ( io, 207 )  char1, coupling_start_time
373    ENDIF
374
375!
[1]376!-- Computational grid
[94]377    IF ( .NOT. ocean )  THEN
378       WRITE ( io, 250 )  dx, dy, dz, (nx+1)*dx, (ny+1)*dy, zu(nzt+1)
379       IF ( dz_stretch_level_index < nzt+1 )  THEN
380          WRITE ( io, 252 )  dz_stretch_level, dz_stretch_level_index, &
381                             dz_stretch_factor, dz_max
382       ENDIF
383    ELSE
384       WRITE ( io, 250 )  dx, dy, dz, (nx+1)*dx, (ny+1)*dy, zu(0)
385       IF ( dz_stretch_level_index > 0 )  THEN
386          WRITE ( io, 252 )  dz_stretch_level, dz_stretch_level_index, &
387                             dz_stretch_factor, dz_max
388       ENDIF
[1]389    ENDIF
390    WRITE ( io, 254 )  nx, ny, nzt+1, MIN( nnx, nx+1 ), MIN( nny, ny+1 ), &
391                       MIN( nnz+2, nzt+2 )
[76]392    IF ( numprocs > 1 )  THEN
393       IF ( nxa == nx  .AND.  nya == ny  .AND.  nza == nz )  THEN
394          WRITE ( io, 255 )
395       ELSE
396          WRITE ( io, 256 )  nnx-(nxa-nx), nny-(nya-ny), nzt+2
397       ENDIF
[1]398    ENDIF
399    IF ( sloping_surface )  WRITE ( io, 260 )  alpha_surface
400
401!
402!-- Topography
403    WRITE ( io, 270 )  topography
404    SELECT CASE ( TRIM( topography ) )
405
406       CASE ( 'flat' )
407          ! no actions necessary
408
409       CASE ( 'single_building' )
410          blx = INT( building_length_x / dx )
411          bly = INT( building_length_y / dy )
412          bh  = INT( building_height / dz )
413
414          IF ( building_wall_left == 9999999.9 )  THEN
415             building_wall_left = ( nx + 1 - blx ) / 2 * dx
416          ENDIF
417          bxl = INT ( building_wall_left / dx + 0.5 )
418          bxr = bxl + blx
419
420          IF ( building_wall_south == 9999999.9 )  THEN
421             building_wall_south = ( ny + 1 - bly ) / 2 * dy
422          ENDIF
423          bys = INT ( building_wall_south / dy + 0.5 )
424          byn = bys + bly
425
426          WRITE ( io, 271 )  building_length_x, building_length_y, &
427                             building_height, bxl, bxr, bys, byn
428
[240]429       CASE ( 'single_street_canyon' )
430          ch  = NINT( canyon_height / dz )
431          IF ( canyon_width_x /= 9999999.9 )  THEN
432!
433!--          Street canyon in y direction
434             cwx = NINT( canyon_width_x / dx )
435             IF ( canyon_wall_left == 9999999.9 )  THEN
436                canyon_wall_left = ( nx + 1 - cwx ) / 2 * dx
437             ENDIF
438             cxl = NINT( canyon_wall_left / dx )
439             cxr = cxl + cwx
440             WRITE ( io, 272 )  'y', canyon_height, ch, 'u', cxl, cxr
441
442          ELSEIF ( canyon_width_y /= 9999999.9 )  THEN
443!
444!--          Street canyon in x direction
445             cwy = NINT( canyon_width_y / dy )
446             IF ( canyon_wall_south == 9999999.9 )  THEN
447                canyon_wall_south = ( ny + 1 - cwy ) / 2 * dy
448             ENDIF
449             cys = NINT( canyon_wall_south / dy )
450             cyn = cys + cwy
451             WRITE ( io, 272 )  'x', canyon_height, ch, 'v', cys, cyn
452          ENDIF
453
[1]454    END SELECT
455
[256]456    IF ( TRIM( topography ) /= 'flat' )  THEN
457       IF ( TRIM( topography_grid_convention ) == ' ' )  THEN
458          IF ( TRIM( topography ) == 'single_building' .OR.  &
459               TRIM( topography ) == 'single_street_canyon' )  THEN
460             WRITE ( io, 278 )
461          ELSEIF ( TRIM( topography ) == 'read_from_file' )  THEN
462             WRITE ( io, 279 )
463          ENDIF
464       ELSEIF ( TRIM( topography_grid_convention ) == 'cell_edge' )  THEN
465          WRITE ( io, 278 )
466       ELSEIF ( TRIM( topography_grid_convention ) == 'cell_center' )  THEN
467          WRITE ( io, 279 )
468       ENDIF
469    ENDIF
470
[138]471    IF ( plant_canopy ) THEN
472
473       WRITE ( io, 280 ) canopy_mode, pch_index, drag_coefficient
[153]474       IF ( passive_scalar ) THEN
475          WRITE ( io, 281 ) scalar_exchange_coefficient,   &
476                            leaf_surface_concentration
477       ENDIF
[138]478
[1]479!
[153]480!--    Heat flux at the top of vegetation
481       WRITE ( io, 282 ) cthf
482
483!
[138]484!--    Leaf area density profile
485!--    Building output strings, starting with surface value
486       WRITE ( learde, '(F6.2)' )  lad_surface
487       gradients = '------'
488       slices = '     0'
489       coordinates = '   0.0'
490       i = 1
491       DO  WHILE ( lad_vertical_gradient_level_ind(i) /= -9999 )
492
493          WRITE (coor_chr,'(F7.2)')  lad(lad_vertical_gradient_level_ind(i))
494          learde = TRIM( learde ) // ' ' // TRIM( coor_chr )
495
496          WRITE (coor_chr,'(F7.2)')  lad_vertical_gradient(i)
497          gradients = TRIM( gradients ) // ' ' // TRIM( coor_chr )
498
499          WRITE (coor_chr,'(I7)')  lad_vertical_gradient_level_ind(i)
500          slices = TRIM( slices ) // ' ' // TRIM( coor_chr )
501
502          WRITE (coor_chr,'(F7.1)')  lad_vertical_gradient_level(i)
503          coordinates = TRIM( coordinates ) // ' '  // TRIM( coor_chr )
504
505          i = i + 1
506       ENDDO
507
[153]508       WRITE ( io, 283 )  TRIM( coordinates ), TRIM( learde ), &
[138]509                          TRIM( gradients ), TRIM( slices )
510
511    ENDIF
512
513!
[1]514!-- Boundary conditions
515    IF ( ibc_p_b == 0 )  THEN
516       runten = 'p(0)     = 0      |'
517    ELSEIF ( ibc_p_b == 1 )  THEN
518       runten = 'p(0)     = p(1)   |'
519    ELSE
520       runten = 'p(0)     = p(1) +R|'
521    ENDIF
522    IF ( ibc_p_t == 0 )  THEN
523       roben  = 'p(nzt+1) = 0      |'
524    ELSE
525       roben  = 'p(nzt+1) = p(nzt) |'
526    ENDIF
527
528    IF ( ibc_uv_b == 0 )  THEN
529       runten = TRIM( runten ) // ' uv(0)     = -uv(1)                |'
530    ELSE
531       runten = TRIM( runten ) // ' uv(0)     = uv(1)                 |'
532    ENDIF
[132]533    IF ( TRIM( bc_uv_t ) == 'dirichlet_0' )  THEN
534       roben  = TRIM( roben  ) // ' uv(nzt+1) = 0                     |'
535    ELSEIF ( ibc_uv_t == 0 )  THEN
[1]536       roben  = TRIM( roben  ) // ' uv(nzt+1) = ug(nzt+1), vg(nzt+1)  |'
537    ELSE
538       roben  = TRIM( roben  ) // ' uv(nzt+1) = uv(nzt)               |'
539    ENDIF
540
541    IF ( ibc_pt_b == 0 )  THEN
542       runten = TRIM( runten ) // ' pt(0)   = pt_surface'
[102]543    ELSEIF ( ibc_pt_b == 1 )  THEN
[1]544       runten = TRIM( runten ) // ' pt(0)   = pt(1)'
[102]545    ELSEIF ( ibc_pt_b == 2 )  THEN
546       runten = TRIM( runten ) // ' pt(0) = from coupled model'
[1]547    ENDIF
548    IF ( ibc_pt_t == 0 )  THEN
[19]549       roben  = TRIM( roben  ) // ' pt(nzt+1) = pt_top'
550    ELSEIF( ibc_pt_t == 1 )  THEN
551       roben  = TRIM( roben  ) // ' pt(nzt+1) = pt(nzt)'
552    ELSEIF( ibc_pt_t == 2 )  THEN
553       roben  = TRIM( roben  ) // ' pt(nzt+1) = pt(nzt) + dpt/dz_ini'
[1]554    ENDIF
555
556    WRITE ( io, 300 )  runten, roben
557
558    IF ( .NOT. constant_diffusion )  THEN
559       IF ( ibc_e_b == 1 )  THEN
560          runten = 'e(0)     = e(1)'
561       ELSE
562          runten = 'e(0)     = e(1) = (u*/0.1)**2'
563       ENDIF
564       roben = 'e(nzt+1) = e(nzt) = e(nzt-1)'
565
[97]566       WRITE ( io, 301 )  'e', runten, roben       
[1]567
568    ENDIF
569
[97]570    IF ( ocean )  THEN
571       runten = 'sa(0)    = sa(1)'
572       IF ( ibc_sa_t == 0 )  THEN
573          roben =  'sa(nzt+1) = sa_surface'
[1]574       ELSE
[97]575          roben =  'sa(nzt+1) = sa(nzt)'
[1]576       ENDIF
[97]577       WRITE ( io, 301 ) 'sa', runten, roben
578    ENDIF
[1]579
[97]580    IF ( humidity )  THEN
581       IF ( ibc_q_b == 0 )  THEN
582          runten = 'q(0)     = q_surface'
583       ELSE
584          runten = 'q(0)     = q(1)'
585       ENDIF
586       IF ( ibc_q_t == 0 )  THEN
587          roben =  'q(nzt)   = q_top'
588       ELSE
589          roben =  'q(nzt)   = q(nzt-1) + dq/dz'
590       ENDIF
591       WRITE ( io, 301 ) 'q', runten, roben
592    ENDIF
[1]593
[97]594    IF ( passive_scalar )  THEN
595       IF ( ibc_q_b == 0 )  THEN
596          runten = 's(0)     = s_surface'
597       ELSE
598          runten = 's(0)     = s(1)'
599       ENDIF
600       IF ( ibc_q_t == 0 )  THEN
601          roben =  's(nzt)   = s_top'
602       ELSE
603          roben =  's(nzt)   = s(nzt-1) + ds/dz'
604       ENDIF
605       WRITE ( io, 301 ) 's', runten, roben
[1]606    ENDIF
607
608    IF ( use_surface_fluxes )  THEN
609       WRITE ( io, 303 )
610       IF ( constant_heatflux )  THEN
611          WRITE ( io, 306 )  surface_heatflux
612          IF ( random_heatflux )  WRITE ( io, 307 )
613       ENDIF
[75]614       IF ( humidity  .AND.  constant_waterflux )  THEN
[1]615          WRITE ( io, 311 ) surface_waterflux
616       ENDIF
617       IF ( passive_scalar  .AND.  constant_waterflux )  THEN
618          WRITE ( io, 313 ) surface_waterflux
619       ENDIF
620    ENDIF
621
[19]622    IF ( use_top_fluxes )  THEN
623       WRITE ( io, 304 )
[102]624       IF ( coupling_mode == 'uncoupled' )  THEN
[151]625          WRITE ( io, 320 )  top_momentumflux_u, top_momentumflux_v
[102]626          IF ( constant_top_heatflux )  THEN
627             WRITE ( io, 306 )  top_heatflux
628          ENDIF
629       ELSEIF ( coupling_mode == 'ocean_to_atmosphere' )  THEN
630          WRITE ( io, 316 )
[19]631       ENDIF
[97]632       IF ( ocean  .AND.  constant_top_salinityflux )  THEN
633          WRITE ( io, 309 )  top_salinityflux
634       ENDIF
[75]635       IF ( humidity  .OR.  passive_scalar )  THEN
[19]636          WRITE ( io, 315 )
637       ENDIF
638    ENDIF
639
[1]640    IF ( prandtl_layer )  THEN
[94]641       WRITE ( io, 305 )  0.5 * (zu(1)-zu(0)), roughness_length, kappa, &
642                          rif_min, rif_max
[1]643       IF ( .NOT. constant_heatflux )  WRITE ( io, 308 )
[75]644       IF ( humidity  .AND.  .NOT. constant_waterflux )  THEN
[1]645          WRITE ( io, 312 )
646       ENDIF
647       IF ( passive_scalar  .AND.  .NOT. constant_waterflux )  THEN
648          WRITE ( io, 314 )
649       ENDIF
650    ELSE
651       IF ( INDEX(initializing_actions, 'set_1d-model_profiles') /= 0 )  THEN
652          WRITE ( io, 310 )  rif_min, rif_max
653       ENDIF
654    ENDIF
655
656    WRITE ( io, 317 )  bc_lr, bc_ns
657    IF ( bc_lr /= 'cyclic'  .OR.  bc_ns /= 'cyclic' )  THEN
658       WRITE ( io, 318 )  outflow_damping_width, km_damp_max
[151]659       IF ( turbulent_inflow )  THEN
660          WRITE ( io, 319 )  recycling_width, recycling_plane, &
661                             inflow_damping_height, inflow_damping_width
662       ENDIF
[1]663    ENDIF
664
665!
666!-- Listing of 1D-profiles
[151]667    WRITE ( io, 325 )  dt_dopr_listing
[1]668    IF ( averaging_interval_pr /= 0.0 )  THEN
[151]669       WRITE ( io, 326 )  averaging_interval_pr, dt_averaging_input_pr
[1]670    ENDIF
671
672!
673!-- DATA output
674    WRITE ( io, 330 )
675    IF ( averaging_interval_pr /= 0.0 )  THEN
[151]676       WRITE ( io, 326 )  averaging_interval_pr, dt_averaging_input_pr
[1]677    ENDIF
678
679!
680!-- 1D-profiles
[346]681    dopr_chr = 'Profile:'
[1]682    IF ( dopr_n /= 0 )  THEN
683       WRITE ( io, 331 )
684
685       output_format = ''
686       IF ( netcdf_output )  THEN
687          IF ( netcdf_64bit )  THEN
688             output_format = 'netcdf (64 bit offset)'
689          ELSE
690             output_format = 'netcdf'
691          ENDIF
692       ENDIF
693       IF ( profil_output )  THEN
694          IF ( netcdf_output )  THEN
695             output_format = TRIM( output_format ) // ' and profil'
696          ELSE
697             output_format = 'profil'
698          ENDIF
699       ENDIF
[292]700       WRITE ( io, 344 )  output_format
[1]701
702       DO  i = 1, dopr_n
703          dopr_chr = TRIM( dopr_chr ) // ' ' // TRIM( data_output_pr(i) ) // ','
704          IF ( LEN_TRIM( dopr_chr ) >= 60 )  THEN
705             WRITE ( io, 332 )  dopr_chr
706             dopr_chr = '       :'
707          ENDIF
708       ENDDO
709
710       IF ( dopr_chr /= '' )  THEN
711          WRITE ( io, 332 )  dopr_chr
712       ENDIF
713       WRITE ( io, 333 )  dt_dopr, averaging_interval_pr, dt_averaging_input_pr
714       IF ( skip_time_dopr /= 0.0 )  WRITE ( io, 339 )  skip_time_dopr
715    ENDIF
716
717!
718!-- 2D-arrays
719    DO  av = 0, 1
720
721       i = 1
722       do2d_xy = ''
723       do2d_xz = ''
724       do2d_yz = ''
725       DO  WHILE ( do2d(av,i) /= ' ' )
726
727          l = MAX( 2, LEN_TRIM( do2d(av,i) ) )
728          do2d_mode = do2d(av,i)(l-1:l)
729
730          SELECT CASE ( do2d_mode )
731             CASE ( 'xy' )
732                ll = LEN_TRIM( do2d_xy )
733                do2d_xy = do2d_xy(1:ll) // ' ' // do2d(av,i)(1:l-3) // ','
734             CASE ( 'xz' )
735                ll = LEN_TRIM( do2d_xz )
736                do2d_xz = do2d_xz(1:ll) // ' ' // do2d(av,i)(1:l-3) // ','
737             CASE ( 'yz' )
738                ll = LEN_TRIM( do2d_yz )
739                do2d_yz = do2d_yz(1:ll) // ' ' // do2d(av,i)(1:l-3) // ','
740          END SELECT
741
742          i = i + 1
743
744       ENDDO
745
746       IF ( ( ( do2d_xy /= ''  .AND.  section(1,1) /= -9999 )  .OR.    &
747              ( do2d_xz /= ''  .AND.  section(1,2) /= -9999 )  .OR.    &
748              ( do2d_yz /= ''  .AND.  section(1,3) /= -9999 ) )  .AND. &
749            ( netcdf_output  .OR.  iso2d_output ) )  THEN
750
751          IF (  av == 0 )  THEN
752             WRITE ( io, 334 )  ''
753          ELSE
754             WRITE ( io, 334 )  '(time-averaged)'
755          ENDIF
756
757          IF ( do2d_at_begin )  THEN
758             begin_chr = 'and at the start'
759          ELSE
760             begin_chr = ''
761          ENDIF
762
763          output_format = ''
764          IF ( netcdf_output )  THEN
765             IF ( netcdf_64bit )  THEN
766                output_format = 'netcdf (64 bit offset)'
767             ELSE
768                output_format = 'netcdf'
769             ENDIF
770          ENDIF
771          IF ( iso2d_output )  THEN
772             IF ( netcdf_output )  THEN
773                output_format = TRIM( output_format ) // ' and iso2d'
774             ELSE
775                output_format = 'iso2d'
776             ENDIF
777          ENDIF
[292]778          WRITE ( io, 344 )  output_format
[1]779
780          IF ( do2d_xy /= ''  .AND.  section(1,1) /= -9999 )  THEN
781             i = 1
782             slices = '/'
783             coordinates = '/'
784!
785!--          Building strings with index and coordinate informations of the
786!--          slices
787             DO  WHILE ( section(i,1) /= -9999 )
788
789                WRITE (section_chr,'(I5)')  section(i,1)
790                section_chr = ADJUSTL( section_chr )
791                slices = TRIM( slices ) // TRIM( section_chr ) // '/'
792
[206]793                IF ( section(i,1) == -1 )  THEN
794                   WRITE (coor_chr,'(F10.1)')  -1.0
795                ELSE
796                   WRITE (coor_chr,'(F10.1)')  zu(section(i,1))
797                ENDIF
[1]798                coor_chr = ADJUSTL( coor_chr )
799                coordinates = TRIM( coordinates ) // TRIM( coor_chr ) // '/'
800
801                i = i + 1
802             ENDDO
803             IF ( av == 0 )  THEN
804                WRITE ( io, 335 )  'XY', do2d_xy, dt_do2d_xy, &
805                                   TRIM( begin_chr ), 'k', TRIM( slices ), &
806                                   TRIM( coordinates )
807                IF ( skip_time_do2d_xy /= 0.0 )  THEN
808                   WRITE ( io, 339 )  skip_time_do2d_xy
809                ENDIF
810             ELSE
811                WRITE ( io, 342 )  'XY', do2d_xy, dt_data_output_av, &
812                                   TRIM( begin_chr ), averaging_interval, &
813                                   dt_averaging_input, 'k', TRIM( slices ), &
814                                   TRIM( coordinates )
815                IF ( skip_time_data_output_av /= 0.0 )  THEN
816                   WRITE ( io, 339 )  skip_time_data_output_av
817                ENDIF
818             ENDIF
819
820          ENDIF
821
822          IF ( do2d_xz /= ''  .AND.  section(1,2) /= -9999 )  THEN
823             i = 1
824             slices = '/'
825             coordinates = '/'
826!
827!--          Building strings with index and coordinate informations of the
828!--          slices
829             DO  WHILE ( section(i,2) /= -9999 )
830
831                WRITE (section_chr,'(I5)')  section(i,2)
832                section_chr = ADJUSTL( section_chr )
833                slices = TRIM( slices ) // TRIM( section_chr ) // '/'
834
835                WRITE (coor_chr,'(F10.1)')  section(i,2) * dy
836                coor_chr = ADJUSTL( coor_chr )
837                coordinates = TRIM( coordinates ) // TRIM( coor_chr ) // '/'
838
839                i = i + 1
840             ENDDO
841             IF ( av == 0 )  THEN
842                WRITE ( io, 335 )  'XZ', do2d_xz, dt_do2d_xz, &
843                                   TRIM( begin_chr ), 'j', TRIM( slices ), &
844                                   TRIM( coordinates )
845                IF ( skip_time_do2d_xz /= 0.0 )  THEN
846                   WRITE ( io, 339 )  skip_time_do2d_xz
847                ENDIF
848             ELSE
849                WRITE ( io, 342 )  'XZ', do2d_xz, dt_data_output_av, &
850                                   TRIM( begin_chr ), averaging_interval, &
851                                   dt_averaging_input, 'j', TRIM( slices ), &
852                                   TRIM( coordinates )
853                IF ( skip_time_data_output_av /= 0.0 )  THEN
854                   WRITE ( io, 339 )  skip_time_data_output_av
855                ENDIF
856             ENDIF
857          ENDIF
858
859          IF ( do2d_yz /= ''  .AND.  section(1,3) /= -9999 )  THEN
860             i = 1
861             slices = '/'
862             coordinates = '/'
863!
864!--          Building strings with index and coordinate informations of the
865!--          slices
866             DO  WHILE ( section(i,3) /= -9999 )
867
868                WRITE (section_chr,'(I5)')  section(i,3)
869                section_chr = ADJUSTL( section_chr )
870                slices = TRIM( slices ) // TRIM( section_chr ) // '/'
871
872                WRITE (coor_chr,'(F10.1)')  section(i,3) * dx
873                coor_chr = ADJUSTL( coor_chr )
874                coordinates = TRIM( coordinates ) // TRIM( coor_chr ) // '/'
875
876                i = i + 1
877             ENDDO
878             IF ( av == 0 )  THEN
879                WRITE ( io, 335 )  'YZ', do2d_yz, dt_do2d_yz, &
880                                   TRIM( begin_chr ), 'i', TRIM( slices ), &
881                                   TRIM( coordinates )
882                IF ( skip_time_do2d_yz /= 0.0 )  THEN
883                   WRITE ( io, 339 )  skip_time_do2d_yz
884                ENDIF
885             ELSE
886                WRITE ( io, 342 )  'YZ', do2d_yz, dt_data_output_av, &
887                                   TRIM( begin_chr ), averaging_interval, &
888                                   dt_averaging_input, 'i', TRIM( slices ), &
889                                   TRIM( coordinates )
890                IF ( skip_time_data_output_av /= 0.0 )  THEN
891                   WRITE ( io, 339 )  skip_time_data_output_av
892                ENDIF
893             ENDIF
894          ENDIF
895
896       ENDIF
897
898    ENDDO
899
900!
901!-- 3d-arrays
902    DO  av = 0, 1
903
904       i = 1
905       do3d_chr = ''
906       DO  WHILE ( do3d(av,i) /= ' ' )
907
908          do3d_chr = TRIM( do3d_chr ) // ' ' // TRIM( do3d(av,i) ) // ','
909          i = i + 1
910
911       ENDDO
912
913       IF ( do3d_chr /= '' )  THEN
914          IF ( av == 0 )  THEN
915             WRITE ( io, 336 )  ''
916          ELSE
917             WRITE ( io, 336 )  '(time-averaged)'
918          ENDIF
919
920          output_format = ''
921          IF ( netcdf_output )  THEN
[292]922             IF ( netcdf_64bit_3d )  THEN
[1]923                output_format = 'netcdf (64 bit offset)'
924             ELSE
925                output_format = 'netcdf'
926             ENDIF
927          ENDIF
928          IF ( avs_output )  THEN
929             IF ( netcdf_output )  THEN
930                output_format = TRIM( output_format ) // ' and avs'
931             ELSE
932                output_format = 'avs'
933             ENDIF
934          ENDIF
[292]935          WRITE ( io, 344 )  output_format
[1]936
937          IF ( do3d_at_begin )  THEN
938             begin_chr = 'and at the start'
939          ELSE
940             begin_chr = ''
941          ENDIF
942          IF ( av == 0 )  THEN
943             WRITE ( io, 337 )  do3d_chr, dt_do3d, TRIM( begin_chr ), &
944                                zu(nz_do3d), nz_do3d
945          ELSE
946             WRITE ( io, 343 )  do3d_chr, dt_data_output_av,           &
947                                TRIM( begin_chr ), averaging_interval, &
948                                dt_averaging_input, zu(nz_do3d), nz_do3d
949          ENDIF
950
951          IF ( do3d_compress )  THEN
952             do3d_chr = ''
953             i = 1
954             DO WHILE ( do3d(av,i) /= ' ' )
955
956                SELECT CASE ( do3d(av,i) )
957                   CASE ( 'u' )
958                      j = 1
959                   CASE ( 'v' )
960                      j = 2
961                   CASE ( 'w' )
962                      j = 3
963                   CASE ( 'p' )
964                      j = 4
965                   CASE ( 'pt' )
966                      j = 5
967                END SELECT
968                WRITE ( prec, '(I1)' )  plot_3d_precision(j)%precision
969                do3d_chr = TRIM( do3d_chr ) // ' ' // TRIM( do3d(av,i) ) // &
970                           ':' // prec // ','
971                i = i + 1
972
973             ENDDO
974             WRITE ( io, 338 )  do3d_chr
975
976          ENDIF
977
978          IF ( av == 0 )  THEN
979             IF ( skip_time_do3d /= 0.0 )  THEN
980                WRITE ( io, 339 )  skip_time_do3d
981             ENDIF
982          ELSE
983             IF ( skip_time_data_output_av /= 0.0 )  THEN
984                WRITE ( io, 339 )  skip_time_data_output_av
985             ENDIF
986          ENDIF
987
988       ENDIF
989
990    ENDDO
991
992!
993!-- Timeseries
994    IF ( dt_dots /= 9999999.9 )  THEN
995       WRITE ( io, 340 )
996
997       output_format = ''
998       IF ( netcdf_output )  THEN
999          IF ( netcdf_64bit )  THEN
1000             output_format = 'netcdf (64 bit offset)'
1001          ELSE
1002             output_format = 'netcdf'
1003          ENDIF
1004       ENDIF
1005       IF ( profil_output )  THEN
1006          IF ( netcdf_output )  THEN
1007             output_format = TRIM( output_format ) // ' and profil'
1008          ELSE
1009             output_format = 'profil'
1010          ENDIF
1011       ENDIF
[292]1012       WRITE ( io, 344 )  output_format
[1]1013       WRITE ( io, 341 )  dt_dots
1014    ENDIF
1015
1016#if defined( __dvrp_graphics )
1017!
1018!-- Dvrp-output
1019    IF ( dt_dvrp /= 9999999.9 )  THEN
1020       WRITE ( io, 360 )  dt_dvrp, TRIM( dvrp_output ), TRIM( dvrp_host ), &
1021                          TRIM( dvrp_username ), TRIM( dvrp_directory )
1022       i = 1
1023       l = 0
[336]1024       m = 0
[1]1025       DO WHILE ( mode_dvrp(i) /= ' ' )
1026          IF ( mode_dvrp(i)(1:10) == 'isosurface' )  THEN
[130]1027             READ ( mode_dvrp(i), '(10X,I2)' )  j
[1]1028             l = l + 1
1029             IF ( do3d(0,j) /= ' ' )  THEN
[336]1030                WRITE ( io, 361 )  TRIM( do3d(0,j) ), threshold(l), &
1031                                   isosurface_color(:,l)
[1]1032             ENDIF
1033          ELSEIF ( mode_dvrp(i)(1:6) == 'slicer' )  THEN
[130]1034             READ ( mode_dvrp(i), '(6X,I2)' )  j
[336]1035             m = m + 1
1036             IF ( do2d(0,j) /= ' ' )  THEN
1037                WRITE ( io, 362 )  TRIM( do2d(0,j) ), &
1038                                   slicer_range_limits_dvrp(:,m)
1039             ENDIF
[1]1040          ELSEIF ( mode_dvrp(i)(1:9) == 'particles' )  THEN
[336]1041             WRITE ( io, 363 )  dvrp_psize
1042             IF ( particle_dvrpsize /= 'none' )  THEN
1043                WRITE ( io, 364 )  'size', TRIM( particle_dvrpsize ), &
1044                                   dvrpsize_interval
1045             ENDIF
1046             IF ( particle_color /= 'none' )  THEN
1047                WRITE ( io, 364 )  'color', TRIM( particle_color ), &
1048                                   color_interval
1049             ENDIF
[1]1050          ENDIF
1051          i = i + 1
1052       ENDDO
[237]1053
[336]1054       WRITE ( io, 365 )  groundplate_color, superelevation_x, &
1055                          superelevation_y, superelevation, clip_dvrp_l, &
1056                          clip_dvrp_r, clip_dvrp_s, clip_dvrp_n
1057
1058       IF ( TRIM( topography ) /= 'flat' )  THEN
1059          WRITE ( io, 366 )  topography_color
1060          IF ( cluster_size > 1 )  THEN
1061             WRITE ( io, 367 )  cluster_size
1062          ENDIF
[237]1063       ENDIF
1064
[1]1065    ENDIF
1066#endif
1067
1068#if defined( __spectra )
1069!
1070!-- Spectra output
1071    IF ( dt_dosp /= 9999999.9 ) THEN
1072       WRITE ( io, 370 )
1073
1074       output_format = ''
1075       IF ( netcdf_output )  THEN
1076          IF ( netcdf_64bit )  THEN
1077             output_format = 'netcdf (64 bit offset)'
1078          ELSE
1079             output_format = 'netcdf'
1080          ENDIF
1081       ENDIF
1082       IF ( profil_output )  THEN
1083          IF ( netcdf_output )  THEN
1084             output_format = TRIM( output_format ) // ' and profil'
1085          ELSE
1086             output_format = 'profil'
1087          ENDIF
1088       ENDIF
[292]1089       WRITE ( io, 344 )  output_format
[1]1090       WRITE ( io, 371 )  dt_dosp
1091       IF ( skip_time_dosp /= 0.0 )  WRITE ( io, 339 )  skip_time_dosp
1092       WRITE ( io, 372 )  ( data_output_sp(i), i = 1,10 ),     &
1093                          ( spectra_direction(i), i = 1,10 ),  &
[189]1094                          ( comp_spectra_level(i), i = 1,100 ), &
1095                          ( plot_spectra_level(i), i = 1,100 ), &
[1]1096                          averaging_interval_sp, dt_averaging_input_pr
1097    ENDIF
1098#endif
1099
1100    WRITE ( io, 99 )
1101
1102!
1103!-- Physical quantities
1104    WRITE ( io, 400 )
1105
1106!
1107!-- Geostrophic parameters
1108    WRITE ( io, 410 )  omega, phi, f, fs
1109
1110!
1111!-- Other quantities
1112    WRITE ( io, 411 )  g
[97]1113    IF ( use_reference )  THEN
1114       IF ( ocean )  THEN
1115          WRITE ( io, 412 )  prho_reference
1116       ELSE
1117          WRITE ( io, 413 )  pt_reference
1118       ENDIF
1119    ENDIF
[1]1120
1121!
1122!-- Cloud physics parameters
1123    IF ( cloud_physics ) THEN
[57]1124       WRITE ( io, 415 )
1125       WRITE ( io, 416 ) surface_pressure, r_d, rho_surface, cp, l_v
[1]1126    ENDIF
1127
1128!-- Profile of the geostrophic wind (component ug)
1129!-- Building output strings
1130    WRITE ( ugcomponent, '(F6.2)' )  ug_surface
1131    gradients = '------'
1132    slices = '     0'
1133    coordinates = '   0.0'
1134    i = 1
1135    DO  WHILE ( ug_vertical_gradient_level_ind(i) /= -9999 )
1136     
[167]1137       WRITE (coor_chr,'(F6.2,1X)')  ug(ug_vertical_gradient_level_ind(i))
[1]1138       ugcomponent = TRIM( ugcomponent ) // '  ' // TRIM( coor_chr )
1139
[167]1140       WRITE (coor_chr,'(F6.2,1X)')  ug_vertical_gradient(i)
[1]1141       gradients = TRIM( gradients ) // '  ' // TRIM( coor_chr )
1142
[167]1143       WRITE (coor_chr,'(I6,1X)')  ug_vertical_gradient_level_ind(i)
[1]1144       slices = TRIM( slices ) // '  ' // TRIM( coor_chr )
1145
[167]1146       WRITE (coor_chr,'(F6.1,1X)')  ug_vertical_gradient_level(i)
[1]1147       coordinates = TRIM( coordinates ) // '  ' // TRIM( coor_chr )
1148
1149       i = i + 1
1150    ENDDO
1151
1152    WRITE ( io, 423 )  TRIM( coordinates ), TRIM( ugcomponent ), &
1153                       TRIM( gradients ), TRIM( slices )
1154
1155!-- Profile of the geostrophic wind (component vg)
1156!-- Building output strings
1157    WRITE ( vgcomponent, '(F6.2)' )  vg_surface
1158    gradients = '------'
1159    slices = '     0'
1160    coordinates = '   0.0'
1161    i = 1
1162    DO  WHILE ( vg_vertical_gradient_level_ind(i) /= -9999 )
1163
[167]1164       WRITE (coor_chr,'(F6.2,1X)')  vg(vg_vertical_gradient_level_ind(i))
[1]1165       vgcomponent = TRIM( vgcomponent ) // '  ' // TRIM( coor_chr )
1166
[167]1167       WRITE (coor_chr,'(F6.2,1X)')  vg_vertical_gradient(i)
[1]1168       gradients = TRIM( gradients ) // '  ' // TRIM( coor_chr )
1169
[167]1170       WRITE (coor_chr,'(I6,1X)')  vg_vertical_gradient_level_ind(i)
[1]1171       slices = TRIM( slices ) // '  ' // TRIM( coor_chr )
1172
[167]1173       WRITE (coor_chr,'(F6.1,1X)')  vg_vertical_gradient_level(i)
[1]1174       coordinates = TRIM( coordinates ) // '  ' // TRIM( coor_chr )
1175
1176       i = i + 1 
1177    ENDDO
1178
1179    WRITE ( io, 424 )  TRIM( coordinates ), TRIM( vgcomponent ), &
1180                       TRIM( gradients ), TRIM( slices )
1181
1182!
1183!-- Initial temperature profile
1184!-- Building output strings, starting with surface temperature
1185    WRITE ( temperatures, '(F6.2)' )  pt_surface
1186    gradients = '------'
1187    slices = '     0'
1188    coordinates = '   0.0'
1189    i = 1
1190    DO  WHILE ( pt_vertical_gradient_level_ind(i) /= -9999 )
1191
[94]1192       WRITE (coor_chr,'(F7.2)')  pt_init(pt_vertical_gradient_level_ind(i))
1193       temperatures = TRIM( temperatures ) // ' ' // TRIM( coor_chr )
[1]1194
[94]1195       WRITE (coor_chr,'(F7.2)')  pt_vertical_gradient(i)
1196       gradients = TRIM( gradients ) // ' ' // TRIM( coor_chr )
[1]1197
[94]1198       WRITE (coor_chr,'(I7)')  pt_vertical_gradient_level_ind(i)
1199       slices = TRIM( slices ) // ' ' // TRIM( coor_chr )
[1]1200
[94]1201       WRITE (coor_chr,'(F7.1)')  pt_vertical_gradient_level(i)
1202       coordinates = TRIM( coordinates ) // ' '  // TRIM( coor_chr )
[1]1203
1204       i = i + 1
1205    ENDDO
1206
1207    WRITE ( io, 420 )  TRIM( coordinates ), TRIM( temperatures ), &
1208                       TRIM( gradients ), TRIM( slices )
1209
1210!
1211!-- Initial humidity profile
1212!-- Building output strings, starting with surface humidity
[75]1213    IF ( humidity  .OR.  passive_scalar )  THEN
[1]1214       WRITE ( temperatures, '(E8.1)' )  q_surface
1215       gradients = '--------'
1216       slices = '       0'
1217       coordinates = '     0.0'
1218       i = 1
1219       DO  WHILE ( q_vertical_gradient_level_ind(i) /= -9999 )
1220         
1221          WRITE (coor_chr,'(E8.1,4X)')  q_init(q_vertical_gradient_level_ind(i))
1222          temperatures = TRIM( temperatures ) // '  ' // TRIM( coor_chr )
1223
1224          WRITE (coor_chr,'(E8.1,4X)')  q_vertical_gradient(i)
1225          gradients = TRIM( gradients ) // '  ' // TRIM( coor_chr )
1226         
1227          WRITE (coor_chr,'(I8,4X)')  q_vertical_gradient_level_ind(i)
1228          slices = TRIM( slices ) // '  ' // TRIM( coor_chr )
1229         
1230          WRITE (coor_chr,'(F8.1,4X)')  q_vertical_gradient_level(i)
1231          coordinates = TRIM( coordinates ) // '  '  // TRIM( coor_chr )
1232
1233          i = i + 1
1234       ENDDO
1235
[75]1236       IF ( humidity )  THEN
[1]1237          WRITE ( io, 421 )  TRIM( coordinates ), TRIM( temperatures ), &
1238                             TRIM( gradients ), TRIM( slices )
1239       ELSE
1240          WRITE ( io, 422 )  TRIM( coordinates ), TRIM( temperatures ), &
1241                             TRIM( gradients ), TRIM( slices )
1242       ENDIF
1243    ENDIF
1244
1245!
[97]1246!-- Initial salinity profile
1247!-- Building output strings, starting with surface salinity
1248    IF ( ocean )  THEN
1249       WRITE ( temperatures, '(F6.2)' )  sa_surface
1250       gradients = '------'
1251       slices = '     0'
1252       coordinates = '   0.0'
1253       i = 1
1254       DO  WHILE ( sa_vertical_gradient_level_ind(i) /= -9999 )
1255
1256          WRITE (coor_chr,'(F7.2)')  sa_init(sa_vertical_gradient_level_ind(i))
1257          temperatures = TRIM( temperatures ) // ' ' // TRIM( coor_chr )
1258
1259          WRITE (coor_chr,'(F7.2)')  sa_vertical_gradient(i)
1260          gradients = TRIM( gradients ) // ' ' // TRIM( coor_chr )
1261
1262          WRITE (coor_chr,'(I7)')  sa_vertical_gradient_level_ind(i)
1263          slices = TRIM( slices ) // ' ' // TRIM( coor_chr )
1264
1265          WRITE (coor_chr,'(F7.1)')  sa_vertical_gradient_level(i)
1266          coordinates = TRIM( coordinates ) // ' '  // TRIM( coor_chr )
1267
1268          i = i + 1
1269       ENDDO
1270
1271       WRITE ( io, 425 )  TRIM( coordinates ), TRIM( temperatures ), &
1272                          TRIM( gradients ), TRIM( slices )
1273    ENDIF
1274
1275!
[1]1276!-- LES / turbulence parameters
1277    WRITE ( io, 450 )
1278
1279!--
1280! ... LES-constants used must still be added here
1281!--
1282    IF ( constant_diffusion )  THEN
1283       WRITE ( io, 451 )  km_constant, km_constant/prandtl_number, &
1284                          prandtl_number
1285    ENDIF
1286    IF ( .NOT. constant_diffusion)  THEN
[108]1287       IF ( e_init > 0.0 )  WRITE ( io, 455 )  e_init
[1]1288       IF ( e_min > 0.0 )  WRITE ( io, 454 )  e_min
1289       IF ( wall_adjustment )  WRITE ( io, 453 )  wall_adjustment_factor
1290       IF ( adjust_mixing_length  .AND.  prandtl_layer )  WRITE ( io, 452 )
1291    ENDIF
1292
1293!
1294!-- Special actions during the run
1295    WRITE ( io, 470 )
1296    IF ( create_disturbances )  THEN
1297       WRITE ( io, 471 )  dt_disturb, disturbance_amplitude,                   &
1298                          zu(disturbance_level_ind_b), disturbance_level_ind_b,&
1299                          zu(disturbance_level_ind_t), disturbance_level_ind_t
1300       IF ( bc_lr /= 'cyclic'  .OR.  bc_ns /= 'cyclic' )  THEN
1301          WRITE ( io, 472 )  inflow_disturbance_begin, inflow_disturbance_end
1302       ELSE
1303          WRITE ( io, 473 )  disturbance_energy_limit
1304       ENDIF
1305       WRITE ( io, 474 )  TRIM( random_generator )
1306    ENDIF
1307    IF ( pt_surface_initial_change /= 0.0 )  THEN
1308       WRITE ( io, 475 )  pt_surface_initial_change
1309    ENDIF
[75]1310    IF ( humidity  .AND.  q_surface_initial_change /= 0.0 )  THEN
[1]1311       WRITE ( io, 476 )  q_surface_initial_change       
1312    ENDIF
1313    IF ( passive_scalar  .AND.  q_surface_initial_change /= 0.0 )  THEN
1314       WRITE ( io, 477 )  q_surface_initial_change       
1315    ENDIF
1316
[60]1317    IF ( particle_advection )  THEN
[1]1318!
[60]1319!--    Particle attributes
1320       WRITE ( io, 480 )  particle_advection_start, dt_prel, bc_par_lr, &
1321                          bc_par_ns, bc_par_b, bc_par_t, particle_maximum_age, &
[117]1322                          end_time_prel, dt_sort_particles
[60]1323       IF ( use_sgs_for_particles )  WRITE ( io, 488 )  dt_min_part
1324       IF ( random_start_position )  WRITE ( io, 481 )
1325       IF ( particles_per_point > 1 )  WRITE ( io, 489 )  particles_per_point
1326       WRITE ( io, 495 )  total_number_of_particles
1327       IF ( maximum_number_of_tailpoints /= 0 )  THEN
1328          WRITE ( io, 483 )  maximum_number_of_tailpoints
1329          IF ( minimum_tailpoint_distance /= 0 )  THEN
1330             WRITE ( io, 484 )  total_number_of_tails,      &
1331                                minimum_tailpoint_distance, &
1332                                maximum_tailpoint_age
1333          ENDIF
[1]1334       ENDIF
[60]1335       IF ( dt_write_particle_data /= 9999999.9 )  THEN
1336          WRITE ( io, 485 )  dt_write_particle_data
1337          output_format = ''
1338          IF ( netcdf_output )  THEN
1339             IF ( netcdf_64bit )  THEN
1340                output_format = 'netcdf (64 bit offset) and binary'
1341             ELSE
1342                output_format = 'netcdf and binary'
1343             ENDIF
[1]1344          ELSE
[60]1345             output_format = 'binary'
[1]1346          ENDIF
[292]1347          WRITE ( io, 344 )  output_format
[1]1348       ENDIF
[60]1349       IF ( dt_dopts /= 9999999.9 )  WRITE ( io, 494 )  dt_dopts
1350       IF ( write_particle_statistics )  WRITE ( io, 486 )
[1]1351
[60]1352       WRITE ( io, 487 )  number_of_particle_groups
[1]1353
[60]1354       DO  i = 1, number_of_particle_groups
1355          IF ( i == 1  .AND.  density_ratio(i) == 9999999.9 )  THEN
1356             WRITE ( io, 490 )  i, 0.0
1357             WRITE ( io, 492 )
[1]1358          ELSE
[60]1359             WRITE ( io, 490 )  i, radius(i)
1360             IF ( density_ratio(i) /= 0.0 )  THEN
1361                WRITE ( io, 491 )  density_ratio(i)
1362             ELSE
1363                WRITE ( io, 492 )
1364             ENDIF
[1]1365          ENDIF
[60]1366          WRITE ( io, 493 )  psl(i), psr(i), pss(i), psn(i), psb(i), pst(i), &
1367                             pdx(i), pdy(i), pdz(i)
[336]1368          IF ( .NOT. vertical_particle_advection(i) )  WRITE ( io, 482 )
[60]1369       ENDDO
[1]1370
[60]1371    ENDIF
[1]1372
[60]1373
[1]1374!
1375!-- Parameters of 1D-model
1376    IF ( INDEX( initializing_actions, 'set_1d-model_profiles' ) /= 0 )  THEN
1377       WRITE ( io, 500 )  end_time_1d, dt_run_control_1d, dt_pr_1d, &
1378                          mixing_length_1d, dissipation_1d
1379       IF ( damp_level_ind_1d /= nzt+1 )  THEN
1380          WRITE ( io, 502 )  zu(damp_level_ind_1d), damp_level_ind_1d
1381       ENDIF
1382    ENDIF
1383
1384!
1385!-- User-defined informations
1386    CALL user_header( io )
1387
1388    WRITE ( io, 99 )
1389
1390!
1391!-- Write buffer contents to disc immediately
[82]1392    CALL local_flush( io )
[1]1393
1394!
1395!-- Here the FORMATs start
1396
1397 99 FORMAT (1X,78('-'))
[200]1398100 FORMAT (/1X,'***************************',9X,42('-')/        &
1399            1X,'* ',A,' *',9X,A/                               &
1400            1X,'***************************',9X,42('-'))
[291]1401101 FORMAT (37X,'coupled run using MPI-',I1,': ',A/ &
[102]1402            37X,42('-'))
[200]1403102 FORMAT (/' Date:              ',A8,9X,'Run:       ',A20/      &
1404            ' Time:              ',A8,9X,'Run-No.:   ',I2.2/     &
1405            ' Run on host:     ',A10)
[1]1406#if defined( __parallel )
[200]1407103 FORMAT (' Number of PEs:',8X,I5,9X,'Processor grid (x,y): (',I3,',',I3, &
[1]1408              ')',1X,A)
[200]1409104 FORMAT (' Number of PEs:',8X,I5,9X,'Tasks:',I4,'   threads per task:',I4/ &
[1]1410              37X,'Processor grid (x,y): (',I3,',',I3,')',1X,A)
[102]1411105 FORMAT (37X,'One additional PE is used to handle'/37X,'the dvrp output!')
1412106 FORMAT (37X,'A 1d-decomposition along x is forced'/ &
[1]1413            37X,'because the job is running on an SMP-cluster')
[102]1414107 FORMAT (37X,'A 1d-decomposition along ',A,' is used')
[1]1415#endif
1416110 FORMAT (/' Numerical Schemes:'/ &
1417             ' -----------------'/)
1418111 FORMAT (' --> Solve perturbation pressure via FFT using ',A,' routines')
1419112 FORMAT (' --> Solve perturbation pressure via SOR-Red/Black-Schema'/ &
1420            '     Iterations (initial/other): ',I3,'/',I3,'  omega = ',F5.3)
1421113 FORMAT (' --> Momentum advection via Piascek-Williams-Scheme (Form C3)', &
1422                  ' or Upstream')
1423114 FORMAT (' --> Momentum advection via Upstream-Spline-Scheme')
1424115 FORMAT ('     Tendencies are smoothed via Long-Filter with factor ',F5.3) 
1425116 FORMAT (' --> Scalar advection via Piascek-Williams-Scheme (Form C3)', &
1426                  ' or Upstream')
1427117 FORMAT (' --> Scalar advection via Upstream-Spline-Scheme')
1428118 FORMAT (' --> Scalar advection via Bott-Chlond-Scheme')
1429119 FORMAT (' --> Galilei-Transform applied to horizontal advection', &
1430            '     Translation velocity = ',A/ &
1431            '     distance advected ',A,':  ',F8.3,' km(x)  ',F8.3,' km(y)')
1432120 FORMAT (' --> Time differencing scheme: leapfrog only (no euler in case', &
1433                  ' of timestep changes)')
1434121 FORMAT (' --> Time differencing scheme: leapfrog + euler in case of', &
1435                  ' timestep changes')
1436122 FORMAT (' --> Time differencing scheme: ',A)
[108]1437123 FORMAT (' --> Rayleigh-Damping active, starts ',A,' z = ',F8.2,' m'/ &
[1]1438            '     maximum damping coefficient: ',F5.3, ' 1/s')
1439124 FORMAT ('     Spline-overshoots are being suppressed')
1440125 FORMAT ('     Upstream-Scheme is used if Upstream-differences fall short', &
1441                  ' of'/                                                       &
1442            '     delta_u = ',F6.4,4X,'delta_v = ',F6.4,4X,'delta_w = ',F6.4)
1443126 FORMAT ('     Upstream-Scheme is used if Upstream-differences fall short', &
1444                  ' of'/                                                       &
1445            '     delta_e = ',F6.4,4X,'delta_pt = ',F6.4)
1446127 FORMAT ('     The following absolute overshoot differences are tolerated:'/&
1447            '     delta_u = ',F6.4,4X,'delta_v = ',F6.4,4X,'delta_w = ',F6.4)
1448128 FORMAT ('     The following absolute overshoot differences are tolerated:'/&
1449            '     delta_e = ',F6.4,4X,'delta_pt = ',F6.4)
1450129 FORMAT (' --> Additional prognostic equation for the specific humidity')
1451130 FORMAT (' --> Additional prognostic equation for the total water content')
1452131 FORMAT (' --> Parameterization of condensation processes via (0%-or100%)')
1453132 FORMAT (' --> Parameterization of long-wave radiation processes via'/ &
1454            '     effective emissivity scheme')
1455133 FORMAT (' --> Precipitation parameterization via Kessler-Scheme')
1456134 FORMAT (' --> Additional prognostic equation for a passive scalar')
1457135 FORMAT (' --> Solve perturbation pressure via multigrid method (', &
1458                  A,'-cycle)'/ &
1459            '     number of grid levels:                   ',I2/ &
1460            '     Gauss-Seidel red/black iterations:       ',I2)
1461136 FORMAT ('     gridpoints of coarsest subdomain (x,y,z): (',I3,',',I3,',', &
1462                  I3,')')
1463137 FORMAT ('     level data gathered on PE0 at level:     ',I2/ &
1464            '     gridpoints of coarsest subdomain (x,y,z): (',I3,',',I3,',', &
1465                  I3,')'/ &
1466            '     gridpoints of coarsest domain (x,y,z):    (',I3,',',I3,',', &
1467                  I3,')')
1468138 FORMAT ('     Using hybrid version for 1d-domain-decomposition')
[63]1469139 FORMAT (' --> Loop optimization method: ',A)
[1]1470140 FORMAT ('     maximum residual allowed:                ',E10.3)
1471141 FORMAT ('     fixed number of multigrid cycles:        ',I4)
1472142 FORMAT ('     perturbation pressure is calculated at every Runge-Kutta ', &
1473                  'step')
[87]1474143 FORMAT ('     Euler/upstream scheme is used for the SGS turbulent ', &
1475                  'kinetic energy')
[1]1476150 FORMAT (' --> Volume flow at the right and north boundary will be ', &
[241]1477                  'conserved'/ &
1478            '     using the ',A,' mode')
1479151 FORMAT ('     with u_bulk = ',F7.3,' m/s and v_bulk = ',F7.3,' m/s')
[306]1480152 FORMAT (' --> External pressure gradient directly prescribed by the user:',&
1481           /'     ',2(1X,E12.5),'Pa/m in x/y direction', &
1482           /'     starting from dp_level_b =', F8.3, 'm', A /)
[1]1483200 FORMAT (//' Run time and time step information:'/ &
1484             ' ----------------------------------'/)
1485201 FORMAT ( ' Timestep:          variable     maximum value: ',F6.3,' s', &
1486             '    CFL-factor: ',F4.2)
1487202 FORMAT ( ' Timestep:       dt = ',F6.3,' s'/)
1488203 FORMAT ( ' Start time:       ',F9.3,' s'/ &
1489             ' End time:         ',F9.3,' s')
1490204 FORMAT ( A,F9.3,' s')
1491205 FORMAT ( A,F9.3,' s',5X,'restart every',17X,F9.3,' s')
1492206 FORMAT (/' Time reached:     ',F9.3,' s'/ &
1493             ' CPU-time used:    ',F9.3,' s     per timestep:               ', &
1494               '  ',F9.3,' s'/                                                 &
1495             '                                   per second of simulated tim', &
1496               'e: ',F9.3,' s')
[291]1497207 FORMAT ( A/' Coupling start time:',F9.3,' s')
[1]1498250 FORMAT (//' Computational grid and domain size:'/ &
1499              ' ----------------------------------'// &
1500              ' Grid length:      dx =    ',F7.3,' m    dy =    ',F7.3, &
1501              ' m    dz =    ',F7.3,' m'/ &
1502              ' Domain size:       x = ',F10.3,' m     y = ',F10.3, &
1503              ' m  z(u) = ',F10.3,' m'/)
1504252 FORMAT (' dz constant up to ',F10.3,' m (k=',I4,'), then stretched by', &
1505              ' factor: ',F5.3/ &
1506            ' maximum dz not to be exceeded is dz_max = ',F10.3,' m'/)
1507254 FORMAT (' Number of gridpoints (x,y,z):  (0:',I4,', 0:',I4,', 0:',I4,')'/ &
1508            ' Subdomain size (x,y,z):        (  ',I4,',   ',I4,',   ',I4,')'/)
1509255 FORMAT (' Subdomains have equal size')
1510256 FORMAT (' Subdomains at the upper edges of the virtual processor grid ', &
1511              'have smaller sizes'/                                          &
1512            ' Size of smallest subdomain:    (  ',I4,',   ',I4,',   ',I4,')')
1513260 FORMAT (/' The model has a slope in x-direction. Inclination angle: ',F6.2,&
1514             ' degrees')
1515270 FORMAT (//' Topography informations:'/ &
1516              ' -----------------------'// &
1517              1X,'Topography: ',A)
1518271 FORMAT (  ' Building size (x/y/z) in m: ',F5.1,' / ',F5.1,' / ',F5.1/ &
1519              ' Horizontal index bounds (l/r/s/n): ',I4,' / ',I4,' / ',I4, &
1520                ' / ',I4)
[240]1521272 FORMAT (  ' Single quasi-2D street canyon of infinite length in ',A, &
1522              ' direction' / &
1523              ' Canyon height: ', F6.2, 'm, ch = ', I4, '.'      / &
1524              ' Canyon position (',A,'-walls): cxl = ', I4,', cxr = ', I4, '.')
[256]1525278 FORMAT (' Topography grid definition convention:'/ &
1526            ' cell edge (staggered grid points'/  &
1527            ' (u in x-direction, v in y-direction))' /)
1528279 FORMAT (' Topography grid definition convention:'/ &
1529            ' cell center (scalar grid points)' /)
[138]1530280 FORMAT (//' Vegetation canopy (drag) model:'/ &
1531              ' ------------------------------'// &
1532              ' Canopy mode: ', A / &
1533              ' Canopy top: ',I4 / &
1534              ' Leaf drag coefficient: ',F6.2 /)
[153]1535281 FORMAT (/ ' Scalar_exchange_coefficient: ',F6.2 / &
1536              ' Scalar concentration at leaf surfaces in kg/m**3: ',F6.2 /)
1537282 FORMAT (' Predefined constant heatflux at the top of the vegetation: ',F6.2,' K m/s')
1538283 FORMAT (/ ' Characteristic levels of the leaf area density:'// &
[138]1539              ' Height:              ',A,'  m'/ &
1540              ' Leaf area density:   ',A,'  m**2/m**3'/ &
1541              ' Gradient:            ',A,'  m**2/m**4'/ &
1542              ' Gridpoint:           ',A)
1543               
[1]1544300 FORMAT (//' Boundary conditions:'/ &
1545             ' -------------------'// &
1546             '                     p                    uv             ', &
1547             '                   pt'// &
1548             ' B. bound.: ',A/ &
1549             ' T. bound.: ',A)
[97]1550301 FORMAT (/'                     ',A// &
[1]1551             ' B. bound.: ',A/ &
1552             ' T. bound.: ',A)
[19]1553303 FORMAT (/' Bottom surface fluxes are used in diffusion terms at k=1')
1554304 FORMAT (/' Top surface fluxes are used in diffusion terms at k=nzt')
1555305 FORMAT (//'    Prandtl-Layer between bottom surface and first ', &
1556               'computational u,v-level:'// &
[1]1557             '       zp = ',F6.2,' m   z0 = ',F6.4,' m   kappa = ',F4.2/ &
1558             '       Rif value range:   ',F6.2,' <= rif <=',F6.2)
[97]1559306 FORMAT ('       Predefined constant heatflux:   ',F9.6,' K m/s')
[1]1560307 FORMAT ('       Heatflux has a random normal distribution')
1561308 FORMAT ('       Predefined surface temperature')
[97]1562309 FORMAT ('       Predefined constant salinityflux:   ',F9.6,' psu m/s')
[1]1563310 FORMAT (//'    1D-Model:'// &
1564             '       Rif value range:   ',F6.2,' <= rif <=',F6.2)
1565311 FORMAT ('       Predefined constant humidity flux: ',E10.3,' m/s')
1566312 FORMAT ('       Predefined surface humidity')
1567313 FORMAT ('       Predefined constant scalar flux: ',E10.3,' kg/(m**2 s)')
1568314 FORMAT ('       Predefined scalar value at the surface')
[19]1569315 FORMAT ('       Humidity / scalar flux at top surface is 0.0')
[102]1570316 FORMAT ('       Sensible heatflux and momentum flux from coupled ', &
1571                    'atmosphere model')
[1]1572317 FORMAT (//' Lateral boundaries:'/ &
1573            '       left/right:  ',A/    &
1574            '       north/south: ',A)
1575318 FORMAT (/'       outflow damping layer width: ',I3,' gridpoints with km_', &
1576                    'max =',F5.1,' m**2/s')
[151]1577319 FORMAT ('       turbulence recycling at inflow switched on'/ &
1578            '       width of recycling domain: ',F7.1,' m   grid index: ',I4/ &
1579            '       inflow damping height: ',F6.1,' m   width: ',F6.1,' m')
1580320 FORMAT ('       Predefined constant momentumflux:  u: ',F9.6,' m**2/s**2'/ &
[103]1581            '                                          v: ',F9.6,' m**2/s**2')
[151]1582325 FORMAT (//' List output:'/ &
[1]1583             ' -----------'//  &
1584            '    1D-Profiles:'/    &
1585            '       Output every             ',F8.2,' s')
[151]1586326 FORMAT ('       Time averaged over       ',F8.2,' s'/ &
[1]1587            '       Averaging input every    ',F8.2,' s')
1588330 FORMAT (//' Data output:'/ &
1589             ' -----------'/)
1590331 FORMAT (/'    1D-Profiles:')
1591332 FORMAT (/'       ',A)
1592333 FORMAT ('       Output every             ',F8.2,' s',/ &
1593            '       Time averaged over       ',F8.2,' s'/ &
1594            '       Averaging input every    ',F8.2,' s')
1595334 FORMAT (/'    2D-Arrays',A,':')
1596335 FORMAT (/'       ',A2,'-cross-section  Arrays: ',A/ &
1597            '       Output every             ',F8.2,' s  ',A/ &
1598            '       Cross sections at ',A1,' = ',A/ &
1599            '       scalar-coordinates:   ',A,' m'/)
1600336 FORMAT (/'    3D-Arrays',A,':')
1601337 FORMAT (/'       Arrays: ',A/ &
1602            '       Output every             ',F8.2,' s  ',A/ &
1603            '       Upper output limit at    ',F8.2,' m  (GP ',I4,')'/)
1604338 FORMAT ('       Compressed data output'/ &
1605            '       Decimal precision: ',A/)
1606339 FORMAT ('       No output during initial ',F8.2,' s')
1607340 FORMAT (/'    Time series:')
1608341 FORMAT ('       Output every             ',F8.2,' s'/)
1609342 FORMAT (/'       ',A2,'-cross-section  Arrays: ',A/ &
1610            '       Output every             ',F8.2,' s  ',A/ &
1611            '       Time averaged over       ',F8.2,' s'/ &
1612            '       Averaging input every    ',F8.2,' s'/ &
1613            '       Cross sections at ',A1,' = ',A/ &
1614            '       scalar-coordinates:   ',A,' m'/)
1615343 FORMAT (/'       Arrays: ',A/ &
1616            '       Output every             ',F8.2,' s  ',A/ &
1617            '       Time averaged over       ',F8.2,' s'/ &
1618            '       Averaging input every    ',F8.2,' s'/ &
1619            '       Upper output limit at    ',F8.2,' m  (GP ',I4,')'/)
[292]1620344 FORMAT ('       Output format: ',A/)
[1]1621#if defined( __dvrp_graphics )
1622360 FORMAT ('    Plot-Sequence with dvrp-software:'/ &
1623            '       Output every      ',F7.1,' s'/ &
1624            '       Output mode:      ',A/ &
1625            '       Host / User:      ',A,' / ',A/ &
1626            '       Directory:        ',A// &
1627            '       The sequence contains:')
[337]1628361 FORMAT (/'       Isosurface of "',A,'"    Threshold value: ', E12.3/ &
1629            '          Isosurface color: (',F4.2,',',F4.2,',',F4.2,') (R,G,B)')
1630362 FORMAT (/'       Slicer plane ',A/ &
[336]1631            '       Slicer limits: [',F6.2,',',F6.2,']')
[337]1632363 FORMAT (/'       Particles'/ &
[336]1633            '          particle size:  ',F7.2,' m')
1634364 FORMAT ('          particle ',A,' controlled by "',A,'" with interval [', &
1635                       F6.2,',',F6.2,']')
[337]1636365 FORMAT (/'       Groundplate color: (',F4.2,',',F4.2,',',F4.2,') (R,G,B)'/ &
[336]1637            '       Superelevation along (x,y,z): (',F4.1,',',F4.1,',',F4.1, &
1638                     ')'/ &
1639            '       Clipping limits: from x = ',F9.1,' m to x = ',F9.1,' m'/ &
1640            '                        from y = ',F9.1,' m to y = ',F9.1,' m')
[337]1641366 FORMAT (/'       Topography color: (',F4.2,',',F4.2,',',F4.2,') (R,G,B)')
[336]1642367 FORMAT ('       Polygon reduction for topography: cluster_size = ', I1)
[1]1643#endif
1644#if defined( __spectra )
1645370 FORMAT ('    Spectra:')
1646371 FORMAT ('       Output every ',F7.1,' s'/)
1647372 FORMAT ('       Arrays:     ', 10(A5,',')/                         &
1648            '       Directions: ', 10(A5,',')/                         &
[189]1649            '       height levels  k = ', 20(I3,',')/                  &
1650            '                          ', 20(I3,',')/                  &
1651            '                          ', 20(I3,',')/                  &
1652            '                          ', 20(I3,',')/                  &
1653            '                          ', 19(I3,','),I3,'.'/           &
[1]1654            '       height levels selected for standard plot:'/        &
[189]1655            '                      k = ', 20(I3,',')/                  &
1656            '                          ', 20(I3,',')/                  &
1657            '                          ', 20(I3,',')/                  &
1658            '                          ', 20(I3,',')/                  &
1659            '                          ', 19(I3,','),I3,'.'/           &
[1]1660            '       Time averaged over ', F7.1, ' s,' /                &
1661            '       Profiles for the time averaging are taken every ', &
1662                    F6.1,' s')
1663#endif
1664400 FORMAT (//' Physical quantities:'/ &
1665              ' -------------------'/)
1666410 FORMAT ('    Angular velocity    :   omega = ',E9.3,' rad/s'/  &
1667            '    Geograph. latitude  :   phi   = ',F4.1,' degr'/   &
1668            '    Coriolis parameter  :   f     = ',F9.6,' 1/s'/    &
1669            '                            f*    = ',F9.6,' 1/s')
1670411 FORMAT (/'    Gravity             :   g     = ',F4.1,' m/s**2')
[97]1671412 FORMAT (/'    Reference density in buoyancy terms: ',F8.3,' kg/m**3')
1672413 FORMAT (/'    Reference temperature in buoyancy terms: ',F8.4,' K')
[57]1673415 FORMAT (/'    Cloud physics parameters:'/ &
[1]1674             '    ------------------------'/)
[57]1675416 FORMAT ('        Surface pressure   :   p_0   = ',F7.2,' hPa'/      &
[1]1676            '        Gas constant       :   R     = ',F5.1,' J/(kg K)'/ &
1677            '        Density of air     :   rho_0 = ',F5.3,' kg/m**3'/  &
1678            '        Specific heat cap. :   c_p   = ',F6.1,' J/(kg K)'/ &
1679            '        Vapourization heat :   L_v   = ',E8.2,' J/kg')
1680420 FORMAT (/'    Characteristic levels of the initial temperature profile:'// &
1681            '       Height:        ',A,'  m'/ &
1682            '       Temperature:   ',A,'  K'/ &
1683            '       Gradient:      ',A,'  K/100m'/ &
1684            '       Gridpoint:     ',A)
1685421 FORMAT (/'    Characteristic levels of the initial humidity profile:'// &
1686            '       Height:      ',A,'  m'/ &
1687            '       Humidity:    ',A,'  kg/kg'/ &
1688            '       Gradient:    ',A,'  (kg/kg)/100m'/ &
1689            '       Gridpoint:   ',A)
1690422 FORMAT (/'    Characteristic levels of the initial scalar profile:'// &
1691            '       Height:                  ',A,'  m'/ &
1692            '       Scalar concentration:    ',A,'  kg/m**3'/ &
1693            '       Gradient:                ',A,'  (kg/m**3)/100m'/ &
1694            '       Gridpoint:               ',A)
1695423 FORMAT (/'    Characteristic levels of the geo. wind component ug:'// &
1696            '       Height:      ',A,'  m'/ &
1697            '       ug:          ',A,'  m/s'/ &
1698            '       Gradient:    ',A,'  1/100s'/ &
1699            '       Gridpoint:   ',A)
1700424 FORMAT (/'    Characteristic levels of the geo. wind component vg:'// &
1701            '       Height:      ',A,'  m'/ &
[97]1702            '       vg:          ',A,'  m/s'/ &
[1]1703            '       Gradient:    ',A,'  1/100s'/ &
1704            '       Gridpoint:   ',A)
[97]1705425 FORMAT (/'    Characteristic levels of the initial salinity profile:'// &
1706            '       Height:     ',A,'  m'/ &
1707            '       Salinity:   ',A,'  psu'/ &
1708            '       Gradient:   ',A,'  psu/100m'/ &
1709            '       Gridpoint:  ',A)
[1]1710450 FORMAT (//' LES / Turbulence quantities:'/ &
1711              ' ---------------------------'/)
1712451 FORMAT ('   Diffusion coefficients are constant:'/ &
1713            '   Km = ',F6.2,' m**2/s   Kh = ',F6.2,' m**2/s   Pr = ',F5.2)
1714452 FORMAT ('   Mixing length is limited to the Prandtl mixing lenth.')
1715453 FORMAT ('   Mixing length is limited to ',F4.2,' * z')
1716454 FORMAT ('   TKE is not allowed to fall below ',E9.2,' (m/s)**2')
[108]1717455 FORMAT ('   initial TKE is prescribed as ',E9.2,' (m/s)**2')
[1]1718470 FORMAT (//' Actions during the simulation:'/ &
1719              ' -----------------------------'/)
[94]1720471 FORMAT ('    Disturbance impulse (u,v) every :   ',F6.2,' s'/            &
1721            '    Disturbance amplitude           :     ',F4.2, ' m/s'/       &
1722            '    Lower disturbance level         : ',F8.2,' m (GP ',I4,')'/  &
1723            '    Upper disturbance level         : ',F8.2,' m (GP ',I4,')')
[1]1724472 FORMAT ('    Disturbances continued during the run from i/j =',I4, &
1725                 ' to i/j =',I4)
1726473 FORMAT ('    Disturbances cease as soon as the disturbance energy exceeds',&
1727                 1X,F5.3, ' m**2/s**2')
1728474 FORMAT ('    Random number generator used    : ',A/)
1729475 FORMAT ('    The surface temperature is increased (or decreased, ', &
1730                 'respectively, if'/ &
1731            '    the value is negative) by ',F5.2,' K at the beginning of the',&
1732                 ' 3D-simulation'/)
1733476 FORMAT ('    The surface humidity is increased (or decreased, ',&
1734                 'respectively, if the'/ &
1735            '    value is negative) by ',E8.1,' kg/kg at the beginning of', &
1736                 ' the 3D-simulation'/)
1737477 FORMAT ('    The scalar value is increased at the surface (or decreased, ',&
1738                 'respectively, if the'/ &
1739            '    value is negative) by ',E8.1,' kg/m**3 at the beginning of', &
1740                 ' the 3D-simulation'/)
1741480 FORMAT ('    Particles:'/ &
1742            '    ---------'// &
1743            '       Particle advection is active (switched on at t = ', F7.1, &
1744                    ' s)'/ &
1745            '       Start of new particle generations every  ',F6.1,' s'/ &
1746            '       Boundary conditions: left/right: ', A, ' north/south: ', A/&
1747            '                            bottom:     ', A, ' top:         ', A/&
1748            '       Maximum particle age:                 ',F9.1,' s'/ &
[117]1749            '       Advection stopped at t = ',F9.1,' s'/ &
1750            '       Particles are sorted every ',F9.1,' s'/)
[1]1751481 FORMAT ('       Particles have random start positions'/)
[336]1752482 FORMAT ('          Particles are advected only horizontally'/)
[1]1753483 FORMAT ('       Particles have tails with a maximum of ',I3,' points')
1754484 FORMAT ('            Number of tails of the total domain: ',I10/ &
1755            '            Minimum distance between tailpoints: ',F8.2,' m'/ &
1756            '            Maximum age of the end of the tail:  ',F8.2,' s')
1757485 FORMAT ('       Particle data are written on file every ', F9.1, ' s')
1758486 FORMAT ('       Particle statistics are written on file'/)
1759487 FORMAT ('       Number of particle groups: ',I2/)
1760488 FORMAT ('       SGS velocity components are used for particle advection'/ &
1761            '          minimum timestep for advection: ', F7.5/)
1762489 FORMAT ('       Number of particles simultaneously released at each ', &
1763                    'point: ', I5/)
1764490 FORMAT ('       Particle group ',I2,':'/ &
1765            '          Particle radius: ',E10.3, 'm')
1766491 FORMAT ('          Particle inertia is activated'/ &
1767            '             density_ratio (rho_fluid/rho_particle) = ',F5.3/)
1768492 FORMAT ('          Particles are advected only passively (no inertia)'/)
1769493 FORMAT ('          Boundaries of particle source: x:',F8.1,' - ',F8.1,' m'/&
1770            '                                         y:',F8.1,' - ',F8.1,' m'/&
1771            '                                         z:',F8.1,' - ',F8.1,' m'/&
1772            '          Particle distances:  dx = ',F8.1,' m  dy = ',F8.1, &
1773                       ' m  dz = ',F8.1,' m'/)
1774494 FORMAT ('       Output of particle time series in NetCDF format every ', &
1775                    F8.2,' s'/)
1776495 FORMAT ('       Number of particles in total domain: ',I10/)
1777500 FORMAT (//' 1D-Model parameters:'/                           &
1778              ' -------------------'//                           &
1779            '    Simulation time:                   ',F8.1,' s'/ &
1780            '    Run-controll output every:         ',F8.1,' s'/ &
1781            '    Vertical profile output every:     ',F8.1,' s'/ &
1782            '    Mixing length calculation:         ',A/         &
1783            '    Dissipation calculation:           ',A/)
1784502 FORMAT ('    Damping layer starts from ',F7.1,' m (GP ',I4,')'/)
1785
1786
1787 END SUBROUTINE header
Note: See TracBrowser for help on using the repository browser.