Changeset 4046 for palm


Ignore:
Timestamp:
Jun 21, 2019 5:32:04 PM (5 years ago)
Author:
knoop
Message:

removal of special treatment for usm_define_netcdf_grid call in netcdf_interface_mod

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/netcdf_interface_mod.f90

    r4039 r4046  
    2525! -----------------
    2626! $Id$
     27! removal of special treatment for usm_define_netcdf_grid call
     28!
     29! 4039 2019-06-18 10:32:41Z suehring
    2730! Rename subroutines in module for diagnostic quantities
    28 ! 
     31!
    2932! 4029 2019-06-14 14:04:35Z raasch
    3033! netcdf variable NF90_NOFILL is used as argument instead of "1" in calls to NF90_DEF_VAR_FILL
    31 ! 
     34!
    3235! 3995 2019-05-22 18:59:54Z suehring
    3336! output of turbulence intensity added
    34 ! 
     37!
    3538! 3994 2019-05-22 18:08:09Z suehring
    3639! remove origin time from time unit, compose origin_time_string within
    3740! subroutine netcdf_create_global_atts
    38 ! 
     41!
    3942! 3954 2019-05-06 12:49:42Z gronemeier
    4043! bugfix: corrected format for date_time_string
    41 ! 
     44!
    4245! 3953 2019-05-06 12:11:55Z gronemeier
    4346! bugfix: set origin_time and starting point of time coordinate according to
    4447!         day_of_year_init and time_utc_init
    45 ! 
     48!
    4649! 3942 2019-04-30 13:08:30Z kanani
    4750! Add specifier to netcdf_handle_error to simplify identification of attribute
    4851! causing the error
    49 ! 
     52!
    5053! 3766 2019-02-26 16:23:41Z raasch
    5154! bugfix in im_define_netcdf_grid argument list
    52 ! 
     55!
    5356! 3745 2019-02-15 18:57:56Z suehring
    5457! Add indoor model
    55 ! 
     58!
    5659! 3744 2019-02-15 18:38:58Z suehring
    5760! Bugfix: - initialize return values to ensure they are set before returning
    5861!           (routine define_geo_coordinates)
    5962!         - change order of dimensions for some variables
    60 ! 
     63!
    6164! 3727 2019-02-08 14:52:10Z gronemeier
    6265! make several routines publicly available
    63 ! 
     66!
    6467! 3701 2019-01-26 18:57:21Z knoop
    6568! Statement added to prevent compiler warning about unused variable
    66 ! 
     69!
    6770! 3655 2019-01-07 16:51:22Z knoop
    68 ! Move the control parameter "salsa" from salsa_mod to control_parameters 
     71! Move the control parameter "salsa" from salsa_mod to control_parameters
    6972! (M. Kurppa)
    70 ! 
     73!
    7174! 3582 2018-11-29 19:16:36Z suehring
    7275! dom_dwd_user, Schrempf:
    7376! Remove uv exposure model code, this is now part of biometeorology_mod
    74 ! 
     77!
    7578! 3529 2018-11-15 21:03:15Z gronemeier
    7679! - set time units
     
    7982! - move definition of UTM and geographic coordinates into subroutine
    8083! - change fill_value
    81 ! 
     84!
    8285! 3525 2018-11-14 16:06:14Z kanani
    8386! Changes related to clean-up of biometeorology (dom_dwd_user)
    84 ! 
     87!
    8588! 3485 2018-11-03 17:09:40Z gronemeier
    8689! Write geographic coordinates as global attributes to file.
    87 ! 
     90!
    8891! 3467 2018-10-30 19:05:21Z suehring
    8992! - Salsa implemented
    9093! - Bugfix convert_utm_to...
    91 ! 
     94!
    9295! 3464 2018-10-30 18:08:55Z kanani
    9396! - Add variable crs to output files
     
    9598! - Add latitude/longitude coordinates. For 3d and xy output, lon and lat are
    9699!   only written if parallel output is used.
    97 ! 
     100!
    98101! 3459 2018-10-30 15:04:11Z gronemeier
    99102! Adjustment of biometeorology calls
    100 ! 
     103!
    101104! 3435 2018-10-26 18:25:44Z gronemeier
    102105! Bugfix: corrected order of calls to define_netcdf_grid for masked output
    103106! Add vertical dimensions to masked output in case of terrain-following output
    104 ! 
     107!
    105108! 3421 2018-10-24 18:39:32Z gronemeier
    106109! Bugfix: move ocean output variables to ocean_mod
    107110! Renamed output variables
    108111! Add UTM coordinates to mask, 3d, xy, xz, yz output
    109 ! 
     112!
    110113! 3337 2018-10-12 15:17:09Z kanani
    111114! (from branch resler)
    112115! Add biometeorology
    113 ! 
     116!
    114117! 3294 2018-10-01 02:37:10Z raasch
    115118! changes concerning modularization of ocean option
    116 ! 
     119!
    117120! 3274 2018-09-24 15:42:55Z knoop
    118121! Modularization of all bulk cloud physics code components
    119 ! 
     122!
    120123! 3241 2018-09-12 15:02:00Z raasch
    121124! unused variables removed
    122 ! 
     125!
    123126! 3235 2018-09-07 14:06:15Z sward
    124127! Changed MAS output dimension id_dim_agtnum to be of defined size and no longer
    125128! unlimited. Also changed some MAS output variables to be of type float
    126 ! 
     129!
    127130! 3198 2018-08-15 09:23:10Z sward
    128131! Redefined MAS limited time dimension to fit usage of multi_agent_system_end
    129 ! 
     132!
    130133! 3187 2018-07-31 10:32:34Z sward
    131134! Changed agent output to precision NF90_DOUBLE
    132 ! 
     135!
    133136! 3165 2018-07-24 13:12:42Z sward
    134137! Added agent ID output
    135 ! 
     138!
    136139! 3159 2018-07-20 11:20:01Z sward
    137140! Added multi agent system
    138 ! 
     141!
    139142! 3049 2018-05-29 13:52:36Z Giersch
    140143! Error messages revised
    141 ! 
     144!
    142145! 3045 2018-05-28 07:55:41Z Giersch
    143146! Error messages revised, code adjusted to PALMs coding standards, CASE pt_ext
    144147! pt_new disabled, comment revised
    145 ! 
     148!
    146149! 3004 2018-04-27 12:33:25Z Giersch
    147150! .NOT. found in if-query added to account for variables found in tcm
    148 ! 
     151!
    149152! 2964 2018-04-12 16:04:03Z Giersch
    150153! Calculation of fixed number of output time levels for parallel netcdf output
    151154! has been moved completely to check_parameters
    152 ! 
     155!
    153156! 2932 2018-03-26 09:39:22Z maronga
    154157! Renamed inipar to initialization_parameters.
    155 ! 
     158!
    156159! 2817 2018-02-19 16:32:21Z knoop
    157160! Preliminary gust module interface implemented
    158 ! 
     161!
    159162! 2769 2018-01-25 09:22:24Z raasch
    160163! bugfix for calculating number of required output time levels in case of output
    161164! at the beginning of a restart run
    162 ! 
     165!
    163166! 2766 2018-01-22 17:17:47Z kanani
    164167! Removed preprocessor directive __chem
    165 ! 
     168!
    166169! 2746 2018-01-15 12:06:04Z suehring
    167170! Move flag plant canopy to modules
    168 ! 
     171!
    169172! 2718 2018-01-02 08:49:38Z maronga
    170173! Corrected "Former revisions" section
     
    181184! upper bounds of cross section and 3d output changed from nx+1,ny+1 to nx,ny
    182185! no output of ghost layer data any more
    183 ! 
     186!
    184187! 2302 2017-07-03 14:07:20Z suehring
    185188! Reading of 3D topography using NetCDF data type NC_BYTE
    186 ! 
     189!
    187190! 2292 2017-06-20 09:51:42Z schwenkel
    188 ! Implementation of new microphysic scheme: cloud_scheme = 'morrison' 
    189 ! includes two more prognostic equations for cloud drop concentration (nc) 
    190 ! and cloud water content (qc). 
    191 ! 
     191! Implementation of new microphysic scheme: cloud_scheme = 'morrison'
     192! includes two more prognostic equations for cloud drop concentration (nc)
     193! and cloud water content (qc).
     194!
    192195! 2270 2017-06-09 12:18:47Z maronga
    193196! Removed 2 timeseries (shf_eb + qsws_eb). Removed _eb suffixes
    194 ! 
     197!
    195198! 2265 2017-06-08 16:58:28Z schwenkel
    196199! Unused variables removed.
    197 ! 
     200!
    198201! 2239 2017-06-01 12:04:51Z suehring
    199202! Bugfix xy-output of land-surface variables
    200 ! 
     203!
    201204! 2233 2017-05-30 18:08:54Z suehring
    202205!
    203206! 2232 2017-05-30 17:47:52Z suehring
    204207! Adjustments to new topography and surface concept
    205 ! 
     208!
    206209! Topograpyh height arrays (zu_s_inner, zw_w_inner) are defined locally, output
    207 ! only if parallel netcdf. 
    208 !
    209 ! Build interface for topography input: 
     210! only if parallel netcdf.
     211!
     212! Build interface for topography input:
    210213! - open file in read-only mode
    211214! - read global attributes
     
    216219! 2209 2017-04-19 09:34:46Z kanani
    217220! Added support for plant canopy model output
    218 ! 
     221!
    219222! 2189 2017-03-21 09:29:52Z raasch
    220223! bugfix: rho renamed rho_ocean for the cross section output
     
    226229! 2040 2016-10-26 16:58:09Z gronemeier
    227230! Increased number of possible statistic_regions to 99
    228 ! 
     231!
    229232! 2037 2016-10-26 11:15:40Z knoop
    230233! Anelastic approximation implemented
    231 ! 
     234!
    232235! 2031 2016-10-21 15:11:58Z knoop
    233236! renamed variable rho to rho_ocean
    234 ! 
     237!
    235238! 2011 2016-09-19 17:29:57Z kanani
    236239! Flag urban_surface is now defined in module control_parameters,
    237240! changed prefix for urban surface model output to "usm_",
    238241! introduced control parameter varnamelength for LEN of trimvar.
    239 ! 
     242!
    240243! 2007 2016-08-24 15:47:17Z kanani
    241 ! Added support for new urban surface model (temporary modifications of 
     244! Added support for new urban surface model (temporary modifications of
    242245! SELECT CASE ( ) necessary, see variable trimvar),
    243246! increased DIMENSION of do2d_unit, do3d_unit, id_var_do2d, id_var_do3d,
    244247! increased LEN of char_cross_profiles, var_list, var_list_old
    245 ! 
     248!
    246249! 2000 2016-08-20 18:09:15Z knoop
    247250! Forced header and separation lines into 80 columns
    248 ! 
     251!
    249252! 1990 2016-08-12 09:54:36Z gronemeier
    250253! Bugfix: variable list was not written for time series output
    251 ! 
     254!
    252255! 1980 2016-07-29 15:51:57Z suehring
    253256! Bugfix, in order to steer user-defined output, setting flag found explicitly
    254257! to .F.
    255 ! 
     258!
    256259! 1976 2016-07-27 13:28:04Z maronga
    257 ! Removed remaining 2D land surface quantities. Definition of radiation 
     260! Removed remaining 2D land surface quantities. Definition of radiation
    258261! quantities is now done directly in the respective module
    259 ! 
     262!
    260263! 1972 2016-07-26 07:52:02Z maronga
    261264! Bugfix: wrong units for lsm quantities.
    262265! Definition of grids for land surface quantities is now done directly in the
    263266! respective module.
    264 ! 
     267!
    265268! 1960 2016-07-12 16:34:24Z suehring
    266 ! Additional labels and units for timeseries output of passive scalar-related 
     269! Additional labels and units for timeseries output of passive scalar-related
    267270! quantities
    268 ! 
     271!
    269272! 1957 2016-07-07 10:43:48Z suehring
    270273! flight module added
     
    272275! 1850 2016-04-08 13:29:27Z maronga
    273276! Module renamed
    274 ! 
    275 ! 
     277!
     278!
    276279! 1833 2016-04-07 14:23:03Z raasch
    277280! spectrum renamed spectra_mod
     
    289292! 1745 2016-02-05 13:06:51Z gronemeier
    290293! Bugfix: recalculating ntdim_3d, ntdim_2d_xy/xz/yz when checking the
    291 !         extensibility of an existing file (only when using parallel NetCDF). 
    292 ! 
     294!         extensibility of an existing file (only when using parallel NetCDF).
     295!
    293296! 1691 2015-10-26 16:17:44Z maronga
    294 ! Added output of radiative heating rates for RRTMG. Corrected output of 
     297! Added output of radiative heating rates for RRTMG. Corrected output of
    295298! radiative fluxes
    296 ! 
     299!
    297300! 1682 2015-10-07 23:56:08Z knoop
    298 ! Code annotations made doxygen readable 
    299 ! 
     301! Code annotations made doxygen readable
     302!
    300303! 1596 2015-05-21 09:34:28Z gronemeier
    301304! Bugfix in masked data output. Read 'zu_3d' when trying to extend masked data
    302 ! 
     305!
    303306! 1551 2015-03-03 14:18:16Z maronga
    304307! Added support for land surface model and radiation model output. In the course
    305308! of this action a new vertical grid zs (soil) was introduced.
    306 ! 
     309!
    307310! 1353 2014-04-08 15:21:23Z heinze
    308311! REAL constants provided with KIND-attribute
     
    346349! 992 2012-09-05 15:08:26Z hoffmann
    347350! Removal of the informative messages PA0352 and PA0353.
    348 ! 
     351!
    349352! 983 2012-08-21 14:17:57Z hoffmann
    350353! Bugfix in cross_profiles.
     
    355358! 959 2012-07-24 13:13:41Z hoffmann
    356359! Bugfix in cross_profiles. It is not allowed to arrange more than 100
    357 ! profiles with cross_profiles. 
     360! profiles with cross_profiles.
    358361!
    359362! 951 2012-07-19 14:22:52Z hoffmann
     
    460463             'rad_net      ', 'rad_lw_in    ', 'rad_lw_out   ',                &
    461464             'rad_sw_in    ', 'rad_sw_out   ', 'rrtm_aldif   ',                &
    462              'rrtm_aldir   ', 'rrtm_asdif   ', 'rrtm_asdir   ',                &                                               
     465             'rrtm_aldir   ', 'rrtm_asdif   ', 'rrtm_asdir   ',                &
    463466             ( 'unknown      ', i9 = 1, dots_max-40 ) /)
    464467
     
    566569    INTEGER(iwp), DIMENSION(11)  ::  nc_precision
    567570    INTEGER(iwp), DIMENSION(dopr_norm_num) ::  id_var_norm_dopr
    568    
     571
    569572    INTEGER(iwp), DIMENSION(fl_max) ::  id_dim_x_fl, id_dim_y_fl, id_dim_z_fl
    570573    INTEGER(iwp), DIMENSION(fl_max) ::  id_var_x_fl, id_var_y_fl, id_var_z_fl
    571    
     574
    572575    CHARACTER (LEN=20), DIMENSION(fl_max*var_fl_max) :: dofl_label
    573     CHARACTER (LEN=20), DIMENSION(fl_max*var_fl_max) :: dofl_unit 
     576    CHARACTER (LEN=20), DIMENSION(fl_max*var_fl_max) :: dofl_unit
    574577    CHARACTER (LEN=20), DIMENSION(fl_max) :: dofl_dim_label_x
    575578    CHARACTER (LEN=20), DIMENSION(fl_max) :: dofl_dim_label_y
    576579    CHARACTER (LEN=20), DIMENSION(fl_max) :: dofl_dim_label_z
    577580
    578     INTEGER(iwp), DIMENSION(fl_max*var_fl_max) :: id_var_dofl   
     581    INTEGER(iwp), DIMENSION(fl_max*var_fl_max) :: id_var_dofl
    579582
    580583    INTEGER(iwp), DIMENSION(dopts_num,0:10) ::  id_var_dopts
     
    668671
    669672 SUBROUTINE netcdf_define_header( callmode, extend, av )
    670  
     673
    671674#if defined( __netcdf )
    672675
     
    678681
    679682    USE chemistry_model_mod,                                                   &
    680         ONLY:  chem_define_netcdf_grid 
     683        ONLY:  chem_define_netcdf_grid
    681684
    682685    USE basic_constants_and_equations_mod,                                     &
     
    702705               urban_surface
    703706
    704     USE diagnostic_output_quantities_mod,                                      & 
    705         ONLY:  doq_define_netcdf_grid           
     707    USE diagnostic_output_quantities_mod,                                      &
     708        ONLY:  doq_define_netcdf_grid
    706709
    707710    USE grid_variables,                                                        &
     
    718721    USE indoor_model_mod,                                                      &
    719722        ONLY: im_define_netcdf_grid
    720    
     723
    721724    USE land_surface_model_mod,                                                &
    722725        ONLY: lsm_define_netcdf_grid, nzb_soil, nzt_soil, nzs, zs
     
    737740
    738741    USE radiation_model_mod,                                                   &
    739         ONLY: radiation, radiation_define_netcdf_grid     
    740      
     742        ONLY: radiation, radiation_define_netcdf_grid
     743
    741744    USE salsa_mod,                                                             &
    742         ONLY:  salsa_define_netcdf_grid           
     745        ONLY:  salsa_define_netcdf_grid
    743746
    744747    USE spectra_mod,                                                           &
     
    894897             CASE DEFAULT
    895898                WRITE ( message_string, * ) 'unknown variable in ' //          &
    896                                   'initialization_parameters ',                & 
     899                                  'initialization_parameters ',                &
    897900                                  'assignment: netcdf_precision(', i, ')="',   &
    898901                                            TRIM( netcdf_precision(i) ),'"'
     
    945948
    946949!
    947 !-- Select the mode to be processed. Possibilities are 3d, ma (mask), xy, xz, 
    948 !-- yz, pr (profiles), ps (particle timeseries), fl (flight data), ts 
     950!-- Select the mode to be processed. Possibilities are 3d, ma (mask), xy, xz,
     951!-- yz, pr (profiles), ps (particle timeseries), fl (flight data), ts
    949952!-- (timeseries) or sp (spectra)
    950953    SELECT CASE ( mode )
     
    953956
    954957!
    955 !--       decompose actual parameter file_id (=formal parameter av) into 
     958!--       decompose actual parameter file_id (=formal parameter av) into
    956959!--       mid and av
    957960          file_id = av
     
    10871090                                     'meters', 'zu(nzb_s_inner)', 488, 489,    &
    10881091                                     490 )
    1089 !             
     1092!
    10901093!--          Define zwwi = zw(nzb_w_inner)
    10911094             CALL netcdf_create_var( id_set_mask(mid,av),                      &
     
    10951098                                     'meters', 'zw(nzb_w_inner)', 491, 492,    &
    10961099                                     493 )
    1097           ENDIF             
    1098  
     1100          ENDIF
     1101
    10991102          IF ( land_surface )  THEN
    11001103!
     
    11151118
    11161119          DO WHILE ( domask(mid,av,i)(1:1) /= ' ' )
    1117 !
    1118 !--          Temporary solution to account for data output within the new urban
    1119 !--          surface model (urban_surface_mod.f90), see also SELECT CASE ( trimvar )
     1120
    11201121             trimvar = TRIM( domask(mid,av,i) )
    1121              IF ( urban_surface  .AND.  trimvar(1:4) == 'usm_' )  THEN
    1122                 trimvar = 'usm_output'
    1123              ENDIF
    11241122!
    11251123!--          Check for the grid
     
    11571155                   grid_z = 'zw'
    11581156
    1159 !             
    1160 !--             Block of urban surface model outputs
    1161                 CASE ( 'usm_output' )
    1162 
    1163                    CALL usm_define_netcdf_grid( domask( mid,av,i), found,      &
    1164                                                         grid_x, grid_y, grid_z )
    11651157
    11661158                CASE DEFAULT
    11671159!
    1168 !--                Check for quantities defined in other modules                                                       
    1169                    CALL tcm_define_netcdf_grid( domask( mid,av,i), found,      &
    1170                                                         grid_x, grid_y, grid_z )
     1160!--                Check for quantities defined in other modules
     1161                   CALL tcm_define_netcdf_grid( trimvar, found, grid_x, grid_y, grid_z )
    11711162
    11721163                   IF ( .NOT. found  .AND.  air_chemistry )  THEN
    1173                       CALL chem_define_netcdf_grid( domask(mid,av,i), found,   &
    1174                                                     grid_x, grid_y, grid_z )
     1164                      CALL chem_define_netcdf_grid( trimvar, found, grid_x, grid_y, grid_z )
    11751165                   ENDIF
    11761166
    11771167                   IF ( .NOT. found )                                          &
    1178                       CALL doq_define_netcdf_grid( domask(mid,av,i), found,    &
    1179                                                    grid_x, grid_y, grid_z )
    1180                    
     1168                      CALL doq_define_netcdf_grid( trimvar, found, grid_x, grid_y, grid_z )
     1169
    11811170                   IF ( .NOT. found  .AND.  gust_module_enabled )  THEN
    1182                       CALL gust_define_netcdf_grid( domask(mid,av,i), found,   &
    1183                                                     grid_x, grid_y, grid_z )
     1171                      CALL gust_define_netcdf_grid( trimvar, found, grid_x, grid_y, grid_z )
    11841172                   ENDIF
    11851173
    1186                    IF ( land_surface )  THEN
    1187                       CALL lsm_define_netcdf_grid( domask(mid,av,i), found,    &
    1188                                                    grid_x, grid_y, grid_z )
     1174                   IF ( .NOT. found  .AND. land_surface )  THEN
     1175                      CALL lsm_define_netcdf_grid( trimvar, found, grid_x, grid_y, grid_z )
    11891176                   ENDIF
    11901177
    11911178                   IF ( .NOT. found  .AND.  ocean_mode )  THEN
    1192                       CALL ocean_define_netcdf_grid( domask(mid,av,i), found,  &
    1193                                                      grid_x, grid_y, grid_z )
     1179                      CALL ocean_define_netcdf_grid( trimvar, found, grid_x, grid_y, grid_z )
    11941180                   ENDIF
    11951181
    11961182                   IF ( .NOT. found  .AND.  plant_canopy )  THEN
    1197                       CALL pcm_define_netcdf_grid( domask(mid,av,i), found,    &
    1198                                                    grid_x, grid_y, grid_z )
     1183                      CALL pcm_define_netcdf_grid( trimvar, found, grid_x, grid_y, grid_z )
    11991184                   ENDIF
    12001185
    12011186                   IF ( .NOT. found  .AND.  radiation )  THEN
    1202                       CALL radiation_define_netcdf_grid( domask(mid,av,i),     &
    1203                                                          found, grid_x, grid_y,&
    1204                                                          grid_z )
     1187                      CALL radiation_define_netcdf_grid( trimvar, found, grid_x, grid_y, grid_z )
    12051188                   ENDIF
    12061189!
    12071190!--                Check for SALSA quantities
    12081191                   IF ( .NOT. found  .AND.  salsa )  THEN
    1209                       CALL salsa_define_netcdf_grid( domask(mid,av,i), found,  &
    1210                                                      grid_x, grid_y, grid_z )
    1211                    ENDIF                                   
     1192                      CALL salsa_define_netcdf_grid( trimvar, found, grid_x, grid_y, grid_z )
     1193                   ENDIF
     1194
     1195                   IF ( .NOT. found  .AND.  urban_surface )  THEN
     1196                      CALL usm_define_netcdf_grid( trimvar, found, grid_x, grid_y, grid_z )
     1197                   ENDIF
    12121198!
    12131199!--                Now check for user-defined quantities
    12141200                   IF ( .NOT. found  .AND.  user_module_enabled )  THEN
    1215                       CALL user_define_netcdf_grid( domask(mid,av,i), found,   &
    1216                                                     grid_x, grid_y, grid_z )
     1201                      CALL user_define_netcdf_grid( trimvar, found, grid_x, grid_y, grid_z )
    12171202                   ENDIF
    1218                                                  
     1203
    12191204                   IF ( .NOT. found )  THEN
    1220                       WRITE ( message_string, * ) 'no grid defined for',       &
    1221                            ' variable ', TRIM( domask(mid,av,i) )
    1222                       CALL message( 'define_netcdf_header', 'PA0244', 0, 1, 0, &
    1223                                     6, 0 )
     1205                      WRITE ( message_string, * ) 'no grid defined for variable ', TRIM( trimvar )
     1206                      CALL message( 'define_netcdf_header', 'PA0244', 0, 1, 0, 6, 0 )
    12241207                   ENDIF
    12251208
     
    13291312             ALLOCATE( netcdf_data(mask_size(mid,1)) )
    13301313             DO  k = 0, 2
    1331 !           
     1314!
    13321315!--             Scalar grid points
    13331316                IF ( k == 0 )  THEN
    13341317                   shift_x = 0.5
    1335 !           
     1318!
    13361319!--             u grid points
    13371320                ELSEIF ( k == 1 )  THEN
    13381321                   shift_x = 0.0
    1339 !           
     1322!
    13401323!--             v grid points
    13411324                ELSEIF ( k == 2 )  THEN
     
    13921375
    13931376             DO  k = 0, 2
    1394 !           
     1377!
    13951378!--            Scalar grid points
    13961379               IF ( k == 0 )  THEN
    13971380                  shift_x = 0.5 ; shift_y = 0.5
    1398 !           
     1381!
    13991382!--            u grid points
    14001383               ELSEIF ( k == 1 )  THEN
    14011384                  shift_x = 0.0 ; shift_y = 0.5
    1402 !           
     1385!
    14031386!--            v grid points
    14041387               ELSEIF ( k == 2 )  THEN
     
    14281411                  ENDDO
    14291412               ENDDO
    1430              
     1413
    14311414               nc_stat = NF90_PUT_VAR( id_set_mask(mid,av), &
    14321415                                       id_var_nutm_mask(k,mid,av), &
     
    14351418                                                  mask_size(mid,2) /) )
    14361419               CALL netcdf_handle_error( 'netcdf_define_header', 556 )
    1437              
     1420
    14381421             ENDDO
    14391422             DEALLOCATE( netcdf_data_2d )
     
    14471430
    14481431          DO  k = 0, 2
    1449 !               
     1432!
    14501433!--          Scalar grid points
    14511434             IF ( k == 0 )  THEN
    14521435                shift_x = 0.5 ; shift_y = 0.5
    1453 !               
     1436!
    14541437!--          u grid points
    14551438             ELSEIF ( k == 1 )  THEN
    14561439                shift_x = 0.0 ; shift_y = 0.5
    1457 !               
     1440!
    14581441!--          v grid points
    14591442             ELSEIF ( k == 2 )  THEN
     
    15901573
    15911574!
    1592 !--       decompose actual parameter file_id (=formal parameter av) into 
     1575!--       decompose actual parameter file_id (=formal parameter av) into
    15931576!--       mid and av
    15941577          file_id = av
     
    17141697!
    17151698!--       Update the title attribute on file
    1716 !--       In order to avoid 'data mode' errors if updated attributes are larger 
    1717 !--       than their original size, NF90_PUT_ATT is called in 'define mode' 
    1718 !--       enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible 
    1719 !--       performance loss due to data copying; an alternative strategy would be 
     1699!--       In order to avoid 'data mode' errors if updated attributes are larger
     1700!--       than their original size, NF90_PUT_ATT is called in 'define mode'
     1701!--       enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible
     1702!--       performance loss due to data copying; an alternative strategy would be
    17201703!--       to ensure equal attribute size in a job chain. Maybe revise later.
    17211704          IF ( av == 0 )  THEN
     
    18391822                                     id_var_zusi_3d(av), 'meters',             &
    18401823                                     'zu(nzb_s_inner)', 413, 414, 415 )
    1841 !             
     1824!
    18421825!--          Define zwwi = zw(nzb_w_inner)
    18431826             CALL netcdf_create_var( id_set_3d(av), (/ id_dim_x_3d(av),        &
     
    18461829                                     'zw(nzb_w_inner)', 416, 417, 418 )
    18471830
    1848           ENDIF             
     1831          ENDIF
    18491832
    18501833          IF ( land_surface )  THEN
     
    18661849          DO WHILE ( do3d(av,i)(1:1) /= ' ' )
    18671850!
    1868 !--          Temporary solution to account for data output within the new urban 
     1851!--          Temporary solution to account for data output within the new urban
    18691852!--          surface model (urban_surface_mod.f90), see also SELECT CASE ( trimvar )
    18701853             trimvar = TRIM( do3d(av,i) )
     
    19071890                   grid_z = 'zw'
    19081891
    1909 !             
    1910 !--             Block of urban surface model outputs   
     1892!
     1893!--             Block of urban surface model outputs
    19111894                CASE ( 'usm_output' )
    19121895                   CALL usm_define_netcdf_grid( do3d(av,i), found, &
     
    19521935                   ENDIF
    19531936!
    1954 !--                Check for indoor model quantities                   
    1955                    IF ( .NOT. found .AND. indoor_model ) THEN 
     1937!--                Check for indoor model quantities
     1938                   IF ( .NOT. found .AND. indoor_model ) THEN
    19561939                      CALL im_define_netcdf_grid( do3d(av,i), found,           &
    19571940                                                  grid_x, grid_y, grid_z )
     
    19661949
    19671950!
    1968 !--                Check for chemistry quantities                   
     1951!--                Check for chemistry quantities
    19691952                   IF ( .NOT. found  .AND.  air_chemistry )  THEN
    19701953                      CALL chem_define_netcdf_grid( do3d(av,i), found,         &
     
    19771960                      CALL salsa_define_netcdf_grid( do3d(av,i), found, grid_x,&
    19781961                                                     grid_y, grid_z )
    1979                    ENDIF                 
    1980 !                   
     1962                   ENDIF
     1963!
    19811964!--                Check for user-defined quantities
    19821965                   IF ( .NOT. found  .AND.  user_module_enabled )  THEN
     
    19841967                                                    grid_y, grid_z )
    19851968                   ENDIF
    1986                    
     1969
    19871970                   IF ( .NOT. found )                                          &
    19881971                      CALL doq_define_netcdf_grid( do3d(av,i), found, grid_x,  &
    19891972                                                   grid_y, grid_z        )
    1990                                                  
     1973
    19911974                   IF ( .NOT. found )  THEN
    19921975                      WRITE ( message_string, * ) 'no grid defined for varia', &
     
    21332116                ALLOCATE( netcdf_data(0:nx) )
    21342117                DO  k = 0, 2
    2135 !               
     2118!
    21362119!--                Scalar grid points
    21372120                   IF ( k == 0 )  THEN
    21382121                      shift_x = 0.5
    2139 !               
     2122!
    21402123!--                u grid points
    21412124                   ELSEIF ( k == 1 )  THEN
    21422125                      shift_x = 0.0
    2143 !               
     2126!
    21442127!--                v grid points
    21452128                   ELSEIF ( k == 2 )  THEN
    21462129                      shift_x = 0.5
    21472130                   ENDIF
    2148                
     2131
    21492132                   DO  i = 0, nx
    21502133                     netcdf_data(i) = init_model%origin_x            &
    21512134                                    + cos_ra * ( i + shift_x ) * dx
    21522135                   ENDDO
    2153                
     2136
    21542137                   nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_eutm_3d(k,av),&
    21552138                                           netcdf_data, start = (/ 1 /),   &
     
    21962179                cos_ra = COS( init_model%rotation_angle * pi / 180.0_wp )
    21972180                sin_ra = SIN( init_model%rotation_angle * pi / 180.0_wp )
    2198                
     2181
    21992182                DO  k = 0, 2
    2200 !               
     2183!
    22012184!--               Scalar grid points
    22022185                  IF ( k == 0 )  THEN
    22032186                     shift_x = 0.5 ; shift_y = 0.5
    2204 !               
     2187!
    22052188!--               u grid points
    22062189                  ELSEIF ( k == 1 )  THEN
    22072190                     shift_x = 0.0 ; shift_y = 0.5
    2208 !               
     2191!
    22092192!--               v grid points
    22102193                  ELSEIF ( k == 2 )  THEN
    22112194                     shift_x = 0.5 ; shift_y = 0.0
    22122195                  ENDIF
    2213                
     2196
    22142197                  DO  j = 0, ny
    22152198                     DO  i = 0, nx
     
    22192202                     ENDDO
    22202203                  ENDDO
    2221                
     2204
    22222205                  nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_eutm_3d(k,av),  &
    22232206                                          netcdf_data_2d, start = (/ 1, 1 /),   &
    22242207                                          count = (/ nx+1, ny+1 /) )
    22252208                  CALL netcdf_handle_error( 'netcdf_define_header', 555 )
    2226                
     2209
    22272210                  DO  j = 0, ny
    22282211                     DO  i = 0, nx
     
    22322215                     ENDDO
    22332216                  ENDDO
    2234                
     2217
    22352218                  nc_stat = NF90_PUT_VAR( id_set_3d(av), id_var_nutm_3d(k,av),  &
    22362219                                          netcdf_data_2d, start = (/ 1, 1 /),   &
    22372220                                          count = (/ nx+1, ny+1 /) )
    22382221                  CALL netcdf_handle_error( 'netcdf_define_header', 556 )
    2239                
     2222
    22402223                ENDDO
    22412224                DEALLOCATE( netcdf_data_2d )
     
    22742257
    22752258             DO  k = 0, 2
    2276 !               
     2259!
    22772260!--             Scalar grid points
    22782261                IF ( k == 0 )  THEN
    22792262                   shift_x = 0.5 ; shift_y = 0.5
    2280 !               
     2263!
    22812264!--             u grid points
    22822265                ELSEIF ( k == 1 )  THEN
    22832266                   shift_x = 0.0 ; shift_y = 0.5
    2284 !               
     2267!
    22852268!--             v grid points
    22862269                ELSEIF ( k == 2 )  THEN
     
    25342517!
    25352518!--       Update the title attribute on file
    2536 !--       In order to avoid 'data mode' errors if updated attributes are larger 
    2537 !--       than their original size, NF90_PUT_ATT is called in 'define mode' 
    2538 !--       enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible 
    2539 !--       performance loss due to data copying; an alternative strategy would be 
     2519!--       In order to avoid 'data mode' errors if updated attributes are larger
     2520!--       than their original size, NF90_PUT_ATT is called in 'define mode'
     2521!--       enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible
     2522!--       performance loss due to data copying; an alternative strategy would be
    25402523!--       to ensure equal attribute size. Maybe revise later.
    25412524          IF ( av == 0 )  THEN
     
    26312614!        CASE ( 'ag_ext' )
    26322615! !+?agent extend output for restart runs has to be adapted
    2633 ! 
     2616!
    26342617! !
    26352618! !--       Get the id of the time coordinate (unlimited coordinate) and its
     
    26392622!           nc_stat = NF90_INQ_VARID( id_set_agt, 'time', id_var_time_agt )
    26402623!           CALL netcdf_handle_error( 'netcdf_define_header', 343 )
    2641 ! 
     2624!
    26422625!           nc_stat = NF90_INQUIRE_VARIABLE( id_set_agt, id_var_time_agt, &
    26432626!                                            dimids = id_dim_time_old )
    26442627!           CALL netcdf_handle_error( 'netcdf_define_header', 344 )
    26452628!           id_dim_time_agt = id_dim_time_old(1)
    2646 ! 
     2629!
    26472630!           nc_stat = NF90_INQUIRE_DIMENSION( id_set_agt, id_dim_time_agt, &
    26482631!                                             len = agt_time_count )
    26492632!           CALL netcdf_handle_error( 'netcdf_define_header', 345 )
    2650 ! 
     2633!
    26512634!           nc_stat = NF90_GET_VAR( id_set_agt, id_var_time_agt,  &
    26522635!                                   last_time_coordinate,         &
     
    26542637!                                   count = (/ 1 /) )
    26552638!           CALL netcdf_handle_error( 'netcdf_define_header', 346 )
    2656 ! 
     2639!
    26572640!           IF ( last_time_coordinate(1) >= simulated_time )  THEN
    26582641!              message_string = 'netCDF file for agents ' //                  &
     
    26682651!              RETURN
    26692652!           ENDIF
    2670 ! 
     2653!
    26712654! !
    26722655! !--       Dataset seems to be extendable.
     
    26752658!                                     id_var_rnoa_agt )
    26762659!           CALL netcdf_handle_error( 'netcdf_define_header', 347 )
    2677 ! 
     2660!
    26782661!           DO  i = 1, 17
    2679 ! 
     2662!
    26802663!              nc_stat = NF90_INQ_VARID( id_set_agt, agt_var_names(i), &
    26812664!                                        id_var_prt(i) )
    26822665!              CALL netcdf_handle_error( 'netcdf_define_header', 348 )
    2683 ! 
     2666!
    26842667!           ENDDO
    2685 ! 
     2668!
    26862669!           message_string = 'netCDF file for particles ' // &
    26872670!                            'from previous run found.' //   &
    26882671!                            '&This file will be extended.'
    26892672!           CALL message( 'define_netcdf_header', 'PA0266', 0, 0, 0, 6, 0 )
    2690          
     2673
    26912674
    26922675       CASE ( 'xy_new' )
     
    28302813                                     id_var_zusi_xy(av), 'meters',             &
    28312814                                     'zu(nzb_s_inner)', 421, 422, 423 )
    2832 !             
     2815!
    28332816!--          Define zwwi = zw(nzb_w_inner)
    28342817             CALL netcdf_create_var( id_set_xy(av), (/ id_dim_x_xy(av),        &
     
    29352918                                                           grid_x, grid_y,     &
    29362919                                                           grid_z )
    2937                          ENDIF                       
     2920                         ENDIF
    29382921
    29392922!
     
    29582941                                                          grid_z )
    29592942                         ENDIF
    2960                          
     2943
    29612944                         IF ( .NOT. found )                                    &
    29622945                            CALL doq_define_netcdf_grid(                       &
     
    31923175                ALLOCATE( netcdf_data(0:nx) )
    31933176                DO  k = 0, 2
    3194 !               
     3177!
    31953178!--                Scalar grid points
    31963179                   IF ( k == 0 )  THEN
    31973180                      shift_x = 0.5
    3198 !               
     3181!
    31993182!--                u grid points
    32003183                   ELSEIF ( k == 1 )  THEN
    32013184                      shift_x = 0.0
    3202 !               
     3185!
    32033186!--                v grid points
    32043187                   ELSEIF ( k == 2 )  THEN
    32053188                      shift_x = 0.5
    32063189                   ENDIF
    3207                
     3190
    32083191                   DO  i = 0, nx
    32093192                     netcdf_data(i) = init_model%origin_x            &
    32103193                                    + cos_ra * ( i + shift_x ) * dx
    32113194                   ENDDO
    3212                
     3195
    32133196                   nc_stat = NF90_PUT_VAR( id_set_xy(av), id_var_eutm_xy(k,av),&
    32143197                                           netcdf_data, start = (/ 1 /),   &
     
    32553238                cos_ra = COS( init_model%rotation_angle * pi / 180.0_wp )
    32563239                sin_ra = SIN( init_model%rotation_angle * pi / 180.0_wp )
    3257                
     3240
    32583241                DO  k = 0, 2
    3259 !               
     3242!
    32603243!--               Scalar grid points
    32613244                  IF ( k == 0 )  THEN
    32623245                     shift_x = 0.5 ; shift_y = 0.5
    3263 !               
     3246!
    32643247!--               u grid points
    32653248                  ELSEIF ( k == 1 )  THEN
    32663249                     shift_x = 0.0 ; shift_y = 0.5
    3267 !               
     3250!
    32683251!--               v grid points
    32693252                  ELSEIF ( k == 2 )  THEN
    32703253                     shift_x = 0.5 ; shift_y = 0.0
    32713254                  ENDIF
    3272                
     3255
    32733256                  DO  j = 0, ny
    32743257                     DO  i = 0, nx
     
    32783261                     ENDDO
    32793262                  ENDDO
    3280                
     3263
    32813264                  nc_stat = NF90_PUT_VAR( id_set_xy(av), id_var_eutm_xy(k,av),  &
    32823265                                          netcdf_data_2d, start = (/ 1, 1 /),   &
    32833266                                          count = (/ nx+1, ny+1 /) )
    32843267                  CALL netcdf_handle_error( 'netcdf_define_header', 555 )
    3285                
     3268
    32863269                  DO  j = 0, ny
    32873270                     DO  i = 0, nx
     
    32913274                     ENDDO
    32923275                  ENDDO
    3293                
     3276
    32943277                  nc_stat = NF90_PUT_VAR( id_set_xy(av), id_var_nutm_xy(k,av),  &
    32953278                                          netcdf_data_2d, start = (/ 1, 1 /),   &
     
    33123295
    33133296             DO  k = 0, 2
    3314 !               
     3297!
    33153298!--             Scalar grid points
    33163299                IF ( k == 0 )  THEN
    33173300                   shift_x = 0.5 ; shift_y = 0.5
    3318 !               
     3301!
    33193302!--             u grid points
    33203303                ELSEIF ( k == 1 )  THEN
    33213304                   shift_x = 0.0 ; shift_y = 0.5
    3322 !               
     3305!
    33233306!--             v grid points
    33243307                ELSEIF ( k == 2 )  THEN
     
    33573340          ENDIF
    33583341!
    3359 !--       In case of non-flat topography write height information. Only for 
     3342!--       In case of non-flat topography write height information. Only for
    33603343!--       parallel netcdf output.
    33613344          IF ( TRIM( topography ) /= 'flat'  .AND.                             &
     
    36223605!
    36233606!--       Update the title attribute on file
    3624 !--       In order to avoid 'data mode' errors if updated attributes are larger 
    3625 !--       than their original size, NF90_PUT_ATT is called in 'define mode' 
    3626 !--       enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible 
    3627 !--       performance loss due to data copying; an alternative strategy would be 
     3607!--       In order to avoid 'data mode' errors if updated attributes are larger
     3608!--       than their original size, NF90_PUT_ATT is called in 'define mode'
     3609!--       enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible
     3610!--       performance loss due to data copying; an alternative strategy would be
    36283611!--       to ensure equal attribute size in a job chain. Maybe revise later.
    36293612          IF ( av == 0 )  THEN
     
    36453628                           '&This file will be extended.'
    36463629          CALL message( 'define_netcdf_header', 'PA0253', 0, 0, 0, 6, 0 )
    3647          
     3630
    36483631
    36493632       CASE ( 'xz_new' )
     
    38383821                         CALL salsa_define_netcdf_grid( do2d(av,i), found,     &
    38393822                                                        grid_x, grid_y, grid_z )
    3840                       ENDIF                         
     3823                      ENDIF
    38413824
    38423825!
     
    38543837                                                       grid_z )
    38553838                      ENDIF
    3856                      
     3839
    38573840                      IF ( .NOT. found )                                       &
    38583841                         CALL doq_define_netcdf_grid( do2d(av,i), found,       &
     
    39253908!
    39263909!--                   Test simulations showed that the output of cross sections
    3927 !--                   by all PEs in data_output_2d using NF90_COLLECTIVE is 
     3910!--                   by all PEs in data_output_2d using NF90_COLLECTIVE is
    39283911!--                   faster than the output by the first row of PEs in
    39293912!--                   x-direction using NF90_INDEPENDENT.
    3930                       nc_stat = NF90_VAR_PAR_ACCESS( id_set_xz(av),    & 
     3913                      nc_stat = NF90_VAR_PAR_ACCESS( id_set_xz(av),    &
    39313914                                                    id_var_do2d(av,i), &
    39323915                                                    NF90_COLLECTIVE )
     
    40774060                ALLOCATE( netcdf_data(0:nx) )
    40784061                DO  k = 0, 2
    4079 !               
     4062!
    40804063!--                Scalar grid points
    40814064                   IF ( k == 0 )  THEN
    40824065                      shift_x = 0.5
    4083 !               
     4066!
    40844067!--                u grid points
    40854068                   ELSEIF ( k == 1 )  THEN
    40864069                      shift_x = 0.0
    4087 !               
     4070!
    40884071!--                v grid points
    40894072                   ELSEIF ( k == 2 )  THEN
    40904073                      shift_x = 0.5
    40914074                   ENDIF
    4092                
     4075
    40934076                   DO  i = 0, nx
    40944077                     netcdf_data(i) = init_model%origin_x            &
    40954078                                    + cos_ra * ( i + shift_x ) * dx
    40964079                   ENDDO
    4097                
     4080
    40984081                   nc_stat = NF90_PUT_VAR( id_set_xz(av), id_var_eutm_xz(k,av),&
    40994082                                           netcdf_data, start = (/ 1 /),   &
     
    41444127                cos_ra = COS( init_model%rotation_angle * pi / 180.0_wp )
    41454128                sin_ra = SIN( init_model%rotation_angle * pi / 180.0_wp )
    4146                
     4129
    41474130                DO  k = 0, 2
    4148 !               
     4131!
    41494132!--                Scalar grid points
    41504133                   IF ( k == 0 )  THEN
    41514134                      shift_x = 0.5 ; shift_y = 0.5
    4152 !                 
     4135!
    41534136!--                u grid points
    41544137                   ELSEIF ( k == 1 )  THEN
    41554138                      shift_x = 0.0 ; shift_y = 0.5
    4156 !                 
     4139!
    41574140!--                v grid points
    41584141                   ELSEIF ( k == 2 )  THEN
     
    41714154                      ENDIF
    41724155                   ENDDO
    4173                    
     4156
    41744157                   nc_stat = NF90_PUT_VAR( id_set_xz(av), id_var_eutm_xz(k,av),  &
    41754158                                           netcdf_data_2d, start = (/ 1, 1 /),   &
    41764159                                           count = (/ nx+1, ns /) )
    41774160                   CALL netcdf_handle_error( 'netcdf_define_header', 555 )
    4178                    
     4161
    41794162                   DO  j = 1, ns
    41804163                      IF( section(j,2) == -1 )  THEN
     
    41884171                      ENDIF
    41894172                   ENDDO
    4190                    
     4173
    41914174                   nc_stat = NF90_PUT_VAR( id_set_xz(av), id_var_nutm_xz(k,av),  &
    41924175                                           netcdf_data_2d, start = (/ 1, 1 /),   &
    41934176                                           count = (/ nx+1, ns /) )
    41944177                   CALL netcdf_handle_error( 'netcdf_define_header', 556 )
    4195                
     4178
    41964179                ENDDO
    41974180                DEALLOCATE( netcdf_data_2d )
     
    42054188
    42064189             DO  k = 0, 2
    4207 !               
     4190!
    42084191!--             Scalar grid points
    42094192                IF ( k == 0 )  THEN
    42104193                   shift_x = 0.5 ; shift_y = 0.5
    4211 !               
     4194!
    42124195!--             u grid points
    42134196                ELSEIF ( k == 1 )  THEN
    42144197                   shift_x = 0.0 ; shift_y = 0.5
    4215 !               
     4198!
    42164199!--             v grid points
    42174200                ELSEIF ( k == 2 )  THEN
     
    43194302                              TRIM( var ) // ' from previous run found,' // &
    43204303                              '&but this file cannot be extended due to' // &
    4321                               ' mismatch in number of' //                   & 
     4304                              ' mismatch in number of' //                   &
    43224305                              ' cross sections.' //                         &
    43234306                              '&New file is created instead.'
     
    44654448!
    44664449!--                   Test simulations showed that the output of cross sections
    4467 !--                   by all PEs in data_output_2d using NF90_COLLECTIVE is 
     4450!--                   by all PEs in data_output_2d using NF90_COLLECTIVE is
    44684451!--                   faster than the output by the first row of PEs in
    44694452!--                   x-direction using NF90_INDEPENDENT.
     
    44844467!
    44854468!--       Update the title attribute on file
    4486 !--       In order to avoid 'data mode' errors if updated attributes are larger 
    4487 !--       than their original size, NF90_PUT_ATT is called in 'define mode' 
    4488 !--       enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible 
    4489 !--       performance loss due to data copying; an alternative strategy would be 
     4469!--       In order to avoid 'data mode' errors if updated attributes are larger
     4470!--       than their original size, NF90_PUT_ATT is called in 'define mode'
     4471!--       enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible
     4472!--       performance loss due to data copying; an alternative strategy would be
    44904473!--       to ensure equal attribute size in a job chain. Maybe revise later.
    44914474          IF ( av == 0 )  THEN
     
    47014684                         CALL salsa_define_netcdf_grid( do2d(av,i), found,     &
    47024685                                                        grid_x, grid_y, grid_z )
    4703                       ENDIF                           
     4686                      ENDIF
    47044687!
    47054688!--                   Check for gust module quantities
     
    47164699                                                       grid_z )
    47174700                      ENDIF
    4718                      
     4701
    47194702                      IF ( .NOT. found )                                       &
    47204703                         CALL doq_define_netcdf_grid(                          &
     
    47864769!
    47874770!--                   Test simulations showed that the output of cross sections
    4788 !--                   by all PEs in data_output_2d using NF90_COLLECTIVE is 
     4771!--                   by all PEs in data_output_2d using NF90_COLLECTIVE is
    47894772!--                   faster than the output by the first row of PEs in
    47904773!--                   y-direction using NF90_INDEPENDENT.
     
    49274910                ALLOCATE( netcdf_data(1:ns) )
    49284911                DO  k = 0, 2
    4929 !               
     4912!
    49304913!--                Scalar grid points
    49314914                   IF ( k == 0 )  THEN
    49324915                      shift_x = 0.5
    4933 !               
     4916!
    49344917!--                u grid points
    49354918                   ELSEIF ( k == 1 )  THEN
    49364919                      shift_x = 0.0
    4937 !               
     4920!
    49384921!--                v grid points
    49394922                   ELSEIF ( k == 2 )  THEN
    49404923                      shift_x = 0.5
    49414924                   ENDIF
    4942                
     4925
    49434926                   DO  i = 1, ns
    49444927                      IF( section(i,3) == -1 )  THEN
     
    49494932                      ENDIF
    49504933                   ENDDO
    4951                
     4934
    49524935                   nc_stat = NF90_PUT_VAR( id_set_yz(av), id_var_eutm_yz(k,av),&
    49534936                                           netcdf_data, start = (/ 1 /),   &
     
    49964979
    49974980                DO  k = 0, 2
    4998 !               
     4981!
    49994982!--                Scalar grid points
    50004983                   IF ( k == 0 )  THEN
    50014984                      shift_x = 0.5 ; shift_y = 0.5
    5002 !                 
     4985!
    50034986!--                u grid points
    50044987                   ELSEIF ( k == 1 )  THEN
    50054988                      shift_x = 0.0 ; shift_y = 0.5
    5006 !                 
     4989!
    50074990!--                v grid points
    50084991                   ELSEIF ( k == 2 )  THEN
     
    50215004                      ENDDO
    50225005                   ENDDO
    5023                    
     5006
    50245007                   nc_stat = NF90_PUT_VAR( id_set_yz(av), id_var_eutm_yz(k,av),  &
    50255008                                           netcdf_data_2d, start = (/ 1, 1 /),   &
    50265009                                           count = (/ ns, ny+1 /) )
    50275010                   CALL netcdf_handle_error( 'netcdf_define_header', 555 )
    5028                    
     5011
    50295012                   DO  j = 0, ny
    50305013                      DO  i = 1, ns
     
    50435026                                           count = (/ ns, ny+1 /) )
    50445027                   CALL netcdf_handle_error( 'netcdf_define_header', 556 )
    5045                
     5028
    50465029                ENDDO
    50475030                DEALLOCATE( netcdf_data_2d )
     
    50555038
    50565039             DO  k = 0, 2
    5057 !               
     5040!
    50585041!--             Scalar grid points
    50595042                IF ( k == 0 )  THEN
    50605043                   shift_x = 0.5 ; shift_y = 0.5
    5061 !               
     5044!
    50625045!--             u grid points
    50635046                ELSEIF ( k == 1 )  THEN
    50645047                   shift_x = 0.0 ; shift_y = 0.5
    5065 !               
     5048!
    50665049!--             v grid points
    50675050                ELSEIF ( k == 2 )  THEN
     
    51365119                              TRIM( var ) // ' from previous run found,' //  &
    51375120                              '&but this file cannot be extended due to' //  &
    5138                               ' variable mismatch.' //                       & 
     5121                              ' variable mismatch.' //                       &
    51395122                              '&New file is created instead.'
    51405123             CALL message( 'define_netcdf_header', 'PA0249', 0, 1, 0, 6, 0 )
     
    53155298!
    53165299!--                   Test simulations showed that the output of cross sections
    5317 !--                   by all PEs in data_output_2d using NF90_COLLECTIVE is 
     5300!--                   by all PEs in data_output_2d using NF90_COLLECTIVE is
    53185301!--                   faster than the output by the first row of PEs in
    53195302!--                   y-direction using NF90_INDEPENDENT.
     
    53345317!
    53355318!--       Update the title attribute on file
    5336 !--       In order to avoid 'data mode' errors if updated attributes are larger 
    5337 !--       than their original size, NF90_PUT_ATT is called in 'define mode' 
    5338 !--       enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible 
    5339 !--       performance loss due to data copying; an alternative strategy would be 
     5319!--       In order to avoid 'data mode' errors if updated attributes are larger
     5320!--       than their original size, NF90_PUT_ATT is called in 'define mode'
     5321!--       enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible
     5322!--       performance loss due to data copying; an alternative strategy would be
    53405323!--       to ensure equal attribute size in a job chain. Maybe revise later.
    53415324          IF ( av == 0 )  THEN
     
    53785361!--       This information can be used by palmplot.
    53795362          nc_stat = NF90_PUT_ATT( id_set_pr, NF90_GLOBAL,                     &
    5380                                   'no_rows',                                  & 
    5381                                   profile_rows ) 
     5363                                  'no_rows',                                  &
     5364                                  profile_rows )
    53825365          CALL netcdf_handle_error( 'netcdf_define_header', 519 )
    53835366
    53845367          nc_stat = NF90_PUT_ATT( id_set_pr, NF90_GLOBAL,                     &
    5385                                   'no_columns',                               & 
    5386                                   profile_columns ) 
     5368                                  'no_columns',                               &
     5369                                  profile_columns )
    53875370          CALL netcdf_handle_error( 'netcdf_define_header', 520 )
    53885371
     
    54195402          cross_profiles_count = MIN( crmax, k-1 )
    54205403!
    5421 !--       Check if all profiles defined in cross_profiles are defined in 
     5404!--       Check if all profiles defined in cross_profiles are defined in
    54225405!--       data_output_pr. If not, they will be skipped.
    54235406          DO  i = 1, cross_profiles_count
     
    54565439          ENDDO
    54575440!
    5458 !--       Check if all profiles defined in data_output_pr are defined in 
     5441!--       Check if all profiles defined in data_output_pr are defined in
    54595442!--       cross_profiles. If not, they will be added to cross_profiles.
    54605443          DO  i = 1, dopr_n
     
    54885471
    54895472!
    5490 !--       Writing cross_profiles to netcdf header. This information can be 
    5491 !--       used by palmplot. Each profile is separated by ",", each cross is 
     5473!--       Writing cross_profiles to netcdf header. This information can be
     5474!--       used by palmplot. Each profile is separated by ",", each cross is
    54925475!--       separated by ";".
    54935476          char_cross_profiles = ';'
     
    57085691          i = 1
    57095692          DO  i = 1, dopr_n
    5710  
     5693
    57115694             IF ( statistic_regions == 0 )  THEN
    57125695                nc_stat = NF90_INQ_VARID( id_set_pr, data_output_pr(i),        &
     
    57365719!
    57375720!--       Update the title attribute on file
    5738 !--       In order to avoid 'data mode' errors if updated attributes are larger 
    5739 !--       than their original size, NF90_PUT_ATT is called in 'define mode' 
    5740 !--       enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible 
    5741 !--       performance loss due to data copying; an alternative strategy would be 
     5721!--       In order to avoid 'data mode' errors if updated attributes are larger
     5722!--       than their original size, NF90_PUT_ATT is called in 'define mode'
     5723!--       enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible
     5724!--       performance loss due to data copying; an alternative strategy would be
    57425725!--       to ensure equal attribute size in a job chain. Maybe revise later.
    57435726          IF ( averaging_interval_pr == 0.0_wp )  THEN
     
    59115894          i = 1
    59125895          DO  i = 1, dots_num
    5913  
     5896
    59145897             IF ( statistic_regions == 0 )  THEN
    59155898                nc_stat = NF90_INQ_VARID( id_set_ts, dots_label(i), &
     
    59305913!
    59315914!--       Update the title attribute on file
    5932 !--       In order to avoid 'data mode' errors if updated attributes are larger 
    5933 !--       than their original size, NF90_PUT_ATT is called in 'define mode' 
    5934 !--       enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible 
    5935 !--       performance loss due to data copying; an alternative strategy would be 
     5915!--       In order to avoid 'data mode' errors if updated attributes are larger
     5916!--       than their original size, NF90_PUT_ATT is called in 'define mode'
     5917!--       enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible
     5918!--       performance loss due to data copying; an alternative strategy would be
    59365919!--       to ensure equal attribute size in a job chain. Maybe revise later.
    59375920          nc_stat = NF90_REDEF( id_set_ts )
     
    62766259                              'from previous run found,' //                    &
    62776260                              '&but this file cannot be extended becaus' //    &
    6278                               'e the current output time' //                   & 
     6261                              'e the current output time' //                   &
    62796262                              '&is less or equal than the last output t' //    &
    62806263                              'ime on this file.' //                           &
     
    63126295!
    63136296!--       Update the title attribute on file
    6314 !--       In order to avoid 'data mode' errors if updated attributes are larger 
    6315 !--       than their original size, NF90_PUT_ATT is called in 'define mode' 
    6316 !--       enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible 
    6317 !--       performance loss due to data copying; an alternative strategy would be 
     6297!--       In order to avoid 'data mode' errors if updated attributes are larger
     6298!--       than their original size, NF90_PUT_ATT is called in 'define mode'
     6299!--       enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible
     6300!--       performance loss due to data copying; an alternative strategy would be
    63186301!--       to ensure equal attribute size in a job chain. Maybe revise later.
    63196302          nc_stat = NF90_REDEF( id_set_sp )
     
    64516434!                           '&This file will be extended.'
    64526435!          CALL message( 'define_netcdf_header', 'PA0266', 0, 0, 0, 6, 0 )
    6453        
     6436
    64546437
    64556438
     
    66096592          i = 1
    66106593          DO  i = 1, dopts_num
    6611  
     6594
    66126595             DO  j = 0, number_of_particle_groups
    66136596
     
    66326615!
    66336616!--       Update the title attribute on file
    6634 !--       In order to avoid 'data mode' errors if updated attributes are larger 
    6635 !--       than their original size, NF90_PUT_ATT is called in 'define mode' 
    6636 !--       enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible 
    6637 !--       performance loss due to data copying; an alternative strategy would be 
     6617!--       In order to avoid 'data mode' errors if updated attributes are larger
     6618!--       than their original size, NF90_PUT_ATT is called in 'define mode'
     6619!--       enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible
     6620!--       performance loss due to data copying; an alternative strategy would be
    66386621!--       to ensure equal attribute size in a job chain. Maybe revise later.
    66396622          nc_stat = NF90_REDEF( id_set_pts )
     
    67026685
    67036686                k = k + 1
    6704                
     6687
    67056688             ENDDO
    67066689
     
    68046787
    68056788          DO  i = 1, num_leg * num_var_fl
    6806  
     6789
    68076790            nc_stat = NF90_INQ_VARID( id_set_fl, dofl_label(i), &
    68086791                                       id_var_dofl(i) )
     
    68136796!
    68146797!--       Update the title attribute on file
    6815 !--       In order to avoid 'data mode' errors if updated attributes are larger 
    6816 !--       than their original size, NF90_PUT_ATT is called in 'define mode' 
    6817 !--       enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible 
    6818 !--       performance loss due to data copying; an alternative strategy would be 
     6798!--       In order to avoid 'data mode' errors if updated attributes are larger
     6799!--       than their original size, NF90_PUT_ATT is called in 'define mode'
     6800!--       enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible
     6801!--       performance loss due to data copying; an alternative strategy would be
    68196802!--       to ensure equal attribute size in a job chain. Maybe revise later.
    68206803          nc_stat = NF90_REDEF( id_set_fl )
     
    68486831!> for parallel netCDF output support.
    68496832!------------------------------------------------------------------------------!
    6850  
     6833
    68516834 SUBROUTINE netcdf_create_file( filename , id, parallel, errno )
    68526835#if defined( __netcdf )
     
    69606943!> Prints out a text message corresponding to the current status.
    69616944!------------------------------------------------------------------------------!
    6962  
     6945
    69636946 SUBROUTINE netcdf_handle_error( routine_name, errno )
    69646947#if defined( __netcdf )
     
    70377020    CHARACTER(LEN=*), INTENT(IN) ::  var_name
    70387021
    7039     LOGICAL, OPTIONAL ::  fill  !< indicates setting of _FillValue attribute 
     7022    LOGICAL, OPTIONAL ::  fill  !< indicates setting of _FillValue attribute
    70407023
    70417024    INTEGER, INTENT(IN)  ::  error_no1
     
    70787061!
    70797062!-- Set _FillValue for all variables, except for dimension variables.
    7080 !-- Set the fill values accordingly to the corresponding output precision. 
     7063!-- Set the fill values accordingly to the corresponding output precision.
    70817064    IF ( PRESENT( fill ) )  THEN
    70827065       IF ( var_type == NF90_REAL4 )  THEN
     
    73837366
    73847367    INTEGER(iwp) ::  j   !< loop index
    7385    
     7368
    73867369    REAL(wp), INTENT(in)  ::  eutm !< easting (UTM)
    73877370    REAL(wp), INTENT(out) ::  lat  !< geographic latitude in degree
     
    75727555
    75737556       minute =  INT( second / 60.0_wp, KIND=iwp )
    7574        
     7557
    75757558       second = second - 60.0_wp * REAL( minute, KIND=wp )
    75767559
Note: See TracChangeset for help on using the changeset viewer.