Changeset 4753 for palm/trunk/SOURCE/module_interface.f90
- Timestamp:
- Oct 21, 2020 2:55:41 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/module_interface.f90
r4731 r4753 1 1 !> @file module_interface.f90 2 !------------------------------------------------------------------------------! 3 ! This file is part of PALM. 4 ! 5 ! PALM is free software: you can redistribute it and/or modify it under the 6 ! terms of the GNU General Public License as published by the Free Software 7 ! Foundation, either version 3 of the License, or (at your option) any later 8 ! version. 9 ! 10 ! PALM is distributed in the hope that it will be useful, but WITHOUT ANY 11 ! WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 12 ! A PARTICULAR PURPOSE. See the GNU General Public License for more details. 13 ! 14 ! You should have received a copy of the GNU General Public License along with 15 ! PALM. If not, see <http://www.gnu.org/licenses/>. 2 !--------------------------------------------------------------------------------------------------! 3 ! This file is part of the PALM model system. 4 ! 5 ! PALM is free software: you can redistribute it and/or modify it under the terms of the GNU General 6 ! Public License as published by the Free Software Foundation, either version 3 of the License, or 7 ! (at your option) any later version. 8 ! 9 ! PALM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the 10 ! implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 11 ! Public License for more details. 12 ! 13 ! You should have received a copy of the GNU General Public License along with PALM. If not, see 14 ! <http://www.gnu.org/licenses/>. 16 15 ! 17 16 ! Copyright 1997-2020 Leibniz Universitaet Hannover 18 !------------------------------------------------------------------------------ !17 !--------------------------------------------------------------------------------------------------! 19 18 ! 20 19 ! Current revisions: … … 25 24 ! ----------------- 26 25 ! $Id$ 26 ! file re-formatted to follow the PALM coding standard 27 ! 28 ! 4731 2020-10-07 13:25:11Z schwenkel 27 29 ! Move exchange_horiz from time_integration to modules 28 30 ! … … 32 34 ! 4590 2020-07-06 14:34:59Z suehring 33 35 ! Enable mpi-io for biomet 34 ! 36 ! 35 37 ! 4525 2020-05-10 17:05:07Z raasch 36 38 ! added restart I/O for global salsa data, 37 39 ! added restart with MPI-IO for salsa 38 ! 40 ! 39 41 ! 4518 2020-05-04 15:44:28Z suehring 40 42 ! Call of doq_rrd_local enabled 41 ! 43 ! 42 44 ! 4517 2020-05-03 14:29:30Z raasch 43 45 ! added restart with MPI-IO for reading local arrays 44 ! 46 ! 45 47 ! 4514 2020-04-30 16:29:59Z suehring 46 48 ! Added global restart routines for plant-canopy model 47 ! 49 ! 48 50 ! 4495 2020-04-13 20:11:20Z raasch 49 51 ! restart data handling with MPI-IO added 50 ! 52 ! 51 53 ! 4414 2020-02-19 20:16:04Z suehring 52 54 ! Add module interface for basic initialization of numerics. 53 ! 55 ! 54 56 ! 4411 2020-02-18 14:28:02Z maronga 55 57 ! Added output routines for WTM 56 ! 58 ! 57 59 ! 4407 2020-02-13 20:31:44Z knoop 58 60 ! Changed program_debug_output_unit to 9 in dom_init call 59 ! 61 ! 60 62 ! 4400 2020-02-10 20:32:41Z suehring 61 63 ! - Use data-output module for virtual measurement output 62 64 ! - Remove deprecated routines for virtual measurement module 63 ! 65 ! 64 66 ! 4361 2020-01-07 12:22:38Z suehring 65 67 ! Remove unused arrays in pmc_rrd_local 66 ! 68 ! 67 69 ! 4360 2020-01-07 11:25:50Z suehring 68 70 ! Add pcm_rrd_local and pcm_wrd_local 69 ! 71 ! 70 72 ! 4331 2019-12-10 18:25:02Z suehring 71 ! Change interface for doq_check_data_output, in order to perform further 72 ! output checks. 73 ! 73 ! Change interface for doq_check_data_output, in order to perform further output checks. 74 ! 74 75 ! 4281 2019-10-29 15:15:39Z schwenkel 75 76 ! Added dynamics boundary conditions 76 ! 77 ! 77 78 ! 4272 2019-10-23 15:18:57Z schwenkel 78 ! Further modularization of boundary conditions: moved boundary conditions to 79 ! respective modules 79 ! Further modularization of boundary conditions: moved boundary conditions to respective modules 80 80 ! 81 81 ! 4268 2019-10-17 11:29:38Z schwenkel 82 82 ! Introduction of module_interface_boundary_conditions 83 ! 83 ! 84 84 ! 4182 2019-08-22 15:20:23Z scharf 85 85 ! Corrected "Former revisions" section 86 ! 86 ! 87 87 ! 4173 2019-08-20 12:04:06Z gronemeier 88 88 ! add vdi_internal_controls 89 ! 89 ! 90 90 ! 4157 2019-08-14 09:19:12Z suehring 91 91 ! Call doq_init from module interface 92 ! 92 ! 93 93 ! 4132 2019-08-02 12:34:17Z suehring 94 94 ! Bugfix in masked data output for diagnostic quantities 95 ! 95 ! 96 96 ! 4131 2019-08-02 11:06:18Z monakurppa 97 97 ! Add output of 3D plant-canopy outputs (merge from branch resler) 98 ! 98 ! 99 99 ! 4048 2019-06-21 21:00:21Z knoop 100 100 ! Moved turbulence_closure_mod calls into this module_interface 101 ! 101 ! 102 102 ! 4047 2019-06-21 18:58:09Z knoop 103 103 ! Introduction of the dynamics module … … 110 110 ! 111 111 ! 4017 2019-06-06 12:16:46Z schwenkel 112 ! local_pf need INTENT(INOUT) attribute rather than INTENT(OUT). This is 113 ! because INTENT(OUT) sets the array to not-defined. Especially for outputs that 114 ! are not defined everywhere, e.g. land-surface outputs, this will be 115 ! problematic as NaN will be output. 112 ! local_pf need INTENT(INOUT) attribute rather than INTENT(OUT). This is because INTENT(OUT) sets 113 ! the array to not-defined. Especially for outputs that are not defined everywhere, e.g. 114 ! land-surface outputs, this will be problematic as NaN will be output. 116 115 ! 117 116 ! 3987 2019-05-22 09:52:13Z kanani … … 119 118 ! 120 119 ! 3956 2019-05-07 12:32:52Z monakurppa 121 ! - Added calls for salsa_non_advective_processes and 122 ! salsa_exchange_horiz_bounds 123 ! - Moved the call for salsa_data_output_2d/3d before that of 124 ! radiation_data_output_2d/3d. radiation_data_output_2d/3d tries to read a 125 ! salsa output variable and encounters a segmentation fault for "Ntot" due 126 ! to the shortoutput name 120 ! - Added calls for salsa_non_advective_processes and salsa_exchange_horiz_bounds 121 ! - Moved the call for salsa_data_output_2d/3d before that of radiation_data_output_2d/3d. 122 ! radiation_data_output_2d/3d tries to read a salsa output variable and encounters a segmentation 123 ! fault for "Ntot" due to the shortoutput name 127 124 ! 128 125 ! 3931 2019-04-24 16:34:28Z schwenkel … … 133 130 ! 134 131 ! 3887 2019 -04-12 08:47:41Z schwenkel 135 ! Changes related to global restructuring of location messages and introduction 136 ! of additional debugmessages132 ! Changes related to global restructuring of location messages and introduction of additional debug 133 ! messages 137 134 ! 138 135 ! 3880 2019 -04-08 21:43:02Z knoop … … 149 146 ! 150 147 ! 3766 2019-02-26 16:23:41Z raasch 151 ! first argument removed from module_interface_rrd_*, statement added to avoid 152 ! compiler warning about unused variable, file reformatted with respect to coding 153 ! standards 148 ! first argument removed from module_interface_rrd_*, statement added to avoid compiler warning 149 ! about unused variable, file reformatted with respect to coding standards 154 150 ! 155 151 ! 3762 2019-02-25 16:54:16Z suehring … … 166 162 ! 167 163 ! 3735 2019-02-12 09:52:40Z dom_dwd_user 168 ! Accepting variable j from check_parameters and passing it to 169 ! bio_check_data_output 164 ! Accepting variable j from check_parameters and passing it to bio_check_data_output 170 165 ! Add required restart data for surface output module 171 166 ! … … 189 184 ! 190 185 ! 3649 2019-01-02 16:52:21Z suehring 191 ! Initialize strings, in order to avoid compiler warnings for non-initialized 192 ! characters withintent(out) attribute186 ! Initialize strings, in order to avoid compiler warnings for non-initialized characters with 187 ! intent(out) attribute 193 188 ! 194 189 ! 3648 2019-01-02 16:35:46Z suehring … … 202 197 !> 203 198 !> @todo Re-format module to be consistent with coding standard 204 !------------------------------------------------------------------------------ !199 !--------------------------------------------------------------------------------------------------! 205 200 MODULE module_interface 206 201 207 USE indices, &202 USE indices, & 208 203 ONLY: nbgp, nxl, nxlg, nxr, nxrg, nys, nysg, nyn, nyng, nzb, nzt 209 204 210 205 USE kinds 211 206 212 USE pegrid, &207 USE pegrid, & 213 208 ONLY: comm2d 214 209 … … 216 211 !-- load module-specific control parameters. 217 212 !-- ToDo: move all of them to respective module or a dedicated central module 218 USE data_output_module, &219 ONLY: dom_def_end, &220 dom_finalize_output, &213 USE data_output_module, & 214 ONLY: dom_def_end, & 215 dom_finalize_output, & 221 216 dom_init 222 217 223 USE dynamics_mod, &224 ONLY: dynamics_ parin,&225 dynamics_ check_parameters,&226 dynamics_ check_data_output_ts,&227 dynamics_check_data_output _pr,&228 dynamics_check_data_output ,&229 dynamics_ init_masks,&230 dynamics_ define_netcdf_grid,&231 dynamics_ init_arrays,&232 dynamics_ init,&233 dynamics_ init_checks,&234 dynamics_ header,&235 dynamics_ actions,&236 dynamics_ non_advective_processes,&237 dynamics_ exchange_horiz,&238 dynamics_ prognostic_equations,&239 dynamics_ boundary_conditions,&240 dynamics_ swap_timelevel,&241 dynamics_ 3d_data_averaging,&242 dynamics_ data_output_2d,&243 dynamics_ data_output_3d,&244 dynamics_ statistics,&245 dynamics_rrd_ global,&246 dynamics_ rrd_local,&247 dynamics_ wrd_global,&248 dynamics_wrd_ local,&249 dynamics_ last_actions250 251 USE turbulence_closure_mod, &252 ONLY: tcm_ check_parameters,&253 tcm_ check_data_output,&254 tcm_ init_arrays,&255 tcm_ init,&256 tcm_ actions,&257 tcm_ prognostic_equations,&258 tcm_ boundary_conds,&259 tcm_ swap_timelevel,&260 tcm_ 3d_data_averaging,&261 tcm_ data_output_2d,&262 tcm_ data_output_3d263 264 USE control_parameters, &265 ONLY: air_chemistry, &266 biometeorology, &267 coupling_char, &268 debug_output, &269 debug_output_timestep, &270 indoor_model, &271 land_surface, &272 large_scale_forcing, &273 nesting_offline, &274 nudging, &275 ocean_mode, &276 plant_canopy, &277 salsa, &278 surface_output, &279 syn_turb_gen, &280 urban_surface, &281 vdi_checks, &282 virtual_flight, &283 virtual_measurement, &218 USE dynamics_mod, & 219 ONLY: dynamics_3d_data_averaging, & 220 dynamics_actions, & 221 dynamics_boundary_conditions, & 222 dynamics_check_data_output, & 223 dynamics_check_data_output_pr, & 224 dynamics_check_data_output_ts, & 225 dynamics_check_parameters, & 226 dynamics_data_output_2d, & 227 dynamics_data_output_3d, & 228 dynamics_define_netcdf_grid, & 229 dynamics_exchange_horiz, & 230 dynamics_header, & 231 dynamics_init, & 232 dynamics_init_arrays, & 233 dynamics_init_checks, & 234 dynamics_init_masks, & 235 dynamics_last_actions, & 236 dynamics_non_advective_processes, & 237 dynamics_parin, & 238 dynamics_prognostic_equations, & 239 dynamics_rrd_global, & 240 dynamics_rrd_local, & 241 dynamics_statistics, & 242 dynamics_swap_timelevel, & 243 dynamics_wrd_global, & 244 dynamics_wrd_local 245 246 USE turbulence_closure_mod, & 247 ONLY: tcm_3d_data_averaging, & 248 tcm_actions, & 249 tcm_boundary_conds, & 250 tcm_check_data_output, & 251 tcm_check_parameters, & 252 tcm_data_output_2d, & 253 tcm_data_output_3d, & 254 tcm_init, & 255 tcm_init_arrays, & 256 tcm_prognostic_equations, & 257 tcm_swap_timelevel 258 259 USE control_parameters, & 260 ONLY: air_chemistry, & 261 biometeorology, & 262 coupling_char, & 263 debug_output, & 264 debug_output_timestep, & 265 indoor_model, & 266 land_surface, & 267 large_scale_forcing, & 268 nesting_offline, & 269 nudging, & 270 ocean_mode, & 271 plant_canopy, & 272 salsa, & 273 surface_output, & 274 syn_turb_gen, & 275 urban_surface, & 276 vdi_checks, & 277 virtual_flight, & 278 virtual_measurement, & 284 279 wind_turbine 285 280 286 281 ! 287 !-- load interface routines of all PALM modules288 USE biometeorology_mod, &289 ONLY: bio_ parin,&290 bio_check_data_output, &291 bio_ init,&292 bio_ init_checks,&293 bio_ header,&294 bio_ 3d_data_averaging,&295 bio_ data_output_2d,&296 bio_ data_output_3d,&297 bio_rrd_global, &298 bio_rrd_local, &299 bio_wrd_global, &282 !-- Load interface routines of all PALM modules 283 USE biometeorology_mod, & 284 ONLY: bio_3d_data_averaging, & 285 bio_check_data_output, & 286 bio_data_output_2d, & 287 bio_data_output_3d, & 288 bio_init, & 289 bio_init_checks, & 290 bio_header, & 291 bio_parin, & 292 bio_rrd_global, & 293 bio_rrd_local, & 294 bio_wrd_global, & 300 295 bio_wrd_local 301 296 302 USE bulk_cloud_model_mod, &303 ONLY: b ulk_cloud_model,&304 bcm_ parin,&305 bcm_ check_parameters,&306 bcm_check_data_output_pr, &307 bcm_check_data_output, &308 bcm_ init_arrays,&309 bcm_ init,&310 bcm_ header,&311 bcm_ actions,&312 bcm_ non_advective_processes,&313 bcm_ exchange_horiz,&314 bcm_ prognostic_equations,&315 bcm_ boundary_conditions,&316 bcm_ swap_timelevel,&317 bcm_ 3d_data_averaging,&318 bcm_ data_output_2d,&319 bcm_ data_output_3d,&320 bcm_ rrd_global,&321 bcm_wrd_global, &322 bcm_ rrd_local,&323 b cm_wrd_local324 325 USE chemistry_model_mod, &326 ONLY: chem_ parin,&327 chem_ check_parameters,&328 chem_ check_data_output_pr,&329 chem_check_data_output, &330 chem_ exchange_horiz_bounds,&331 chem_ init_arrays,&332 chem_ init,&333 chem_ header,&334 chem_ actions,&335 chem_ non_advective_processes,&336 chem_ prognostic_equations,&337 chem_ boundary_conditions,&338 chem_ swap_timelevel,&339 chem_ 3d_data_averaging,&340 chem_ data_output_2d,&341 chem_ data_output_3d,&342 chem_statistics, &343 chem_ rrd_local,&297 USE bulk_cloud_model_mod, & 298 ONLY: bcm_3d_data_averaging, & 299 bcm_actions, & 300 bcm_boundary_conditions, & 301 bcm_check_data_output_pr, & 302 bcm_check_data_output, & 303 bcm_check_parameters, & 304 bcm_data_output_2d, & 305 bcm_data_output_3d, & 306 bcm_exchange_horiz, & 307 bcm_header, & 308 bcm_init_arrays, & 309 bcm_init, & 310 bcm_non_advective_processes, & 311 bcm_parin, & 312 bcm_prognostic_equations, & 313 bcm_rrd_global, & 314 bcm_rrd_local, & 315 bcm_swap_timelevel, & 316 bcm_wrd_global, & 317 bcm_wrd_local, & 318 bulk_cloud_model 319 320 USE chemistry_model_mod, & 321 ONLY: chem_3d_data_averaging, & 322 chem_actions, & 323 chem_boundary_conditions, & 324 chem_check_data_output, & 325 chem_check_data_output_pr, & 326 chem_check_parameters, & 327 chem_data_output_2d, & 328 chem_data_output_3d, & 329 chem_exchange_horiz_bounds, & 330 chem_header, & 331 chem_init, & 332 chem_init_arrays, & 333 chem_non_advective_processes, & 334 chem_parin, & 335 chem_prognostic_equations, & 336 chem_rrd_local, & 337 chem_statistics, & 338 chem_swap_timelevel, & 344 339 chem_wrd_local 345 340 346 USE diagnostic_output_quantities_mod, &347 ONLY: doq_3d_data_averaging, &348 doq_check_data_output, &349 doq_define_netcdf_grid, &350 doq_init, &351 doq_output_2d, &352 doq_output_3d, &353 doq_rrd_local, &341 USE diagnostic_output_quantities_mod, & 342 ONLY: doq_3d_data_averaging, & 343 doq_check_data_output, & 344 doq_define_netcdf_grid, & 345 doq_init, & 346 doq_output_2d, & 347 doq_output_3d, & 348 doq_rrd_local, & 354 349 doq_wrd_local 355 350 356 USE flight_mod, &357 ONLY: flight_ parin,&358 flight_ header,&359 flight_ init,&360 flight_rrd_global, &351 USE flight_mod, & 352 ONLY: flight_header, & 353 flight_init, & 354 flight_parin, & 355 flight_rrd_global, & 361 356 flight_wrd_global 362 357 363 USE gust_mod, &364 ONLY: gust_ module_enabled,&365 gust_ parin,&366 gust_check_parameters, &367 gust_check_data_output _pr,&368 gust_check_data_output ,&369 gust_ init_arrays,&370 gust_ init,&371 gust_header, &372 gust_ actions,&373 gust_ prognostic_equations,&374 gust_ swap_timelevel,&375 gust_ 3d_data_averaging,&376 gust_ data_output_2d,&377 gust_ data_output_3d,&378 gust_ statistics,&379 gust_ rrd_global,&380 gust_ wrd_global,&381 gust_ rrd_local,&358 USE gust_mod, & 359 ONLY: gust_3d_data_averaging, & 360 gust_actions, & 361 gust_check_parameters, & 362 gust_check_data_output, & 363 gust_check_data_output_pr, & 364 gust_data_output_2d, & 365 gust_data_output_3d, & 366 gust_header, & 367 gust_init, & 368 gust_init_arrays, & 369 gust_module_enabled, & 370 gust_parin, & 371 gust_prognostic_equations, & 372 gust_rrd_global, & 373 gust_rrd_local, & 374 gust_statistics, & 375 gust_swap_timelevel, & 376 gust_wrd_global, & 382 377 gust_wrd_local 383 378 384 USE indoor_model_mod, &385 ONLY: im_ parin,&386 im_check_ data_output,&387 im_ check_parameters,&388 im_ data_output_3d,&389 im_ init390 391 USE lagrangian_particle_model_mod, &392 ONLY: lpm_ parin,&393 lpm_ header,&394 lpm_ check_parameters,&395 lpm_ exchange_horiz_bounds,&396 lpm_init _arrays,&397 lpm_init ,&398 lpm_ actions,&399 lpm_rrd_global, &400 lpm_rrd_local, &401 lpm_wrd_local, &379 USE indoor_model_mod, & 380 ONLY: im_check_data_output, & 381 im_check_parameters, & 382 im_data_output_3d, & 383 im_init, & 384 im_parin 385 386 USE lagrangian_particle_model_mod, & 387 ONLY: lpm_actions, & 388 lpm_check_parameters, & 389 lpm_exchange_horiz_bounds, & 390 lpm_header, & 391 lpm_init, & 392 lpm_init_arrays, & 393 lpm_parin, & 394 lpm_rrd_global, & 395 lpm_rrd_local, & 396 lpm_wrd_local, & 402 397 lpm_wrd_global 403 398 404 USE land_surface_model_mod, &405 ONLY: lsm_ parin,&406 lsm_check_parameters, &407 lsm_check_data_output _pr,&408 lsm_check_data_output ,&409 lsm_ init_arrays,&410 lsm_ init,&411 lsm_ header,&412 lsm_ swap_timelevel,&413 lsm_ 3d_data_averaging,&414 lsm_ data_output_2d,&415 lsm_ rrd_local,&399 USE land_surface_model_mod, & 400 ONLY: lsm_3d_data_averaging, & 401 lsm_check_parameters, & 402 lsm_check_data_output, & 403 lsm_check_data_output_pr, & 404 lsm_data_output_2d, & 405 lsm_header, & 406 lsm_init, & 407 lsm_init_arrays, & 408 lsm_parin, & 409 lsm_rrd_local, & 410 lsm_swap_timelevel, & 416 411 lsm_wrd_local 417 412 418 USE lsf_nudging_mod, &419 ONLY: lsf_nudging_check_parameters, &420 lsf_nudging_check_data_output_pr, &421 lsf_ init,&422 nudge_init,&423 lsf_nudging_header424 425 USE multi_agent_system_mod, &413 USE lsf_nudging_mod, & 414 ONLY: lsf_nudging_check_parameters, & 415 lsf_nudging_check_data_output_pr, & 416 lsf_nudging_header, & 417 lsf_init, & 418 nudge_init 419 420 USE multi_agent_system_mod, & 426 421 ONLY: mas_parin 427 422 428 USE nesting_offl_mod, &429 ONLY: nesting_offl_ parin,&430 nesting_offl_ check_parameters,&431 nesting_offl_ header432 433 USE ocean_mod, &434 ONLY: ocean_ parin,&435 ocean_ check_parameters,&436 ocean_ check_data_output_pr,&437 ocean_check_ data_output,&438 ocean_ exchange_horiz,&439 ocean_ init_arrays,&440 ocean_ init,&441 ocean_ header,&442 ocean_ actions,&443 ocean_ prognostic_equations,&444 ocean_ boundary_conditions,&445 ocean_ swap_timelevel,&446 ocean_ 3d_data_averaging,&447 ocean_ data_output_2d,&448 ocean_ data_output_3d,&449 ocean_rrd_ global,&450 ocean_ wrd_global,&451 ocean_ rrd_local,&423 USE nesting_offl_mod, & 424 ONLY: nesting_offl_check_parameters, & 425 nesting_offl_header, & 426 nesting_offl_parin 427 428 USE ocean_mod, & 429 ONLY: ocean_3d_data_averaging, & 430 ocean_actions, & 431 ocean_boundary_conditions, & 432 ocean_check_parameters, & 433 ocean_check_data_output, & 434 ocean_check_data_output_pr, & 435 ocean_data_output_2d, & 436 ocean_data_output_3d, & 437 ocean_exchange_horiz, & 438 ocean_init_arrays, & 439 ocean_init, & 440 ocean_header, & 441 ocean_parin, & 442 ocean_prognostic_equations, & 443 ocean_rrd_global, & 444 ocean_rrd_local, & 445 ocean_swap_timelevel, & 446 ocean_wrd_global, & 452 447 ocean_wrd_local 453 448 454 USE particle_attributes, &449 USE particle_attributes, & 455 450 ONLY: particle_advection 456 451 457 USE poismg_noopt_mod, &452 USE poismg_noopt_mod, & 458 453 ONLY: poismg_noopt_init 459 454 460 USE plant_canopy_model_mod, &461 ONLY: pcm_ parin,&462 pcm_check_parameters, &463 pcm_check_data_output, &464 pcm_ init,&465 pcm_header, &466 pcm_ 3d_data_averaging,&467 pcm_ data_output_3d,&468 pcm_rrd_global, &469 pcm_rrd_local, &470 pcm_wrd_global, &455 USE plant_canopy_model_mod, & 456 ONLY: pcm_3d_data_averaging, & 457 pcm_check_parameters, & 458 pcm_check_data_output, & 459 pcm_data_output_3d, & 460 pcm_header, & 461 pcm_init, & 462 pcm_parin, & 463 pcm_rrd_global, & 464 pcm_rrd_local, & 465 pcm_wrd_global, & 471 466 pcm_wrd_local 472 467 473 USE radiation_model_mod, &474 ONLY: radiation, &475 radiation_ parin,&476 radiation_check_parameters, &477 radiation_check_data_output _ts,&478 radiation_check_data_output_pr, &479 radiation_check_data_output ,&480 radiation_ init,&481 radiation_ header,&482 radiation_ 3d_data_averaging,&483 radiation_ data_output_2d,&484 radiation_ data_output_3d,&485 radiation_rrd_local, &468 USE radiation_model_mod, & 469 ONLY: radiation, & 470 radiation_3d_data_averaging, & 471 radiation_check_parameters, & 472 radiation_check_data_output, & 473 radiation_check_data_output_pr, & 474 radiation_check_data_output_ts, & 475 radiation_data_output_2d, & 476 radiation_data_output_3d, & 477 radiation_header, & 478 radiation_init, & 479 radiation_parin, & 480 radiation_rrd_local, & 486 481 radiation_wrd_local 487 482 488 USE salsa_mod, &489 ONLY: salsa_ parin,&490 salsa_ check_parameters,&491 salsa_ check_data_output_pr,&492 salsa_check_data_output, &493 salsa_ init_arrays,&494 salsa_ init,&495 salsa_ header,&496 salsa_ actions,&497 salsa_ non_advective_processes,&498 salsa_ exchange_horiz_bounds,&499 salsa_ prognostic_equations,&500 salsa_ boundary_conditions,&501 salsa_ swap_timelevel,&502 salsa_ 3d_data_averaging,&503 salsa_ data_output_2d,&504 salsa_ data_output_3d,&505 salsa_ statistics,&506 salsa_ rrd_global,&507 salsa_ rrd_local,&508 salsa_wrd_global, &483 USE salsa_mod, & 484 ONLY: salsa_3d_data_averaging, & 485 salsa_actions, & 486 salsa_boundary_conditions, & 487 salsa_check_data_output, & 488 salsa_check_data_output_pr, & 489 salsa_check_parameters, & 490 salsa_data_output_2d, & 491 salsa_data_output_3d, & 492 salsa_exchange_horiz_bounds, & 493 salsa_header, & 494 salsa_init, & 495 salsa_init_arrays, & 496 salsa_non_advective_processes, & 497 salsa_parin, & 498 salsa_prognostic_equations, & 499 salsa_rrd_global, & 500 salsa_rrd_local, & 501 salsa_statistics, & 502 salsa_swap_timelevel, & 503 salsa_wrd_global, & 509 504 salsa_wrd_local 510 505 511 USE spectra_mod, &512 ONLY: calculate_spectra, &513 spectra_ parin,&514 spectra_ check_parameters,&515 spectra_ header516 517 USE surface_data_output_mod, &518 ONLY: surface_data_output_ parin,&519 surface_data_output_ check_parameters,&520 surface_data_output_ init_arrays,&521 surface_data_output_rrd_ local,&522 surface_data_output_rrd_ global,&523 surface_data_output_wrd_ local,&524 surface_data_output_wrd_ global525 526 USE surface_mod, &506 USE spectra_mod, & 507 ONLY: calculate_spectra, & 508 spectra_check_parameters, & 509 spectra_header, & 510 spectra_parin 511 512 USE surface_data_output_mod, & 513 ONLY: surface_data_output_check_parameters, & 514 surface_data_output_init_arrays, & 515 surface_data_output_parin, & 516 surface_data_output_rrd_global, & 517 surface_data_output_rrd_local, & 518 surface_data_output_wrd_global, & 519 surface_data_output_wrd_local 520 521 USE surface_mod, & 527 522 ONLY: init_bc 528 523 529 USE synthetic_turbulence_generator_mod, &530 ONLY: stg_ parin,&531 stg_ check_parameters,&532 stg_ header,&533 stg_rrd_global, &524 USE synthetic_turbulence_generator_mod, & 525 ONLY: stg_check_parameters, & 526 stg_header, & 527 stg_parin, & 528 stg_rrd_global, & 534 529 stg_wrd_global 535 530 536 USE urban_surface_mod, &537 ONLY: usm_ parin,&538 usm_check_ parameters,&539 usm_check_ data_output,&540 usm_init _arrays,&541 usm_init ,&542 usm_ swap_timelevel,&543 usm_ 3d_data_averaging,&544 usm_rrd_local, &531 USE urban_surface_mod, & 532 ONLY: usm_3d_data_averaging, & 533 usm_check_data_output, & 534 usm_check_parameters, & 535 usm_init, & 536 usm_init_arrays, & 537 usm_parin, & 538 usm_swap_timelevel, & 539 usm_rrd_local, & 545 540 usm_wrd_local 546 541 547 USE vdi_internal_controls, &542 USE vdi_internal_controls, & 548 543 ONLY: vdi_actions 549 550 USE virtual_measurement_mod, &551 ONLY: vm_check_parameters, &552 vm_init, &553 vm_init_output, &544 545 USE virtual_measurement_mod, & 546 ONLY: vm_check_parameters, & 547 vm_init, & 548 vm_init_output, & 554 549 vm_parin 555 550 556 USE wind_turbine_model_mod, &557 ONLY: wtm_ parin,&558 wtm_check_parameters, &559 wtm_init, &560 wtm_init_arrays, &561 wtm_init_output, &562 wtm_ actions,&563 wtm_rrd_global, &551 USE wind_turbine_model_mod, & 552 ONLY: wtm_actions, & 553 wtm_check_parameters, & 554 wtm_init, & 555 wtm_init_arrays, & 556 wtm_init_output, & 557 wtm_parin, & 558 wtm_rrd_global, & 564 559 wtm_wrd_global 565 560 566 USE user, &567 ONLY: user_ module_enabled,&568 user_ parin,&569 user_check_ parameters,&570 user_check_data_output_ ts,&571 user_check_data_output_ pr,&572 user_check_ data_output,&573 user_ init,&574 user_ init_arrays,&575 user_header, &576 user_ actions,&577 user_ 3d_data_averaging,&578 user_ data_output_2d,&579 user_ data_output_3d,&580 user_ statistics,&581 user_ rrd_global,&582 user_rrd_ local,&583 user_ wrd_global,&584 user_wrd_ local,&585 user_ last_actions561 USE user, & 562 ONLY: user_3d_data_averaging, & 563 user_actions, & 564 user_check_data_output, & 565 user_check_data_output_pr, & 566 user_check_data_output_ts, & 567 user_check_parameters, & 568 user_data_output_2d, & 569 user_data_output_3d, & 570 user_header, & 571 user_init, & 572 user_init_arrays, & 573 user_last_actions, & 574 user_module_enabled, & 575 user_parin, & 576 user_statistics, & 577 user_rrd_global, & 578 user_rrd_local, & 579 user_wrd_global, & 580 user_wrd_local 586 581 587 582 IMPLICIT NONE … … 591 586 ! 592 587 !-- Public functions 593 PUBLIC &594 module_interface_parin, &595 module_interface_check_parameters, &596 module_interface_check_data_output_ts, &597 module_interface_check_data_output_pr, &598 module_interface_check_data_output, &599 module_interface_init_masks, &600 module_interface_define_netcdf_grid, &601 module_interface_init_arrays, &602 module_interface_init, &603 module_interface_init_checks, &604 module_interface_init_numerics, &605 module_interface_init_output, &606 module_interface_header, &607 module_interface_actions, &608 module_interface_non_advective_processes, &609 module_interface_exchange_horiz, &610 module_interface_prognostic_equations, &611 module_interface_boundary_conditions, &612 module_interface_swap_timelevel, &613 module_interface_3d_data_averaging, &614 module_interface_data_output_2d, &615 module_interface_data_output_3d, &616 module_interface_statistics, &617 module_interface_rrd_global, &618 module_interface_wrd_global, &619 module_interface_rrd_local, &620 module_interface_wrd_local, &588 PUBLIC & 589 module_interface_parin, & 590 module_interface_check_parameters, & 591 module_interface_check_data_output_ts, & 592 module_interface_check_data_output_pr, & 593 module_interface_check_data_output, & 594 module_interface_init_masks, & 595 module_interface_define_netcdf_grid, & 596 module_interface_init_arrays, & 597 module_interface_init, & 598 module_interface_init_checks, & 599 module_interface_init_numerics, & 600 module_interface_init_output, & 601 module_interface_header, & 602 module_interface_actions, & 603 module_interface_non_advective_processes, & 604 module_interface_exchange_horiz, & 605 module_interface_prognostic_equations, & 606 module_interface_boundary_conditions, & 607 module_interface_swap_timelevel, & 608 module_interface_3d_data_averaging, & 609 module_interface_data_output_2d, & 610 module_interface_data_output_3d, & 611 module_interface_statistics, & 612 module_interface_rrd_global, & 613 module_interface_wrd_global, & 614 module_interface_rrd_local, & 615 module_interface_wrd_local, & 621 616 module_interface_last_actions 622 617 … … 743 738 744 739 745 !------------------------------------------------------------------------------ !740 !--------------------------------------------------------------------------------------------------! 746 741 ! Description: 747 742 ! ------------ 748 743 !> Read module-specific parameter namelists 749 !------------------------------------------------------------------------------ !744 !------------------------------------------------------------------------------ ! 750 745 SUBROUTINE module_interface_parin 751 746 … … 785 780 786 781 787 !------------------------------------------------------------------------------ !782 !--------------------------------------------------------------------------------------------------! 788 783 ! Description: 789 784 ! ------------ 790 785 !> Perform module-specific initialization checks 791 !------------------------------------------------------------------------------ !786 !--------------------------------------------------------------------------------------------------! 792 787 SUBROUTINE module_interface_check_parameters 793 788 … … 825 820 826 821 827 !------------------------------------------------------------------------------ !822 !--------------------------------------------------------------------------------------------------! 828 823 ! Description: 829 824 ! ------------ 830 825 !> Check module-specific data output of timeseries 831 !------------------------------------------------------------------------------ !826 !--------------------------------------------------------------------------------------------------! 832 827 SUBROUTINE module_interface_check_data_output_ts( dots_max, dots_num, dots_label, dots_unit ) 833 828 834 835 INTEGER(iwp), INTENT(IN) :: dots_max !< variable output array index 829 INTEGER(iwp), INTENT(IN) :: dots_max !< variable output array index 836 830 INTEGER(iwp), INTENT(INOUT) :: dots_num !< variable output array index 831 837 832 CHARACTER (LEN=*), DIMENSION(dots_max), INTENT(INOUT) :: dots_label 838 833 CHARACTER (LEN=*), DIMENSION(dots_max), INTENT(INOUT) :: dots_unit … … 857 852 858 853 859 !------------------------------------------------------------------------------ !854 !--------------------------------------------------------------------------------------------------! 860 855 ! Description: 861 856 ! ------------ 862 857 !> Check module-specific data output of profiles 863 !------------------------------------------------------------------------------! 864 SUBROUTINE module_interface_check_data_output_pr( variable, var_count, unit, & 865 dopr_unit ) 858 !--------------------------------------------------------------------------------------------------! 859 SUBROUTINE module_interface_check_data_output_pr( variable, var_count, unit, dopr_unit ) 866 860 867 861 868 862 CHARACTER (LEN=*), INTENT(IN) :: variable !< variable name 869 INTEGER(iwp), INTENT(IN) :: var_count !< variable output array index870 863 CHARACTER (LEN=*), INTENT(INOUT) :: unit !< physical unit of variable 871 864 CHARACTER (LEN=*), INTENT(OUT) :: dopr_unit !< local value of dopr_unit 872 865 866 INTEGER(iwp), INTENT(IN) :: var_count !< variable output array index 867 873 868 874 869 IF ( debug_output ) CALL debug_message( 'checking module-specific data output pr', 'start' ) … … 876 871 CALL dynamics_check_data_output_pr( variable, var_count, unit, dopr_unit ) 877 872 878 IF ( unit == 'illegal' .AND. bulk_cloud_model ) THEN873 IF ( unit == 'illegal' .AND. bulk_cloud_model ) THEN 879 874 CALL bcm_check_data_output_pr( variable, var_count, unit, dopr_unit ) 880 875 ENDIF 881 876 882 IF ( unit == 'illegal' .AND. air_chemistry ) THEN877 IF ( unit == 'illegal' .AND. air_chemistry ) THEN 883 878 CALL chem_check_data_output_pr( variable, var_count, unit, dopr_unit ) 884 879 ENDIF … … 918 913 END SUBROUTINE module_interface_check_data_output_pr 919 914 920 !------------------------------------------------------------------------------ !915 !--------------------------------------------------------------------------------------------------! 921 916 ! Description: 922 917 ! ------------ 923 918 !> Check module-specific 2D and 3D data output 924 !------------------------------------------------------------------------------ !919 !--------------------------------------------------------------------------------------------------! 925 920 SUBROUTINE module_interface_check_data_output( variable, unit, i, j, ilen, k ) 926 921 … … 949 944 ENDIF 950 945 951 IF ( unit == 'illegal' .AND. air_chemistry 952 .AND. (variable(1:3) == 'kc_' .OR.variable(1:3) == 'em_') ) THEN ! ToDo: remove aditional conditions946 IF ( unit == 'illegal' .AND. air_chemistry .AND. (variable(1:3) == 'kc_' .OR. & 947 variable(1:3) == 'em_') ) THEN ! ToDo: remove aditional conditions 953 948 CALL chem_check_data_output( variable, unit, i, ilen, k ) 954 949 ENDIF … … 970 965 ENDIF 971 966 972 IF ( unit == 'illegal' .AND. plant_canopy & 973 .AND. variable(1:4) == 'pcm_' ) THEN ! ToDo: remove aditional conditions 967 IF ( unit == 'illegal' .AND. plant_canopy .AND. variable(1:4) == 'pcm_' ) THEN ! ToDo: remove aditional conditions 974 968 CALL pcm_check_data_output( variable, unit ) 975 969 ENDIF … … 987 981 ENDIF 988 982 989 IF ( unit == 'illegal' .AND. urban_surface & 990 .AND. variable(1:4) == 'usm_' ) THEN ! ToDo: remove aditional conditions 983 IF ( unit == 'illegal' .AND. urban_surface .AND. variable(1:4) == 'usm_' ) THEN ! ToDo: remove aditional conditions 991 984 CALL usm_check_data_output( variable, unit ) 992 985 ENDIF … … 1003 996 1004 997 1005 !------------------------------------------------------------------------------ !998 !--------------------------------------------------------------------------------------------------! 1006 999 ! 1007 1000 ! Description: 1008 1001 ! ------------ 1009 1002 !> Interface for init_masks. ToDo: get rid of these redundant calls! 1010 !------------------------------------------------------------------------------ !1003 !--------------------------------------------------------------------------------------------------! 1011 1004 SUBROUTINE module_interface_init_masks( variable, unit ) 1012 1005 … … 1020 1013 CALL dynamics_init_masks( variable, unit ) 1021 1014 1022 IF ( unit == 'illegal' .AND. air_chemistry 1023 .AND. (variable(1:3) == 'kc_' .OR.variable(1:3) == 'em_') ) THEN ! ToDo: remove aditional conditions1015 IF ( unit == 'illegal' .AND. air_chemistry .AND. (variable(1:3) == 'kc_' .OR. & 1016 variable(1:3) == 'em_') ) THEN ! ToDo: remove aditional conditions 1024 1017 CALL chem_check_data_output( variable, unit, 0, 0, 0 ) 1025 1018 ENDIF 1026 1019 1027 1020 IF ( unit == 'illegal' ) THEN 1028 1021 CALL doq_check_data_output( variable, unit ) … … 1048 1041 1049 1042 1050 !------------------------------------------------------------------------------ !1043 !--------------------------------------------------------------------------------------------------! 1051 1044 ! 1052 1045 ! Description: 1053 1046 ! ------------ 1054 1047 !> Define appropriate grid for module-specific netcdf output variables. 1055 !------------------------------------------------------------------------------! 1056 SUBROUTINE module_interface_define_netcdf_grid( var, found, & 1057 grid_x, grid_y, grid_z ) 1048 !--------------------------------------------------------------------------------------------------! 1049 SUBROUTINE module_interface_define_netcdf_grid( var, found, grid_x, grid_y, grid_z ) 1058 1050 1059 1051 1060 1052 CHARACTER (LEN=*), INTENT(IN) :: var !< variable name 1061 LOGICAL, INTENT(OUT) :: found !< indicates if variable was found1062 1053 CHARACTER (LEN=*), INTENT(OUT) :: grid_x !< netcdf dimension in x-direction 1063 1054 CHARACTER (LEN=*), INTENT(OUT) :: grid_y !< netcdf dimension in y-direction 1064 1055 CHARACTER (LEN=*), INTENT(OUT) :: grid_z !< netcdf dimension in z-direction 1065 1056 1057 LOGICAL, INTENT(OUT) :: found !< indicates if variable was found 1058 1066 1059 1067 1060 IF ( debug_output ) CALL debug_message( 'defining module-specific netcdf grids', 'start' ) 1068 1061 ! 1069 !-- As long as no action is done in this subroutine, initialize strings with 1070 !-- in tent(out) attribute, inorder to avoid compiler warnings.1062 !-- As long as no action is done in this subroutine, initialize strings with intent(out) attribute, 1063 !-- in order to avoid compiler warnings. 1071 1064 found = .FALSE. 1072 1065 grid_x = 'none' … … 1083 1076 1084 1077 1085 !------------------------------------------------------------------------------ !1078 !--------------------------------------------------------------------------------------------------! 1086 1079 ! Description: 1087 1080 ! ------------ 1088 1081 !> Allocate module-specific arrays and pointers 1089 !------------------------------------------------------------------------------ !1082 !--------------------------------------------------------------------------------------------------! 1090 1083 SUBROUTINE module_interface_init_arrays 1091 1084 … … 1115 1108 1116 1109 1117 !------------------------------------------------------------------------------ !1110 !--------------------------------------------------------------------------------------------------! 1118 1111 ! Description: 1119 1112 ! ------------ 1120 1113 !> Perform module-specific initialization 1121 !------------------------------------------------------------------------------ !1114 !--------------------------------------------------------------------------------------------------! 1122 1115 SUBROUTINE module_interface_init 1123 1116 … … 1154 1147 END SUBROUTINE module_interface_init 1155 1148 1156 !------------------------------------------------------------------------------ !1149 !--------------------------------------------------------------------------------------------------! 1157 1150 ! Description: 1158 1151 ! ------------ 1159 1152 !> Initialize boundary conditions and numerical schemes. 1160 !------------------------------------------------------------------------------ !1153 !--------------------------------------------------------------------------------------------------! 1161 1154 SUBROUTINE module_interface_init_numerics 1162 1155 … … 1168 1161 !-- Please note, wall flags are only applied in the non-optimized version. 1169 1162 CALL poismg_noopt_init 1170 1163 1171 1164 END SUBROUTINE module_interface_init_numerics 1172 1165 1173 1174 !------------------------------------------------------------------------------ !1166 1167 !--------------------------------------------------------------------------------------------------! 1175 1168 ! Description: 1176 1169 ! ------------ 1177 1170 !> Initialize data output 1178 !------------------------------------------------------------------------------ !1171 !--------------------------------------------------------------------------------------------------! 1179 1172 SUBROUTINE module_interface_init_output 1180 1173 … … 1183 1176 ! 1184 1177 !-- Initialize data-output module 1185 CALL dom_init( file_suffix_of_output_group=coupling_char, &1186 mpi_comm_of_output_group=comm2d, &1187 program_debug_output_unit=9, &1178 CALL dom_init( file_suffix_of_output_group=coupling_char, & 1179 mpi_comm_of_output_group=comm2d, & 1180 program_debug_output_unit=9, & 1188 1181 debug_output=debug_output ) 1189 1182 ! … … 1197 1190 END SUBROUTINE module_interface_init_output 1198 1191 1199 !------------------------------------------------------------------------------ !1192 !--------------------------------------------------------------------------------------------------! 1200 1193 ! Description: 1201 1194 ! ------------ 1202 1195 !> Perform module-specific post-initialization checks 1203 !------------------------------------------------------------------------------ !1196 !--------------------------------------------------------------------------------------------------! 1204 1197 SUBROUTINE module_interface_init_checks 1205 1198 … … 1209 1202 CALL dynamics_init_checks 1210 1203 1211 IF ( biometeorology 1204 IF ( biometeorology ) CALL bio_init_checks 1212 1205 1213 1206 IF ( debug_output ) CALL debug_message( 'module-specific post-initialization checks', 'end' ) … … 1217 1210 1218 1211 1219 !------------------------------------------------------------------------------ !1212 !--------------------------------------------------------------------------------------------------! 1220 1213 ! Description: 1221 1214 ! ------------ 1222 1215 !> Gather module-specific header output 1223 !------------------------------------------------------------------------------ !1216 !--------------------------------------------------------------------------------------------------! 1224 1217 SUBROUTINE module_interface_header( io ) 1225 1218 … … 1256 1249 1257 1250 1258 !------------------------------------------------------------------------------ !1251 !--------------------------------------------------------------------------------------------------! 1259 1252 ! Description: 1260 1253 ! ------------ 1261 1254 !> Perform module-specific actions while in time-integration (vector-optimized) 1262 !------------------------------------------------------------------------------ !1255 !--------------------------------------------------------------------------------------------------! 1263 1256 SUBROUTINE module_interface_actions( location ) 1264 1257 … … 1284 1277 1285 1278 1286 !------------------------------------------------------------------------------ !1279 !--------------------------------------------------------------------------------------------------! 1287 1280 ! Description: 1288 1281 ! ------------ 1289 1282 !> Perform module-specific actions while in time-integration (cache-optimized) 1290 !------------------------------------------------------------------------------ !1283 !--------------------------------------------------------------------------------------------------! 1291 1284 SUBROUTINE module_interface_actions_ij( i, j, location ) 1292 1285 1286 CHARACTER (LEN=*), INTENT(IN) :: location !< call location string 1293 1287 1294 1288 INTEGER(iwp), INTENT(IN) :: i !< grid index in x-direction 1295 1289 INTEGER(iwp), INTENT(IN) :: j !< grid index in y-direction 1296 CHARACTER (LEN=*), INTENT(IN) :: location !< call location string1297 1290 1298 1291 CALL dynamics_actions( i, j, location ) … … 1312 1305 1313 1306 1314 !------------------------------------------------------------------------------ !1307 !--------------------------------------------------------------------------------------------------! 1315 1308 ! Description: 1316 1309 ! ------------ 1317 1310 !> Compute module-specific non_advective_processes (vector-optimized) 1318 !------------------------------------------------------------------------------ !1311 !--------------------------------------------------------------------------------------------------! 1319 1312 SUBROUTINE module_interface_non_advective_processes 1320 1313 … … 1330 1323 1331 1324 1332 !------------------------------------------------------------------------------ !1325 !--------------------------------------------------------------------------------------------------! 1333 1326 ! Description: 1334 1327 ! ------------ 1335 1328 !> Compute module-specific non_advective_processes (cache-optimized) 1336 !------------------------------------------------------------------------------ !1329 !--------------------------------------------------------------------------------------------------! 1337 1330 SUBROUTINE module_interface_non_advective_processes_ij( i, j ) 1338 1331 … … 1350 1343 END SUBROUTINE module_interface_non_advective_processes_ij 1351 1344 1352 !------------------------------------------------------------------------------ !1345 !--------------------------------------------------------------------------------------------------! 1353 1346 ! Description: 1354 1347 ! ------------ 1355 1348 !> Exchange horiz for module-specific quantities 1356 !------------------------------------------------------------------------------ !1349 !--------------------------------------------------------------------------------------------------! 1357 1350 SUBROUTINE module_interface_exchange_horiz( location ) 1358 1351 1359 1352 CHARACTER (LEN=*), INTENT(IN) :: location !< call location string 1353 1360 1354 1361 1355 IF ( debug_output_timestep ) CALL debug_message( 'module-specific exchange_horiz', 'start' ) … … 1366 1360 IF ( air_chemistry ) CALL chem_exchange_horiz_bounds( location ) 1367 1361 IF ( ocean_mode ) CALL ocean_exchange_horiz( location ) 1368 IF ( particle_advection ) CALL lpm_exchange_horiz_bounds 1362 IF ( particle_advection ) CALL lpm_exchange_horiz_bounds( location ) 1369 1363 IF ( salsa ) CALL salsa_exchange_horiz_bounds( location ) 1370 1364 … … 1375 1369 1376 1370 1377 !------------------------------------------------------------------------------ !1371 !--------------------------------------------------------------------------------------------------! 1378 1372 ! Description: 1379 1373 ! ------------ 1380 1374 !> Compute module-specific prognostic_equations (vector-optimized) 1381 !------------------------------------------------------------------------------ !1375 !--------------------------------------------------------------------------------------------------! 1382 1376 SUBROUTINE module_interface_prognostic_equations 1383 1377 … … 1396 1390 1397 1391 1398 !------------------------------------------------------------------------------ !1392 !--------------------------------------------------------------------------------------------------! 1399 1393 ! Description: 1400 1394 ! ------------ 1401 1395 !> Compute module-specific prognostic_equations (cache-optimized) 1402 !------------------------------------------------------------------------------ !1396 !--------------------------------------------------------------------------------------------------! 1403 1397 SUBROUTINE module_interface_prognostic_equations_ij( i, j, i_omp_start, tn ) 1404 1398 … … 1421 1415 END SUBROUTINE module_interface_prognostic_equations_ij 1422 1416 1423 !------------------------------------------------------------------------------ !1417 !--------------------------------------------------------------------------------------------------! 1424 1418 ! Description: 1425 1419 ! ------------ 1426 1420 !> Compute module-specific boundary conditions 1427 !------------------------------------------------------------------------------ !1421 !--------------------------------------------------------------------------------------------------! 1428 1422 SUBROUTINE module_interface_boundary_conditions 1429 1423 … … 1444 1438 END SUBROUTINE module_interface_boundary_conditions 1445 1439 1446 !------------------------------------------------------------------------------ !1440 !--------------------------------------------------------------------------------------------------! 1447 1441 ! Description: 1448 1442 ! ------------ 1449 1443 !> Swap the timelevel pointers for module-specific arrays 1450 !------------------------------------------------------------------------------ !1444 !--------------------------------------------------------------------------------------------------! 1451 1445 SUBROUTINE module_interface_swap_timelevel ( swap_mode ) 1452 1446 … … 1474 1468 1475 1469 1476 !------------------------------------------------------------------------------ !1470 !--------------------------------------------------------------------------------------------------! 1477 1471 ! 1478 1472 ! Description: 1479 1473 ! ------------ 1480 1474 !> Perform module-specific averaging of 3D data 1481 !------------------------------------------------------------------------------ !1475 !--------------------------------------------------------------------------------------------------! 1482 1476 SUBROUTINE module_interface_3d_data_averaging( mode, variable ) 1483 1477 … … 1511 1505 END SUBROUTINE module_interface_3d_data_averaging 1512 1506 1513 !------------------------------------------------------------------------------ !1507 !--------------------------------------------------------------------------------------------------! 1514 1508 ! 1515 1509 ! Description: 1516 1510 ! ------------ 1517 1511 !> Define module-specific 2D output variables 1518 !------------------------------------------------------------------------------! 1519 SUBROUTINE module_interface_data_output_2d( av, variable, found, grid, mode, & 1520 local_pf, two_d, nzb_do, nzt_do, & 1521 fill_value ) 1512 !--------------------------------------------------------------------------------------------------! 1513 SUBROUTINE module_interface_data_output_2d( av, variable, found, grid, mode, local_pf, two_d, & 1514 nzb_do, nzt_do, fill_value ) 1515 1516 CHARACTER (LEN=*), INTENT(IN) :: mode !< either 'xy', 'xz' or 'yz' 1517 CHARACTER (LEN=*), INTENT(IN) :: variable !< variable name 1518 CHARACTER (LEN=*), INTENT(INOUT) :: grid !< name of vertical grid 1522 1519 1523 1520 INTEGER(iwp), INTENT(IN) :: av !< flag for (non-)average output 1524 CHARACTER (LEN=*), INTENT(IN) :: variable !< variable name1525 LOGICAL, INTENT(INOUT) :: found !< flag if output variable is found1526 CHARACTER (LEN=*), INTENT(INOUT) :: grid !< name of vertical grid1527 CHARACTER (LEN=*), INTENT(IN) :: mode !< either 'xy', 'xz' or 'yz'1528 LOGICAL, INTENT(OUT) :: two_d !< flag for 2D variables1529 1521 INTEGER(iwp), INTENT(IN) :: nzb_do !< vertical output index (bottom) (usually 0) 1530 1522 INTEGER(iwp), INTENT(IN) :: nzt_do !< vertical output index (top) (usually nz_do3d) 1523 1524 LOGICAL, INTENT(INOUT) :: found !< flag if output variable is found 1525 LOGICAL, INTENT(OUT) :: two_d !< flag for 2D variables 1526 1531 1527 REAL(wp), INTENT(IN) :: fill_value !< to be removed 1532 1528 … … 1536 1532 IF ( debug_output_timestep ) CALL debug_message( 'module-specific 2d data output', 'start' ) 1537 1533 1538 CALL dynamics_data_output_2d( & 1539 av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do, fill_value & 1540 ) 1534 CALL dynamics_data_output_2d( av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do,& 1535 fill_value ) 1541 1536 1542 1537 IF ( .NOT. found ) THEN 1543 CALL tcm_data_output_2d( & 1544 av, variable, found, grid, mode, local_pf, nzb_do, nzt_do & 1545 ) 1538 CALL tcm_data_output_2d( av, variable, found, grid, mode, local_pf, nzb_do, nzt_do ) 1546 1539 ENDIF 1547 1540 1548 1541 IF ( .NOT. found .AND. biometeorology ) THEN 1549 CALL bio_data_output_2d( & 1550 av, variable, found, grid, local_pf, two_d, nzb_do, nzt_do & 1551 ) 1542 CALL bio_data_output_2d( av, variable, found, grid, local_pf, two_d, nzb_do, nzt_do ) 1552 1543 ENDIF 1553 1544 1554 1545 IF ( .NOT. found .AND. bulk_cloud_model ) THEN 1555 CALL bcm_data_output_2d( & 1556 av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do& 1557 ) 1546 CALL bcm_data_output_2d( av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do ) 1558 1547 ENDIF 1559 1548 1560 1549 IF ( .NOT. found .AND. air_chemistry ) THEN 1561 CALL chem_data_output_2d( & 1562 av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do, fill_value & 1563 ) 1550 CALL chem_data_output_2d( av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do, & 1551 fill_value ) 1564 1552 ENDIF 1565 1553 1566 1554 IF ( .NOT. found ) THEN 1567 CALL doq_output_2d( & 1568 av, variable, found, grid, mode, local_pf, two_d, & 1569 nzb_do, nzt_do, fill_value ) 1555 CALL doq_output_2d( av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do, & 1556 fill_value ) 1570 1557 ENDIF 1571 1558 1572 1559 IF ( .NOT. found .AND. gust_module_enabled ) THEN 1573 CALL gust_data_output_2d( & 1574 av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do, fill_value & 1575 ) 1560 CALL gust_data_output_2d( av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do, & 1561 fill_value ) 1576 1562 ENDIF 1577 1563 1578 1564 IF ( .NOT. found .AND. land_surface ) THEN 1579 CALL lsm_data_output_2d( & 1580 av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do& 1581 ) 1565 CALL lsm_data_output_2d( av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do ) 1582 1566 ENDIF 1583 1567 1584 1568 IF ( .NOT. found .AND. ocean_mode ) THEN 1585 CALL ocean_data_output_2d( & 1586 av, variable, found, grid, mode, local_pf, nzb_do, nzt_do & 1587 ) 1569 CALL ocean_data_output_2d( av, variable, found, grid, mode, local_pf, nzb_do, nzt_do ) 1588 1570 ENDIF 1589 1571 1590 1572 IF ( .NOT. found .AND. radiation ) THEN 1591 CALL radiation_data_output_2d( & 1592 av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do, fill_value & 1593 ) 1573 CALL radiation_data_output_2d( av, variable, found, grid, mode, local_pf, two_d, nzb_do, & 1574 nzt_do, fill_value ) 1594 1575 ENDIF 1595 1576 1596 1577 IF ( .NOT. found .AND. salsa ) THEN 1597 CALL salsa_data_output_2d( & 1598 av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do& 1599 ) 1578 CALL salsa_data_output_2d( av, variable, found, grid, mode, local_pf, two_d, nzb_do, nzt_do ) 1600 1579 ENDIF 1601 1580 1602 1581 IF ( .NOT. found .AND. user_module_enabled ) THEN 1603 CALL user_data_output_2d( & 1604 av, variable, found, grid, local_pf, two_d, nzb_do, nzt_do & 1605 ) 1582 CALL user_data_output_2d( av, variable, found, grid, local_pf, two_d, nzb_do, nzt_do ) 1606 1583 ENDIF 1607 1584 … … 1612 1589 1613 1590 1614 !------------------------------------------------------------------------------ !1591 !--------------------------------------------------------------------------------------------------! 1615 1592 ! 1616 1593 ! Description: 1617 1594 ! ------------ 1618 1595 !> Define module-specific 3D output variables 1619 !------------------------------------------------------------------------------! 1620 SUBROUTINE module_interface_data_output_3d( av, variable, found, local_pf, & 1621 fill_value, resorted, nzb_do, nzt_do ) 1622 1596 !--------------------------------------------------------------------------------------------------! 1597 SUBROUTINE module_interface_data_output_3d( av, variable, found, local_pf, fill_value, resorted, & 1598 nzb_do, nzt_do ) 1599 1600 CHARACTER (LEN=*), INTENT(IN) :: variable !< variable name 1623 1601 1624 1602 INTEGER(iwp), INTENT(IN) :: av !< flag for (non-)average output 1625 CHARACTER (LEN=*), INTENT(IN) :: variable !< variable name1626 LOGICAL, INTENT(INOUT) :: found !< flag if output variable is found1627 REAL(wp), INTENT(IN) :: fill_value !< ToDo: refactor1628 LOGICAL, INTENT(OUT) :: resorted !< flag if output has been resorted1629 1603 INTEGER(iwp), INTENT(IN) :: nzb_do !< vertical output index (bottom) (usually 0) 1630 1604 INTEGER(iwp), INTENT(IN) :: nzt_do !< vertical output index (top) (usually nz_do3d) 1605 1606 LOGICAL, INTENT(INOUT) :: found !< flag if output variable is found 1607 LOGICAL, INTENT(OUT) :: resorted !< flag if output has been resorted 1608 1609 REAL(wp), INTENT(IN) :: fill_value !< ToDo: refactor 1631 1610 1632 1611 REAL(sp), DIMENSION(nxl:nxr,nys:nyn,nzb_do:nzt_do), INTENT(INOUT) :: local_pf … … 1704 1683 1705 1684 1706 !------------------------------------------------------------------------------ !1685 !--------------------------------------------------------------------------------------------------! 1707 1686 ! Description: 1708 1687 ! ------------ 1709 1688 !> Compute module-specific profile and timeseries data 1710 !------------------------------------------------------------------------------ !1689 !--------------------------------------------------------------------------------------------------! 1711 1690 SUBROUTINE module_interface_statistics( mode, sr, tn, dots_max ) 1712 1691 1713 1692 1714 1693 CHARACTER (LEN=*), INTENT(IN) :: mode !< statistical analysis mode 1694 1695 INTEGER(iwp), INTENT(IN) :: dots_max !< maximum number of timeseries 1715 1696 INTEGER(iwp), INTENT(IN) :: sr !< 1716 1697 INTEGER(iwp), INTENT(IN) :: tn !< 1717 INTEGER(iwp), INTENT(IN) :: dots_max !< maximum number of timeseries1718 1698 1719 1699 … … 1801 1781 1802 1782 1803 !------------------------------------------------------------------------------ !1783 !--------------------------------------------------------------------------------------------------! 1804 1784 ! Description: 1805 1785 ! ------------ 1806 1786 !> Write module-specific restart data globaly shared by all MPI ranks 1807 !------------------------------------------------------------------------------ !1787 !--------------------------------------------------------------------------------------------------! 1808 1788 SUBROUTINE module_interface_wrd_global 1809 1789 … … 1833 1813 1834 1814 1835 !------------------------------------------------------------------------------ !1815 !--------------------------------------------------------------------------------------------------! 1836 1816 ! Description: 1837 1817 ! ------------ 1838 1818 !> Read module-specific local restart data arrays (Fortran binary format). 1839 !------------------------------------------------------------------------------ !1840 SUBROUTINE module_interface_rrd_local_ftn( map_index, &1841 nxlf, nxlc, nxl_on_file,&1842 nxrf, nxrc, nxr_on_file,&1843 nynf, nync, nyn_on_file,&1844 nysf, nysc, nys_on_file,&1845 tmp_2d, tmp_3d, found )1819 !--------------------------------------------------------------------------------------------------! 1820 SUBROUTINE module_interface_rrd_local_ftn( map_index, & 1821 nxlf, nxlc, nxl_on_file, & 1822 nxrf, nxrc, nxr_on_file, & 1823 nynf, nync, nyn_on_file, & 1824 nysf, nysc, nys_on_file, & 1825 tmp_2d, tmp_3d, found ) 1846 1826 1847 1827 … … 1859 1839 INTEGER(iwp), INTENT(IN) :: nysf !< 1860 1840 INTEGER(iwp), INTENT(IN) :: nys_on_file !< 1841 1861 1842 LOGICAL, INTENT(INOUT) :: found !< flag if variable was found 1862 1843 1863 REAL(wp), &1864 DIMENSION(nys_on_file-nbgp:nyn_on_file+nbgp,nxl_on_file-nbgp:nxr_on_file+nbgp), &1844 REAL(wp), & 1845 DIMENSION(nys_on_file-nbgp:nyn_on_file+nbgp,nxl_on_file-nbgp:nxr_on_file+nbgp), & 1865 1846 INTENT(OUT) :: tmp_2d !< 1866 REAL(wp), &1867 DIMENSION(nzb:nzt+1,nys_on_file-nbgp:nyn_on_file+nbgp,nxl_on_file-nbgp:nxr_on_file+nbgp), &1847 REAL(wp), & 1848 DIMENSION(nzb:nzt+1,nys_on_file-nbgp:nyn_on_file+nbgp,nxl_on_file-nbgp:nxr_on_file+nbgp), & 1868 1849 INTENT(OUT) :: tmp_3d !< 1869 1850 … … 1873 1854 ENDIF 1874 1855 1875 CALL dynamics_rrd_local( & 1876 map_index, & 1877 nxlf, nxlc, nxl_on_file, & 1878 nxrf, nxrc, nxr_on_file, & 1879 nynf, nync, nyn_on_file, & 1880 nysf, nysc, nys_on_file, & 1881 tmp_2d, tmp_3d, found & 1882 ) ! ToDo: change interface to pass variable 1883 1884 IF ( .NOT. found ) CALL bio_rrd_local( & 1885 found & 1886 ) 1887 1888 IF ( .NOT. found ) CALL bcm_rrd_local( & 1889 map_index, & 1890 nxlf, nxlc, nxl_on_file, & 1891 nxrf, nxrc, nxr_on_file, & 1892 nynf, nync, nyn_on_file, & 1893 nysf, nysc, nys_on_file, & 1894 tmp_2d, tmp_3d, found & 1895 ) ! ToDo: change interface to pass variable 1896 1897 IF ( .NOT. found ) CALL chem_rrd_local( & 1898 map_index, & 1899 nxlf, nxlc, nxl_on_file, & 1900 nxrf, nxrc, nxr_on_file, & 1901 nynf, nync, nyn_on_file, & 1902 nysf, nysc, nys_on_file, & 1903 tmp_3d, found & 1904 ) ! ToDo: change interface to pass variable 1905 1906 IF ( .NOT. found ) CALL doq_rrd_local( & 1907 map_index, & 1908 nxlf, nxlc, nxl_on_file, & 1909 nxrf, nxrc, nxr_on_file, & 1910 nynf, nync, nyn_on_file, & 1911 nysf, nysc, nys_on_file, & 1912 tmp_2d, tmp_3d, found & 1913 ) ! ToDo: change interface to pass variable 1914 1915 IF ( .NOT. found ) CALL gust_rrd_local( & 1916 map_index, & 1917 nxlf, nxlc, nxl_on_file, & 1918 nxrf, nxrc, nxr_on_file, & 1919 nynf, nync, nyn_on_file, & 1920 nysf, nysc, nys_on_file, & 1921 tmp_2d, tmp_3d, found & 1922 ) ! ToDo: change interface to pass variable 1923 1924 IF ( .NOT. found ) CALL lpm_rrd_local( & 1925 map_index, & 1926 nxlf, nxlc, nxl_on_file, & 1927 nxrf, nxrc, nxr_on_file, & 1928 nynf, nync, nyn_on_file, & 1929 nysf, nysc, nys_on_file, & 1930 tmp_3d, found & 1931 ) ! ToDo: change interface to pass variable 1932 1933 IF ( .NOT. found ) CALL lsm_rrd_local( & 1934 map_index, & 1935 nxlf, nxlc, nxl_on_file, & 1936 nxrf, nxrc, nxr_on_file, & 1937 nynf, nync, nyn_on_file, & 1938 nysf, nysc, nys_on_file, & 1939 tmp_2d, found & 1940 ) ! ToDo: change interface to pass variable 1941 1942 IF ( .NOT. found ) CALL pcm_rrd_local( & 1943 map_index, & 1944 nxlf, nxlc, nxl_on_file, & 1945 nxrf, nxrc, nxr_on_file, & 1946 nynf, nync, nyn_on_file, & 1947 nysf, nysc, nys_on_file, & 1948 found & 1856 CALL dynamics_rrd_local( map_index, & 1857 nxlf, nxlc, nxl_on_file, & 1858 nxrf, nxrc, nxr_on_file, & 1859 nynf, nync, nyn_on_file, & 1860 nysf, nysc, nys_on_file, & 1861 tmp_2d, tmp_3d, found & 1862 ) ! ToDo: change interface to pass variable 1863 1864 IF ( .NOT. found ) CALL bio_rrd_local( found ) 1865 1866 IF ( .NOT. found ) CALL bcm_rrd_local( map_index, & 1867 nxlf, nxlc, nxl_on_file, & 1868 nxrf, nxrc, nxr_on_file, & 1869 nynf, nync, nyn_on_file, & 1870 nysf, nysc, nys_on_file, & 1871 tmp_2d, tmp_3d, found & 1872 ) ! ToDo: change interface to pass variable 1873 1874 IF ( .NOT. found ) CALL chem_rrd_local( map_index, & 1875 nxlf, nxlc, nxl_on_file, & 1876 nxrf, nxrc, nxr_on_file, & 1877 nynf, nync, nyn_on_file, & 1878 nysf, nysc, nys_on_file, & 1879 tmp_3d, found & 1880 ) ! ToDo: change interface to pass variable 1881 1882 IF ( .NOT. found ) CALL doq_rrd_local( map_index, & 1883 nxlf, nxlc, nxl_on_file, & 1884 nxrf, nxrc, nxr_on_file, & 1885 nynf, nync, nyn_on_file, & 1886 nysf, nysc, nys_on_file, & 1887 tmp_2d, tmp_3d, found & 1888 ) ! ToDo: change interface to pass variable 1889 1890 IF ( .NOT. found ) CALL gust_rrd_local( map_index, & 1891 nxlf, nxlc, nxl_on_file, & 1892 nxrf, nxrc, nxr_on_file, & 1893 nynf, nync, nyn_on_file, & 1894 nysf, nysc, nys_on_file, & 1895 tmp_2d, tmp_3d, found & 1896 ) ! ToDo: change interface to pass variable 1897 1898 IF ( .NOT. found ) CALL lpm_rrd_local( map_index, & 1899 nxlf, nxlc, nxl_on_file, & 1900 nxrf, nxrc, nxr_on_file, & 1901 nynf, nync, nyn_on_file, & 1902 nysf, nysc, nys_on_file, & 1903 tmp_3d, found & 1904 ) ! ToDo: change interface to pass variable 1905 1906 IF ( .NOT. found ) CALL lsm_rrd_local( map_index, & 1907 nxlf, nxlc, nxl_on_file, & 1908 nxrf, nxrc, nxr_on_file, & 1909 nynf, nync, nyn_on_file, & 1910 nysf, nysc, nys_on_file, & 1911 tmp_2d, found & 1912 ) ! ToDo: change interface to pass variable 1913 1914 IF ( .NOT. found ) CALL pcm_rrd_local( map_index, & 1915 nxlf, nxlc, nxl_on_file, & 1916 nxrf, nxrc, nxr_on_file, & 1917 nynf, nync, nyn_on_file, & 1918 nysf, nysc, nys_on_file, & 1919 found & 1949 1920 ) 1950 1921 1951 IF ( .NOT. found ) CALL ocean_rrd_local( & 1952 map_index, & 1953 nxlf, nxlc, nxl_on_file, & 1954 nxrf, nxrc, nxr_on_file, & 1955 nynf, nync, nyn_on_file, & 1956 nysf, nysc, nys_on_file, & 1957 tmp_3d, found & 1958 ) ! ToDo: change interface to pass variable 1959 1960 IF ( .NOT. found ) CALL radiation_rrd_local( & 1961 map_index, & 1962 nxlf, nxlc, nxl_on_file, & 1963 nxrf, nxrc, nxr_on_file, & 1964 nynf, nync, nyn_on_file, & 1965 nysf, nysc, nys_on_file, & 1966 tmp_2d, tmp_3d, found & 1967 ) ! ToDo: change interface to pass variable 1968 1969 IF ( .NOT. found ) CALL salsa_rrd_local( & 1970 map_index, & 1971 nxlf, nxlc, nxl_on_file, & 1972 nxrf, nxrc, nxr_on_file, & 1973 nynf, nync, nyn_on_file, & 1974 nysf, nysc, nys_on_file, & 1975 tmp_3d, found & 1976 ) ! ToDo: change interface to pass variable 1977 1978 IF ( .NOT. found ) CALL usm_rrd_local( & 1979 map_index, & 1980 nxlf, nxlc, nxl_on_file, & 1981 nxrf, nxr_on_file, & 1982 nynf, nyn_on_file, & 1983 nysf, nysc, nys_on_file, & 1984 found & 1985 ) ! ToDo: change interface to pass variable 1922 IF ( .NOT. found ) CALL ocean_rrd_local( map_index, & 1923 nxlf, nxlc, nxl_on_file, & 1924 nxrf, nxrc, nxr_on_file, & 1925 nynf, nync, nyn_on_file, & 1926 nysf, nysc, nys_on_file, & 1927 tmp_3d, found & 1928 ) ! ToDo: change interface to pass variable 1929 1930 IF ( .NOT. found ) CALL radiation_rrd_local( map_index, & 1931 nxlf, nxlc, nxl_on_file, & 1932 nxrf, nxrc, nxr_on_file, & 1933 nynf, nync, nyn_on_file, & 1934 nysf, nysc, nys_on_file, & 1935 tmp_2d, tmp_3d, found & 1936 ) ! ToDo: change interface to pass variable 1937 1938 IF ( .NOT. found ) CALL salsa_rrd_local( map_index, & 1939 nxlf, nxlc, nxl_on_file, & 1940 nxrf, nxrc, nxr_on_file, & 1941 nynf, nync, nyn_on_file, & 1942 nysf, nysc, nys_on_file, & 1943 tmp_3d, found & 1944 ) ! ToDo: change interface to pass variable 1945 1946 IF ( .NOT. found ) CALL usm_rrd_local( map_index, & 1947 nxlf, nxlc, nxl_on_file, & 1948 nxrf, nxr_on_file, & 1949 nynf, nyn_on_file, & 1950 nysf, nysc, nys_on_file, & 1951 found & 1952 ) ! ToDo: change interface to pass variable 1986 1953 ! 1987 1954 !-- Surface data do not need overlap data, so do not pass these information. 1988 1955 IF ( .NOT. found ) CALL surface_data_output_rrd_local( found ) 1989 1956 1990 IF ( .NOT. found ) CALL user_rrd_local( & 1991 map_index, & 1992 nxlf, nxlc, nxl_on_file, & 1993 nxrf, nxrc, nxr_on_file, & 1994 nynf, nync, nyn_on_file, & 1995 nysf, nysc, nys_on_file, & 1996 tmp_3d, found & 1997 ) ! ToDo: change interface to pass variable 1957 IF ( .NOT. found ) CALL user_rrd_local( map_index, & 1958 nxlf, nxlc, nxl_on_file, & 1959 nxrf, nxrc, nxr_on_file, & 1960 nynf, nync, nyn_on_file, & 1961 nysf, nysc, nys_on_file, & 1962 tmp_3d, found & 1963 ) ! ToDo: change interface to pass variable 1998 1964 1999 1965 IF ( debug_output ) THEN … … 2004 1970 2005 1971 2006 !------------------------------------------------------------------------------ !1972 !--------------------------------------------------------------------------------------------------! 2007 1973 ! Description: 2008 1974 ! ------------ 2009 1975 !> Read module-specific local restart data arrays (MPI-IO). 2010 !------------------------------------------------------------------------------ !1976 !--------------------------------------------------------------------------------------------------! 2011 1977 SUBROUTINE module_interface_rrd_local_mpi 2012 1978 … … 2040 2006 2041 2007 2042 !------------------------------------------------------------------------------ !2008 !--------------------------------------------------------------------------------------------------! 2043 2009 ! Description: 2044 2010 ! ------------ 2045 2011 !> Write module-specific restart data specific to local MPI ranks 2046 !------------------------------------------------------------------------------ !2012 !--------------------------------------------------------------------------------------------------! 2047 2013 SUBROUTINE module_interface_wrd_local 2048 2014 … … 2074 2040 2075 2041 2076 !------------------------------------------------------------------------------ !2042 !--------------------------------------------------------------------------------------------------! 2077 2043 ! Description: 2078 2044 ! ------------ 2079 2045 !> Perform module-specific last actions before the program terminates 2080 !------------------------------------------------------------------------------ !2046 !--------------------------------------------------------------------------------------------------! 2081 2047 SUBROUTINE module_interface_last_actions 2082 2048
Note: See TracChangeset
for help on using the changeset viewer.