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

Last change on this file since 4327 was 4309, checked in by suehring, 5 years ago

Synthetic turbulence generator: Computation of velocity seeds optimized. This implies that random numbers are computed now using the parallel random number generator. Random number are now only computed and normalized locally, while distributed over all mpi ranks afterwards, instead of computing random numbers on a global array. urther, the number of calls for the time-consuming velocity-seed generation is reduced - now the left and right, as well as the north and south boundary share the same velocity-seed matrices.

  • Property svn:keywords set to Id
File size: 76.6 KB
RevLine 
[4017]1! !> @file header.f90
[2000]2!------------------------------------------------------------------------------!
[2696]3! This file is part of the PALM model system.
[1036]4!
[2000]5! PALM is free software: you can redistribute it and/or modify it under the
6! terms of the GNU General Public License as published by the Free Software
7! Foundation, either version 3 of the License, or (at your option) any later
8! version.
[1036]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!
[3655]17! Copyright 1997-2019 Leibniz Universitaet Hannover
[2000]18!------------------------------------------------------------------------------!
[1036]19!
[254]20! Current revisions:
[1]21! -----------------
[3589]22!
[4309]23!
[3589]24! Former revisions:
25! -----------------
26! $Id: header.f90 4309 2019-11-26 18:49:59Z Giersch $
[4309]27! replaced recycling_yshift by y_shift
28!
29! 4301 2019-11-22 12:09:09Z oliver.maas
[4301]30!
31! 4297 2019-11-21 10:37:50Z oliver.maas
[4300]32! Adjusted format for simulated time and related quantities
33!
34! 4297 2019-11-21 10:37:50Z oliver.maas
[4297]35! adjusted message to the changed parameter recycling_yshift
36!
37! 4227 2019-09-10 18:04:34Z gronemeier
[4227]38! implement new palm_date_time_mod
39!
40! 4223 2019-09-10 09:20:47Z gronemeier
[4196]41! Write information about rotation angle
42!
43! 4182 2019-08-22 15:20:23Z scharf
[4182]44! Corrected "Former revisions" section
45!
46! 4168 2019-08-16 13:50:17Z suehring
[4168]47! Replace function get_topography_top_index by topo_top_ind
48!
49! 4069 2019-07-01 14:05:51Z Giersch
[4069]50! Masked output running index mid has been introduced as a local variable to
51! avoid runtime error (Loop variable has been modified) in time_integration
52!
53! 4023 2019-06-12 13:20:01Z maronga
[4023]54! Renamed "coupling start time" to "spinup time"
55!
56! 4017 2019-06-06 12:16:46Z schwenkel
[3761]57! unused variable removed
58!
59! 3655 2019-01-07 16:51:22Z knoop
[3637]60! Implementation of the PALM module interface
[3298]61!
[4182]62! Revision 1.1  1997/08/11 06:17:20  raasch
63! Initial revision
64!
65!
[1]66! Description:
67! ------------
[1764]68!> Writing a header with all important information about the current run.
[1682]69!> This subroutine is called three times, two times at the beginning
70!> (writing information on files RUN_CONTROL and HEADER) and one time at the
71!> end of the run, then writing additional information about CPU-usage on file
72!> header.
[411]73!-----------------------------------------------------------------------------!
[1682]74 SUBROUTINE header
75 
[1]76
[1320]77    USE arrays_3d,                                                             &
[2232]78        ONLY:  pt_init, q_init, s_init, sa_init, ug, vg, w_subs, zu, zw
[3274]79
80    USE basic_constants_and_equations_mod,                                     &
[3761]81        ONLY:  g, kappa
[3274]82
83    USE bulk_cloud_model_mod,                                                  &
[3637]84        ONLY:  bulk_cloud_model
[3274]85
[1]86    USE control_parameters
[1849]87
[1320]88    USE cpulog,                                                                &
89        ONLY:  log_point_s
[3298]90
[1320]91    USE grid_variables,                                                        &
92        ONLY:  dx, dy
[2817]93
[1320]94    USE indices,                                                               &
95        ONLY:  mg_loc_ind, nnx, nny, nnz, nx, ny, nxl_mg, nxr_mg, nyn_mg,      &
[4168]96               nys_mg, nzt, nzt_mg, topo_top_ind
[3637]97
[1320]98    USE kinds
[1849]99
[2338]100    USE model_1d_mod,                                                          &
[1320]101        ONLY:  damp_level_ind_1d, dt_pr_1d, dt_run_control_1d, end_time_1d
[2338]102
[3637]103    USE module_interface,                                                      &
104        ONLY:  module_interface_header
105
[1783]106    USE netcdf_interface,                                                      &
107        ONLY:  netcdf_data_format, netcdf_data_format_string, netcdf_deflate
[3448]108
[3294]109    USE ocean_mod,                                                             &
[3637]110        ONLY:  ibc_sa_t, prho_reference, sa_surface,                           &
[3302]111               sa_vertical_gradient, sa_vertical_gradient_level,               &
112               sa_vertical_gradient_level_ind
[3294]113
[4227]114    USE palm_date_time_mod,                                                    &
115        ONLY:  get_date_time
116
[1]117    USE pegrid
[1484]118
[2967]119#if defined( __parallel )
[1791]120    USE pmc_handle_communicator,                                               &
121        ONLY:  pmc_get_model_info
[2967]122#endif
[1791]123
[1764]124    USE pmc_interface,                                                         &
[1797]125        ONLY:  nested_run, nesting_datatransfer_mode, nesting_mode
[1764]126
[2232]127    USE surface_mod,                                                           &
[4168]128        ONLY:  surf_def_h
[2232]129
[3083]130    USE turbulence_closure_mod,                                                &
131        ONLY:  rans_const_c, rans_const_sigma
132
[1]133    IMPLICIT NONE
134
[1320]135   
[3552]136    CHARACTER (LEN=2)  ::  do2d_mode           !< mode of 2D data output (xy, xz, yz)
[1320]137   
[3552]138    CHARACTER (LEN=5)  ::  section_chr         !< string indicating grid information where to output 2D slices
[1320]139   
[3552]140    CHARACTER (LEN=10) ::  coor_chr            !< string for subsidence velocities in large-scale forcing
141    CHARACTER (LEN=10) ::  host_chr            !< string for hostname
[1320]142   
[3552]143    CHARACTER (LEN=16) ::  begin_chr           !< string indication start time for the data output
[1320]144   
[3552]145    CHARACTER (LEN=26) ::  ver_rev             !< string for run identification
[1791]146
[3552]147    CHARACTER (LEN=32) ::  cpl_name            !< name of child domain (nesting mode only)
[1320]148   
[3552]149    CHARACTER (LEN=40) ::  output_format       !< netcdf format
[4017]150       
[3552]151    CHARACTER (LEN=70) ::  char1               !< dummy varialbe used for various strings
152    CHARACTER (LEN=70) ::  char2               !< string containing informating about the advected distance in case of Galilei transformation
[4227]153    CHARACTER (LEN=23) ::  date_time_str       !< string for date and time information
[3552]154    CHARACTER (LEN=70) ::  dopr_chr            !< string indicating profile output variables
155    CHARACTER (LEN=70) ::  do2d_xy             !< string indicating 2D-xy output variables
156    CHARACTER (LEN=70) ::  do2d_xz             !< string indicating 2D-xz output variables
157    CHARACTER (LEN=70) ::  do2d_yz             !< string indicating 2D-yz output variables
158    CHARACTER (LEN=70) ::  do3d_chr            !< string indicating 3D output variables
159    CHARACTER (LEN=70) ::  domask_chr          !< string indicating masked output variables
160    CHARACTER (LEN=70) ::  run_classification  !< string classifying type of run, e.g. nested, coupled, etc.
[1320]161   
[3552]162    CHARACTER (LEN=85) ::  r_upper             !< string indicating model top boundary condition for various quantities
163    CHARACTER (LEN=85) ::  r_lower             !< string indicating bottom boundary condition for various quantities
[1320]164   
[3552]165    CHARACTER (LEN=86) ::  coordinates         !< string indicating height coordinates for profile-prescribed variables
166    CHARACTER (LEN=86) ::  gradients           !< string indicating gradients of profile-prescribed variables between the prescribed height coordinates
167    CHARACTER (LEN=86) ::  slices              !< string indicating grid coordinates of profile-prescribed subsidence velocity
168    CHARACTER (LEN=86) ::  temperatures        !< string indicating profile-prescribed subsidence velocities
169    CHARACTER (LEN=86) ::  ugcomponent         !< string indicating profile-prescribed geostrophic u-component
170    CHARACTER (LEN=86) ::  vgcomponent         !< string indicating profile-prescribed geostrophic v-component
[1]171
[3552]172    CHARACTER (LEN=1), DIMENSION(1:3) ::  dir = (/ 'x', 'y', 'z' /)  !< string indicating masking steps along certain direction
[410]173
[3552]174    INTEGER(iwp) ::  av             !< index indicating average output quantities
175    INTEGER(iwp) ::  bh             !< building height in generic single-building setup
176    INTEGER(iwp) ::  blx            !< building width in grid points along x in generic single-building setup
177    INTEGER(iwp) ::  bly            !< building width in grid points along y in generic single-building setup
178    INTEGER(iwp) ::  bxl            !< index for left building wall in generic single-building setup
179    INTEGER(iwp) ::  bxr            !< index for right building wall in generic single-building setup
180    INTEGER(iwp) ::  byn            !< index for north building wall in generic single-building setup
181    INTEGER(iwp) ::  bys            !< index for south building wall in generic single-building setup
182    INTEGER(iwp) ::  ch             !< canyon depth in generic street-canyon setup
183    INTEGER(iwp) ::  count          !< number of masked output locations
184    INTEGER(iwp) ::  cpl_parent_id  !< parent ID for the respective child model
185    INTEGER(iwp) ::  cwx            !< canyon width along x in generic street-canyon setup
186    INTEGER(iwp) ::  cwy            !< canyon width along y in generic street-canyon setup
187    INTEGER(iwp) ::  cxl            !< index for left canyon wall in generic street-canyon setup
188    INTEGER(iwp) ::  cxr            !< index for right canyon wall in generic street-canyon setup
189    INTEGER(iwp) ::  cyn            !< index for north canyon wall in generic street-canyon setup
190    INTEGER(iwp) ::  cys            !< index for south canyon wall in generic street-canyon setup
191    INTEGER(iwp) ::  dim            !< running index for masking output locations
192    INTEGER(iwp) ::  i              !< running index for various loops
193    INTEGER(iwp) ::  io             !< file unit of HEADER file
194    INTEGER(iwp) ::  l              !< substring length
195    INTEGER(iwp) ::  ll             !< substring length
[4069]196    INTEGER(iwp) ::  mid            !< masked output running index
[3552]197    INTEGER(iwp) ::  my_cpl_id      !< run id in a nested model setup
198    INTEGER(iwp) ::  n              !< running index over number of couplers in a nested model setup
199    INTEGER(iwp) ::  ncpl           !< number of coupler in a nested model setup
200    INTEGER(iwp) ::  npe_total      !< number of total PEs in a coupler (parent + child)
[1320]201   
[1826]202
[3552]203    REAL(wp) ::  cpuseconds_per_simulated_second  !< CPU time (in s) per simulated second
[1791]204    REAL(wp) ::  lower_left_coord_x               !< x-coordinate of nest domain
205    REAL(wp) ::  lower_left_coord_y               !< y-coordinate of nest domain
[1]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
[1551]220!-- new information
[1]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
[1764]226       run_classification = 'restart run'
[328]227    ELSEIF ( TRIM( initializing_actions ) == 'cyclic_fill' )  THEN
[1764]228       run_classification = 'run with cyclic fill of 3D - prerun data'
[147]229    ELSEIF ( INDEX( initializing_actions, 'set_constant_profiles' ) /= 0 )  THEN
[1764]230       run_classification = 'run without 1D - prerun'
[197]231    ELSEIF ( INDEX( initializing_actions, 'set_1d-model_profiles' ) /= 0 )  THEN
[1764]232       run_classification = 'run with 1D - prerun'
[2696]233    ELSEIF ( INDEX( initializing_actions, 'inifor' ) /= 0 )  THEN
234       run_classification = 'run initialized with COSMO data'
[197]235    ELSEIF ( INDEX( initializing_actions, 'by_user' ) /=0 )  THEN
[1764]236       run_classification = 'run initialized by user'
[3045]237    ELSEIF ( INDEX( initializing_actions, 'initialize_vortex' ) /=0 )  THEN
238       run_classification = 'run additionally initialized by a Rankine-vortex'
239    ELSEIF ( INDEX( initializing_actions, 'initialize_ptanom' ) /=0 )  THEN
240       run_classification = 'run additionally initialized by temperature anomaly'
[1]241    ELSE
[254]242       message_string = ' unknown action(s): ' // TRIM( initializing_actions )
243       CALL message( 'header', 'PA0191', 0, 0, 0, 6, 0 )
[1]244    ENDIF
[3241]245    IF ( nested_run )  run_classification = 'nested ' // run_classification(1:63)
[3294]246    IF ( ocean_mode )  THEN
[3241]247       run_classification = 'ocean - ' // run_classification(1:61)
[97]248    ELSE
[3241]249       run_classification = 'atmosphere - ' // run_classification(1:57)
[97]250    ENDIF
[1]251
252!
253!-- Run-identification, date, time, host
254    host_chr = host(1:10)
[75]255    ver_rev = TRIM( version ) // '  ' // TRIM( revision )
[102]256    WRITE ( io, 100 )  ver_rev, TRIM( run_classification )
[291]257    IF ( TRIM( coupling_mode ) /= 'uncoupled' )  THEN
[2298]258       WRITE ( io, 101 )  coupling_mode
[291]259    ENDIF
[1108]260#if defined( __parallel )
[2299]261    IF ( coupling_start_time /= 0.0_wp  .AND. .NOT. spinup )  THEN
[1106]262       IF ( coupling_start_time > simulated_time_at_begin )  THEN
263          WRITE ( io, 109 )
264       ELSE
265          WRITE ( io, 114 )
266       ENDIF
267    ENDIF
[1108]268#endif
[1429]269    IF ( ensemble_member_nr /= 0 )  THEN
270       WRITE ( io, 512 )  run_date, run_identifier, run_time, runnr,           &
271                       ADJUSTR( host_chr ), ensemble_member_nr
272    ELSE
273       WRITE ( io, 102 )  run_date, run_identifier, run_time, runnr,           &
[102]274                       ADJUSTR( host_chr )
[1429]275    ENDIF
[1]276#if defined( __parallel )
[1482]277    IF ( npex == -1  .AND.  npey == -1 )  THEN
[1]278       char1 = 'calculated'
279    ELSE
280       char1 = 'predefined'
281    ENDIF
282    IF ( threads_per_task == 1 )  THEN
[102]283       WRITE ( io, 103 )  numprocs, pdims(1), pdims(2), TRIM( char1 )
[1]284    ELSE
[102]285       WRITE ( io, 104 )  numprocs*threads_per_task, numprocs, &
[1]286                          threads_per_task, pdims(1), pdims(2), TRIM( char1 )
287    ENDIF
[2300]288
289    IF ( pdims(2) == 1 )  THEN
[102]290       WRITE ( io, 107 )  'x'
[1]291    ELSEIF ( pdims(1) == 1 )  THEN
[102]292       WRITE ( io, 107 )  'y'
[1]293    ENDIF
[759]294    IF ( numprocs /= maximum_parallel_io_streams )  THEN
295       WRITE ( io, 108 )  maximum_parallel_io_streams
296    ENDIF
[1]297#endif
[1764]298
299!
300!-- Nesting informations
301    IF ( nested_run )  THEN
[1791]302
[2967]303#if defined( __parallel )
[1797]304       WRITE ( io, 600 )  TRIM( nesting_mode ),                                &
305                          TRIM( nesting_datatransfer_mode )
[1791]306       CALL pmc_get_model_info( ncpl = ncpl, cpl_id = my_cpl_id )
307
308       DO  n = 1, ncpl
309          CALL pmc_get_model_info( request_for_cpl_id = n, cpl_name = cpl_name,&
310                                   cpl_parent_id = cpl_parent_id,              &
311                                   lower_left_x = lower_left_coord_x,          &
312                                   lower_left_y = lower_left_coord_y,          &
313                                   npe_total = npe_total )
314          IF ( n == my_cpl_id )  THEN
315             char1 = '*'
316          ELSE
317             char1 = ' '
318          ENDIF
319          WRITE ( io, 601 )  TRIM( char1 ), n, cpl_parent_id, npe_total,       &
320                             lower_left_coord_x, lower_left_coord_y,           &
321                             TRIM( cpl_name )
322       ENDDO
[2967]323#endif
324
[1764]325    ENDIF
[1]326    WRITE ( io, 99 )
327
328!
329!-- Numerical schemes
330    WRITE ( io, 110 )
[2696]331    IF ( rans_mode )  THEN
332       WRITE ( io, 124 )  TRIM( turbulence_closure ), 'RANS'
333    ELSE
334       WRITE ( io, 124 )  TRIM( turbulence_closure ), 'LES'
335    ENDIF
[2037]336    WRITE ( io, 121 )  TRIM( approximation )
[1]337    IF ( psolver(1:7) == 'poisfft' )  THEN
338       WRITE ( io, 111 )  TRIM( fft_method )
[1216]339       IF ( transpose_compute_overlap )  WRITE( io, 115 )
[1]340    ELSEIF ( psolver == 'sor' )  THEN
341       WRITE ( io, 112 )  nsor_ini, nsor, omega_sor
[1575]342    ELSEIF ( psolver(1:9) == 'multigrid' )  THEN
343       WRITE ( io, 135 )  TRIM(psolver), cycle_mg, maximum_grid_level, ngsrb
[1]344       IF ( mg_cycles == -1 )  THEN
345          WRITE ( io, 140 )  residual_limit
346       ELSE
347          WRITE ( io, 141 )  mg_cycles
348       ENDIF
349       IF ( mg_switch_to_pe0_level == 0 )  THEN
350          WRITE ( io, 136 )  nxr_mg(1)-nxl_mg(1)+1, nyn_mg(1)-nys_mg(1)+1, &
351                             nzt_mg(1)
[197]352       ELSEIF (  mg_switch_to_pe0_level /= -1 )  THEN
[1]353          WRITE ( io, 137 )  mg_switch_to_pe0_level,            &
354                             mg_loc_ind(2,0)-mg_loc_ind(1,0)+1, &
355                             mg_loc_ind(4,0)-mg_loc_ind(3,0)+1, &
356                             nzt_mg(mg_switch_to_pe0_level),    &
357                             nxr_mg(1)-nxl_mg(1)+1, nyn_mg(1)-nys_mg(1)+1, &
358                             nzt_mg(1)
359       ENDIF
[1931]360       IF ( psolver == 'multigrid_noopt' .AND. masking_method )  WRITE ( io, 144 )
[1]361    ENDIF
362    IF ( call_psolver_at_all_substeps  .AND. timestep_scheme(1:5) == 'runge' ) &
363    THEN
364       WRITE ( io, 142 )
365    ENDIF
366
367    IF ( momentum_advec == 'pw-scheme' )  THEN
368       WRITE ( io, 113 )
[1299]369    ELSEIF (momentum_advec == 'ws-scheme' )  THEN
[667]370       WRITE ( io, 503 )
[1]371    ENDIF
372    IF ( scalar_advec == 'pw-scheme' )  THEN
373       WRITE ( io, 116 )
[667]374    ELSEIF ( scalar_advec == 'ws-scheme' )  THEN
375       WRITE ( io, 504 )
[1]376    ELSE
377       WRITE ( io, 118 )
378    ENDIF
[63]379
380    WRITE ( io, 139 )  TRIM( loop_optimization )
381
[1]382    IF ( galilei_transformation )  THEN
383       IF ( use_ug_for_galilei_tr )  THEN
[868]384          char1 = '0.6 * geostrophic wind'
[1]385       ELSE
386          char1 = 'mean wind in model domain'
387       ENDIF
388       IF ( simulated_time_at_begin == simulated_time )  THEN
389          char2 = 'at the start of the run'
390       ELSE
391          char2 = 'at the end of the run'
392       ENDIF
[1353]393       WRITE ( io, 119 )  TRIM( char1 ), TRIM( char2 ),                        &
394                          advected_distance_x/1000.0_wp,                       &
395                          advected_distance_y/1000.0_wp
[1]396    ENDIF
[1001]397    WRITE ( io, 122 )  timestep_scheme
[87]398    IF ( use_upstream_for_tke )  WRITE ( io, 143 )
[1353]399    IF ( rayleigh_damping_factor /= 0.0_wp )  THEN
[3294]400       IF ( .NOT. ocean_mode )  THEN
[108]401          WRITE ( io, 123 )  'above', rayleigh_damping_height, &
402               rayleigh_damping_factor
403       ELSE
404          WRITE ( io, 123 )  'below', rayleigh_damping_height, &
405               rayleigh_damping_factor
406       ENDIF
[1]407    ENDIF
[940]408    IF ( neutral )  WRITE ( io, 131 )  pt_surface
[75]409    IF ( humidity )  THEN
[3274]410       IF ( .NOT. bulk_cloud_model )  THEN
[1]411          WRITE ( io, 129 )
412       ELSE
413          WRITE ( io, 130 )
414       ENDIF
415    ENDIF
416    IF ( passive_scalar )  WRITE ( io, 134 )
[240]417    IF ( conserve_volume_flow )  THEN
[241]418       WRITE ( io, 150 )  conserve_volume_flow_mode
419       IF ( TRIM( conserve_volume_flow_mode ) == 'bulk_velocity' )  THEN
420          WRITE ( io, 151 )  u_bulk, v_bulk
421       ENDIF
[240]422    ELSEIF ( dp_external )  THEN
423       IF ( dp_smooth )  THEN
[241]424          WRITE ( io, 152 )  dpdxy, dp_level_b, ', vertically smoothed.'
[240]425       ELSE
[241]426          WRITE ( io, 152 )  dpdxy, dp_level_b, '.'
[240]427       ENDIF
428    ENDIF
[1]429    WRITE ( io, 99 )
430
431!
[1551]432!-- Runtime and timestep information
[1]433    WRITE ( io, 200 )
434    IF ( .NOT. dt_fixed )  THEN
435       WRITE ( io, 201 )  dt_max, cfl_factor
436    ELSE
437       WRITE ( io, 202 )  dt
438    ENDIF
439    WRITE ( io, 203 )  simulated_time_at_begin, end_time
440
[1322]441    IF ( time_restart /= 9999999.9_wp  .AND. &
[1]442         simulated_time_at_begin == simulated_time )  THEN
[1322]443       IF ( dt_restart == 9999999.9_wp )  THEN
[1]444          WRITE ( io, 204 )  ' Restart at:       ',time_restart
445       ELSE
446          WRITE ( io, 205 )  ' Restart at:       ',time_restart, dt_restart
447       ENDIF
448    ENDIF
449
450    IF ( simulated_time_at_begin /= simulated_time )  THEN
451       i = MAX ( log_point_s(10)%counts, 1 )
[1353]452       IF ( ( simulated_time - simulated_time_at_begin ) == 0.0_wp )  THEN
453          cpuseconds_per_simulated_second = 0.0_wp
[1]454       ELSE
455          cpuseconds_per_simulated_second = log_point_s(10)%sum / &
456                                            ( simulated_time -    &
457                                              simulated_time_at_begin )
458       ENDIF
[1322]459       WRITE ( io, 206 )  simulated_time, log_point_s(10)%sum,      &
460                          log_point_s(10)%sum / REAL( i, KIND=wp ), &
[1]461                          cpuseconds_per_simulated_second
[1322]462       IF ( time_restart /= 9999999.9_wp  .AND.  time_restart < end_time )  THEN
463          IF ( dt_restart == 9999999.9_wp )  THEN
[1106]464             WRITE ( io, 204 )  ' Next restart at:     ',time_restart
[1]465          ELSE
[1106]466             WRITE ( io, 205 )  ' Next restart at:     ',time_restart, dt_restart
[1]467          ENDIF
468       ENDIF
469    ENDIF
470
[1324]471
[1]472!
[291]473!-- Start time for coupled runs, if independent precursor runs for atmosphere
[1106]474!-- and ocean are used or have been used. In this case, coupling_start_time
475!-- defines the time when the coupling is switched on.
[1353]476    IF ( coupling_start_time /= 0.0_wp )  THEN
[1106]477       WRITE ( io, 207 )  coupling_start_time
[291]478    ENDIF
479
480!
[1]481!-- Computational grid
[3294]482    IF ( .NOT. ocean_mode )  THEN
[3065]483       WRITE ( io, 250 )  dx, dy
484       
485       DO i = 1, number_stretch_level_start+1
486          WRITE ( io, 253 )  i, dz(i)
487       ENDDO
488       
489       WRITE( io, 251 ) (nx+1)*dx, (ny+1)*dy, zu(nzt+1)
490       
491       IF ( ANY( dz_stretch_level_start_index < nzt+1 ) )  THEN
492          WRITE( io, '(A)', advance='no') ' Vertical stretching starts at height:'
493          DO i = 1, number_stretch_level_start
494             WRITE ( io, '(F10.1,A3)', advance='no' )  dz_stretch_level_start(i), ' m,'
495          ENDDO
496          WRITE( io, '(/,A)', advance='no') ' Vertical stretching starts at index: '
497          DO i = 1, number_stretch_level_start
498             WRITE ( io, '(I12,A1)', advance='no' )  dz_stretch_level_start_index(i), ','
499          ENDDO
500          WRITE( io, '(/,A)', advance='no') ' Vertical stretching ends at height:  '
501          DO i = 1, number_stretch_level_start
502             WRITE ( io, '(F10.1,A3)', advance='no' )  dz_stretch_level_end(i), ' m,'
503          ENDDO
504          WRITE( io, '(/,A)', advance='no') ' Vertical stretching ends at index:   '
505          DO i = 1, number_stretch_level_start
506             WRITE ( io, '(I12,A1)', advance='no' )  dz_stretch_level_end_index(i), ','
507          ENDDO
508          WRITE( io, '(/,A)', advance='no') ' Factor used for stretching:          '
509          DO i = 1, number_stretch_level_start
510             WRITE ( io, '(F12.3,A1)', advance='no' )  dz_stretch_factor_array(i), ','
511          ENDDO
[94]512       ENDIF
[3065]513       
[94]514    ELSE
[3065]515       WRITE ( io, 250 )  dx, dy
516       DO i = 1, number_stretch_level_start+1
517          WRITE ( io, 253 )  i, dz(i)
518       ENDDO
519       
520       WRITE ( io, 251 ) (nx+1)*dx, (ny+1)*dy, zu(0)
521       
522       IF ( ANY( dz_stretch_level_start_index > 0 ) )  THEN
523          WRITE( io, '(A)', advance='no') ' Vertical stretching starts at height:'
524          DO i = 1, number_stretch_level_start
525             WRITE ( io, '(F10.1,A3)', advance='no' )  dz_stretch_level_start(i), ' m,'
526          ENDDO
527          WRITE( io, '(/,A)', advance='no') ' Vertical stretching starts at index: '
528          DO i = 1, number_stretch_level_start
529             WRITE ( io, '(I12,A1)', advance='no' )  dz_stretch_level_start_index(i), ','
530          ENDDO
531          WRITE( io, '(/,A)', advance='no') ' Vertical stretching ends at height:  '
532          DO i = 1, number_stretch_level_start
533             WRITE ( io, '(F10.1,A3)', advance='no' )  dz_stretch_level_end(i), ' m,'
534          ENDDO
535          WRITE( io, '(/,A)', advance='no') ' Vertical stretching ends at index:   '
536          DO i = 1, number_stretch_level_start
537             WRITE ( io, '(I12,A1)', advance='no' )  dz_stretch_level_end_index(i), ','
538          ENDDO
539          WRITE( io, '(/,A)', advance='no') ' Factor used for stretching:          '
540          DO i = 1, number_stretch_level_start
541             WRITE ( io, '(F12.3,A1)', advance='no' )  dz_stretch_factor_array(i), ','
542          ENDDO
[94]543       ENDIF
[1]544    ENDIF
[3065]545    WRITE ( io, 254 )  nx, ny, nzt+1, MIN( nnx, nx+1 ), MIN( nny, ny+1 ),      &
[1]546                       MIN( nnz+2, nzt+2 )
547    IF ( sloping_surface )  WRITE ( io, 260 )  alpha_surface
548
549!
[1365]550!-- Profile for the large scale vertial velocity
551!-- Building output strings, starting with surface value
552    IF ( large_scale_subsidence )  THEN
553       temperatures = '   0.0'
554       gradients = '------'
555       slices = '     0'
556       coordinates = '   0.0'
557       i = 1
558       DO  WHILE ( subs_vertical_gradient_level_i(i) /= -9999 )
559
560          WRITE (coor_chr,'(E10.2,7X)')  &
561                                w_subs(subs_vertical_gradient_level_i(i))
562          temperatures = TRIM( temperatures ) // ' ' // TRIM( coor_chr )
563
564          WRITE (coor_chr,'(E10.2,7X)')  subs_vertical_gradient(i)
565          gradients = TRIM( gradients ) // ' ' // TRIM( coor_chr )
566
567          WRITE (coor_chr,'(I10,7X)')  subs_vertical_gradient_level_i(i)
568          slices = TRIM( slices ) // ' ' // TRIM( coor_chr )
569
570          WRITE (coor_chr,'(F10.2,7X)')  subs_vertical_gradient_level(i)
571          coordinates = TRIM( coordinates ) // ' '  // TRIM( coor_chr )
572
573          IF ( i == 10 )  THEN
574             EXIT
575          ELSE
576             i = i + 1
577          ENDIF
578
579       ENDDO
580
581 
582       IF ( .NOT. large_scale_forcing )  THEN
583          WRITE ( io, 426 )  TRIM( coordinates ), TRIM( temperatures ), &
584                             TRIM( gradients ), TRIM( slices )
585       ENDIF
586
587
588    ENDIF
589
590!-- Profile of the geostrophic wind (component ug)
591!-- Building output strings
592    WRITE ( ugcomponent, '(F6.2)' )  ug_surface
593    gradients = '------'
594    slices = '     0'
595    coordinates = '   0.0'
596    i = 1
597    DO  WHILE ( ug_vertical_gradient_level_ind(i) /= -9999 )
598     
599       WRITE (coor_chr,'(F6.2,1X)')  ug(ug_vertical_gradient_level_ind(i))
600       ugcomponent = TRIM( ugcomponent ) // '  ' // TRIM( coor_chr )
601
602       WRITE (coor_chr,'(F6.2,1X)')  ug_vertical_gradient(i)
603       gradients = TRIM( gradients ) // '  ' // TRIM( coor_chr )
604
605       WRITE (coor_chr,'(I6,1X)')  ug_vertical_gradient_level_ind(i)
606       slices = TRIM( slices ) // '  ' // TRIM( coor_chr )
607
608       WRITE (coor_chr,'(F6.1,1X)')  ug_vertical_gradient_level(i)
609       coordinates = TRIM( coordinates ) // '  ' // TRIM( coor_chr )
610
611       IF ( i == 10 )  THEN
612          EXIT
613       ELSE
614          i = i + 1
615       ENDIF
616
617    ENDDO
618
619    IF ( .NOT. large_scale_forcing )  THEN
620       WRITE ( io, 423 )  TRIM( coordinates ), TRIM( ugcomponent ), &
621                          TRIM( gradients ), TRIM( slices )
622    ENDIF
623
624!-- Profile of the geostrophic wind (component vg)
625!-- Building output strings
626    WRITE ( vgcomponent, '(F6.2)' )  vg_surface
627    gradients = '------'
628    slices = '     0'
629    coordinates = '   0.0'
630    i = 1
631    DO  WHILE ( vg_vertical_gradient_level_ind(i) /= -9999 )
632
633       WRITE (coor_chr,'(F6.2,1X)')  vg(vg_vertical_gradient_level_ind(i))
634       vgcomponent = TRIM( vgcomponent ) // '  ' // TRIM( coor_chr )
635
636       WRITE (coor_chr,'(F6.2,1X)')  vg_vertical_gradient(i)
637       gradients = TRIM( gradients ) // '  ' // TRIM( coor_chr )
638
639       WRITE (coor_chr,'(I6,1X)')  vg_vertical_gradient_level_ind(i)
640       slices = TRIM( slices ) // '  ' // TRIM( coor_chr )
641
642       WRITE (coor_chr,'(F6.1,1X)')  vg_vertical_gradient_level(i)
643       coordinates = TRIM( coordinates ) // '  ' // TRIM( coor_chr )
644
645       IF ( i == 10 )  THEN
646          EXIT
647       ELSE
648          i = i + 1
649       ENDIF
650 
651    ENDDO
652
653    IF ( .NOT. large_scale_forcing )  THEN
654       WRITE ( io, 424 )  TRIM( coordinates ), TRIM( vgcomponent ), &
655                          TRIM( gradients ), TRIM( slices )
656    ENDIF
657
658!
[1]659!-- Topography
660    WRITE ( io, 270 )  topography
661    SELECT CASE ( TRIM( topography ) )
662
663       CASE ( 'flat' )
664          ! no actions necessary
665
666       CASE ( 'single_building' )
667          blx = INT( building_length_x / dx )
668          bly = INT( building_length_y / dy )
[1675]669          bh  = MINLOC( ABS( zw - building_height ), 1 ) - 1
670          IF ( ABS( zw(bh  ) - building_height ) == &
671               ABS( zw(bh+1) - building_height )    )  bh = bh + 1
[1]672
[1322]673          IF ( building_wall_left == 9999999.9_wp )  THEN
[1]674             building_wall_left = ( nx + 1 - blx ) / 2 * dx
675          ENDIF
[1353]676          bxl = INT ( building_wall_left / dx + 0.5_wp )
[1]677          bxr = bxl + blx
678
[1322]679          IF ( building_wall_south == 9999999.9_wp )  THEN
[1]680             building_wall_south = ( ny + 1 - bly ) / 2 * dy
681          ENDIF
[1353]682          bys = INT ( building_wall_south / dy + 0.5_wp )
[1]683          byn = bys + bly
684
685          WRITE ( io, 271 )  building_length_x, building_length_y, &
686                             building_height, bxl, bxr, bys, byn
687
[240]688       CASE ( 'single_street_canyon' )
[1675]689          ch  = MINLOC( ABS( zw - canyon_height ), 1 ) - 1
690          IF ( ABS( zw(ch  ) - canyon_height ) == &
691               ABS( zw(ch+1) - canyon_height )    )  ch = ch + 1
[1322]692          IF ( canyon_width_x /= 9999999.9_wp )  THEN
[240]693!
694!--          Street canyon in y direction
695             cwx = NINT( canyon_width_x / dx )
[1322]696             IF ( canyon_wall_left == 9999999.9_wp )  THEN
[240]697                canyon_wall_left = ( nx + 1 - cwx ) / 2 * dx
698             ENDIF
699             cxl = NINT( canyon_wall_left / dx )
700             cxr = cxl + cwx
701             WRITE ( io, 272 )  'y', canyon_height, ch, 'u', cxl, cxr
702
[1322]703          ELSEIF ( canyon_width_y /= 9999999.9_wp )  THEN
[240]704!
705!--          Street canyon in x direction
706             cwy = NINT( canyon_width_y / dy )
[1322]707             IF ( canyon_wall_south == 9999999.9_wp )  THEN
[240]708                canyon_wall_south = ( ny + 1 - cwy ) / 2 * dy
709             ENDIF
710             cys = NINT( canyon_wall_south / dy )
711             cyn = cys + cwy
712             WRITE ( io, 272 )  'x', canyon_height, ch, 'v', cys, cyn
713          ENDIF
714
[2232]715       CASE ( 'tunnel' )
716          IF ( tunnel_width_x /= 9999999.9_wp )  THEN
717!
718!--          Tunnel axis in y direction
719             IF ( tunnel_length == 9999999.9_wp  .OR.                          &
720                  tunnel_length >= ( nx + 1 ) * dx )  THEN
721                WRITE ( io, 273 )  'y', tunnel_height, tunnel_wall_depth,      &
722                                        tunnel_width_x
723             ELSE
724                WRITE ( io, 274 )  'y', tunnel_height, tunnel_wall_depth,      &
725                                        tunnel_width_x, tunnel_length
726             ENDIF
727
728          ELSEIF ( tunnel_width_y /= 9999999.9_wp )  THEN
729!
730!--          Tunnel axis in x direction
731             IF ( tunnel_length == 9999999.9_wp  .OR.                          &
732                  tunnel_length >= ( ny + 1 ) * dy )  THEN
733                WRITE ( io, 273 )  'x', tunnel_height, tunnel_wall_depth,      &
734                                        tunnel_width_y
735             ELSE
736                WRITE ( io, 274 )  'x', tunnel_height, tunnel_wall_depth,      &
737                                        tunnel_width_y, tunnel_length
738             ENDIF
739          ENDIF
740
[1]741    END SELECT
742
[256]743    IF ( TRIM( topography ) /= 'flat' )  THEN
744       IF ( TRIM( topography_grid_convention ) == ' ' )  THEN
745          IF ( TRIM( topography ) == 'single_building' .OR.  &
746               TRIM( topography ) == 'single_street_canyon' )  THEN
747             WRITE ( io, 278 )
748          ELSEIF ( TRIM( topography ) == 'read_from_file' )  THEN
749             WRITE ( io, 279 )
750          ENDIF
751       ELSEIF ( TRIM( topography_grid_convention ) == 'cell_edge' )  THEN
752          WRITE ( io, 278 )
753       ELSEIF ( TRIM( topography_grid_convention ) == 'cell_center' )  THEN
754          WRITE ( io, 279 )
755       ENDIF
756    ENDIF
757
[2550]758!-- Complex terrain
759    IF ( complex_terrain )  THEN
760       WRITE( io, 280 ) 
761       IF ( turbulent_inflow )  THEN
[4168]762          WRITE( io, 281 )  zu(topo_top_ind(0,0,0))
[2550]763       ENDIF
764       IF ( TRIM( initializing_actions ) == 'cyclic_fill' )  THEN
765          WRITE( io, 282 )
766       ENDIF
767    ENDIF
[3302]768!
[1]769!-- Boundary conditions
770    IF ( ibc_p_b == 0 )  THEN
[1826]771       r_lower = 'p(0)     = 0      |'
[1]772    ELSEIF ( ibc_p_b == 1 )  THEN
[1826]773       r_lower = 'p(0)     = p(1)   |'
[1]774    ENDIF
775    IF ( ibc_p_t == 0 )  THEN
[1826]776       r_upper  = 'p(nzt+1) = 0      |'
[1]777    ELSE
[1826]778       r_upper  = 'p(nzt+1) = p(nzt) |'
[1]779    ENDIF
780
781    IF ( ibc_uv_b == 0 )  THEN
[1826]782       r_lower = TRIM( r_lower ) // ' uv(0)     = -uv(1)                |'
[1]783    ELSE
[1826]784       r_lower = TRIM( r_lower ) // ' uv(0)     = uv(1)                 |'
[1]785    ENDIF
[132]786    IF ( TRIM( bc_uv_t ) == 'dirichlet_0' )  THEN
[1826]787       r_upper  = TRIM( r_upper  ) // ' uv(nzt+1) = 0                     |'
[132]788    ELSEIF ( ibc_uv_t == 0 )  THEN
[1826]789       r_upper  = TRIM( r_upper  ) // ' uv(nzt+1) = ug(nzt+1), vg(nzt+1)  |'
[1]790    ELSE
[1826]791       r_upper  = TRIM( r_upper  ) // ' uv(nzt+1) = uv(nzt)               |'
[1]792    ENDIF
793
794    IF ( ibc_pt_b == 0 )  THEN
[1551]795       IF ( land_surface )  THEN
[1826]796          r_lower = TRIM( r_lower ) // ' pt(0)     = from soil model'
[1551]797       ELSE
[1826]798          r_lower = TRIM( r_lower ) // ' pt(0)     = pt_surface'
[1551]799       ENDIF
[102]800    ELSEIF ( ibc_pt_b == 1 )  THEN
[1826]801       r_lower = TRIM( r_lower ) // ' pt(0)     = pt(1)'
[102]802    ELSEIF ( ibc_pt_b == 2 )  THEN
[1826]803       r_lower = TRIM( r_lower ) // ' pt(0)     = from coupled model'
[1]804    ENDIF
805    IF ( ibc_pt_t == 0 )  THEN
[1826]806       r_upper  = TRIM( r_upper  ) // ' pt(nzt+1) = pt_top'
[19]807    ELSEIF( ibc_pt_t == 1 )  THEN
[1826]808       r_upper  = TRIM( r_upper  ) // ' pt(nzt+1) = pt(nzt)'
[19]809    ELSEIF( ibc_pt_t == 2 )  THEN
[1826]810       r_upper  = TRIM( r_upper  ) // ' pt(nzt+1) = pt(nzt) + dpt/dz_ini'
[667]811
[1]812    ENDIF
813
[1826]814    WRITE ( io, 300 )  r_lower, r_upper
[1]815
816    IF ( .NOT. constant_diffusion )  THEN
817       IF ( ibc_e_b == 1 )  THEN
[1826]818          r_lower = 'e(0)     = e(1)'
[1]819       ELSE
[1826]820          r_lower = 'e(0)     = e(1) = (u*/0.1)**2'
[1]821       ENDIF
[1826]822       r_upper = 'e(nzt+1) = e(nzt) = e(nzt-1)'
[1]823
[1826]824       WRITE ( io, 301 )  'e', r_lower, r_upper       
[1]825
826    ENDIF
827
[3294]828    IF ( ocean_mode )  THEN
[1826]829       r_lower = 'sa(0)    = sa(1)'
[97]830       IF ( ibc_sa_t == 0 )  THEN
[1826]831          r_upper =  'sa(nzt+1) = sa_surface'
[1]832       ELSE
[1826]833          r_upper =  'sa(nzt+1) = sa(nzt)'
[1]834       ENDIF
[1826]835       WRITE ( io, 301 ) 'sa', r_lower, r_upper
[97]836    ENDIF
[1]837
[97]838    IF ( humidity )  THEN
839       IF ( ibc_q_b == 0 )  THEN
[1551]840          IF ( land_surface )  THEN
[1826]841             r_lower = 'q(0)     = from soil model'
[1551]842          ELSE
[1826]843             r_lower = 'q(0)     = q_surface'
[1551]844          ENDIF
845
[97]846       ELSE
[1992]847          r_lower = 'q(0)      = q(1)'
[97]848       ENDIF
849       IF ( ibc_q_t == 0 )  THEN
[1992]850          r_upper =  'q(nzt+1) = q_top'
[97]851       ELSE
[1992]852          r_upper =  'q(nzt+1) = q(nzt) + dq/dz'
[97]853       ENDIF
[1826]854       WRITE ( io, 301 ) 'q', r_lower, r_upper
[97]855    ENDIF
[1]856
[97]857    IF ( passive_scalar )  THEN
[1960]858       IF ( ibc_s_b == 0 )  THEN
[1992]859          r_lower = 's(0)      = s_surface'
[97]860       ELSE
[1992]861          r_lower = 's(0)      = s(1)'
[97]862       ENDIF
[1960]863       IF ( ibc_s_t == 0 )  THEN
[1992]864          r_upper =  's(nzt+1) = s_top'
865       ELSEIF ( ibc_s_t == 1 )  THEN
866          r_upper =  's(nzt+1) = s(nzt)'
867       ELSEIF ( ibc_s_t == 2 )  THEN
868          r_upper =  's(nzt+1) = s(nzt) + ds/dz'
[97]869       ENDIF
[1826]870       WRITE ( io, 301 ) 's', r_lower, r_upper
[1]871    ENDIF
872
873    IF ( use_surface_fluxes )  THEN
874       WRITE ( io, 303 )
875       IF ( constant_heatflux )  THEN
[1299]876          IF ( large_scale_forcing .AND. lsf_surf )  THEN
[2232]877             IF ( surf_def_h(0)%ns >= 1 )  WRITE ( io, 306 )  surf_def_h(0)%shf(1)
[1241]878          ELSE
879             WRITE ( io, 306 )  surface_heatflux
880          ENDIF
[1]881          IF ( random_heatflux )  WRITE ( io, 307 )
882       ENDIF
[75]883       IF ( humidity  .AND.  constant_waterflux )  THEN
[1299]884          IF ( large_scale_forcing .AND. lsf_surf )  THEN
[2232]885             WRITE ( io, 311 ) surf_def_h(0)%qsws(1)
[1241]886          ELSE
887             WRITE ( io, 311 ) surface_waterflux
888          ENDIF
[1]889       ENDIF
[1960]890       IF ( passive_scalar  .AND.  constant_scalarflux )  THEN
891          WRITE ( io, 313 ) surface_scalarflux
[1]892       ENDIF
893    ENDIF
894
[19]895    IF ( use_top_fluxes )  THEN
896       WRITE ( io, 304 )
[102]897       IF ( coupling_mode == 'uncoupled' )  THEN
[151]898          WRITE ( io, 320 )  top_momentumflux_u, top_momentumflux_v
[102]899          IF ( constant_top_heatflux )  THEN
900             WRITE ( io, 306 )  top_heatflux
901          ENDIF
902       ELSEIF ( coupling_mode == 'ocean_to_atmosphere' )  THEN
903          WRITE ( io, 316 )
[19]904       ENDIF
[3294]905       IF ( ocean_mode  .AND.  constant_top_salinityflux )                          &
[97]906          WRITE ( io, 309 )  top_salinityflux
[1960]907       IF ( humidity       )  WRITE ( io, 315 )
[1992]908       IF ( passive_scalar .AND.  constant_top_scalarflux )                    &
909          WRITE ( io, 302 ) top_scalarflux
[19]910    ENDIF
911
[1691]912    IF ( constant_flux_layer )  THEN
913       WRITE ( io, 305 )  (zu(1)-zu(0)), roughness_length,                     &
914                          z0h_factor*roughness_length, kappa,                  &
915                          zeta_min, zeta_max
[1]916       IF ( .NOT. constant_heatflux )  WRITE ( io, 308 )
[75]917       IF ( humidity  .AND.  .NOT. constant_waterflux )  THEN
[1]918          WRITE ( io, 312 )
919       ENDIF
[1960]920       IF ( passive_scalar  .AND.  .NOT. constant_scalarflux )  THEN
[1]921          WRITE ( io, 314 )
922       ENDIF
923    ELSE
924       IF ( INDEX(initializing_actions, 'set_1d-model_profiles') /= 0 )  THEN
[1691]925          WRITE ( io, 310 )  zeta_min, zeta_max
[1]926       ENDIF
927    ENDIF
928
929    WRITE ( io, 317 )  bc_lr, bc_ns
[707]930    IF ( .NOT. bc_lr_cyc  .OR.  .NOT. bc_ns_cyc )  THEN
[1159]931       WRITE ( io, 318 )  use_cmax, pt_damping_width, pt_damping_factor       
[151]932       IF ( turbulent_inflow )  THEN
[4301]933          IF ( y_shift == 0 ) THEN
[1560]934             WRITE ( io, 319 )  recycling_width, recycling_plane, &
935                                inflow_damping_height, inflow_damping_width
936          ELSE
[4301]937             WRITE ( io, 322 )  y_shift, recycling_width, recycling_plane, &
[1560]938                                inflow_damping_height, inflow_damping_width
939          END IF
[151]940       ENDIF
[2050]941       IF ( turbulent_outflow )  THEN
942          WRITE ( io, 323 )  outflow_source_plane, INT(outflow_source_plane/dx)
943       ENDIF
[1]944    ENDIF
945
946!
[1365]947!-- Initial Profiles
948    WRITE ( io, 321 )
949!
950!-- Initial wind profiles
951    IF ( u_profile(1) /= 9999999.9_wp )  WRITE ( io, 427 )
952
953!
954!-- Initial temperature profile
955!-- Building output strings, starting with surface temperature
956    WRITE ( temperatures, '(F6.2)' )  pt_surface
957    gradients = '------'
958    slices = '     0'
959    coordinates = '   0.0'
960    i = 1
961    DO  WHILE ( pt_vertical_gradient_level_ind(i) /= -9999 )
962
963       WRITE (coor_chr,'(F7.2)')  pt_init(pt_vertical_gradient_level_ind(i))
964       temperatures = TRIM( temperatures ) // ' ' // TRIM( coor_chr )
965
966       WRITE (coor_chr,'(F7.2)')  pt_vertical_gradient(i)
967       gradients = TRIM( gradients ) // ' ' // TRIM( coor_chr )
968
969       WRITE (coor_chr,'(I7)')  pt_vertical_gradient_level_ind(i)
970       slices = TRIM( slices ) // ' ' // TRIM( coor_chr )
971
972       WRITE (coor_chr,'(F7.1)')  pt_vertical_gradient_level(i)
973       coordinates = TRIM( coordinates ) // ' '  // TRIM( coor_chr )
974
975       IF ( i == 10 )  THEN
976          EXIT
977       ELSE
978          i = i + 1
979       ENDIF
980
981    ENDDO
982
983    IF ( .NOT. nudging )  THEN
984       WRITE ( io, 420 )  TRIM( coordinates ), TRIM( temperatures ), &
985                          TRIM( gradients ), TRIM( slices )
986    ELSE
987       WRITE ( io, 428 ) 
988    ENDIF
989
990!
991!-- Initial humidity profile
992!-- Building output strings, starting with surface humidity
[1960]993    IF ( humidity )  THEN
[1365]994       WRITE ( temperatures, '(E8.1)' )  q_surface
995       gradients = '--------'
996       slices = '       0'
997       coordinates = '     0.0'
998       i = 1
999       DO  WHILE ( q_vertical_gradient_level_ind(i) /= -9999 )
1000         
1001          WRITE (coor_chr,'(E8.1,4X)')  q_init(q_vertical_gradient_level_ind(i))
1002          temperatures = TRIM( temperatures ) // '  ' // TRIM( coor_chr )
1003
1004          WRITE (coor_chr,'(E8.1,4X)')  q_vertical_gradient(i)
1005          gradients = TRIM( gradients ) // '  ' // TRIM( coor_chr )
1006         
1007          WRITE (coor_chr,'(I8,4X)')  q_vertical_gradient_level_ind(i)
1008          slices = TRIM( slices ) // '  ' // TRIM( coor_chr )
1009         
1010          WRITE (coor_chr,'(F8.1,4X)')  q_vertical_gradient_level(i)
1011          coordinates = TRIM( coordinates ) // '  '  // TRIM( coor_chr )
1012
1013          IF ( i == 10 )  THEN
1014             EXIT
1015          ELSE
1016             i = i + 1
1017          ENDIF
1018
1019       ENDDO
1020
[1960]1021       IF ( .NOT. nudging )  THEN
1022          WRITE ( io, 421 )  TRIM( coordinates ), TRIM( temperatures ),        &
[1365]1023                             TRIM( gradients ), TRIM( slices )
1024       ENDIF
1025    ENDIF
[1960]1026!
1027!-- Initial scalar profile
1028!-- Building output strings, starting with surface humidity
1029    IF ( passive_scalar )  THEN
1030       WRITE ( temperatures, '(E8.1)' )  s_surface
1031       gradients = '--------'
1032       slices = '       0'
1033       coordinates = '     0.0'
1034       i = 1
1035       DO  WHILE ( s_vertical_gradient_level_ind(i) /= -9999 )
1036         
[2073]1037          WRITE (coor_chr,'(E8.1,4X)')  s_init(s_vertical_gradient_level_ind(i))
[1960]1038          temperatures = TRIM( temperatures ) // '  ' // TRIM( coor_chr )
[1365]1039
[1960]1040          WRITE (coor_chr,'(E8.1,4X)')  s_vertical_gradient(i)
1041          gradients = TRIM( gradients ) // '  ' // TRIM( coor_chr )
1042         
1043          WRITE (coor_chr,'(I8,4X)')  s_vertical_gradient_level_ind(i)
1044          slices = TRIM( slices ) // '  ' // TRIM( coor_chr )
1045         
1046          WRITE (coor_chr,'(F8.1,4X)')  s_vertical_gradient_level(i)
1047          coordinates = TRIM( coordinates ) // '  '  // TRIM( coor_chr )
1048
1049          IF ( i == 10 )  THEN
1050             EXIT
1051          ELSE
1052             i = i + 1
1053          ENDIF
1054
1055       ENDDO
1056
1057       WRITE ( io, 422 )  TRIM( coordinates ), TRIM( temperatures ),           &
1058                          TRIM( gradients ), TRIM( slices )
1059    ENDIF   
1060
[1365]1061!
1062!-- Initial salinity profile
1063!-- Building output strings, starting with surface salinity
[3294]1064    IF ( ocean_mode )  THEN
[1365]1065       WRITE ( temperatures, '(F6.2)' )  sa_surface
1066       gradients = '------'
1067       slices = '     0'
1068       coordinates = '   0.0'
1069       i = 1
1070       DO  WHILE ( sa_vertical_gradient_level_ind(i) /= -9999 )
1071
1072          WRITE (coor_chr,'(F7.2)')  sa_init(sa_vertical_gradient_level_ind(i))
1073          temperatures = TRIM( temperatures ) // ' ' // TRIM( coor_chr )
1074
1075          WRITE (coor_chr,'(F7.2)')  sa_vertical_gradient(i)
1076          gradients = TRIM( gradients ) // ' ' // TRIM( coor_chr )
1077
1078          WRITE (coor_chr,'(I7)')  sa_vertical_gradient_level_ind(i)
1079          slices = TRIM( slices ) // ' ' // TRIM( coor_chr )
1080
1081          WRITE (coor_chr,'(F7.1)')  sa_vertical_gradient_level(i)
1082          coordinates = TRIM( coordinates ) // ' '  // TRIM( coor_chr )
1083
1084          IF ( i == 10 )  THEN
1085             EXIT
1086          ELSE
1087             i = i + 1
1088          ENDIF
1089
1090       ENDDO
1091
1092       WRITE ( io, 425 )  TRIM( coordinates ), TRIM( temperatures ), &
1093                          TRIM( gradients ), TRIM( slices )
1094    ENDIF
1095
1096
1097!
[1]1098!-- Listing of 1D-profiles
[151]1099    WRITE ( io, 325 )  dt_dopr_listing
[1353]1100    IF ( averaging_interval_pr /= 0.0_wp )  THEN
[151]1101       WRITE ( io, 326 )  averaging_interval_pr, dt_averaging_input_pr
[1]1102    ENDIF
1103
1104!
1105!-- DATA output
1106    WRITE ( io, 330 )
[1353]1107    IF ( averaging_interval_pr /= 0.0_wp )  THEN
[151]1108       WRITE ( io, 326 )  averaging_interval_pr, dt_averaging_input_pr
[1]1109    ENDIF
1110
1111!
1112!-- 1D-profiles
[346]1113    dopr_chr = 'Profile:'
[1]1114    IF ( dopr_n /= 0 )  THEN
1115       WRITE ( io, 331 )
1116
1117       output_format = ''
[1783]1118       output_format = netcdf_data_format_string
1119       IF ( netcdf_deflate == 0 )  THEN
1120          WRITE ( io, 344 )  output_format
1121       ELSE
1122          WRITE ( io, 354 )  TRIM( output_format ), netcdf_deflate
1123       ENDIF
[1]1124
1125       DO  i = 1, dopr_n
1126          dopr_chr = TRIM( dopr_chr ) // ' ' // TRIM( data_output_pr(i) ) // ','
1127          IF ( LEN_TRIM( dopr_chr ) >= 60 )  THEN
1128             WRITE ( io, 332 )  dopr_chr
1129             dopr_chr = '       :'
1130          ENDIF
1131       ENDDO
1132
1133       IF ( dopr_chr /= '' )  THEN
1134          WRITE ( io, 332 )  dopr_chr
1135       ENDIF
1136       WRITE ( io, 333 )  dt_dopr, averaging_interval_pr, dt_averaging_input_pr
[1353]1137       IF ( skip_time_dopr /= 0.0_wp )  WRITE ( io, 339 )  skip_time_dopr
[1]1138    ENDIF
1139
1140!
1141!-- 2D-arrays
1142    DO  av = 0, 1
1143
1144       i = 1
1145       do2d_xy = ''
1146       do2d_xz = ''
1147       do2d_yz = ''
1148       DO  WHILE ( do2d(av,i) /= ' ' )
1149
1150          l = MAX( 2, LEN_TRIM( do2d(av,i) ) )
1151          do2d_mode = do2d(av,i)(l-1:l)
1152
1153          SELECT CASE ( do2d_mode )
1154             CASE ( 'xy' )
1155                ll = LEN_TRIM( do2d_xy )
1156                do2d_xy = do2d_xy(1:ll) // ' ' // do2d(av,i)(1:l-3) // ','
1157             CASE ( 'xz' )
1158                ll = LEN_TRIM( do2d_xz )
1159                do2d_xz = do2d_xz(1:ll) // ' ' // do2d(av,i)(1:l-3) // ','
1160             CASE ( 'yz' )
1161                ll = LEN_TRIM( do2d_yz )
1162                do2d_yz = do2d_yz(1:ll) // ' ' // do2d(av,i)(1:l-3) // ','
1163          END SELECT
1164
1165          i = i + 1
1166
1167       ENDDO
1168
1169       IF ( ( ( do2d_xy /= ''  .AND.  section(1,1) /= -9999 )  .OR.    &
1170              ( do2d_xz /= ''  .AND.  section(1,2) /= -9999 )  .OR.    &
[1327]1171              ( do2d_yz /= ''  .AND.  section(1,3) /= -9999 ) ) )  THEN
[1]1172
1173          IF (  av == 0 )  THEN
1174             WRITE ( io, 334 )  ''
1175          ELSE
1176             WRITE ( io, 334 )  '(time-averaged)'
1177          ENDIF
1178
1179          IF ( do2d_at_begin )  THEN
1180             begin_chr = 'and at the start'
1181          ELSE
1182             begin_chr = ''
1183          ENDIF
1184
1185          output_format = ''
[1783]1186          output_format = netcdf_data_format_string
1187          IF ( netcdf_deflate == 0 )  THEN
1188             WRITE ( io, 344 )  output_format
1189          ELSE
1190             WRITE ( io, 354 )  TRIM( output_format ), netcdf_deflate
1191          ENDIF
[1]1192
1193          IF ( do2d_xy /= ''  .AND.  section(1,1) /= -9999 )  THEN
1194             i = 1
1195             slices = '/'
1196             coordinates = '/'
1197!
[1551]1198!--          Building strings with index and coordinate information of the
[1]1199!--          slices
1200             DO  WHILE ( section(i,1) /= -9999 )
1201
1202                WRITE (section_chr,'(I5)')  section(i,1)
1203                section_chr = ADJUSTL( section_chr )
1204                slices = TRIM( slices ) // TRIM( section_chr ) // '/'
1205
[206]1206                IF ( section(i,1) == -1 )  THEN
[1353]1207                   WRITE (coor_chr,'(F10.1)')  -1.0_wp
[206]1208                ELSE
1209                   WRITE (coor_chr,'(F10.1)')  zu(section(i,1))
1210                ENDIF
[1]1211                coor_chr = ADJUSTL( coor_chr )
1212                coordinates = TRIM( coordinates ) // TRIM( coor_chr ) // '/'
1213
1214                i = i + 1
1215             ENDDO
1216             IF ( av == 0 )  THEN
1217                WRITE ( io, 335 )  'XY', do2d_xy, dt_do2d_xy, &
1218                                   TRIM( begin_chr ), 'k', TRIM( slices ), &
1219                                   TRIM( coordinates )
[1353]1220                IF ( skip_time_do2d_xy /= 0.0_wp )  THEN
[1]1221                   WRITE ( io, 339 )  skip_time_do2d_xy
1222                ENDIF
1223             ELSE
1224                WRITE ( io, 342 )  'XY', do2d_xy, dt_data_output_av, &
1225                                   TRIM( begin_chr ), averaging_interval, &
1226                                   dt_averaging_input, 'k', TRIM( slices ), &
1227                                   TRIM( coordinates )
[1353]1228                IF ( skip_time_data_output_av /= 0.0_wp )  THEN
[1]1229                   WRITE ( io, 339 )  skip_time_data_output_av
1230                ENDIF
1231             ENDIF
[1308]1232             IF ( netcdf_data_format > 4 )  THEN
1233                WRITE ( io, 352 )  ntdim_2d_xy(av)
1234             ELSE
1235                WRITE ( io, 353 )
1236             ENDIF
[1]1237          ENDIF
1238
1239          IF ( do2d_xz /= ''  .AND.  section(1,2) /= -9999 )  THEN
1240             i = 1
1241             slices = '/'
1242             coordinates = '/'
1243!
[1551]1244!--          Building strings with index and coordinate information of the
[1]1245!--          slices
1246             DO  WHILE ( section(i,2) /= -9999 )
1247
1248                WRITE (section_chr,'(I5)')  section(i,2)
1249                section_chr = ADJUSTL( section_chr )
1250                slices = TRIM( slices ) // TRIM( section_chr ) // '/'
1251
1252                WRITE (coor_chr,'(F10.1)')  section(i,2) * dy
1253                coor_chr = ADJUSTL( coor_chr )
1254                coordinates = TRIM( coordinates ) // TRIM( coor_chr ) // '/'
1255
1256                i = i + 1
1257             ENDDO
1258             IF ( av == 0 )  THEN
1259                WRITE ( io, 335 )  'XZ', do2d_xz, dt_do2d_xz, &
1260                                   TRIM( begin_chr ), 'j', TRIM( slices ), &
1261                                   TRIM( coordinates )
[1353]1262                IF ( skip_time_do2d_xz /= 0.0_wp )  THEN
[1]1263                   WRITE ( io, 339 )  skip_time_do2d_xz
1264                ENDIF
1265             ELSE
1266                WRITE ( io, 342 )  'XZ', do2d_xz, dt_data_output_av, &
1267                                   TRIM( begin_chr ), averaging_interval, &
1268                                   dt_averaging_input, 'j', TRIM( slices ), &
1269                                   TRIM( coordinates )
[1353]1270                IF ( skip_time_data_output_av /= 0.0_wp )  THEN
[1]1271                   WRITE ( io, 339 )  skip_time_data_output_av
1272                ENDIF
1273             ENDIF
[1308]1274             IF ( netcdf_data_format > 4 )  THEN
1275                WRITE ( io, 352 )  ntdim_2d_xz(av)
1276             ELSE
1277                WRITE ( io, 353 )
1278             ENDIF
[1]1279          ENDIF
1280
1281          IF ( do2d_yz /= ''  .AND.  section(1,3) /= -9999 )  THEN
1282             i = 1
1283             slices = '/'
1284             coordinates = '/'
1285!
[1551]1286!--          Building strings with index and coordinate information of the
[1]1287!--          slices
1288             DO  WHILE ( section(i,3) /= -9999 )
1289
1290                WRITE (section_chr,'(I5)')  section(i,3)
1291                section_chr = ADJUSTL( section_chr )
1292                slices = TRIM( slices ) // TRIM( section_chr ) // '/'
1293
1294                WRITE (coor_chr,'(F10.1)')  section(i,3) * dx
1295                coor_chr = ADJUSTL( coor_chr )
1296                coordinates = TRIM( coordinates ) // TRIM( coor_chr ) // '/'
1297
1298                i = i + 1
1299             ENDDO
1300             IF ( av == 0 )  THEN
1301                WRITE ( io, 335 )  'YZ', do2d_yz, dt_do2d_yz, &
1302                                   TRIM( begin_chr ), 'i', TRIM( slices ), &
1303                                   TRIM( coordinates )
[1353]1304                IF ( skip_time_do2d_yz /= 0.0_wp )  THEN
[1]1305                   WRITE ( io, 339 )  skip_time_do2d_yz
1306                ENDIF
1307             ELSE
1308                WRITE ( io, 342 )  'YZ', do2d_yz, dt_data_output_av, &
1309                                   TRIM( begin_chr ), averaging_interval, &
1310                                   dt_averaging_input, 'i', TRIM( slices ), &
1311                                   TRIM( coordinates )
[1353]1312                IF ( skip_time_data_output_av /= 0.0_wp )  THEN
[1]1313                   WRITE ( io, 339 )  skip_time_data_output_av
1314                ENDIF
1315             ENDIF
[1308]1316             IF ( netcdf_data_format > 4 )  THEN
1317                WRITE ( io, 352 )  ntdim_2d_yz(av)
1318             ELSE
1319                WRITE ( io, 353 )
1320             ENDIF
[1]1321          ENDIF
1322
1323       ENDIF
1324
1325    ENDDO
1326
1327!
1328!-- 3d-arrays
1329    DO  av = 0, 1
1330
1331       i = 1
1332       do3d_chr = ''
1333       DO  WHILE ( do3d(av,i) /= ' ' )
1334
1335          do3d_chr = TRIM( do3d_chr ) // ' ' // TRIM( do3d(av,i) ) // ','
1336          i = i + 1
1337
1338       ENDDO
1339
1340       IF ( do3d_chr /= '' )  THEN
1341          IF ( av == 0 )  THEN
1342             WRITE ( io, 336 )  ''
1343          ELSE
1344             WRITE ( io, 336 )  '(time-averaged)'
1345          ENDIF
1346
[1783]1347          output_format = netcdf_data_format_string
1348          IF ( netcdf_deflate == 0 )  THEN
1349             WRITE ( io, 344 )  output_format
1350          ELSE
1351             WRITE ( io, 354 )  TRIM( output_format ), netcdf_deflate
1352          ENDIF
[1]1353
1354          IF ( do3d_at_begin )  THEN
1355             begin_chr = 'and at the start'
1356          ELSE
1357             begin_chr = ''
1358          ENDIF
1359          IF ( av == 0 )  THEN
1360             WRITE ( io, 337 )  do3d_chr, dt_do3d, TRIM( begin_chr ), &
1361                                zu(nz_do3d), nz_do3d
1362          ELSE
1363             WRITE ( io, 343 )  do3d_chr, dt_data_output_av,           &
1364                                TRIM( begin_chr ), averaging_interval, &
1365                                dt_averaging_input, zu(nz_do3d), nz_do3d
1366          ENDIF
1367
[1308]1368          IF ( netcdf_data_format > 4 )  THEN
1369             WRITE ( io, 352 )  ntdim_3d(av)
1370          ELSE
1371             WRITE ( io, 353 )
1372          ENDIF
1373
[1]1374          IF ( av == 0 )  THEN
[1353]1375             IF ( skip_time_do3d /= 0.0_wp )  THEN
[1]1376                WRITE ( io, 339 )  skip_time_do3d
1377             ENDIF
1378          ELSE
[1353]1379             IF ( skip_time_data_output_av /= 0.0_wp )  THEN
[1]1380                WRITE ( io, 339 )  skip_time_data_output_av
1381             ENDIF
1382          ENDIF
1383
1384       ENDIF
1385
1386    ENDDO
1387
1388!
[410]1389!-- masked arrays
1390    IF ( masks > 0 )  WRITE ( io, 345 )  &
1391         mask_scale_x, mask_scale_y, mask_scale_z
1392    DO  mid = 1, masks
1393       DO  av = 0, 1
1394
1395          i = 1
1396          domask_chr = ''
1397          DO  WHILE ( domask(mid,av,i) /= ' ' )
1398             domask_chr = TRIM( domask_chr ) // ' ' //  &
1399                          TRIM( domask(mid,av,i) ) // ','
1400             i = i + 1
1401          ENDDO
1402
1403          IF ( domask_chr /= '' )  THEN
1404             IF ( av == 0 )  THEN
1405                WRITE ( io, 346 )  '', mid
1406             ELSE
1407                WRITE ( io, 346 )  ' (time-averaged)', mid
1408             ENDIF
1409
[1783]1410             output_format = netcdf_data_format_string
[1308]1411!--          Parallel output not implemented for mask data, hence
1412!--          output_format must be adjusted.
1413             IF ( netcdf_data_format == 5 ) output_format = 'netCDF4/HDF5'
1414             IF ( netcdf_data_format == 6 ) output_format = 'netCDF4/HDF5 classic'
[1783]1415             IF ( netcdf_deflate == 0 )  THEN
1416                WRITE ( io, 344 )  output_format
1417             ELSE
1418                WRITE ( io, 354 )  TRIM( output_format ), netcdf_deflate
1419             ENDIF
[410]1420
1421             IF ( av == 0 )  THEN
1422                WRITE ( io, 347 )  domask_chr, dt_domask(mid)
1423             ELSE
1424                WRITE ( io, 348 )  domask_chr, dt_data_output_av, &
1425                                   averaging_interval, dt_averaging_input
1426             ENDIF
1427
1428             IF ( av == 0 )  THEN
[1353]1429                IF ( skip_time_domask(mid) /= 0.0_wp )  THEN
[410]1430                   WRITE ( io, 339 )  skip_time_domask(mid)
1431                ENDIF
1432             ELSE
[1353]1433                IF ( skip_time_data_output_av /= 0.0_wp )  THEN
[410]1434                   WRITE ( io, 339 )  skip_time_data_output_av
1435                ENDIF
1436             ENDIF
1437!
1438!--          output locations
1439             DO  dim = 1, 3
[1353]1440                IF ( mask(mid,dim,1) >= 0.0_wp )  THEN
[410]1441                   count = 0
[1353]1442                   DO  WHILE ( mask(mid,dim,count+1) >= 0.0_wp )
[410]1443                      count = count + 1
1444                   ENDDO
1445                   WRITE ( io, 349 )  dir(dim), dir(dim), mid, dir(dim), &
1446                                      mask(mid,dim,:count)
[1353]1447                ELSEIF ( mask_loop(mid,dim,1) < 0.0_wp .AND.  &
1448                         mask_loop(mid,dim,2) < 0.0_wp .AND.  &
1449                         mask_loop(mid,dim,3) == 0.0_wp )  THEN
[410]1450                   WRITE ( io, 350 )  dir(dim), dir(dim)
[1353]1451                ELSEIF ( mask_loop(mid,dim,3) == 0.0_wp )  THEN
[410]1452                   WRITE ( io, 351 )  dir(dim), dir(dim), mid, dir(dim), &
1453                                      mask_loop(mid,dim,1:2)
1454                ELSE
1455                   WRITE ( io, 351 )  dir(dim), dir(dim), mid, dir(dim), &
1456                                      mask_loop(mid,dim,1:3)
1457                ENDIF
1458             ENDDO
1459          ENDIF
1460
1461       ENDDO
1462    ENDDO
1463
1464!
[1]1465!-- Timeseries
[1322]1466    IF ( dt_dots /= 9999999.9_wp )  THEN
[1]1467       WRITE ( io, 340 )
1468
[1783]1469       output_format = netcdf_data_format_string
1470       IF ( netcdf_deflate == 0 )  THEN
1471          WRITE ( io, 344 )  output_format
1472       ELSE
1473          WRITE ( io, 354 )  TRIM( output_format ), netcdf_deflate
1474       ENDIF
[1]1475       WRITE ( io, 341 )  dt_dots
1476    ENDIF
1477
1478    WRITE ( io, 99 )
1479
1480!
1481!-- Physical quantities
1482    WRITE ( io, 400 )
1483
1484!
1485!-- Geostrophic parameters
[4196]1486    WRITE ( io, 410 )  latitude, longitude, rotation_angle, omega, f, fs
[1]1487
[3241]1488!
[4227]1489!-- Day and time during model start
1490    CALL get_date_time( 0.0_wp, date_time_str=date_time_str )
1491    WRITE ( io, 456 )  TRIM( date_time_str )
1492
[1]1493!
1494!-- Other quantities
1495    WRITE ( io, 411 )  g
[1551]1496
[1179]1497    WRITE ( io, 412 )  TRIM( reference_state )
1498    IF ( use_single_reference_value )  THEN
[3294]1499       IF ( ocean_mode )  THEN
[1179]1500          WRITE ( io, 413 )  prho_reference
[97]1501       ELSE
[1179]1502          WRITE ( io, 414 )  pt_reference
[97]1503       ENDIF
1504    ENDIF
[1]1505
1506!
[824]1507!-- Cloud physcis parameters / quantities / numerical methods
1508    WRITE ( io, 430 )
[3274]1509    IF ( humidity .AND. .NOT. bulk_cloud_model .AND. .NOT. cloud_droplets)  THEN
[824]1510       WRITE ( io, 431 )
[3274]1511    ENDIF
[824]1512!
[1]1513!-- LES / turbulence parameters
1514    WRITE ( io, 450 )
1515
1516!--
1517! ... LES-constants used must still be added here
1518!--
1519    IF ( constant_diffusion )  THEN
1520       WRITE ( io, 451 )  km_constant, km_constant/prandtl_number, &
1521                          prandtl_number
1522    ENDIF
1523    IF ( .NOT. constant_diffusion)  THEN
[1353]1524       IF ( e_init > 0.0_wp )  WRITE ( io, 455 )  e_init
1525       IF ( e_min > 0.0_wp )  WRITE ( io, 454 )  e_min
[1]1526       IF ( wall_adjustment )  WRITE ( io, 453 )  wall_adjustment_factor
1527    ENDIF
[3083]1528    IF ( rans_mode )  THEN
1529       WRITE ( io, 457 )  rans_const_c, rans_const_sigma
1530    ENDIF
[1]1531!
1532!-- Special actions during the run
1533    WRITE ( io, 470 )
1534    IF ( create_disturbances )  THEN
1535       WRITE ( io, 471 )  dt_disturb, disturbance_amplitude,                   &
1536                          zu(disturbance_level_ind_b), disturbance_level_ind_b,&
1537                          zu(disturbance_level_ind_t), disturbance_level_ind_t
[707]1538       IF ( .NOT. bc_lr_cyc  .OR.  .NOT. bc_ns_cyc )  THEN
[1]1539          WRITE ( io, 472 )  inflow_disturbance_begin, inflow_disturbance_end
1540       ELSE
1541          WRITE ( io, 473 )  disturbance_energy_limit
1542       ENDIF
1543       WRITE ( io, 474 )  TRIM( random_generator )
1544    ENDIF
[1353]1545    IF ( pt_surface_initial_change /= 0.0_wp )  THEN
[1]1546       WRITE ( io, 475 )  pt_surface_initial_change
1547    ENDIF
[1353]1548    IF ( humidity  .AND.  q_surface_initial_change /= 0.0_wp )  THEN
[1]1549       WRITE ( io, 476 )  q_surface_initial_change       
1550    ENDIF
[1353]1551    IF ( passive_scalar  .AND.  q_surface_initial_change /= 0.0_wp )  THEN
[1]1552       WRITE ( io, 477 )  q_surface_initial_change       
1553    ENDIF
1554
1555!
1556!-- Parameters of 1D-model
1557    IF ( INDEX( initializing_actions, 'set_1d-model_profiles' ) /= 0 )  THEN
1558       WRITE ( io, 500 )  end_time_1d, dt_run_control_1d, dt_pr_1d, &
1559                          mixing_length_1d, dissipation_1d
1560       IF ( damp_level_ind_1d /= nzt+1 )  THEN
1561          WRITE ( io, 502 )  zu(damp_level_ind_1d), damp_level_ind_1d
1562       ENDIF
1563    ENDIF
1564
1565!
[3637]1566!-- Header information from other modules
1567    CALL module_interface_header( io )
[1]1568
[3637]1569
[1]1570    WRITE ( io, 99 )
1571
1572!
1573!-- Write buffer contents to disc immediately
[1808]1574    FLUSH( io )
[1]1575
1576!
1577!-- Here the FORMATs start
1578
1579 99 FORMAT (1X,78('-'))
[1468]1580100 FORMAT (/1X,'******************************',4X,44('-')/        &
1581            1X,'* ',A,' *',4X,A/                               &
1582            1X,'******************************',4X,44('-'))
[2298]1583101 FORMAT (35X,'coupled run: ',A/ &
[1468]1584            35X,42('-'))
[3529]1585102 FORMAT (/' Date:               ',A10,4X,'Run:       ',A34/      &
[1468]1586            ' Time:                 ',A8,4X,'Run-No.:   ',I2.2/     &
[1106]1587            ' Run on host:        ',A10)
[1]1588#if defined( __parallel )
[1468]1589103 FORMAT (' Number of PEs:',10X,I6,4X,'Processor grid (x,y): (',I4,',',I4, &
[1]1590              ')',1X,A)
[1468]1591104 FORMAT (' Number of PEs:',10X,I6,4X,'Tasks:',I4,'   threads per task:',I4/ &
1592              35X,'Processor grid (x,y): (',I4,',',I4,')',1X,A)
1593107 FORMAT (35X,'A 1d-decomposition along ',A,' is used')
1594108 FORMAT (35X,'Max. # of parallel I/O streams is ',I5)
1595109 FORMAT (35X,'Precursor run for coupled atmos-ocean run'/ &
1596            35X,42('-'))
1597114 FORMAT (35X,'Coupled atmosphere-ocean run following'/ &
1598            35X,'independent precursor runs'/             &
1599            35X,42('-'))
[1]1600#endif
1601110 FORMAT (/' Numerical Schemes:'/ &
1602             ' -----------------'/)
[2696]1603124 FORMAT (' --> Use the ',A,' turbulence closure (',A,' mode).')
[2037]1604121 FORMAT (' --> Use the ',A,' approximation for the model equations.')
[1]1605111 FORMAT (' --> Solve perturbation pressure via FFT using ',A,' routines')
1606112 FORMAT (' --> Solve perturbation pressure via SOR-Red/Black-Schema'/ &
[1697]1607            '     Iterations (initial/other): ',I3,'/',I3,'  omega =',F6.3)
[1]1608113 FORMAT (' --> Momentum advection via Piascek-Williams-Scheme (Form C3)', &
1609                  ' or Upstream')
[1216]1610115 FORMAT ('     FFT and transpositions are overlapping')
[1]1611116 FORMAT (' --> Scalar advection via Piascek-Williams-Scheme (Form C3)', &
1612                  ' or Upstream')
1613118 FORMAT (' --> Scalar advection via Bott-Chlond-Scheme')
[1106]1614119 FORMAT (' --> Galilei-Transform applied to horizontal advection:'/ &
1615            '     translation velocity = ',A/ &
[1]1616            '     distance advected ',A,':  ',F8.3,' km(x)  ',F8.3,' km(y)')
1617122 FORMAT (' --> Time differencing scheme: ',A)
[108]1618123 FORMAT (' --> Rayleigh-Damping active, starts ',A,' z = ',F8.2,' m'/ &
[1697]1619            '     maximum damping coefficient:',F6.3, ' 1/s')
[1]1620129 FORMAT (' --> Additional prognostic equation for the specific humidity')
1621130 FORMAT (' --> Additional prognostic equation for the total water content')
[940]1622131 FORMAT (' --> No pt-equation solved. Neutral stratification with pt = ', &
1623                  F6.2, ' K assumed')
[1]1624134 FORMAT (' --> Additional prognostic equation for a passive scalar')
[1575]1625135 FORMAT (' --> Solve perturbation pressure via ',A,' method (', &
[1]1626                  A,'-cycle)'/ &
1627            '     number of grid levels:                   ',I2/ &
1628            '     Gauss-Seidel red/black iterations:       ',I2)
1629136 FORMAT ('     gridpoints of coarsest subdomain (x,y,z): (',I3,',',I3,',', &
1630                  I3,')')
1631137 FORMAT ('     level data gathered on PE0 at level:     ',I2/ &
1632            '     gridpoints of coarsest subdomain (x,y,z): (',I3,',',I3,',', &
1633                  I3,')'/ &
1634            '     gridpoints of coarsest domain (x,y,z):    (',I3,',',I3,',', &
1635                  I3,')')
[63]1636139 FORMAT (' --> Loop optimization method: ',A)
[1]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')
[87]1641143 FORMAT ('     Euler/upstream scheme is used for the SGS turbulent ', &
1642                  'kinetic energy')
[927]1643144 FORMAT ('     masking method is used')
[1]1644150 FORMAT (' --> Volume flow at the right and north boundary will be ', &
[241]1645                  'conserved'/ &
1646            '     using the ',A,' mode')
1647151 FORMAT ('     with u_bulk = ',F7.3,' m/s and v_bulk = ',F7.3,' m/s')
[306]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 /)
[1]1651200 FORMAT (//' Run time and time step information:'/ &
1652             ' ----------------------------------'/)
[1106]1653201 FORMAT ( ' Timestep:             variable     maximum value: ',F6.3,' s', &
[1697]1654             '    CFL-factor:',F5.2)
[1106]1655202 FORMAT ( ' Timestep:          dt = ',F6.3,' s'/)
[4300]1656203 FORMAT ( ' Start time:        ',F11.3,' s'/ &
1657             ' End time:          ',F11.3,' s')
1658204 FORMAT ( A,F11.3,' s')
1659205 FORMAT ( A,F11.3,' s',5X,'restart every',17X,F11.3,' s')
1660206 FORMAT (/' Time reached:      ',F11.3,' s'/ &
1661             ' CPU-time used:       ',F9.3,' s     per timestep:                 ',F9.3,' s'/ &
1662             '                                      per second of simulated time: ',F9.3,' s')
1663207 FORMAT ( ' Spinup time:       ',F11.3,' s')
[1]1664250 FORMAT (//' Computational grid and domain size:'/ &
1665              ' ----------------------------------'// &
[3065]1666              ' Grid length:      dx =    ',F8.3,' m    dy =    ',F8.3, ' m')
1667251 FORMAT (  /' Domain size:       x = ',F10.3,' m     y = ',F10.3, &
[1]1668              ' m  z(u) = ',F10.3,' m'/)
[3065]1669253 FORMAT ( '                dz(',I1,') =    ', F8.3, ' m')
1670254 FORMAT (//' Number of gridpoints (x,y,z):  (0:',I4,', 0:',I4,', 0:',I4,')'/ &
[1]1671            ' Subdomain size (x,y,z):        (  ',I4,',   ',I4,',   ',I4,')'/)
1672260 FORMAT (/' The model has a slope in x-direction. Inclination angle: ',F6.2,&
1673             ' degrees')
[1551]1674270 FORMAT (//' Topography information:'/ &
1675              ' ----------------------'// &
[1]1676              1X,'Topography: ',A)
1677271 FORMAT (  ' Building size (x/y/z) in m: ',F5.1,' / ',F5.1,' / ',F5.1/ &
1678              ' Horizontal index bounds (l/r/s/n): ',I4,' / ',I4,' / ',I4, &
1679                ' / ',I4)
[240]1680272 FORMAT (  ' Single quasi-2D street canyon of infinite length in ',A, &
1681              ' direction' / &
1682              ' Canyon height: ', F6.2, 'm, ch = ', I4, '.'      / &
1683              ' Canyon position (',A,'-walls): cxl = ', I4,', cxr = ', I4, '.')
[2232]1684273 FORMAT (  ' Tunnel of infinite length in ',A, &
1685              ' direction' / &
1686              ' Tunnel height: ', F6.2, / &
1687              ' Tunnel-wall depth: ', F6.2      / &
1688              ' Tunnel width: ', F6.2 )
1689274 FORMAT (  ' Tunnel in ', A, ' direction.' / &
1690              ' Tunnel height: ', F6.2, / &   
1691              ' Tunnel-wall depth: ', F6.2      / &
1692              ' Tunnel width: ', F6.2, / &
1693              ' Tunnel length: ', F6.2 )
[256]1694278 FORMAT (' Topography grid definition convention:'/ &
1695            ' cell edge (staggered grid points'/  &
1696            ' (u in x-direction, v in y-direction))' /)
1697279 FORMAT (' Topography grid definition convention:'/ &
1698            ' cell center (scalar grid points)' /)
[2550]1699280 FORMAT (' Complex terrain simulation is activated.')
1700281 FORMAT ('    --> Mean inflow profiles are adjusted.' / &
1701            '    --> Elevation of inflow boundary: ', F7.1, ' m' )
1702282 FORMAT ('    --> Initial data from 3D-precursor run is shifted' / &
1703            '        vertically depending on local surface height.')
[1]1704300 FORMAT (//' Boundary conditions:'/ &
1705             ' -------------------'// &
1706             '                     p                    uv             ', &
[1551]1707             '                     pt'// &
[1]1708             ' B. bound.: ',A/ &
1709             ' T. bound.: ',A)
[97]1710301 FORMAT (/'                     ',A// &
[1]1711             ' B. bound.: ',A/ &
1712             ' T. bound.: ',A)
[19]1713303 FORMAT (/' Bottom surface fluxes are used in diffusion terms at k=1')
1714304 FORMAT (/' Top surface fluxes are used in diffusion terms at k=nzt')
[2270]1715305 FORMAT (//'    Constant flux layer between bottom surface and first ',     &
1716              'computational u,v-level:'// &
1717             '       z_mo = ',F6.2,' m   z0 =',F7.4,' m   z0h =',F8.5,&
[1697]1718             ' m   kappa =',F5.2/ &
1719             '       Rif value range:   ',F8.2,' <= rif <=',F6.2)
[97]1720306 FORMAT ('       Predefined constant heatflux:   ',F9.6,' K m/s')
[1]1721307 FORMAT ('       Heatflux has a random normal distribution')
1722308 FORMAT ('       Predefined surface temperature')
[97]1723309 FORMAT ('       Predefined constant salinityflux:   ',F9.6,' psu m/s')
[1]1724310 FORMAT (//'    1D-Model:'// &
1725             '       Rif value range:   ',F6.2,' <= rif <=',F6.2)
[1960]1726311 FORMAT ('       Predefined constant humidity flux: ',E10.3,' kg/kg m/s')
[1]1727312 FORMAT ('       Predefined surface humidity')
1728313 FORMAT ('       Predefined constant scalar flux: ',E10.3,' kg/(m**2 s)')
1729314 FORMAT ('       Predefined scalar value at the surface')
[1992]1730302 FORMAT ('       Predefined constant scalarflux:   ',F9.6,' kg/(m**2 s)')
1731315 FORMAT ('       Humidity flux at top surface is 0.0')
[102]1732316 FORMAT ('       Sensible heatflux and momentum flux from coupled ', &
1733                    'atmosphere model')
[1]1734317 FORMAT (//' Lateral boundaries:'/ &
1735            '       left/right:  ',A/    &
1736            '       north/south: ',A)
[1159]1737318 FORMAT (/'       use_cmax: ',L1 / &
1738            '       pt damping layer width = ',F8.2,' m, pt ', &
[1697]1739                    'damping factor =',F7.4)
[151]1740319 FORMAT ('       turbulence recycling at inflow switched on'/ &
1741            '       width of recycling domain: ',F7.1,' m   grid index: ',I4/ &
1742            '       inflow damping height: ',F6.1,' m   width: ',F6.1,' m')
1743320 FORMAT ('       Predefined constant momentumflux:  u: ',F9.6,' m**2/s**2'/ &
[103]1744            '                                          v: ',F9.6,' m**2/s**2')
[1365]1745321 FORMAT (//' Initial profiles:'/ &
1746              ' ----------------')
[1560]1747322 FORMAT ('       turbulence recycling at inflow switched on'/ &
[4301]1748            '       y-shift of the recycled inflow turbulence is',I3,' PE'/ &
[1560]1749            '       width of recycling domain: ',F7.1,' m   grid index: ',I4/ &
[1592]1750            '       inflow damping height: ',F6.1,' m   width: ',F6.1,' m'/)
[2050]1751323 FORMAT ('       turbulent outflow conditon switched on'/ &
1752            '       position of outflow source plane: ',F7.1,' m   ', &
1753                    'grid index: ', I4)
[151]1754325 FORMAT (//' List output:'/ &
[1]1755             ' -----------'//  &
1756            '    1D-Profiles:'/    &
[2883]1757            '       Output every             ',F10.2,' s')
[151]1758326 FORMAT ('       Time averaged over       ',F8.2,' s'/ &
[1]1759            '       Averaging input every    ',F8.2,' s')
1760330 FORMAT (//' Data output:'/ &
1761             ' -----------'/)
1762331 FORMAT (/'    1D-Profiles:')
1763332 FORMAT (/'       ',A)
1764333 FORMAT ('       Output every             ',F8.2,' s',/ &
1765            '       Time averaged over       ',F8.2,' s'/ &
1766            '       Averaging input every    ',F8.2,' s')
1767334 FORMAT (/'    2D-Arrays',A,':')
1768335 FORMAT (/'       ',A2,'-cross-section  Arrays: ',A/ &
1769            '       Output every             ',F8.2,' s  ',A/ &
1770            '       Cross sections at ',A1,' = ',A/ &
1771            '       scalar-coordinates:   ',A,' m'/)
1772336 FORMAT (/'    3D-Arrays',A,':')
1773337 FORMAT (/'       Arrays: ',A/ &
1774            '       Output every             ',F8.2,' s  ',A/ &
1775            '       Upper output limit at    ',F8.2,' m  (GP ',I4,')'/)
1776339 FORMAT ('       No output during initial ',F8.2,' s')
1777340 FORMAT (/'    Time series:')
1778341 FORMAT ('       Output every             ',F8.2,' s'/)
1779342 FORMAT (/'       ',A2,'-cross-section  Arrays: ',A/ &
1780            '       Output every             ',F8.2,' s  ',A/ &
1781            '       Time averaged over       ',F8.2,' s'/ &
1782            '       Averaging input every    ',F8.2,' s'/ &
1783            '       Cross sections at ',A1,' = ',A/ &
1784            '       scalar-coordinates:   ',A,' m'/)
1785343 FORMAT (/'       Arrays: ',A/ &
1786            '       Output every             ',F8.2,' s  ',A/ &
1787            '       Time averaged over       ',F8.2,' s'/ &
1788            '       Averaging input every    ',F8.2,' s'/ &
1789            '       Upper output limit at    ',F8.2,' m  (GP ',I4,')'/)
[292]1790344 FORMAT ('       Output format: ',A/)
[410]1791345 FORMAT (/'    Scaling lengths for output locations of all subsequent mask IDs:',/ &
1792            '       mask_scale_x (in x-direction): ',F9.3, ' m',/ &
1793            '       mask_scale_y (in y-direction): ',F9.3, ' m',/ &
1794            '       mask_scale_z (in z-direction): ',F9.3, ' m' )
1795346 FORMAT (/'    Masked data output',A,' for mask ID ',I2, ':')
1796347 FORMAT ('       Variables: ',A/ &
1797            '       Output every             ',F8.2,' s')
1798348 FORMAT ('       Variables: ',A/ &
1799            '       Output every             ',F8.2,' s'/ &
1800            '       Time averaged over       ',F8.2,' s'/ &
1801            '       Averaging input every    ',F8.2,' s')
1802349 FORMAT (/'       Output locations in ',A,'-direction in multiples of ', &
1803            'mask_scale_',A,' predefined by array mask_',I2.2,'_',A,':'/ &
1804            13('       ',8(F8.2,',')/) )
1805350 FORMAT (/'       Output locations in ',A,'-direction: ', &
1806            'all gridpoints along ',A,'-direction (default).' )
1807351 FORMAT (/'       Output locations in ',A,'-direction in multiples of ', &
1808            'mask_scale_',A,' constructed from array mask_',I2.2,'_',A,'_loop:'/ &
1809            '          loop begin:',F8.2,', end:',F8.2,', stride:',F8.2 )
[1313]1810352 FORMAT  (/'       Number of output time levels allowed: ',I3 /)
1811353 FORMAT  (/'       Number of output time levels allowed: unlimited' /)
[1783]1812354 FORMAT ('       Output format: ',A, '   compressed with level: ',I1/)
[1]1813400 FORMAT (//' Physical quantities:'/ &
1814              ' -------------------'/)
[4196]1815410 FORMAT ('    Geograph. latitude  :   latitude  = ',F5.1,' degr'/   &
1816            '    Geograph. longitude :   longitude = ',F5.1,' degr'/   &
1817            '    Rotation angle      :   rotation_angle = ',F5.1,' degr'/   &
[1697]1818            '    Angular velocity    :   omega  =',E10.3,' rad/s'/  &
[1551]1819            '    Coriolis parameter  :   f      = ',F9.6,' 1/s'/    &
1820            '                            f*     = ',F9.6,' 1/s')
1821411 FORMAT (/'    Gravity             :   g      = ',F4.1,' m/s**2')
[1179]1822412 FORMAT (/'    Reference state used in buoyancy terms: ',A)
1823413 FORMAT ('       Reference density in buoyancy terms: ',F8.3,' kg/m**3')
1824414 FORMAT ('       Reference temperature in buoyancy terms: ',F8.4,' K')
[1]1825420 FORMAT (/'    Characteristic levels of the initial temperature profile:'// &
1826            '       Height:        ',A,'  m'/ &
1827            '       Temperature:   ',A,'  K'/ &
1828            '       Gradient:      ',A,'  K/100m'/ &
1829            '       Gridpoint:     ',A)
1830421 FORMAT (/'    Characteristic levels of the initial humidity profile:'// &
1831            '       Height:      ',A,'  m'/ &
1832            '       Humidity:    ',A,'  kg/kg'/ &
1833            '       Gradient:    ',A,'  (kg/kg)/100m'/ &
1834            '       Gridpoint:   ',A)
1835422 FORMAT (/'    Characteristic levels of the initial scalar profile:'// &
1836            '       Height:                  ',A,'  m'/ &
1837            '       Scalar concentration:    ',A,'  kg/m**3'/ &
1838            '       Gradient:                ',A,'  (kg/m**3)/100m'/ &
1839            '       Gridpoint:               ',A)
1840423 FORMAT (/'    Characteristic levels of the geo. wind component ug:'// &
1841            '       Height:      ',A,'  m'/ &
1842            '       ug:          ',A,'  m/s'/ &
1843            '       Gradient:    ',A,'  1/100s'/ &
1844            '       Gridpoint:   ',A)
1845424 FORMAT (/'    Characteristic levels of the geo. wind component vg:'// &
1846            '       Height:      ',A,'  m'/ &
[97]1847            '       vg:          ',A,'  m/s'/ &
[1]1848            '       Gradient:    ',A,'  1/100s'/ &
1849            '       Gridpoint:   ',A)
[97]1850425 FORMAT (/'    Characteristic levels of the initial salinity profile:'// &
1851            '       Height:     ',A,'  m'/ &
1852            '       Salinity:   ',A,'  psu'/ &
1853            '       Gradient:   ',A,'  psu/100m'/ &
1854            '       Gridpoint:  ',A)
[411]1855426 FORMAT (/'    Characteristic levels of the subsidence/ascent profile:'// &
1856            '       Height:      ',A,'  m'/ &
1857            '       w_subs:      ',A,'  m/s'/ &
1858            '       Gradient:    ',A,'  (m/s)/100m'/ &
1859            '       Gridpoint:   ',A)
[767]1860427 FORMAT (/'    Initial wind profiles (u,v) are interpolated from given'// &
1861                  ' profiles')
[1241]1862428 FORMAT (/'    Initial profiles (u, v, pt, q) are taken from file '/ &
1863             '    NUDGING_DATA')
[824]1864430 FORMAT (//' Cloud physics quantities / methods:'/ &
1865              ' ----------------------------------'/)
[1960]1866431 FORMAT ('    Humidity is considered, bu no condensation')
[1]1867450 FORMAT (//' LES / Turbulence quantities:'/ &
1868              ' ---------------------------'/)
[824]1869451 FORMAT ('    Diffusion coefficients are constant:'/ &
1870            '    Km = ',F6.2,' m**2/s   Kh = ',F6.2,' m**2/s   Pr = ',F5.2)
[1697]1871453 FORMAT ('    Mixing length is limited to',F5.2,' * z')
[824]1872454 FORMAT ('    TKE is not allowed to fall below ',E9.2,' (m/s)**2')
1873455 FORMAT ('    initial TKE is prescribed as ',E9.2,' (m/s)**2')
[4227]1874456 FORMAT (/'    Date and time at model start : ',A)
[3083]1875457 FORMAT ('    RANS-mode constants: c_0 = ',F9.5/         &
1876            '                         c_1 = ',F9.5/         &
1877            '                         c_2 = ',F9.5/         &
1878            '                         c_3 = ',F9.5/         &
1879            '                         c_4 = ',F9.5/         &
1880            '                         sigma_e    = ',F9.5/  &
1881            '                         sigma_diss = ',F9.5)
[1]1882470 FORMAT (//' Actions during the simulation:'/ &
1883              ' -----------------------------'/)
[94]1884471 FORMAT ('    Disturbance impulse (u,v) every :   ',F6.2,' s'/            &
[1697]1885            '    Disturbance amplitude           :    ',F5.2, ' m/s'/       &
[94]1886            '    Lower disturbance level         : ',F8.2,' m (GP ',I4,')'/  &
1887            '    Upper disturbance level         : ',F8.2,' m (GP ',I4,')')
[1]1888472 FORMAT ('    Disturbances continued during the run from i/j =',I4, &
1889                 ' to i/j =',I4)
1890473 FORMAT ('    Disturbances cease as soon as the disturbance energy exceeds',&
[1697]1891                 F6.3, ' m**2/s**2')
[1]1892474 FORMAT ('    Random number generator used    : ',A/)
1893475 FORMAT ('    The surface temperature is increased (or decreased, ', &
1894                 'respectively, if'/ &
1895            '    the value is negative) by ',F5.2,' K at the beginning of the',&
1896                 ' 3D-simulation'/)
1897476 FORMAT ('    The surface humidity is increased (or decreased, ',&
1898                 'respectively, if the'/ &
1899            '    value is negative) by ',E8.1,' kg/kg at the beginning of', &
1900                 ' the 3D-simulation'/)
1901477 FORMAT ('    The scalar value is increased at the surface (or decreased, ',&
1902                 'respectively, if the'/ &
1903            '    value is negative) by ',E8.1,' kg/m**3 at the beginning of', &
1904                 ' the 3D-simulation'/)
1905500 FORMAT (//' 1D-Model parameters:'/                           &
1906              ' -------------------'//                           &
1907            '    Simulation time:                   ',F8.1,' s'/ &
1908            '    Run-controll output every:         ',F8.1,' s'/ &
1909            '    Vertical profile output every:     ',F8.1,' s'/ &
1910            '    Mixing length calculation:         ',A/         &
1911            '    Dissipation calculation:           ',A/)
1912502 FORMAT ('    Damping layer starts from ',F7.1,' m (GP ',I4,')'/)
[667]1913503 FORMAT (' --> Momentum advection via Wicker-Skamarock-Scheme 5th order')
1914504 FORMAT (' --> Scalar advection via Wicker-Skamarock-Scheme 5th order')
[3529]1915512 FORMAT (/' Date:               ',A10,6X,'Run:       ',A34/      &
[1429]1916            ' Time:                 ',A8,6X,'Run-No.:   ',I2.2/     &
1917            ' Run on host:        ',A10,6X,'En-No.:    ',I2.2)
[1791]1918600 FORMAT (/' Nesting informations:'/ &
1919            ' --------------------'/ &
[1797]1920            ' Nesting mode:                     ',A/ &
1921            ' Nesting-datatransfer mode:        ',A// &
[1791]1922            ' Nest id  parent  number   lower left coordinates   name'/ &
1923            ' (*=me)     id    of PEs      x (m)     y (m)' )
1924601 FORMAT (2X,A1,1X,I2.2,6X,I2.2,5X,I5,5X,F8.2,2X,F8.2,5X,A)
[1]1925
1926 END SUBROUTINE header
Note: See TracBrowser for help on using the repository browser.