Ignore:
Timestamp:
Feb 26, 2019 4:23:41 PM (5 years ago)
Author:
raasch
Message:

unused_variables removed, bugfix in im_define_netcdf_grid argument list, trim added to avoid truncation compiler warnings, save attribute added to local targets to avoid outlive pointer target warning, first argument removed from module_interface_rrd_*, file module_interface reformatted with respect to coding standards, bugfix in surface_data_output_rrd_local (variable k removed)

File:
1 edited

Legend:

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

    r3762 r3766  
    2525! -----------------
    2626! $Id$
     27! first argument removed from module_interface_rrd_*, statement added to avoid
     28! compiler warning about unused variable, file reformatted with respect to coding
     29! standards
     30!
     31! 3762 2019-02-25 16:54:16Z suehring
    2732! only pass required arguments to surface_data_output_rrd_local
    2833!
     
    7681!> @todo Re-format module to be consistent with coding standard
    7782!------------------------------------------------------------------------------!
    78 MODULE module_interface
    79 
    80    USE indices,                                                                &
    81        ONLY:  nbgp, nxl, nxlg, nxr, nxrg, nys, nysg, nyn, nyng, nzb, nzt
    82 
    83    USE kinds
    84 
    85 !- load module-specific control parameters.
    86 !- ToDo: move all of them to respective module or a dedicated central module
    87 
    88    USE control_parameters,                                                     &
    89        ONLY:  biometeorology,                                                  &
    90               air_chemistry,                                                   &
    91               indoor_model,                                                    &
    92               land_surface,                                                    &
    93               large_scale_forcing,                                             &
    94               nesting_offline,                                                 &
    95               nudging,                                                         &
    96               ocean_mode,                                                      &
    97               plant_canopy,                                                    &
    98               salsa,                                                           &
    99               surface_output,                                                  &
    100               syn_turb_gen,                                                    &
    101               urban_surface,                                                   &
    102               virtual_flight,                                                  &
    103               virtual_measurement,                                             &
    104               wind_turbine
    105 
    106 !- load interface routines of all PALM modules
    107 
    108    USE biometeorology_mod,                                                     &
    109        ONLY:  bio_parin,                                                       &
    110               bio_check_data_output,                                           &
    111               bio_init,                                                        &
    112               bio_init_checks,                                                 &
    113               bio_header,                                                      &
    114               bio_3d_data_averaging,                                           &
    115               bio_data_output_2d,                                              &
    116               bio_data_output_3d,                                              &
    117               bio_rrd_global,                                                  &
    118               bio_rrd_local,                                                   &
    119               bio_wrd_global,                                                  &
    120               bio_wrd_local
    121 
    122    USE bulk_cloud_model_mod,                                                   &
    123        ONLY:  bulk_cloud_model,                                                &
    124               bcm_parin,                                                       &
    125               bcm_check_parameters,                                            &
    126               bcm_check_data_output_pr,                                        &
    127               bcm_check_data_output,                                           &
    128               bcm_init_arrays,                                                 &
    129               bcm_init,                                                        &
    130               bcm_header,                                                      &
    131               bcm_swap_timelevel,                                              &
    132               bcm_3d_data_averaging,                                           &
    133               bcm_data_output_2d,                                              &
    134               bcm_data_output_3d,                                              &
    135               bcm_rrd_global,                                                  &
    136               bcm_wrd_global,                                                  &
    137               bcm_rrd_local,                                                   &
    138               bcm_wrd_local
     83 MODULE module_interface
     84
     85    USE indices,                                                               &
     86        ONLY:  nbgp, nxl, nxlg, nxr, nxrg, nys, nysg, nyn, nyng, nzb, nzt
     87
     88    USE kinds
     89
     90!
     91!-- load module-specific control parameters.
     92!-- ToDo: move all of them to respective module or a dedicated central module
     93    USE control_parameters,                                                    &
     94        ONLY:  biometeorology,                                                 &
     95               air_chemistry,                                                  &
     96               indoor_model,                                                   &
     97               land_surface,                                                   &
     98               large_scale_forcing,                                            &
     99               nesting_offline,                                                &
     100               nudging,                                                        &
     101               ocean_mode,                                                     &
     102               plant_canopy,                                                   &
     103               salsa,                                                          &
     104               surface_output,                                                 &
     105               syn_turb_gen,                                                   &
     106               urban_surface,                                                  &
     107               virtual_flight,                                                 &
     108               virtual_measurement,                                            &
     109               wind_turbine
     110
     111!
     112!-- load interface routines of all PALM modules
     113    USE biometeorology_mod,                                                    &
     114        ONLY:  bio_parin,                                                      &
     115               bio_check_data_output,                                          &
     116               bio_init,                                                       &
     117               bio_init_checks,                                                &
     118               bio_header,                                                     &
     119               bio_3d_data_averaging,                                          &
     120               bio_data_output_2d,                                             &
     121               bio_data_output_3d,                                             &
     122               bio_rrd_global,                                                 &
     123               bio_rrd_local,                                                  &
     124               bio_wrd_global,                                                 &
     125               bio_wrd_local
     126
     127    USE bulk_cloud_model_mod,                                                  &
     128        ONLY:  bulk_cloud_model,                                               &
     129               bcm_parin,                                                      &
     130               bcm_check_parameters,                                           &
     131               bcm_check_data_output_pr,                                       &
     132               bcm_check_data_output,                                          &
     133               bcm_init_arrays,                                                &
     134               bcm_init,                                                       &
     135               bcm_header,                                                     &
     136               bcm_swap_timelevel,                                             &
     137               bcm_3d_data_averaging,                                          &
     138               bcm_data_output_2d,                                             &
     139               bcm_data_output_3d,                                             &
     140               bcm_rrd_global,                                                 &
     141               bcm_wrd_global,                                                 &
     142               bcm_rrd_local,                                                  &
     143               bcm_wrd_local
    139144
    140145   USE chemistry_model_mod,                                                    &
     
    152157              chem_statistics,                                                 &
    153158              chem_rrd_local,                                                  &
    154               chem_wrd_local
    155 
    156    USE flight_mod,                                                             &
    157        ONLY:  flight_parin,                                                    &
    158               flight_header,                                                   &
    159               flight_init,                                                     &
    160               flight_rrd_global,                                               &
    161               flight_wrd_global
    162 
    163    USE gust_mod,                                                               &
    164        ONLY:  gust_module_enabled,                                             &
    165               gust_parin,                                                      &
    166               gust_check_parameters,                                           &
    167               gust_check_data_output_pr,                                       &
    168               gust_check_data_output,                                          &
    169               gust_init_arrays,                                                &
    170               gust_init,                                                       &
    171               gust_header,                                                     &
    172               gust_actions,                                                    &
    173               gust_swap_timelevel,                                             &
    174               gust_3d_data_averaging,                                          &
    175               gust_data_output_2d,                                             &
    176               gust_data_output_3d,                                             &
    177               gust_statistics,                                                 &
    178               gust_rrd_global,                                                 &
    179               gust_wrd_global,                                                 &
    180               gust_rrd_local,                                                  &
    181               gust_wrd_local
    182 
    183    USE indoor_model_mod,                                                       &
    184        ONLY:  im_parin,                                                        &
    185               im_check_data_output,                                            &
    186               im_check_parameters,                                             &
    187               im_data_output_3d,                                               &
    188               im_init
    189 
    190    USE land_surface_model_mod,                                                 &
    191        ONLY:  lsm_parin,                                                       &
    192               lsm_check_parameters,                                            &
    193               lsm_check_data_output_pr,                                        &
    194               lsm_check_data_output,                                           &
    195               lsm_init_arrays,                                                 &
    196               lsm_init,                                                        &
    197               lsm_header,                                                      &
    198               lsm_swap_timelevel,                                              &
    199               lsm_3d_data_averaging,                                           &
    200               lsm_data_output_2d,                                              &
    201               lsm_rrd_local,                                                   &
    202               lsm_wrd_local
    203 
    204    USE lsf_nudging_mod,                                                        &
    205        ONLY:  lsf_nudging_check_parameters,                                    &
    206               lsf_nudging_check_data_output_pr,                                &
    207               lsf_init,                                                        &
    208               nudge_init,                                                      &
    209               lsf_nudging_header
    210 
    211    USE multi_agent_system_mod,                                                 &
    212        ONLY:  mas_parin
    213 
    214    USE nesting_offl_mod,                                                       &
    215        ONLY:  nesting_offl_parin,                                              &
    216               nesting_offl_check_parameters,                                   &
    217               nesting_offl_header
    218 
    219    USE ocean_mod,                                                              &
    220        ONLY:  ocean_parin,                                                     &
    221               ocean_check_parameters,                                          &
    222               ocean_check_data_output_pr,                                      &
    223               ocean_check_data_output,                                         &
    224               ocean_init_arrays,                                               &
    225               ocean_init,                                                      &
    226               ocean_header,                                                    &
    227               ocean_swap_timelevel,                                            &
    228               ocean_3d_data_averaging,                                         &
    229               ocean_data_output_2d,                                            &
    230               ocean_data_output_3d,                                            &
    231               ocean_rrd_global,                                                &
    232               ocean_wrd_global,                                                &
    233               ocean_rrd_local,                                                 &
    234               ocean_wrd_local
    235 
    236    USE plant_canopy_model_mod,                                                 &
    237         ONLY: pcm_parin,                                                       &
    238               pcm_check_parameters,                                            &
    239               pcm_check_data_output,                                           &
    240               pcm_init,                                                        &
    241               pcm_header,                                                      &
    242               pcm_data_output_3d
    243 
    244    USE radiation_model_mod,                                                    &
    245        ONLY:  radiation,                                                       &
    246               radiation_parin,                                                 &
    247               radiation_check_parameters,                                      &
    248               radiation_check_data_output_ts,                                  &
    249               radiation_check_data_output_pr,                                  &
    250               radiation_check_data_output,                                     &
    251               radiation_init,                                                  &
    252               radiation_header,                                                &
    253               radiation_3d_data_averaging,                                     &
    254               radiation_data_output_2d,                                        &
    255               radiation_data_output_3d,                                        &
    256               radiation_rrd_local,                                             &
    257               radiation_wrd_local
    258 
    259    USE salsa_mod,                                                              &
    260        ONLY:  salsa_parin,                                                     &
    261               salsa_check_parameters,                                          &
    262               salsa_check_data_output,                                         &
    263               salsa_init_arrays,                                               &
    264               salsa_init,                                                      &
    265               salsa_header,                                                    &
    266               salsa_swap_timelevel,                                            &
    267               salsa_3d_data_averaging,                                         &
    268               salsa_data_output_2d,                                            &
    269               salsa_data_output_3d,                                            &
    270               salsa_rrd_local,                                                 &
    271               salsa_wrd_local
    272 
    273    USE spectra_mod,                                                            &
    274        ONLY:  calculate_spectra,                                               &
    275               spectra_parin,                                                   &
    276               spectra_check_parameters,                                        &
    277               spectra_header
    278 
    279    USE surface_data_output_mod,                                                &
    280        ONLY:  surface_data_output_parin,                                       &
    281               surface_data_output_check_parameters,                            &
    282               surface_data_output_init_arrays,                                 &
    283               surface_data_output_rrd_local,                                   &
    284               surface_data_output_rrd_global,                                  &
    285               surface_data_output_wrd_local,                                   &
    286               surface_data_output_wrd_global
    287 
    288    USE synthetic_turbulence_generator_mod,                                     &
    289        ONLY:  stg_parin,                                                       &
    290               stg_check_parameters,                                            &
    291               stg_header,                                                      &
    292               stg_rrd_global,                                                  &
    293               stg_wrd_global
    294 
    295    USE urban_surface_mod,                                                      &
    296        ONLY:  usm_parin,                                                       &
    297               usm_check_parameters,                                            &
    298               usm_check_data_output,                                           &
    299               usm_init_arrays,                                                 &
    300               usm_init,                                                        &
    301               usm_swap_timelevel,                                              &
    302               usm_3d_data_averaging,                                           &
    303               usm_rrd_local,                                                   &
    304               usm_wrd_local
    305 
    306    USE user,                                                                   &
    307        ONLY:  user_module_enabled,                                             &
    308               user_parin,                                                      &
    309               user_check_parameters,                                           &
    310               user_check_data_output_ts,                                       &
    311               user_check_data_output_pr,                                       &
    312               user_check_data_output,                                          &
    313               user_init,                                                       &
    314               user_init_arrays,                                                &
    315               user_header,                                                     &
    316               user_actions,                                                    &
    317               user_3d_data_averaging,                                          &
    318               user_data_output_2d,                                             &
    319               user_data_output_3d,                                             &
    320               user_statistics,                                                 &
    321               user_rrd_global,                                                 &
    322               user_rrd_local,                                                  &
    323               user_wrd_global,                                                 &
    324               user_wrd_local,                                                  &
    325               user_last_actions
    326 
    327    USE virtual_measurement_mod,                                                &
    328        ONLY:  vm_check_parameters,                                             &
    329               vm_init,                                                         &
    330               vm_last_actions,                                                 &
    331               vm_parin
    332 
    333    USE wind_turbine_model_mod,                                                 &
    334        ONLY:  wtm_parin,                                                       &
    335               wtm_check_parameters,                                            &
    336               wtm_init_arrays,                                                 &
    337               wtm_init,                                                        &
    338               wtm_rrd_global,                                                  &
    339               wtm_wrd_global
    340 
    341    IMPLICIT NONE
    342 
    343    PRIVATE
    344 
    345 !
    346 !- Public functions
    347    PUBLIC                                                                      &
    348       module_interface_parin,                                                  &
    349       module_interface_check_parameters,                                       &
    350       module_interface_check_data_output_ts,                                   &
    351       module_interface_check_data_output_pr,                                   &
    352       module_interface_check_data_output,                                      &
    353       module_interface_init_masks,                                             &
    354       module_interface_define_netcdf_grid,                                     &
    355       module_interface_init_arrays,                                            &
    356       module_interface_init,                                                   &
    357       module_interface_init_checks,                                            &
    358       module_interface_header,                                                 &
    359       module_interface_actions,                                                &
    360       module_interface_swap_timelevel,                                         &
    361       module_interface_3d_data_averaging,                                      &
    362       module_interface_data_output_2d,                                         &
    363       module_interface_data_output_3d,                                         &
    364       module_interface_statistics,                                             &
    365       module_interface_rrd_global,                                             &
    366       module_interface_wrd_global,                                             &
    367       module_interface_rrd_local,                                              &
    368       module_interface_wrd_local,                                              &
    369       module_interface_last_actions
    370 
    371 
    372    INTERFACE module_interface_parin
    373       MODULE PROCEDURE module_interface_parin
    374    END INTERFACE module_interface_parin
    375 
    376    INTERFACE module_interface_check_parameters
    377       MODULE PROCEDURE module_interface_check_parameters
    378    END INTERFACE module_interface_check_parameters
    379 
    380    INTERFACE module_interface_check_data_output_ts
    381       MODULE PROCEDURE module_interface_check_data_output_ts
    382    END INTERFACE module_interface_check_data_output_ts
    383 
    384    INTERFACE module_interface_check_data_output_pr
    385       MODULE PROCEDURE module_interface_check_data_output_pr
    386    END INTERFACE module_interface_check_data_output_pr
    387 
    388    INTERFACE module_interface_check_data_output
    389       MODULE PROCEDURE module_interface_check_data_output
    390    END INTERFACE module_interface_check_data_output
    391 
    392    INTERFACE module_interface_init_masks
    393       MODULE PROCEDURE module_interface_init_masks
    394    END INTERFACE module_interface_init_masks
    395 
    396    INTERFACE module_interface_define_netcdf_grid
    397       MODULE PROCEDURE module_interface_define_netcdf_grid
    398    END INTERFACE module_interface_define_netcdf_grid
    399 
    400    INTERFACE module_interface_init_arrays
    401       MODULE PROCEDURE module_interface_init_arrays
    402    END INTERFACE module_interface_init_arrays
    403 
    404    INTERFACE module_interface_init
    405       MODULE PROCEDURE module_interface_init
    406    END INTERFACE module_interface_init
    407 
    408    INTERFACE module_interface_init_checks
    409       MODULE PROCEDURE module_interface_init_checks
    410    END INTERFACE module_interface_init_checks
    411 
    412    INTERFACE module_interface_header
    413       MODULE PROCEDURE module_interface_header
    414    END INTERFACE module_interface_header
    415 
    416    INTERFACE module_interface_actions
    417       MODULE PROCEDURE module_interface_actions
    418       MODULE PROCEDURE module_interface_actions_ij
    419    END INTERFACE module_interface_actions
    420 
    421    INTERFACE module_interface_swap_timelevel
    422       MODULE PROCEDURE module_interface_swap_timelevel
    423    END INTERFACE module_interface_swap_timelevel
    424 
    425    INTERFACE module_interface_3d_data_averaging
    426       MODULE PROCEDURE module_interface_3d_data_averaging
    427    END INTERFACE module_interface_3d_data_averaging
    428 
    429    INTERFACE module_interface_data_output_2d
    430       MODULE PROCEDURE module_interface_data_output_2d
    431    END INTERFACE module_interface_data_output_2d
    432 
    433    INTERFACE module_interface_data_output_3d
    434       MODULE PROCEDURE module_interface_data_output_3d
    435    END INTERFACE module_interface_data_output_3d
    436 
    437    INTERFACE module_interface_statistics
    438       MODULE PROCEDURE module_interface_statistics
    439    END INTERFACE module_interface_statistics
    440 
    441    INTERFACE module_interface_rrd_global
    442       MODULE PROCEDURE module_interface_rrd_global
    443    END INTERFACE module_interface_rrd_global
    444 
    445    INTERFACE module_interface_wrd_global
    446       MODULE PROCEDURE module_interface_wrd_global
    447    END INTERFACE module_interface_wrd_global
    448 
    449    INTERFACE module_interface_rrd_local
    450       MODULE PROCEDURE module_interface_rrd_local
    451    END INTERFACE module_interface_rrd_local
    452 
    453    INTERFACE module_interface_wrd_local
    454       MODULE PROCEDURE module_interface_wrd_local
    455    END INTERFACE module_interface_wrd_local
    456 
    457    INTERFACE module_interface_last_actions
    458       MODULE PROCEDURE module_interface_last_actions
    459    END INTERFACE module_interface_last_actions
    460 
    461 
    462 CONTAINS
     159               chem_wrd_local
     160
     161    USE flight_mod,                                                            &
     162        ONLY:  flight_parin,                                                   &
     163               flight_header,                                                  &
     164               flight_init,                                                    &
     165               flight_rrd_global,                                              &
     166               flight_wrd_global
     167
     168    USE gust_mod,                                                              &
     169        ONLY:  gust_module_enabled,                                            &
     170               gust_parin,                                                     &
     171               gust_check_parameters,                                          &
     172               gust_check_data_output_pr,                                      &
     173               gust_check_data_output,                                         &
     174               gust_init_arrays,                                               &
     175               gust_init,                                                      &
     176               gust_header,                                                    &
     177               gust_actions,                                                   &
     178               gust_swap_timelevel,                                            &
     179               gust_3d_data_averaging,                                         &
     180               gust_data_output_2d,                                            &
     181               gust_data_output_3d,                                            &
     182               gust_statistics,                                                &
     183               gust_rrd_global,                                                &
     184               gust_wrd_global,                                                &
     185               gust_rrd_local,                                                 &
     186               gust_wrd_local
     187
     188    USE indoor_model_mod,                                                      &
     189        ONLY:  im_parin,                                                       &
     190               im_check_data_output,                                           &
     191               im_check_parameters,                                            &
     192               im_data_output_3d,                                              &
     193               im_init
     194
     195    USE land_surface_model_mod,                                                &
     196        ONLY:  lsm_parin,                                                      &
     197               lsm_check_parameters,                                           &
     198               lsm_check_data_output_pr,                                       &
     199               lsm_check_data_output,                                          &
     200               lsm_init_arrays,                                                &
     201               lsm_init,                                                       &
     202               lsm_header,                                                     &
     203               lsm_swap_timelevel,                                             &
     204               lsm_3d_data_averaging,                                          &
     205               lsm_data_output_2d,                                             &
     206               lsm_rrd_local,                                                  &
     207               lsm_wrd_local
     208
     209    USE lsf_nudging_mod,                                                       &
     210        ONLY:  lsf_nudging_check_parameters,                                   &
     211               lsf_nudging_check_data_output_pr,                               &
     212               lsf_init,                                                       &
     213               nudge_init,                                                     &
     214               lsf_nudging_header
     215
     216    USE multi_agent_system_mod,                                                &
     217        ONLY:  mas_parin
     218
     219    USE nesting_offl_mod,                                                      &
     220        ONLY:  nesting_offl_parin,                                             &
     221               nesting_offl_check_parameters,                                  &
     222               nesting_offl_header
     223
     224    USE ocean_mod,                                                             &
     225        ONLY:  ocean_parin,                                                    &
     226               ocean_check_parameters,                                         &
     227               ocean_check_data_output_pr,                                     &
     228               ocean_check_data_output,                                        &
     229               ocean_init_arrays,                                              &
     230               ocean_init,                                                     &
     231               ocean_header,                                                   &
     232               ocean_swap_timelevel,                                           &
     233               ocean_3d_data_averaging,                                        &
     234               ocean_data_output_2d,                                           &
     235               ocean_data_output_3d,                                           &
     236               ocean_rrd_global,                                               &
     237               ocean_wrd_global,                                               &
     238               ocean_rrd_local,                                                &
     239               ocean_wrd_local
     240
     241    USE plant_canopy_model_mod,                                                &
     242         ONLY: pcm_parin,                                                      &
     243               pcm_check_parameters,                                           &
     244               pcm_check_data_output,                                          &
     245               pcm_init,                                                       &
     246               pcm_header,                                                     &
     247               pcm_data_output_3d
     248
     249    USE radiation_model_mod,                                                   &
     250        ONLY:  radiation,                                                      &
     251               radiation_parin,                                                &
     252               radiation_check_parameters,                                     &
     253               radiation_check_data_output_ts,                                 &
     254               radiation_check_data_output_pr,                                 &
     255               radiation_check_data_output,                                    &
     256               radiation_init,                                                 &
     257               radiation_header,                                               &
     258               radiation_3d_data_averaging,                                    &
     259               radiation_data_output_2d,                                       &
     260               radiation_data_output_3d,                                       &
     261               radiation_rrd_local,                                            &
     262               radiation_wrd_local
     263
     264    USE salsa_mod,                                                             &
     265        ONLY:  salsa_parin,                                                    &
     266               salsa_check_parameters,                                         &
     267               salsa_check_data_output,                                        &
     268               salsa_init_arrays,                                              &
     269               salsa_init,                                                     &
     270               salsa_header,                                                   &
     271               salsa_swap_timelevel,                                           &
     272               salsa_3d_data_averaging,                                        &
     273               salsa_data_output_2d,                                           &
     274               salsa_data_output_3d,                                           &
     275               salsa_rrd_local,                                                &
     276               salsa_wrd_local
     277
     278    USE spectra_mod,                                                           &
     279        ONLY:  calculate_spectra,                                              &
     280               spectra_parin,                                                  &
     281               spectra_check_parameters,                                       &
     282               spectra_header
     283
     284    USE surface_data_output_mod,                                               &
     285        ONLY:  surface_data_output_parin,                                      &
     286               surface_data_output_check_parameters,                           &
     287               surface_data_output_init_arrays,                                &
     288               surface_data_output_rrd_local,                                  &
     289               surface_data_output_rrd_global,                                 &
     290               surface_data_output_wrd_local,                                  &
     291               surface_data_output_wrd_global
     292
     293    USE synthetic_turbulence_generator_mod,                                    &
     294        ONLY:  stg_parin,                                                      &
     295               stg_check_parameters,                                           &
     296               stg_header,                                                     &
     297               stg_rrd_global,                                                 &
     298               stg_wrd_global
     299
     300    USE urban_surface_mod,                                                     &
     301        ONLY:  usm_parin,                                                      &
     302               usm_check_parameters,                                           &
     303               usm_check_data_output,                                          &
     304               usm_init_arrays,                                                &
     305               usm_init,                                                       &
     306               usm_swap_timelevel,                                             &
     307               usm_3d_data_averaging,                                          &
     308               usm_rrd_local,                                                  &
     309               usm_wrd_local
     310
     311    USE user,                                                                  &
     312        ONLY:  user_module_enabled,                                            &
     313               user_parin,                                                     &
     314               user_check_parameters,                                          &
     315               user_check_data_output_ts,                                      &
     316               user_check_data_output_pr,                                      &
     317               user_check_data_output,                                         &
     318               user_init,                                                      &
     319               user_init_arrays,                                               &
     320               user_header,                                                    &
     321               user_actions,                                                   &
     322               user_3d_data_averaging,                                         &
     323               user_data_output_2d,                                            &
     324               user_data_output_3d,                                            &
     325               user_statistics,                                                &
     326               user_rrd_global,                                                &
     327               user_rrd_local,                                                 &
     328               user_wrd_global,                                                &
     329               user_wrd_local,                                                 &
     330               user_last_actions
     331
     332    USE virtual_measurement_mod,                                               &
     333        ONLY:  vm_check_parameters,                                            &
     334               vm_init,                                                        &
     335               vm_last_actions,                                                &
     336               vm_parin
     337
     338    USE wind_turbine_model_mod,                                                &
     339        ONLY:  wtm_parin,                                                      &
     340               wtm_check_parameters,                                           &
     341               wtm_init_arrays,                                                &
     342               wtm_init,                                                       &
     343               wtm_rrd_global,                                                 &
     344               wtm_wrd_global
     345
     346    IMPLICIT NONE
     347
     348    PRIVATE
     349
     350!
     351!-- Public functions
     352    PUBLIC                                                                     &
     353       module_interface_parin,                                                 &
     354       module_interface_check_parameters,                                      &
     355       module_interface_check_data_output_ts,                                  &
     356       module_interface_check_data_output_pr,                                  &
     357       module_interface_check_data_output,                                     &
     358       module_interface_init_masks,                                            &
     359       module_interface_define_netcdf_grid,                                    &
     360       module_interface_init_arrays,                                           &
     361       module_interface_init,                                                  &
     362       module_interface_init_checks,                                           &
     363       module_interface_header,                                                &
     364       module_interface_actions,                                               &
     365       module_interface_swap_timelevel,                                        &
     366       module_interface_3d_data_averaging,                                     &
     367       module_interface_data_output_2d,                                        &
     368       module_interface_data_output_3d,                                        &
     369       module_interface_statistics,                                            &
     370       module_interface_rrd_global,                                            &
     371       module_interface_wrd_global,                                            &
     372       module_interface_rrd_local,                                             &
     373       module_interface_wrd_local,                                             &
     374       module_interface_last_actions
     375
     376
     377    INTERFACE module_interface_parin
     378       MODULE PROCEDURE module_interface_parin
     379    END INTERFACE module_interface_parin
     380
     381    INTERFACE module_interface_check_parameters
     382       MODULE PROCEDURE module_interface_check_parameters
     383    END INTERFACE module_interface_check_parameters
     384
     385    INTERFACE module_interface_check_data_output_ts
     386       MODULE PROCEDURE module_interface_check_data_output_ts
     387    END INTERFACE module_interface_check_data_output_ts
     388
     389    INTERFACE module_interface_check_data_output_pr
     390       MODULE PROCEDURE module_interface_check_data_output_pr
     391    END INTERFACE module_interface_check_data_output_pr
     392
     393    INTERFACE module_interface_check_data_output
     394       MODULE PROCEDURE module_interface_check_data_output
     395    END INTERFACE module_interface_check_data_output
     396
     397    INTERFACE module_interface_init_masks
     398       MODULE PROCEDURE module_interface_init_masks
     399    END INTERFACE module_interface_init_masks
     400
     401    INTERFACE module_interface_define_netcdf_grid
     402       MODULE PROCEDURE module_interface_define_netcdf_grid
     403    END INTERFACE module_interface_define_netcdf_grid
     404
     405    INTERFACE module_interface_init_arrays
     406       MODULE PROCEDURE module_interface_init_arrays
     407    END INTERFACE module_interface_init_arrays
     408
     409    INTERFACE module_interface_init
     410       MODULE PROCEDURE module_interface_init
     411    END INTERFACE module_interface_init
     412
     413    INTERFACE module_interface_init_checks
     414       MODULE PROCEDURE module_interface_init_checks
     415    END INTERFACE module_interface_init_checks
     416
     417    INTERFACE module_interface_header
     418       MODULE PROCEDURE module_interface_header
     419    END INTERFACE module_interface_header
     420
     421    INTERFACE module_interface_actions
     422       MODULE PROCEDURE module_interface_actions
     423       MODULE PROCEDURE module_interface_actions_ij
     424    END INTERFACE module_interface_actions
     425
     426    INTERFACE module_interface_swap_timelevel
     427       MODULE PROCEDURE module_interface_swap_timelevel
     428    END INTERFACE module_interface_swap_timelevel
     429
     430    INTERFACE module_interface_3d_data_averaging
     431       MODULE PROCEDURE module_interface_3d_data_averaging
     432    END INTERFACE module_interface_3d_data_averaging
     433
     434    INTERFACE module_interface_data_output_2d
     435       MODULE PROCEDURE module_interface_data_output_2d
     436    END INTERFACE module_interface_data_output_2d
     437
     438    INTERFACE module_interface_data_output_3d
     439       MODULE PROCEDURE module_interface_data_output_3d
     440    END INTERFACE module_interface_data_output_3d
     441
     442    INTERFACE module_interface_statistics
     443       MODULE PROCEDURE module_interface_statistics
     444    END INTERFACE module_interface_statistics
     445
     446    INTERFACE module_interface_rrd_global
     447       MODULE PROCEDURE module_interface_rrd_global
     448    END INTERFACE module_interface_rrd_global
     449
     450    INTERFACE module_interface_wrd_global
     451       MODULE PROCEDURE module_interface_wrd_global
     452    END INTERFACE module_interface_wrd_global
     453
     454    INTERFACE module_interface_rrd_local
     455       MODULE PROCEDURE module_interface_rrd_local
     456    END INTERFACE module_interface_rrd_local
     457
     458    INTERFACE module_interface_wrd_local
     459       MODULE PROCEDURE module_interface_wrd_local
     460    END INTERFACE module_interface_wrd_local
     461
     462    INTERFACE module_interface_last_actions
     463       MODULE PROCEDURE module_interface_last_actions
     464    END INTERFACE module_interface_last_actions
     465
     466
     467 CONTAINS
    463468
    464469
     
    468473!> Read module-specific parameter namelists
    469474!------------------------------------------------------------------------------!
    470 SUBROUTINE module_interface_parin
    471 
    472 
    473    CALL bio_parin
    474    CALL bcm_parin
    475    CALL chem_parin
    476    CALL flight_parin ! ToDo: rename module to match filename
    477    CALL gust_parin
    478    CALL im_parin
    479    CALL lsm_parin
    480    ! ToDo: create parin routine for large_scale_forcing and nudging (should be seperate modules or new module switch)
    481    CALL mas_parin
    482    CALL nesting_offl_parin
    483    CALL ocean_parin
    484    CALL pcm_parin
    485    CALL radiation_parin
    486    CALL salsa_parin
    487    CALL spectra_parin
    488    CALL surface_data_output_parin
    489    CALL stg_parin
    490    CALL user_parin ! ToDo: make user code a single Fortran module
    491    CALL usm_parin
    492    CALL vm_parin
    493    CALL wtm_parin
    494 
    495    CALL package_parin ! ToDo: deprecated, needs to be dissolved
    496 
    497 
    498 END SUBROUTINE module_interface_parin
     475 SUBROUTINE module_interface_parin
     476
     477
     478    CALL bio_parin
     479    CALL bcm_parin
     480    CALL chem_parin
     481    CALL flight_parin ! ToDo: rename module to match filename
     482    CALL gust_parin
     483    CALL im_parin
     484    CALL lsm_parin
     485    ! ToDo: create parin routine for large_scale_forcing and nudging (should be seperate modules or new module switch)
     486    CALL mas_parin
     487    CALL nesting_offl_parin
     488    CALL ocean_parin
     489    CALL pcm_parin
     490    CALL radiation_parin
     491    CALL salsa_parin
     492    CALL spectra_parin
     493    CALL surface_data_output_parin
     494    CALL stg_parin
     495    CALL user_parin ! ToDo: make user code a single Fortran module
     496    CALL usm_parin
     497    CALL vm_parin
     498    CALL wtm_parin
     499
     500    CALL package_parin ! ToDo: deprecated, needs to be dissolved
     501
     502
     503 END SUBROUTINE module_interface_parin
    499504
    500505
     
    504509!> Perform module-specific initialization checks
    505510!------------------------------------------------------------------------------!
    506 SUBROUTINE module_interface_check_parameters
    507 
    508 
    509    IF ( bulk_cloud_model )     CALL bcm_check_parameters
    510    IF ( air_chemistry )        CALL chem_check_parameters
    511    IF ( gust_module_enabled )  CALL gust_check_parameters
    512    IF ( indoor_model )         CALL im_check_parameters
    513    IF ( land_surface )         CALL lsm_check_parameters
    514    IF ( large_scale_forcing  .OR.  nudging )  CALL lsf_nudging_check_parameters ! ToDo: create single module switch
    515    IF ( nesting_offline )      CALL nesting_offl_check_parameters
    516    IF ( ocean_mode )           CALL ocean_check_parameters
    517    IF ( plant_canopy )         CALL pcm_check_parameters
    518    IF ( radiation )            CALL radiation_check_parameters
    519    IF ( salsa )                CALL salsa_check_parameters
    520    IF ( calculate_spectra )    CALL spectra_check_parameters
    521    IF ( surface_output )       CALL surface_data_output_check_parameters
    522    IF ( syn_turb_gen )         CALL stg_check_parameters
    523    IF ( urban_surface )        CALL usm_check_parameters
    524    IF ( virtual_measurement )  CALL vm_check_parameters
    525    IF ( wind_turbine )         CALL wtm_check_parameters
    526    IF ( user_module_enabled )  CALL user_check_parameters
    527 
    528 
    529 END SUBROUTINE module_interface_check_parameters
     511 SUBROUTINE module_interface_check_parameters
     512
     513
     514    IF ( bulk_cloud_model )     CALL bcm_check_parameters
     515    IF ( air_chemistry )        CALL chem_check_parameters
     516    IF ( gust_module_enabled )  CALL gust_check_parameters
     517    IF ( indoor_model )         CALL im_check_parameters
     518    IF ( land_surface )         CALL lsm_check_parameters
     519    IF ( large_scale_forcing  .OR.  nudging )  CALL lsf_nudging_check_parameters ! ToDo: create single module switch
     520    IF ( nesting_offline )      CALL nesting_offl_check_parameters
     521    IF ( ocean_mode )           CALL ocean_check_parameters
     522    IF ( plant_canopy )         CALL pcm_check_parameters
     523    IF ( radiation )            CALL radiation_check_parameters
     524    IF ( salsa )                CALL salsa_check_parameters
     525    IF ( calculate_spectra )    CALL spectra_check_parameters
     526    IF ( surface_output )       CALL surface_data_output_check_parameters
     527    IF ( syn_turb_gen )         CALL stg_check_parameters
     528    IF ( urban_surface )        CALL usm_check_parameters
     529    IF ( virtual_measurement )  CALL vm_check_parameters
     530    IF ( wind_turbine )         CALL wtm_check_parameters
     531    IF ( user_module_enabled )  CALL user_check_parameters
     532
     533
     534 END SUBROUTINE module_interface_check_parameters
    530535
    531536
     
    535540!> Check module-specific data output of timeseries
    536541!------------------------------------------------------------------------------!
    537 SUBROUTINE module_interface_check_data_output_ts( dots_max, dots_num, dots_label, dots_unit )
    538 
    539 
    540    INTEGER(iwp),      INTENT(IN)    ::  dots_max !< variable output array index
    541    INTEGER(iwp),      INTENT(INOUT)    ::  dots_num !< variable output array index
    542    CHARACTER (LEN=*), DIMENSION(dots_max), INTENT(INOUT) :: dots_label
    543    CHARACTER (LEN=*), DIMENSION(dots_max), INTENT(INOUT) :: dots_unit
    544 
    545 
    546    IF ( radiation )  THEN
    547       CALL radiation_check_data_output_ts( dots_max, dots_num, dots_label, dots_unit )
    548    ENDIF
    549 
    550    IF ( user_module_enabled )  THEN
    551       CALL user_check_data_output_ts( dots_max, dots_num, dots_label, dots_unit )
    552    ENDIF
    553 
    554 
    555 END SUBROUTINE module_interface_check_data_output_ts
     542 SUBROUTINE module_interface_check_data_output_ts( dots_max, dots_num, dots_label, dots_unit )
     543
     544
     545    INTEGER(iwp),      INTENT(IN)    ::  dots_max !< variable output array index
     546    INTEGER(iwp),      INTENT(INOUT)    ::  dots_num !< variable output array index
     547    CHARACTER (LEN=*), DIMENSION(dots_max), INTENT(INOUT) :: dots_label
     548    CHARACTER (LEN=*), DIMENSION(dots_max), INTENT(INOUT) :: dots_unit
     549
     550
     551    IF ( radiation )  THEN
     552       CALL radiation_check_data_output_ts( dots_max, dots_num, dots_label, dots_unit )
     553    ENDIF
     554
     555    IF ( user_module_enabled )  THEN
     556       CALL user_check_data_output_ts( dots_max, dots_num, dots_label, dots_unit )
     557    ENDIF
     558
     559
     560 END SUBROUTINE module_interface_check_data_output_ts
    556561
    557562
     
    561566!> Check module-specific data output of profiles
    562567!------------------------------------------------------------------------------!
    563 SUBROUTINE module_interface_check_data_output_pr( variable, var_count, unit,   &
    564                                                 dopr_unit )
    565 
    566 
    567    CHARACTER (LEN=*), INTENT(IN)    ::  variable  !< variable name
    568    INTEGER(iwp),      INTENT(IN)    ::  var_count !< variable output array index
    569    CHARACTER (LEN=*), INTENT(INOUT) ::  unit      !< physical unit of variable
    570    CHARACTER (LEN=*), INTENT(OUT)   ::  dopr_unit !< local value of dopr_unit
    571 
    572    IF ( unit == 'illegal' .AND.  bulk_cloud_model )  THEN
    573       CALL bcm_check_data_output_pr( variable, var_count, unit, dopr_unit )
    574    ENDIF
    575 
    576    IF ( unit == 'illegal' .AND.  air_chemistry )  THEN
    577       CALL chem_check_data_output_pr( variable, var_count, unit, dopr_unit )
    578    ENDIF
    579 
    580    IF ( unit == 'illegal'  .AND.  gust_module_enabled  )  THEN
    581       CALL gust_check_data_output_pr( variable, var_count, unit, dopr_unit )
    582    ENDIF
    583 
    584    IF ( unit == 'illegal' )  THEN ! ToDo: add module switch if possible
    585       CALL lsm_check_data_output_pr( variable, var_count, unit, dopr_unit )
    586    ENDIF
    587 
    588    IF ( unit == 'illegal' )  THEN ! ToDo: add module switch if possible
    589       CALL lsf_nudging_check_data_output_pr( variable, var_count, unit, dopr_unit )
    590    ENDIF
    591 
    592    IF ( unit == 'illegal'  .AND.  ocean_mode )  THEN
    593       CALL ocean_check_data_output_pr( variable, var_count, unit, dopr_unit )
    594    ENDIF
    595 
    596    IF ( unit == 'illegal'  .AND.  radiation )  THEN
    597       CALL radiation_check_data_output_pr( variable, var_count, unit, dopr_unit )
    598    ENDIF
    599 
    600    IF ( unit == 'illegal'  .AND.  user_module_enabled )  THEN
    601       unit = '' ! ToDo: Seems like a hack. Find a general soultion!
    602       CALL user_check_data_output_pr( variable, var_count, unit, dopr_unit )
    603    ENDIF
    604 
    605 
    606 
    607 END SUBROUTINE module_interface_check_data_output_pr
     568 SUBROUTINE module_interface_check_data_output_pr( variable, var_count, unit,  &
     569                                                   dopr_unit )
     570
     571
     572    CHARACTER (LEN=*), INTENT(IN)    ::  variable  !< variable name
     573    INTEGER(iwp),      INTENT(IN)    ::  var_count !< variable output array index
     574    CHARACTER (LEN=*), INTENT(INOUT) ::  unit      !< physical unit of variable
     575    CHARACTER (LEN=*), INTENT(OUT)   ::  dopr_unit !< local value of dopr_unit
     576
     577    IF ( unit == 'illegal' .AND.  bulk_cloud_model )  THEN
     578       CALL bcm_check_data_output_pr( variable, var_count, unit, dopr_unit )
     579    ENDIF
     580
     581    IF ( unit == 'illegal' .AND.  air_chemistry )  THEN
     582       CALL chem_check_data_output_pr( variable, var_count, unit, dopr_unit )
     583    ENDIF
     584
     585    IF ( unit == 'illegal'  .AND.  gust_module_enabled  )  THEN
     586       CALL gust_check_data_output_pr( variable, var_count, unit, dopr_unit )
     587    ENDIF
     588
     589    IF ( unit == 'illegal' )  THEN ! ToDo: add module switch if possible
     590       CALL lsm_check_data_output_pr( variable, var_count, unit, dopr_unit )
     591    ENDIF
     592
     593    IF ( unit == 'illegal' )  THEN ! ToDo: add module switch if possible
     594       CALL lsf_nudging_check_data_output_pr( variable, var_count, unit, dopr_unit )
     595    ENDIF
     596
     597    IF ( unit == 'illegal'  .AND.  ocean_mode )  THEN
     598       CALL ocean_check_data_output_pr( variable, var_count, unit, dopr_unit )
     599    ENDIF
     600
     601    IF ( unit == 'illegal'  .AND.  radiation )  THEN
     602       CALL radiation_check_data_output_pr( variable, var_count, unit, dopr_unit )
     603    ENDIF
     604
     605    IF ( unit == 'illegal'  .AND.  user_module_enabled )  THEN
     606       unit = '' ! ToDo: Seems like a hack. Find a general soultion!
     607       CALL user_check_data_output_pr( variable, var_count, unit, dopr_unit )
     608    ENDIF
     609
     610
     611 END SUBROUTINE module_interface_check_data_output_pr
    608612
    609613!------------------------------------------------------------------------------!
     
    612616!> Check module-specific 2D and 3D data output
    613617!------------------------------------------------------------------------------!
    614 SUBROUTINE module_interface_check_data_output( variable, unit, i, j, ilen, k )
    615 
    616 
    617    CHARACTER (LEN=*), INTENT(IN)    ::  variable !< variable name
    618    CHARACTER (LEN=*), INTENT(INOUT) ::  unit     !< physical unit of variable
    619 
    620    INTEGER(iwp),      INTENT(IN)    :: i         !< ToDo: remove dummy argument, instead pass string from data_output
    621    INTEGER(iwp),      INTENT(IN)    :: j         !< average quantity? 0 = no, 1 = yes
    622    INTEGER(iwp),      INTENT(IN)    :: ilen      !< ToDo: remove dummy argument, instead pass string from data_output
    623    INTEGER(iwp),      INTENT(IN)    :: k         !< ToDo: remove dummy argument, instead pass string from data_output
    624 
    625    IF ( unit == 'illegal'  .AND.  biometeorology )  THEN
    626       CALL bio_check_data_output( variable, unit, i, j, ilen, k )
    627    ENDIF
    628 
    629    IF ( unit == 'illegal'  .AND.  bulk_cloud_model  )  THEN
    630       CALL bcm_check_data_output( variable, unit )
    631    ENDIF
    632 
    633    IF ( unit == 'illegal'  .AND.  air_chemistry                                &
    634         .AND.  (variable(1:3) == 'kc_' .OR. variable(1:3) == 'em_') )  THEN  ! ToDo: remove aditional conditions
    635       CALL chem_check_data_output( variable, unit, i, ilen, k )
    636    ENDIF
    637 
    638    IF ( unit == 'illegal'  .AND.  gust_module_enabled  )  THEN
    639       CALL gust_check_data_output( variable, unit )
    640    ENDIF
    641 
    642    IF ( unit == 'illegal' )  THEN  ! ToDo: add module switch if possible
    643       CALL lsm_check_data_output( variable, unit, i, ilen, k )
    644    ENDIF
    645 
    646    IF ( unit == 'illegal'  .AND.  ocean_mode )  THEN
    647       CALL ocean_check_data_output( variable, unit )
    648    ENDIF
    649 
    650    IF ( unit == 'illegal'  .AND.  plant_canopy                                 &
    651         .AND.  variable(1:4) == 'pcm_' )  THEN  ! ToDo: remove aditional conditions
    652       CALL pcm_check_data_output( variable, unit )
    653    ENDIF
    654 
    655    IF ( unit == 'illegal'  .AND.  radiation )  THEN
    656       CALL radiation_check_data_output( variable, unit, i, ilen, k )
    657    ENDIF
    658 
    659    IF ( unit == 'illegal' .AND. salsa ) THEN
     618 SUBROUTINE module_interface_check_data_output( variable, unit, i, j, ilen, k )
     619
     620
     621    CHARACTER (LEN=*), INTENT(IN)    ::  variable !< variable name
     622    CHARACTER (LEN=*), INTENT(INOUT) ::  unit     !< physical unit of variable
     623
     624    INTEGER(iwp),      INTENT(IN)    :: i         !< ToDo: remove dummy argument, instead pass string from data_output
     625    INTEGER(iwp),      INTENT(IN)    :: j         !< average quantity? 0 = no, 1 = yes
     626    INTEGER(iwp),      INTENT(IN)    :: ilen      !< ToDo: remove dummy argument, instead pass string from data_output
     627    INTEGER(iwp),      INTENT(IN)    :: k         !< ToDo: remove dummy argument, instead pass string from data_output
     628
     629    IF ( unit == 'illegal'  .AND.  biometeorology )  THEN
     630       CALL bio_check_data_output( variable, unit, i, j, ilen, k )
     631    ENDIF
     632
     633    IF ( unit == 'illegal'  .AND.  bulk_cloud_model  )  THEN
     634       CALL bcm_check_data_output( variable, unit )
     635    ENDIF
     636
     637    IF ( unit == 'illegal'  .AND.  air_chemistry                               &
     638         .AND.  (variable(1:3) == 'kc_' .OR. variable(1:3) == 'em_') )  THEN  ! ToDo: remove aditional conditions
     639       CALL chem_check_data_output( variable, unit, i, ilen, k )
     640    ENDIF
     641
     642    IF ( unit == 'illegal'  .AND.  gust_module_enabled  )  THEN
     643       CALL gust_check_data_output( variable, unit )
     644    ENDIF
     645
     646    IF ( unit == 'illegal' )  THEN  ! ToDo: add module switch if possible
     647       CALL lsm_check_data_output( variable, unit, i, ilen, k )
     648    ENDIF
     649
     650    IF ( unit == 'illegal'  .AND.  ocean_mode )  THEN
     651       CALL ocean_check_data_output( variable, unit )
     652    ENDIF
     653
     654    IF ( unit == 'illegal'  .AND.  plant_canopy                                &
     655         .AND.  variable(1:4) == 'pcm_' )  THEN  ! ToDo: remove aditional conditions
     656       CALL pcm_check_data_output( variable, unit )
     657    ENDIF
     658
     659    IF ( unit == 'illegal'  .AND.  radiation )  THEN
     660       CALL radiation_check_data_output( variable, unit, i, ilen, k )
     661    ENDIF
     662
     663    IF ( unit == 'illegal' .AND. salsa ) THEN
    660664       CALL salsa_check_data_output( variable, unit )
    661    ENDIF
    662 
    663    IF ( unit == 'illegal' .AND. indoor_model ) THEN
     665    ENDIF
     666
     667    IF ( unit == 'illegal' .AND. indoor_model ) THEN
    664668       CALL im_check_data_output( variable, unit )
    665    ENDIF
     669    ENDIF
    666670   
    667    IF ( unit == 'illegal'  .AND.  urban_surface                      &
     671    IF ( unit == 'illegal'  .AND.  urban_surface                      &
    668672        .AND.  variable(1:4) == 'usm_' )  THEN  ! ToDo: remove aditional conditions
    669673       CALL usm_check_data_output( variable, unit )
    670    ENDIF
    671 
    672    IF ( unit == 'illegal'  .AND.  user_module_enabled )  THEN
    673       unit = ''
    674       CALL user_check_data_output( variable, unit )
    675    ENDIF
    676 
    677 
    678 END SUBROUTINE module_interface_check_data_output
     674    ENDIF
     675
     676    IF ( unit == 'illegal'  .AND.  user_module_enabled )  THEN
     677       unit = ''
     678       CALL user_check_data_output( variable, unit )
     679    ENDIF
     680
     681
     682 END SUBROUTINE module_interface_check_data_output
    679683
    680684
     
    685689!> Interface for init_masks. ToDo: get rid of these redundant calls!
    686690!------------------------------------------------------------------------------!
    687 SUBROUTINE module_interface_init_masks( variable, unit )
    688 
    689 
    690    CHARACTER (LEN=*), INTENT(IN)    ::  variable !< variable name
    691    CHARACTER (LEN=*), INTENT(INOUT) ::  unit     !< physical unit of variable
    692 
    693    IF ( unit == 'illegal'  .AND.  air_chemistry                                &
    694         .AND.  (variable(1:3) == 'kc_' .OR. variable(1:3) == 'em_') )  THEN  ! ToDo: remove aditional conditions
    695       CALL chem_check_data_output( variable, unit, 0, 0, 0 )
    696    ENDIF
    697 
    698    IF ( unit == 'illegal'  .AND.  radiation )  THEN
    699       CALL radiation_check_data_output( variable, unit, 0, 0, 0 )
    700    ENDIF
    701 
    702    IF ( unit == 'illegal'  .AND.  salsa )  THEN
    703       CALL salsa_check_data_output( variable, unit )
    704    ENDIF
    705 
    706    IF ( unit == 'illegal'  .AND.  user_module_enabled )  THEN
    707       unit = ''
    708       CALL user_check_data_output( variable, unit )
    709    ENDIF
    710 
    711 
    712 END SUBROUTINE module_interface_init_masks
     691 SUBROUTINE module_interface_init_masks( variable, unit )
     692
     693
     694    CHARACTER (LEN=*), INTENT(IN)    ::  variable !< variable name
     695    CHARACTER (LEN=*), INTENT(INOUT) ::  unit     !< physical unit of variable
     696
     697    IF ( unit == 'illegal'  .AND.  air_chemistry                               &
     698         .AND.  (variable(1:3) == 'kc_' .OR. variable(1:3) == 'em_') )  THEN  ! ToDo: remove aditional conditions
     699       CALL chem_check_data_output( variable, unit, 0, 0, 0 )
     700    ENDIF
     701
     702    IF ( unit == 'illegal'  .AND.  radiation )  THEN
     703       CALL radiation_check_data_output( variable, unit, 0, 0, 0 )
     704    ENDIF
     705
     706    IF ( unit == 'illegal'  .AND.  salsa )  THEN
     707       CALL salsa_check_data_output( variable, unit )
     708    ENDIF
     709
     710    IF ( unit == 'illegal'  .AND.  user_module_enabled )  THEN
     711       unit = ''
     712       CALL user_check_data_output( variable, unit )
     713    ENDIF
     714
     715
     716 END SUBROUTINE module_interface_init_masks
    713717
    714718
     
    719723!> Define appropriate grid for module-specific netcdf output variables.
    720724!------------------------------------------------------------------------------!
    721 SUBROUTINE module_interface_define_netcdf_grid( var, found,                    &
    722                                                 grid_x, grid_y, grid_z )
    723 
    724 
    725    CHARACTER (LEN=*), INTENT(IN)  ::  var    !< variable name
    726    LOGICAL,           INTENT(OUT) ::  found  !< indicates if variable was found
    727    CHARACTER (LEN=*), INTENT(OUT) ::  grid_x !< netcdf dimension in x-direction
    728    CHARACTER (LEN=*), INTENT(OUT) ::  grid_y !< netcdf dimension in y-direction
    729    CHARACTER (LEN=*), INTENT(OUT) ::  grid_z !< netcdf dimension in z-direction
    730 !
    731 !--As long as no action is done in this subroutine, initialize strings with   
    732 !--intent(out) attribute, in order to avoid compiler warnings.
    733    found  = .FALSE.
    734    grid_x = 'none'
    735    grid_y = 'none'
    736    grid_z = 'none'
    737 
    738 END SUBROUTINE module_interface_define_netcdf_grid
     725 SUBROUTINE module_interface_define_netcdf_grid( var, found,                   &
     726                                                 grid_x, grid_y, grid_z )
     727
     728
     729    CHARACTER (LEN=*), INTENT(IN)  ::  var    !< variable name
     730    LOGICAL,           INTENT(OUT) ::  found  !< indicates if variable was found
     731    CHARACTER (LEN=*), INTENT(OUT) ::  grid_x !< netcdf dimension in x-direction
     732    CHARACTER (LEN=*), INTENT(OUT) ::  grid_y !< netcdf dimension in y-direction
     733    CHARACTER (LEN=*), INTENT(OUT) ::  grid_z !< netcdf dimension in z-direction
     734!
     735!-- As long as no action is done in this subroutine, initialize strings with
     736!-- intent(out) attribute, in order to avoid compiler warnings.
     737    found  = .FALSE.
     738    grid_x = 'none'
     739    grid_y = 'none'
     740    grid_z = 'none'
     741!
     742!-- Use var to avoid compiler warning about unused variable
     743    IF ( var == ' ' )  RETURN
     744
     745 END SUBROUTINE module_interface_define_netcdf_grid
    739746
    740747
     
    744751!> Allocate module-specific arrays and pointers
    745752!------------------------------------------------------------------------------!
    746 SUBROUTINE module_interface_init_arrays
    747 
    748 
    749    IF ( bulk_cloud_model    )  CALL bcm_init_arrays
    750    IF ( air_chemistry       )  CALL chem_init_arrays
    751    IF ( gust_module_enabled )  CALL gust_init_arrays
    752    IF ( land_surface        )  CALL lsm_init_arrays
    753    IF ( ocean_mode          )  CALL ocean_init_arrays
    754    IF ( salsa               )  CALL salsa_init_arrays
    755    IF ( urban_surface       )  CALL usm_init_arrays
    756    IF ( surface_output      )  CALL surface_data_output_init_arrays
    757    IF ( wind_turbine        )  CALL wtm_init_arrays
    758    IF ( user_module_enabled )  CALL user_init_arrays
    759 
    760 
    761 END SUBROUTINE module_interface_init_arrays
     753 SUBROUTINE module_interface_init_arrays
     754
     755
     756    IF ( bulk_cloud_model    )  CALL bcm_init_arrays
     757    IF ( air_chemistry       )  CALL chem_init_arrays
     758    IF ( gust_module_enabled )  CALL gust_init_arrays
     759    IF ( land_surface        )  CALL lsm_init_arrays
     760    IF ( ocean_mode          )  CALL ocean_init_arrays
     761    IF ( salsa               )  CALL salsa_init_arrays
     762    IF ( urban_surface       )  CALL usm_init_arrays
     763    IF ( surface_output      )  CALL surface_data_output_init_arrays
     764    IF ( wind_turbine        )  CALL wtm_init_arrays
     765    IF ( user_module_enabled )  CALL user_init_arrays
     766
     767
     768 END SUBROUTINE module_interface_init_arrays
    762769
    763770
     
    767774!> Perform module-specific initialization
    768775!------------------------------------------------------------------------------!
    769 SUBROUTINE module_interface_init
    770 
    771 
    772    IF ( biometeorology      )  CALL bio_init
    773    IF ( bulk_cloud_model    )  CALL bcm_init
    774    IF ( air_chemistry       )  CALL chem_init
    775    IF ( virtual_flight      )  CALL flight_init
    776    IF ( gust_module_enabled )  CALL gust_init
    777    IF ( indoor_model        )  CALL im_init
    778    IF ( large_scale_forcing )  CALL lsf_init
    779    IF ( land_surface        )  CALL lsm_init
    780    IF ( nudging             )  CALL nudge_init
    781    IF ( ocean_mode          )  CALL ocean_init
    782    IF ( plant_canopy        )  CALL pcm_init
    783    IF ( salsa               )  CALL salsa_init
    784    IF ( urban_surface       )  CALL usm_init
    785    IF ( virtual_measurement )  CALL vm_init
    786    IF ( wind_turbine        )  CALL wtm_init
    787    IF ( radiation           )  CALL radiation_init
    788    IF ( user_module_enabled )  CALL user_init
    789 
    790 
    791 END SUBROUTINE module_interface_init
     776 SUBROUTINE module_interface_init
     777
     778
     779    IF ( biometeorology      )  CALL bio_init
     780    IF ( bulk_cloud_model    )  CALL bcm_init
     781    IF ( air_chemistry       )  CALL chem_init
     782    IF ( virtual_flight      )  CALL flight_init
     783    IF ( gust_module_enabled )  CALL gust_init
     784    IF ( indoor_model        )  CALL im_init
     785    IF ( large_scale_forcing )  CALL lsf_init
     786    IF ( land_surface        )  CALL lsm_init
     787    IF ( nudging             )  CALL nudge_init
     788    IF ( ocean_mode          )  CALL ocean_init
     789    IF ( plant_canopy        )  CALL pcm_init
     790    IF ( salsa               )  CALL salsa_init
     791    IF ( urban_surface       )  CALL usm_init
     792    IF ( virtual_measurement )  CALL vm_init
     793    IF ( wind_turbine        )  CALL wtm_init
     794    IF ( radiation           )  CALL radiation_init
     795    IF ( user_module_enabled )  CALL user_init
     796
     797
     798 END SUBROUTINE module_interface_init
    792799
    793800
     
    797804!> Perform module-specific post-initialization checks
    798805!------------------------------------------------------------------------------!
    799 SUBROUTINE module_interface_init_checks
    800 
    801 
    802    IF ( biometeorology      )  CALL bio_init_checks
    803 
    804 
    805 END SUBROUTINE module_interface_init_checks
     806 SUBROUTINE module_interface_init_checks
     807
     808
     809    IF ( biometeorology      )  CALL bio_init_checks
     810
     811
     812 END SUBROUTINE module_interface_init_checks
    806813
    807814
     
    811818!> Gather module-specific header output
    812819!------------------------------------------------------------------------------!
    813 SUBROUTINE module_interface_header( io )
    814 
    815 
    816    INTEGER(iwp), INTENT(IN) ::  io  !< unit of the output file
    817 
    818 
    819    IF ( biometeorology      )  CALL bio_header ( io )
    820    IF ( bulk_cloud_model    )  CALL bcm_header( io )
    821    IF ( air_chemistry       )  CALL chem_header ( io )
    822    IF ( virtual_flight      )  CALL flight_header( io )
    823    IF ( gust_module_enabled )  CALL gust_header( io )
    824    IF ( land_surface        )  CALL lsm_header( io )
    825    IF ( large_scale_forcing )  CALL lsf_nudging_header( io )
    826    IF ( nesting_offline     )  CALL nesting_offl_header( io )
    827    IF ( ocean_mode          )  CALL ocean_header( io )
    828    IF ( plant_canopy        )  CALL pcm_header( io )
    829    IF ( radiation           )  CALL radiation_header( io )
    830    IF ( salsa               )  CALL salsa_header( io )
    831    IF ( calculate_spectra   )  CALL spectra_header( io )
    832    IF ( syn_turb_gen        )  CALL stg_header( io )
    833    IF ( user_module_enabled )  CALL user_header( io )
    834 
    835 
    836 END SUBROUTINE module_interface_header
     820 SUBROUTINE module_interface_header( io )
     821
     822
     823    INTEGER(iwp), INTENT(IN) ::  io  !< unit of the output file
     824
     825
     826    IF ( biometeorology      )  CALL bio_header ( io )
     827    IF ( bulk_cloud_model    )  CALL bcm_header( io )
     828    IF ( air_chemistry       )  CALL chem_header ( io )
     829    IF ( virtual_flight      )  CALL flight_header( io )
     830    IF ( gust_module_enabled )  CALL gust_header( io )
     831    IF ( land_surface        )  CALL lsm_header( io )
     832    IF ( large_scale_forcing )  CALL lsf_nudging_header( io )
     833    IF ( nesting_offline     )  CALL nesting_offl_header( io )
     834    IF ( ocean_mode          )  CALL ocean_header( io )
     835    IF ( plant_canopy        )  CALL pcm_header( io )
     836    IF ( radiation           )  CALL radiation_header( io )
     837    IF ( salsa               )  CALL salsa_header( io )
     838    IF ( calculate_spectra   )  CALL spectra_header( io )
     839    IF ( syn_turb_gen        )  CALL stg_header( io )
     840    IF ( user_module_enabled )  CALL user_header( io )
     841
     842
     843 END SUBROUTINE module_interface_header
    837844
    838845
     
    842849!> Perform module-specific actions while in time-integration (cache-optimized)
    843850!------------------------------------------------------------------------------!
    844 SUBROUTINE module_interface_actions( location )
    845 
    846 
    847    CHARACTER (LEN=*), INTENT(IN) ::  location !< call location string
    848 
    849 
    850    IF ( gust_module_enabled )  CALL gust_actions( location )
    851    IF ( user_module_enabled )  CALL user_actions( location )
    852 
    853 
    854 END SUBROUTINE module_interface_actions
     851 SUBROUTINE module_interface_actions( location )
     852
     853
     854    CHARACTER (LEN=*), INTENT(IN) ::  location !< call location string
     855
     856
     857    IF ( gust_module_enabled )  CALL gust_actions( location )
     858    IF ( user_module_enabled )  CALL user_actions( location )
     859
     860
     861 END SUBROUTINE module_interface_actions
    855862
    856863
     
    860867!> Perform module-specific actions while in time-integration (vector-optimized)
    861868!------------------------------------------------------------------------------!
    862 SUBROUTINE module_interface_actions_ij( i, j, location )
    863 
    864 
    865    INTEGER(iwp),      INTENT(IN) ::  i         !< grid index in x-direction
    866    INTEGER(iwp),      INTENT(IN) ::  j         !< grid index in y-direction
    867    CHARACTER (LEN=*), INTENT(IN) ::  location  !< call location string
    868 
    869 
    870    IF ( gust_module_enabled )  CALL gust_actions( i, j, location )
    871    IF ( user_module_enabled )  CALL user_actions( i, j, location )
    872 
    873 
    874 END SUBROUTINE module_interface_actions_ij
     869 SUBROUTINE module_interface_actions_ij( i, j, location )
     870
     871
     872    INTEGER(iwp),      INTENT(IN) ::  i         !< grid index in x-direction
     873    INTEGER(iwp),      INTENT(IN) ::  j         !< grid index in y-direction
     874    CHARACTER (LEN=*), INTENT(IN) ::  location  !< call location string
     875
     876
     877    IF ( gust_module_enabled )  CALL gust_actions( i, j, location )
     878    IF ( user_module_enabled )  CALL user_actions( i, j, location )
     879
     880
     881 END SUBROUTINE module_interface_actions_ij
    875882
    876883
     
    880887!> Swap the timelevel pointers for module-specific arrays
    881888!------------------------------------------------------------------------------!
    882 SUBROUTINE module_interface_swap_timelevel ( swap_mode )
    883 
    884 
    885    INTEGER(iwp), INTENT(IN) :: swap_mode !< determines procedure of pointer swap
    886 
    887    IF ( bulk_cloud_model    )  CALL bcm_swap_timelevel( swap_mode )
    888    IF ( air_chemistry       )  CALL chem_swap_timelevel( swap_mode )
    889    IF ( gust_module_enabled )  CALL gust_swap_timelevel( swap_mode )
    890    IF ( land_surface        )  CALL lsm_swap_timelevel( swap_mode )
    891    IF ( ocean_mode          )  CALL ocean_swap_timelevel( swap_mode )
    892    IF ( salsa               )  CALL salsa_swap_timelevel( swap_mode )
    893    IF ( urban_surface       )  CALL usm_swap_timelevel( swap_mode )
    894 
    895 
    896 END SUBROUTINE module_interface_swap_timelevel
     889 SUBROUTINE module_interface_swap_timelevel ( swap_mode )
     890
     891
     892    INTEGER(iwp), INTENT(IN) :: swap_mode !< determines procedure of pointer swap
     893
     894    IF ( bulk_cloud_model    )  CALL bcm_swap_timelevel( swap_mode )
     895    IF ( air_chemistry       )  CALL chem_swap_timelevel( swap_mode )
     896    IF ( gust_module_enabled )  CALL gust_swap_timelevel( swap_mode )
     897    IF ( land_surface        )  CALL lsm_swap_timelevel( swap_mode )
     898    IF ( ocean_mode          )  CALL ocean_swap_timelevel( swap_mode )
     899    IF ( salsa               )  CALL salsa_swap_timelevel( swap_mode )
     900    IF ( urban_surface       )  CALL usm_swap_timelevel( swap_mode )
     901
     902
     903 END SUBROUTINE module_interface_swap_timelevel
    897904
    898905
     
    903910!> Perform module-specific averaging of 3D data
    904911!------------------------------------------------------------------------------!
    905 SUBROUTINE module_interface_3d_data_averaging( mode, variable )
    906 
    907 
    908    CHARACTER (LEN=*), INTENT(IN) ::  mode     !< averaging interface mode
    909    CHARACTER (LEN=*), INTENT(IN) ::  variable !< variable name
    910 
    911    IF ( biometeorology      )  CALL bio_3d_data_averaging( mode, variable )
    912    IF ( bulk_cloud_model    )  CALL bcm_3d_data_averaging( mode, variable )
    913    IF ( air_chemistry       )  CALL chem_3d_data_averaging( mode, variable )
    914    IF ( gust_module_enabled )  CALL gust_3d_data_averaging( mode, variable )
    915    IF ( land_surface        )  CALL lsm_3d_data_averaging( mode, variable )
    916    IF ( ocean_mode          )  CALL ocean_3d_data_averaging( mode, variable )
    917    IF ( radiation           )  CALL radiation_3d_data_averaging( mode, variable )
    918    IF ( salsa               )  CALL salsa_3d_data_averaging( mode, variable )
    919    IF ( urban_surface       )  CALL usm_3d_data_averaging( mode, variable )
    920    IF ( user_module_enabled )  CALL user_3d_data_averaging( mode, variable )
    921 
    922 
    923 END SUBROUTINE module_interface_3d_data_averaging
     912 SUBROUTINE module_interface_3d_data_averaging( mode, variable )
     913
     914
     915    CHARACTER (LEN=*), INTENT(IN) ::  mode     !< averaging interface mode
     916    CHARACTER (LEN=*), INTENT(IN) ::  variable !< variable name
     917
     918    IF ( biometeorology      )  CALL bio_3d_data_averaging( mode, variable )
     919    IF ( bulk_cloud_model    )  CALL bcm_3d_data_averaging( mode, variable )
     920    IF ( air_chemistry       )  CALL chem_3d_data_averaging( mode, variable )
     921    IF ( gust_module_enabled )  CALL gust_3d_data_averaging( mode, variable )
     922    IF ( land_surface        )  CALL lsm_3d_data_averaging( mode, variable )
     923    IF ( ocean_mode          )  CALL ocean_3d_data_averaging( mode, variable )
     924    IF ( radiation           )  CALL radiation_3d_data_averaging( mode, variable )
     925    IF ( salsa               )  CALL salsa_3d_data_averaging( mode, variable )
     926    IF ( urban_surface       )  CALL usm_3d_data_averaging( mode, variable )
     927    IF ( user_module_enabled )  CALL user_3d_data_averaging( mode, variable )
     928
     929
     930 END SUBROUTINE module_interface_3d_data_averaging
    924931
    925932!------------------------------------------------------------------------------!
     
    929936!> Define module-specific 2D output variables
    930937!------------------------------------------------------------------------------!
    931 SUBROUTINE module_interface_data_output_2d( av, variable, found, grid, mode,   &
    932                                             local_pf, two_d, nzb_do, nzt_do,   &
    933                                             fill_value )
    934 
    935    INTEGER(iwp),      INTENT(IN)    ::  av         !< flag for (non-)average output
    936    CHARACTER (LEN=*), INTENT(IN)    ::  variable   !< variable name
    937    LOGICAL,           INTENT(INOUT) ::  found      !< flag if output variable is found
    938    CHARACTER (LEN=*), INTENT(INOUT) ::  grid       !< name of vertical grid
    939    CHARACTER (LEN=*), INTENT(IN)    ::  mode       !< either 'xy', 'xz' or 'yz'
    940    LOGICAL,           INTENT(OUT)   ::  two_d      !< flag for 2D variables
    941    INTEGER(iwp),      INTENT(IN)    ::  nzb_do     !< vertical output index (bottom) (usually 0)
    942    INTEGER(iwp),      INTENT(IN)    ::  nzt_do     !< vertical output index (top) (usually nz_do3d)
    943    REAL(wp),          INTENT(IN)    ::  fill_value !< to be removed
    944 
    945    REAL(wp), DIMENSION(nxl:nxr,nys:nyn,nzb_do:nzt_do), INTENT(OUT) ::  local_pf !< ToDo: can also be kind=sp
    946 
    947 
    948    IF ( .NOT. found  .AND.  biometeorology )  THEN
    949       CALL bio_data_output_2d(                                                 &
    950               av, variable, found, grid, local_pf, two_d, nzb_do, nzt_do       &
    951            )
    952    ENDIF
    953 
    954    IF ( .NOT. found  .AND.  bulk_cloud_model )  THEN
    955       CALL bcm_data_output_2d(                                                 &
    956               av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do &
    957            )
    958    ENDIF
    959 
    960    IF ( .NOT. found  .AND.  air_chemistry )  THEN
    961       CALL chem_data_output_2d(                                                &
    962               av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do, fill_value &
    963            )
    964    ENDIF
    965 
    966    IF ( .NOT. found  .AND.  gust_module_enabled )  THEN
    967       CALL gust_data_output_2d(                                                &
    968               av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do, fill_value &
    969            )
    970    ENDIF
    971 
    972    IF ( .NOT. found  .AND.  land_surface )  THEN
    973       CALL lsm_data_output_2d(                                                 &
    974               av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do &
    975            )
    976    ENDIF
    977 
    978    IF ( .NOT. found  .AND.  ocean_mode )  THEN
    979       CALL ocean_data_output_2d(                                               &
    980               av, variable, found, grid, mode, local_pf, nzb_do, nzt_do        &
    981            )
    982    ENDIF
    983 
    984    IF ( .NOT. found  .AND.  radiation )  THEN
    985       CALL radiation_data_output_2d(                                           &
    986               av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do &
    987            )
    988    ENDIF
    989 
    990    IF ( .NOT. found  .AND.  salsa )  THEN
    991       CALL salsa_data_output_2d(                                               &
    992               av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do &
    993            )
    994    ENDIF
    995 
    996    IF ( .NOT. found  .AND.  user_module_enabled )  THEN
    997       CALL user_data_output_2d(                                                &
    998               av, variable, found, grid, local_pf, two_d, nzb_do, nzt_do       &
    999            )
    1000    ENDIF
    1001 
    1002 END SUBROUTINE module_interface_data_output_2d
     938 SUBROUTINE module_interface_data_output_2d( av, variable, found, grid, mode,  &
     939                                             local_pf, two_d, nzb_do, nzt_do,  &
     940                                             fill_value )
     941
     942    INTEGER(iwp),      INTENT(IN)    ::  av         !< flag for (non-)average output
     943    CHARACTER (LEN=*), INTENT(IN)    ::  variable   !< variable name
     944    LOGICAL,           INTENT(INOUT) ::  found      !< flag if output variable is found
     945    CHARACTER (LEN=*), INTENT(INOUT) ::  grid       !< name of vertical grid
     946    CHARACTER (LEN=*), INTENT(IN)    ::  mode       !< either 'xy', 'xz' or 'yz'
     947    LOGICAL,           INTENT(OUT)   ::  two_d      !< flag for 2D variables
     948    INTEGER(iwp),      INTENT(IN)    ::  nzb_do     !< vertical output index (bottom) (usually 0)
     949    INTEGER(iwp),      INTENT(IN)    ::  nzt_do     !< vertical output index (top) (usually nz_do3d)
     950    REAL(wp),          INTENT(IN)    ::  fill_value !< to be removed
     951
     952    REAL(wp), DIMENSION(nxl:nxr,nys:nyn,nzb_do:nzt_do), INTENT(OUT) ::  local_pf !< ToDo: can also be kind=sp
     953
     954
     955    IF ( .NOT. found  .AND.  biometeorology )  THEN
     956       CALL bio_data_output_2d(                                                &
     957               av, variable, found, grid, local_pf, two_d, nzb_do, nzt_do      &
     958            )
     959    ENDIF
     960
     961    IF ( .NOT. found  .AND.  bulk_cloud_model )  THEN
     962       CALL bcm_data_output_2d(                                                &
     963               av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do&
     964            )
     965    ENDIF
     966
     967    IF ( .NOT. found  .AND.  air_chemistry )  THEN
     968       CALL chem_data_output_2d(                                               &
     969               av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do, fill_value &
     970            )
     971    ENDIF
     972
     973    IF ( .NOT. found  .AND.  gust_module_enabled )  THEN
     974       CALL gust_data_output_2d(                                               &
     975               av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do, fill_value &
     976            )
     977    ENDIF
     978
     979    IF ( .NOT. found  .AND.  land_surface )  THEN
     980       CALL lsm_data_output_2d(                                                &
     981               av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do&
     982            )
     983    ENDIF
     984
     985    IF ( .NOT. found  .AND.  ocean_mode )  THEN
     986       CALL ocean_data_output_2d(                                              &
     987               av, variable, found, grid, mode, local_pf, nzb_do, nzt_do       &
     988            )
     989    ENDIF
     990
     991    IF ( .NOT. found  .AND.  radiation )  THEN
     992       CALL radiation_data_output_2d(                                          &
     993               av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do&
     994            )
     995    ENDIF
     996
     997    IF ( .NOT. found  .AND.  salsa )  THEN
     998       CALL salsa_data_output_2d(                                              &
     999               av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do&
     1000            )
     1001    ENDIF
     1002
     1003    IF ( .NOT. found  .AND.  user_module_enabled )  THEN
     1004       CALL user_data_output_2d(                                               &
     1005               av, variable, found, grid, local_pf, two_d, nzb_do, nzt_do      &
     1006            )
     1007    ENDIF
     1008
     1009 END SUBROUTINE module_interface_data_output_2d
    10031010
    10041011
     
    10091016!> Define module-specific 3D output variables
    10101017!------------------------------------------------------------------------------!
    1011 SUBROUTINE module_interface_data_output_3d( av, variable, found, local_pf,     &
    1012                                             fill_value, resorted, nzb_do, nzt_do )
    1013 
    1014 
    1015    INTEGER(iwp),      INTENT(IN)    ::  av         !< flag for (non-)average output
    1016    CHARACTER (LEN=*), INTENT(IN)    ::  variable   !< variable name
    1017    LOGICAL,           INTENT(INOUT) ::  found      !< flag if output variable is found
    1018    REAL(wp),          INTENT(IN)    ::  fill_value !< ToDo: refactor
    1019    LOGICAL,           INTENT(OUT)   ::  resorted   !< flag if output has been resorted
    1020    INTEGER(iwp),      INTENT(IN)    ::  nzb_do     !< vertical output index (bottom) (usually 0)
    1021    INTEGER(iwp),      INTENT(IN)    ::  nzt_do     !< vertical output index (top) (usually nz_do3d)
    1022 
    1023    REAL(sp), DIMENSION(nxl:nxr,nys:nyn,nzb_do:nzt_do), INTENT(OUT) ::  local_pf
    1024 
    1025 
    1026    IF ( .NOT. found  .AND.  biometeorology )  THEN
    1027       CALL bio_data_output_3d( av, variable, found, local_pf, nzb_do, nzt_do )
    1028       resorted = .FALSE.
    1029    ENDIF
    1030 
    1031    IF ( .NOT. found  .AND.  bulk_cloud_model )  THEN
    1032       CALL bcm_data_output_3d( av, variable, found, local_pf, nzb_do, nzt_do )
    1033       resorted = .TRUE.
    1034    ENDIF
    1035 
    1036    IF ( .NOT. found  .AND.  air_chemistry )  THEN
    1037       CALL chem_data_output_3d( av, variable, found, local_pf, fill_value, nzb_do, nzt_do )
    1038       resorted = .TRUE.
    1039    ENDIF
    1040 
    1041    IF ( .NOT. found  .AND.  gust_module_enabled )  THEN
    1042       CALL gust_data_output_3d( av, variable, found, local_pf, fill_value, nzb_do, nzt_do )
    1043       resorted = .TRUE.
    1044    ENDIF
     1018 SUBROUTINE module_interface_data_output_3d( av, variable, found, local_pf,    &
     1019                                             fill_value, resorted, nzb_do, nzt_do )
     1020
     1021
     1022    INTEGER(iwp),      INTENT(IN)    ::  av         !< flag for (non-)average output
     1023    CHARACTER (LEN=*), INTENT(IN)    ::  variable   !< variable name
     1024    LOGICAL,           INTENT(INOUT) ::  found      !< flag if output variable is found
     1025    REAL(wp),          INTENT(IN)    ::  fill_value !< ToDo: refactor
     1026    LOGICAL,           INTENT(OUT)   ::  resorted   !< flag if output has been resorted
     1027    INTEGER(iwp),      INTENT(IN)    ::  nzb_do     !< vertical output index (bottom) (usually 0)
     1028    INTEGER(iwp),      INTENT(IN)    ::  nzt_do     !< vertical output index (top) (usually nz_do3d)
     1029
     1030    REAL(sp), DIMENSION(nxl:nxr,nys:nyn,nzb_do:nzt_do), INTENT(OUT) ::  local_pf
     1031
     1032
     1033    IF ( .NOT. found  .AND.  biometeorology )  THEN
     1034       CALL bio_data_output_3d( av, variable, found, local_pf, nzb_do, nzt_do )
     1035       resorted = .FALSE.
     1036    ENDIF
     1037
     1038    IF ( .NOT. found  .AND.  bulk_cloud_model )  THEN
     1039       CALL bcm_data_output_3d( av, variable, found, local_pf, nzb_do, nzt_do )
     1040       resorted = .TRUE.
     1041    ENDIF
     1042
     1043    IF ( .NOT. found  .AND.  air_chemistry )  THEN
     1044       CALL chem_data_output_3d( av, variable, found, local_pf, fill_value, nzb_do, nzt_do )
     1045       resorted = .TRUE.
     1046    ENDIF
     1047
     1048    IF ( .NOT. found  .AND.  gust_module_enabled )  THEN
     1049       CALL gust_data_output_3d( av, variable, found, local_pf, fill_value, nzb_do, nzt_do )
     1050       resorted = .TRUE.
     1051    ENDIF
    10451052   
    1046    IF ( .NOT. found  .AND.  indoor_model )  THEN
    1047       CALL im_data_output_3d( av, variable, found, local_pf, fill_value, nzb_do, nzt_do )
    1048       resorted = .TRUE.
    1049    ENDIF
    1050 
    1051    IF ( .NOT. found  .AND.  ocean_mode )  THEN
    1052       CALL ocean_data_output_3d( av, variable, found, local_pf, nzb_do, nzt_do )
    1053       resorted = .TRUE.
    1054    ENDIF
    1055 
    1056    IF ( .NOT. found  .AND.  plant_canopy )  THEN
    1057       CALL pcm_data_output_3d( av, variable, found, local_pf, fill_value, nzb_do, nzt_do )
    1058       resorted = .TRUE.
    1059    ENDIF
    1060 
    1061    IF ( .NOT. found  .AND.  radiation )  THEN
    1062       CALL radiation_data_output_3d( av, variable, found, local_pf, nzb_do, nzt_do )
    1063       resorted = .TRUE.
    1064    ENDIF
    1065 
    1066    IF ( .NOT. found  .AND.  salsa )  THEN
    1067       CALL salsa_data_output_3d( av, variable, found, local_pf, nzb_do, nzt_do )
    1068       resorted = .TRUE.
    1069    ENDIF
    1070 
    1071    IF ( .NOT. found  .AND.  user_module_enabled )  THEN
    1072       CALL user_data_output_3d( av, variable, found, local_pf, nzb_do, nzt_do )
    1073       resorted = .TRUE.
    1074    ENDIF
    1075 
    1076 
    1077 END SUBROUTINE module_interface_data_output_3d
     1053    IF ( .NOT. found  .AND.  indoor_model )  THEN
     1054       CALL im_data_output_3d( av, variable, found, local_pf, fill_value, nzb_do, nzt_do )
     1055       resorted = .TRUE.
     1056    ENDIF
     1057
     1058    IF ( .NOT. found  .AND.  ocean_mode )  THEN
     1059       CALL ocean_data_output_3d( av, variable, found, local_pf, nzb_do, nzt_do )
     1060       resorted = .TRUE.
     1061    ENDIF
     1062
     1063    IF ( .NOT. found  .AND.  plant_canopy )  THEN
     1064       CALL pcm_data_output_3d( av, variable, found, local_pf, fill_value, nzb_do, nzt_do )
     1065       resorted = .TRUE.
     1066    ENDIF
     1067
     1068    IF ( .NOT. found  .AND.  radiation )  THEN
     1069       CALL radiation_data_output_3d( av, variable, found, local_pf, nzb_do, nzt_do )
     1070       resorted = .TRUE.
     1071    ENDIF
     1072
     1073    IF ( .NOT. found  .AND.  salsa )  THEN
     1074       CALL salsa_data_output_3d( av, variable, found, local_pf, nzb_do, nzt_do )
     1075       resorted = .TRUE.
     1076    ENDIF
     1077
     1078    IF ( .NOT. found  .AND.  user_module_enabled )  THEN
     1079       CALL user_data_output_3d( av, variable, found, local_pf, nzb_do, nzt_do )
     1080       resorted = .TRUE.
     1081    ENDIF
     1082
     1083
     1084 END SUBROUTINE module_interface_data_output_3d
    10781085
    10791086
     
    10831090!> Compute module-specific profile and timeseries data
    10841091!------------------------------------------------------------------------------!
    1085 SUBROUTINE module_interface_statistics( mode, sr, tn, dots_max )
    1086 
    1087 
    1088    CHARACTER (LEN=*), INTENT(IN) ::  mode     !< statistical analysis mode
    1089    INTEGER(iwp),      INTENT(IN) ::  sr       !<
    1090    INTEGER(iwp),      INTENT(IN) ::  tn       !<
    1091    INTEGER(iwp),      INTENT(IN) ::  dots_max !< maximum number of timeseries
    1092 
    1093    IF ( gust_module_enabled )  CALL gust_statistics( mode, sr, tn, dots_max )
    1094    IF ( air_chemistry       )  CALL chem_statistics( mode, sr, tn )
    1095    IF ( user_module_enabled )  CALL user_statistics( mode, sr, tn )
    1096 
    1097 
    1098 END SUBROUTINE module_interface_statistics
     1092 SUBROUTINE module_interface_statistics( mode, sr, tn, dots_max )
     1093
     1094
     1095    CHARACTER (LEN=*), INTENT(IN) ::  mode     !< statistical analysis mode
     1096    INTEGER(iwp),      INTENT(IN) ::  sr       !<
     1097    INTEGER(iwp),      INTENT(IN) ::  tn       !<
     1098    INTEGER(iwp),      INTENT(IN) ::  dots_max !< maximum number of timeseries
     1099
     1100    IF ( gust_module_enabled )  CALL gust_statistics( mode, sr, tn, dots_max )
     1101    IF ( air_chemistry       )  CALL chem_statistics( mode, sr, tn )
     1102    IF ( user_module_enabled )  CALL user_statistics( mode, sr, tn )
     1103
     1104
     1105 END SUBROUTINE module_interface_statistics
    10991106
    11001107
     
    11041111!> Read module-specific restart data globaly shared by all MPI ranks
    11051112!------------------------------------------------------------------------------!
    1106 SUBROUTINE module_interface_rrd_global( variable, found )
    1107 
    1108 
    1109    CHARACTER (LEN=*), INTENT(IN)  ::  variable !< name of global variable
    1110    LOGICAL,           INTENT(OUT) ::  found    !< flag if variable was found
    1111 
    1112    IF ( .NOT. found )  CALL bio_rrd_global( found ) ! ToDo: change interface to pass variable
    1113    IF ( .NOT. found )  CALL bcm_rrd_global( found ) ! ToDo: change interface to pass variable
    1114    IF ( .NOT. found )  CALL flight_rrd_global( found ) ! ToDo: change interface to pass variable
    1115    IF ( .NOT. found )  CALL gust_rrd_global( found ) ! ToDo: change interface to pass variable
    1116    IF ( .NOT. found )  CALL ocean_rrd_global( found ) ! ToDo: change interface to pass variable
    1117    IF ( .NOT. found )  CALL stg_rrd_global ( found ) ! ToDo: change interface to pass variable
    1118    IF ( .NOT. found )  CALL wtm_rrd_global( found ) ! ToDo: change interface to pass variable
    1119    IF ( .NOT. found )  CALL surface_data_output_rrd_global( found )
    1120    IF ( .NOT. found )  CALL user_rrd_global( found ) ! ToDo: change interface to pass variable
    1121 
    1122 
    1123 END SUBROUTINE module_interface_rrd_global
     1113 SUBROUTINE module_interface_rrd_global( found )
     1114
     1115
     1116    LOGICAL,           INTENT(OUT) ::  found    !< flag if variable was found
     1117
     1118    IF ( .NOT. found )  CALL bio_rrd_global( found ) ! ToDo: change interface to pass variable
     1119    IF ( .NOT. found )  CALL bcm_rrd_global( found ) ! ToDo: change interface to pass variable
     1120    IF ( .NOT. found )  CALL flight_rrd_global( found ) ! ToDo: change interface to pass variable
     1121    IF ( .NOT. found )  CALL gust_rrd_global( found ) ! ToDo: change interface to pass variable
     1122    IF ( .NOT. found )  CALL ocean_rrd_global( found ) ! ToDo: change interface to pass variable
     1123    IF ( .NOT. found )  CALL stg_rrd_global ( found ) ! ToDo: change interface to pass variable
     1124    IF ( .NOT. found )  CALL wtm_rrd_global( found ) ! ToDo: change interface to pass variable
     1125    IF ( .NOT. found )  CALL surface_data_output_rrd_global( found )
     1126    IF ( .NOT. found )  CALL user_rrd_global( found ) ! ToDo: change interface to pass variable
     1127
     1128
     1129 END SUBROUTINE module_interface_rrd_global
    11241130
    11251131
     
    11291135!> Write module-specific restart data globaly shared by all MPI ranks
    11301136!------------------------------------------------------------------------------!
    1131 SUBROUTINE module_interface_wrd_global
    1132 
    1133 
    1134    IF ( biometeorology )       CALL bio_wrd_global
    1135    IF ( bulk_cloud_model )     CALL bcm_wrd_global
    1136    IF ( virtual_flight )       CALL flight_wrd_global
    1137    IF ( gust_module_enabled )  CALL gust_wrd_global
    1138    IF ( ocean_mode )           CALL ocean_wrd_global
    1139    IF ( syn_turb_gen )         CALL stg_wrd_global
    1140    IF ( wind_turbine )         CALL wtm_wrd_global
    1141    IF ( surface_output )       CALL surface_data_output_wrd_global
    1142    IF ( user_module_enabled )  CALL user_wrd_global
    1143 
    1144 
    1145 END SUBROUTINE module_interface_wrd_global
     1137 SUBROUTINE module_interface_wrd_global
     1138
     1139
     1140    IF ( biometeorology )       CALL bio_wrd_global
     1141    IF ( bulk_cloud_model )     CALL bcm_wrd_global
     1142    IF ( virtual_flight )       CALL flight_wrd_global
     1143    IF ( gust_module_enabled )  CALL gust_wrd_global
     1144    IF ( ocean_mode )           CALL ocean_wrd_global
     1145    IF ( syn_turb_gen )         CALL stg_wrd_global
     1146    IF ( wind_turbine )         CALL wtm_wrd_global
     1147    IF ( surface_output )       CALL surface_data_output_wrd_global
     1148    IF ( user_module_enabled )  CALL user_wrd_global
     1149
     1150
     1151 END SUBROUTINE module_interface_wrd_global
    11461152
    11471153
     
    11511157!> Read module-specific restart data specific to local MPI ranks
    11521158!------------------------------------------------------------------------------!
    1153 SUBROUTINE module_interface_rrd_local( variable, file_index, map_index,        &
    1154                                        nxlf, nxlc, nxl_on_file,                &
    1155                                        nxrf, nxrc, nxr_on_file,                &
    1156                                        nynf, nync, nyn_on_file,                &
    1157                                        nysf, nysc, nys_on_file,                &
    1158                                        tmp_2d, tmp_3d, found )
    1159 
    1160 
    1161    CHARACTER (LEN=*), INTENT(IN)  ::  variable     !< name of global variable
    1162    INTEGER(iwp),      INTENT(IN)  ::  file_index   !<
    1163    INTEGER(iwp),      INTENT(IN)  ::  map_index    !<
    1164    INTEGER(iwp),      INTENT(IN)  ::  nxlc         !<
    1165    INTEGER(iwp),      INTENT(IN)  ::  nxlf         !<
    1166    INTEGER(iwp),      INTENT(IN)  ::  nxl_on_file  !<
    1167    INTEGER(iwp),      INTENT(IN)  ::  nxrc         !<
    1168    INTEGER(iwp),      INTENT(IN)  ::  nxrf         !<
    1169    INTEGER(iwp),      INTENT(IN)  ::  nxr_on_file  !<
    1170    INTEGER(iwp),      INTENT(IN)  ::  nync         !<
    1171    INTEGER(iwp),      INTENT(IN)  ::  nynf         !<
    1172    INTEGER(iwp),      INTENT(IN)  ::  nyn_on_file  !<
    1173    INTEGER(iwp),      INTENT(IN)  ::  nysc         !<
    1174    INTEGER(iwp),      INTENT(IN)  ::  nysf         !<
    1175    INTEGER(iwp),      INTENT(IN)  ::  nys_on_file  !<
    1176    LOGICAL,           INTENT(OUT) ::  found        !< flag if variable was found
    1177 
    1178    REAL(wp), DIMENSION(nys_on_file-nbgp:nyn_on_file+nbgp,nxl_on_file-nbgp:nxr_on_file+nbgp), INTENT(OUT) :: tmp_2d   !<
    1179    REAL(wp), DIMENSION(nzb:nzt+1,nys_on_file-nbgp:nyn_on_file+nbgp,nxl_on_file-nbgp:nxr_on_file+nbgp), INTENT(OUT) :: tmp_3d   !<
    1180 
    1181 
    1182    IF ( .NOT. found ) CALL bio_rrd_local(                                      &
    1183                               found                                            &
    1184                            )
    1185 
    1186    IF ( .NOT. found ) CALL bcm_rrd_local(                                      &
    1187                               file_index, map_index,                           &
    1188                               nxlf, nxlc, nxl_on_file,                         &
    1189                               nxrf, nxrc, nxr_on_file,                         &
    1190                               nynf, nync, nyn_on_file,                         &
    1191                               nysf, nysc, nys_on_file,                         &
    1192                               tmp_2d, tmp_3d, found                            &
    1193                            ) ! ToDo: change interface to pass variable
    1194 
    1195    IF ( .NOT. found ) CALL chem_rrd_local(                                     &
    1196                               file_index, map_index,                           &
    1197                               nxlf, nxlc, nxl_on_file,                         &
    1198                               nxrf, nxrc, nxr_on_file,                         &
    1199                               nynf, nync, nyn_on_file,                         &
    1200                               nysf, nysc, nys_on_file,                         &
    1201                               tmp_3d, found                                    &
    1202                            ) ! ToDo: change interface to pass variable
    1203 
    1204    IF ( .NOT. found ) CALL gust_rrd_local(                                     &
    1205                               file_index, map_index,                           &
    1206                               nxlf, nxlc, nxl_on_file,                         &
    1207                               nxrf, nxrc, nxr_on_file,                         &
    1208                               nynf, nync, nyn_on_file,                         &
    1209                               nysf, nysc, nys_on_file,                         &
    1210                               tmp_2d, tmp_3d, found                            &
    1211                            ) ! ToDo: change interface to pass variable
    1212 
    1213    IF ( .NOT. found ) CALL lsm_rrd_local(                                      &
    1214                               file_index, map_index,                           &
    1215                               nxlf, nxlc, nxl_on_file,                         &
    1216                               nxrf, nxrc, nxr_on_file,                         &
    1217                               nynf, nync, nyn_on_file,                         &
    1218                               nysf, nysc, nys_on_file,                         &
    1219                               tmp_2d, found                                    &
    1220                            ) ! ToDo: change interface to pass variable
    1221 
    1222    IF ( .NOT. found ) CALL ocean_rrd_local(                                    &
    1223                               file_index, map_index,                           &
    1224                               nxlf, nxlc, nxl_on_file,                         &
    1225                               nxrf, nxrc, nxr_on_file,                         &
    1226                               nynf, nync, nyn_on_file,                         &
    1227                               nysf, nysc, nys_on_file,                         &
    1228                               tmp_2d, tmp_3d, found                            &
    1229                            ) ! ToDo: change interface to pass variable
    1230 
    1231    IF ( .NOT. found ) CALL radiation_rrd_local(                                &
    1232                               file_index, map_index,                           &
    1233                               nxlf, nxlc, nxl_on_file,                         &
    1234                               nxrf, nxrc, nxr_on_file,                         &
    1235                               nynf, nync, nyn_on_file,                         &
    1236                               nysf, nysc, nys_on_file,                         &
    1237                               tmp_2d, tmp_3d, found                            &
    1238                            ) ! ToDo: change interface to pass variable
    1239 
    1240    IF ( .NOT. found ) CALL salsa_rrd_local(                                    &
    1241                               file_index, map_index,                           &
    1242                               nxlf, nxlc, nxl_on_file,                         &
    1243                               nxrf, nxrc, nxr_on_file,                         &
    1244                               nynf, nync, nyn_on_file,                         &
    1245                               nysf, nysc, nys_on_file,                         &
    1246                               tmp_3d, found                                    &
    1247                            ) ! ToDo: change interface to pass variable
    1248 
    1249    IF ( .NOT. found ) CALL usm_rrd_local(                                      &
    1250                               file_index, map_index,                           &
    1251                               nxlf, nxlc, nxl_on_file,                         &
    1252                               nxrf, nxrc, nxr_on_file,                         &
    1253                               nynf, nync, nyn_on_file,                         &
    1254                               nysf, nysc, nys_on_file,                         &
    1255                               found                                            &
    1256                            ) ! ToDo: change interface to pass variable
    1257 !
    1258 !--Surface data do not need overlap data, so do not pass these information.
    1259    IF ( .NOT. found ) CALL surface_data_output_rrd_local( found )
     1159 SUBROUTINE module_interface_rrd_local( file_index, map_index,                 &
     1160                                        nxlf, nxlc, nxl_on_file,               &
     1161                                        nxrf, nxrc, nxr_on_file,               &
     1162                                        nynf, nync, nyn_on_file,               &
     1163                                        nysf, nysc, nys_on_file,               &
     1164                                        tmp_2d, tmp_3d, found )
     1165
     1166
     1167    INTEGER(iwp),      INTENT(IN)  ::  file_index   !<
     1168    INTEGER(iwp),      INTENT(IN)  ::  map_index    !<
     1169    INTEGER(iwp),      INTENT(IN)  ::  nxlc         !<
     1170    INTEGER(iwp),      INTENT(IN)  ::  nxlf         !<
     1171    INTEGER(iwp),      INTENT(IN)  ::  nxl_on_file  !<
     1172    INTEGER(iwp),      INTENT(IN)  ::  nxrc         !<
     1173    INTEGER(iwp),      INTENT(IN)  ::  nxrf         !<
     1174    INTEGER(iwp),      INTENT(IN)  ::  nxr_on_file  !<
     1175    INTEGER(iwp),      INTENT(IN)  ::  nync         !<
     1176    INTEGER(iwp),      INTENT(IN)  ::  nynf         !<
     1177    INTEGER(iwp),      INTENT(IN)  ::  nyn_on_file  !<
     1178    INTEGER(iwp),      INTENT(IN)  ::  nysc         !<
     1179    INTEGER(iwp),      INTENT(IN)  ::  nysf         !<
     1180    INTEGER(iwp),      INTENT(IN)  ::  nys_on_file  !<
     1181    LOGICAL,           INTENT(OUT) ::  found        !< flag if variable was found
     1182
     1183    REAL(wp), DIMENSION(nys_on_file-nbgp:nyn_on_file+nbgp,nxl_on_file-nbgp:nxr_on_file+nbgp), INTENT(OUT) :: tmp_2d   !<
     1184    REAL(wp), DIMENSION(nzb:nzt+1,nys_on_file-nbgp:nyn_on_file+nbgp,nxl_on_file-nbgp:nxr_on_file+nbgp), INTENT(OUT) :: tmp_3d   !<
     1185
     1186
     1187    IF ( .NOT. found ) CALL bio_rrd_local(                                     &
     1188                               found                                           &
     1189                            )
     1190
     1191    IF ( .NOT. found ) CALL bcm_rrd_local(                                     &
     1192                               file_index, map_index,                          &
     1193                               nxlf, nxlc, nxl_on_file,                        &
     1194                               nxrf, nxrc, nxr_on_file,                        &
     1195                               nynf, nync, nyn_on_file,                        &
     1196                               nysf, nysc, nys_on_file,                        &
     1197                               tmp_2d, tmp_3d, found                           &
     1198                            ) ! ToDo: change interface to pass variable
     1199
     1200    IF ( .NOT. found ) CALL chem_rrd_local(                                    &
     1201                               file_index, map_index,                          &
     1202                               nxlf, nxlc, nxl_on_file,                        &
     1203                               nxrf, nxrc, nxr_on_file,                        &
     1204                               nynf, nync, nyn_on_file,                        &
     1205                               nysf, nysc, nys_on_file,                        &
     1206                               tmp_3d, found                                   &
     1207                            ) ! ToDo: change interface to pass variable
     1208
     1209    IF ( .NOT. found ) CALL gust_rrd_local(                                    &
     1210                               file_index, map_index,                          &
     1211                               nxlf, nxlc, nxl_on_file,                        &
     1212                               nxrf, nxrc, nxr_on_file,                        &
     1213                               nynf, nync, nyn_on_file,                        &
     1214                               nysf, nysc, nys_on_file,                        &
     1215                               tmp_2d, tmp_3d, found                           &
     1216                            ) ! ToDo: change interface to pass variable
     1217
     1218    IF ( .NOT. found ) CALL lsm_rrd_local(                                     &
     1219                               file_index, map_index,                          &
     1220                               nxlf, nxlc, nxl_on_file,                        &
     1221                               nxrf, nxrc, nxr_on_file,                        &
     1222                               nynf, nync, nyn_on_file,                        &
     1223                               nysf, nysc, nys_on_file,                        &
     1224                               tmp_2d, found                                   &
     1225                            ) ! ToDo: change interface to pass variable
     1226
     1227    IF ( .NOT. found ) CALL ocean_rrd_local(                                   &
     1228                               file_index, map_index,                          &
     1229                               nxlf, nxlc, nxl_on_file,                        &
     1230                               nxrf, nxrc, nxr_on_file,                        &
     1231                               nynf, nync, nyn_on_file,                        &
     1232                               nysf, nysc, nys_on_file,                        &
     1233                               tmp_2d, tmp_3d, found                           &
     1234                            ) ! ToDo: change interface to pass variable
     1235
     1236    IF ( .NOT. found ) CALL radiation_rrd_local(                               &
     1237                               file_index, map_index,                          &
     1238                               nxlf, nxlc, nxl_on_file,                        &
     1239                               nxrf, nxrc, nxr_on_file,                        &
     1240                               nynf, nync, nyn_on_file,                        &
     1241                               nysf, nysc, nys_on_file,                        &
     1242                               tmp_2d, tmp_3d, found                           &
     1243                            ) ! ToDo: change interface to pass variable
     1244
     1245    IF ( .NOT. found ) CALL salsa_rrd_local(                                   &
     1246                               file_index, map_index,                          &
     1247                               nxlf, nxlc, nxl_on_file,                        &
     1248                               nxrf, nxrc, nxr_on_file,                        &
     1249                               nynf, nync, nyn_on_file,                        &
     1250                               nysf, nysc, nys_on_file,                        &
     1251                               tmp_3d, found                                   &
     1252                            ) ! ToDo: change interface to pass variable
     1253
     1254    IF ( .NOT. found ) CALL usm_rrd_local(                                     &
     1255                               file_index, map_index,                          &
     1256                               nxlf, nxlc, nxl_on_file,                        &
     1257                               nxrf, nxrc, nxr_on_file,                        &
     1258                               nynf, nync, nyn_on_file,                        &
     1259                               nysf, nysc, nys_on_file,                        &
     1260                               found                                           &
     1261                            ) ! ToDo: change interface to pass variable
     1262!
     1263!-- Surface data do not need overlap data, so do not pass these information.
     1264    IF ( .NOT. found ) CALL surface_data_output_rrd_local( found )
    12601265                           
    1261    IF ( .NOT. found ) CALL user_rrd_local(                                     &
    1262                               file_index, map_index,                           &
    1263                               nxlf, nxlc, nxl_on_file,                         &
    1264                               nxrf, nxrc, nxr_on_file,                         &
    1265                               nynf, nync, nyn_on_file,                         &
    1266                               nysf, nysc, nys_on_file,                         &
    1267                               tmp_3d, found                                    &
    1268                            ) ! ToDo: change interface to pass variable
    1269 
    1270 
    1271 END SUBROUTINE module_interface_rrd_local
     1266    IF ( .NOT. found ) CALL user_rrd_local(                                    &
     1267                               file_index, map_index,                          &
     1268                               nxlf, nxlc, nxl_on_file,                        &
     1269                               nxrf, nxrc, nxr_on_file,                        &
     1270                               nynf, nync, nyn_on_file,                        &
     1271                               nysf, nysc, nys_on_file,                        &
     1272                               tmp_3d, found                                   &
     1273                            ) ! ToDo: change interface to pass variable
     1274
     1275
     1276 END SUBROUTINE module_interface_rrd_local
    12721277
    12731278
     
    12771282!> Write module-specific restart data specific to local MPI ranks
    12781283!------------------------------------------------------------------------------!
    1279 SUBROUTINE module_interface_wrd_local
    1280 
    1281 
    1282    IF ( biometeorology )       CALL bio_wrd_local
    1283    IF ( bulk_cloud_model )     CALL bcm_wrd_local
    1284    IF ( air_chemistry )        CALL chem_wrd_local
    1285    IF ( gust_module_enabled )  CALL gust_wrd_local
    1286    IF ( land_surface )         CALL lsm_wrd_local
    1287    IF ( ocean_mode )           CALL ocean_wrd_local
    1288    IF ( radiation )            CALL radiation_wrd_local
    1289    IF ( salsa )                CALL salsa_wrd_local
    1290    IF ( urban_surface )        CALL usm_wrd_local
    1291    IF ( surface_output )       CALL surface_data_output_wrd_local
    1292    IF ( user_module_enabled )  CALL user_wrd_local
    1293 
    1294 
    1295 END SUBROUTINE module_interface_wrd_local
     1284 SUBROUTINE module_interface_wrd_local
     1285
     1286
     1287    IF ( biometeorology )       CALL bio_wrd_local
     1288    IF ( bulk_cloud_model )     CALL bcm_wrd_local
     1289    IF ( air_chemistry )        CALL chem_wrd_local
     1290    IF ( gust_module_enabled )  CALL gust_wrd_local
     1291    IF ( land_surface )         CALL lsm_wrd_local
     1292    IF ( ocean_mode )           CALL ocean_wrd_local
     1293    IF ( radiation )            CALL radiation_wrd_local
     1294    IF ( salsa )                CALL salsa_wrd_local
     1295    IF ( urban_surface )        CALL usm_wrd_local
     1296    IF ( surface_output )       CALL surface_data_output_wrd_local
     1297    IF ( user_module_enabled )  CALL user_wrd_local
     1298
     1299
     1300 END SUBROUTINE module_interface_wrd_local
    12961301
    12971302
     
    13011306!> Perform module-specific last actions before the program terminates
    13021307!------------------------------------------------------------------------------!
    1303 SUBROUTINE module_interface_last_actions
    1304 
    1305    IF ( virtual_measurement )  CALL vm_last_actions
    1306    IF ( user_module_enabled )  CALL user_last_actions
    1307 
    1308 
    1309 END SUBROUTINE module_interface_last_actions
    1310 
    1311 
    1312 END MODULE module_interface
     1308 SUBROUTINE module_interface_last_actions
     1309
     1310
     1311    IF ( virtual_measurement )  CALL vm_last_actions
     1312    IF ( user_module_enabled )  CALL user_last_actions
     1313
     1314
     1315 END SUBROUTINE module_interface_last_actions
     1316
     1317
     1318 END MODULE module_interface
Note: See TracChangeset for help on using the changeset viewer.