Changeset 3761
- Timestamp:
- Feb 25, 2019 3:31:42 PM (6 years ago)
- Location:
- palm/trunk/SOURCE
- Files:
-
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/advec_s_bc.f90
r3655 r3761 25 25 ! ----------------- 26 26 ! $Id$ 27 ! unused variables removed 28 ! 29 ! 3655 2019-01-07 16:51:22Z knoop 27 30 ! nopointer option removed 28 31 ! … … 155 158 156 159 USE indices, & 157 ONLY: nx, nxl, nx lg, nxr, nxrg, nyn, nyng, nys, nysg, nzb, nzt160 ONLY: nx, nxl, nxr, nyn, nys, nzb, nzt 158 161 159 162 USE kinds -
palm/trunk/SOURCE/check_parameters.f90
r3735 r3761 25 25 ! ----------------- 26 26 ! $Id$ 27 ! unused variables removed 28 ! 29 ! 3735 2019-02-12 09:52:40Z dom_dwd_user 27 30 ! Passing variable j (averaged output?) to 28 31 ! module_interface.f90:chem_check_data_output. … … 843 846 INTEGER(iwp) :: netcdf_data_format_save !< initial value of netcdf_data_format 844 847 INTEGER(iwp) :: position !< index position of string 845 INTEGER(iwp) :: lsp !< running index for chem spcs.846 848 847 849 LOGICAL :: found !< flag, true if output variable is already marked for averaging 848 850 849 851 REAL(wp) :: dt_spinup_max !< maximum spinup timestep in nested domains 850 REAL(wp) :: dum !< dummy variable851 852 REAL(wp) :: gradient !< local gradient 852 853 REAL(wp) :: remote = 0.0_wp !< MPI id of remote processor -
palm/trunk/SOURCE/diffusion_s.f90
r3655 r3761 25 25 ! ----------------- 26 26 ! $Id$ 27 ! unused variables removed 28 ! 29 ! 3655 2019-01-07 16:51:22Z knoop 27 30 ! nopointer option removed 28 31 ! … … 151 154 152 155 USE indices, & 153 ONLY: nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nzb, & 154 nzt, wall_flags_0 156 ONLY: nxl, nxr, nyn, nys, nzb, nzt, wall_flags_0 155 157 156 158 USE kinds … … 481 483 482 484 USE indices, & 483 ONLY: n xlg, nxrg, nyng, nysg, nzb, nzt, wall_flags_0485 ONLY: nzb, nzt, wall_flags_0 484 486 485 487 USE kinds -
palm/trunk/SOURCE/disturb_heatflux.f90
r3719 r3761 25 25 ! ----------------- 26 26 ! $Id$ 27 ! unsed variables removed 28 ! 29 ! 3719 2019-02-06 13:10:18Z kanani 27 30 ! Moved log_points out of subroutine into time_integration for better overview. 28 31 ! … … 86 89 USE control_parameters, & 87 90 ONLY: iran, surface_heatflux, random_generator, wall_heatflux 88 89 USE cpulog, &90 ONLY: cpu_log, log_point91 91 92 92 USE kinds -
palm/trunk/SOURCE/exchange_horiz.f90
r3657 r3761 25 25 ! ----------------- 26 26 ! $Id$ 27 ! OpenACC directives re-formatted 28 ! 29 ! 3657 2019-01-07 20:14:18Z knoop 27 30 ! OpenACC port for SPEC 28 31 ! … … 104 107 105 108 USE control_parameters, & 106 ONLY: bc_lr_cyc, bc_ns_cyc, grid_level, mg_switch_to_pe0, & 107 synchronous_exchange 109 ONLY: bc_lr_cyc, bc_ns_cyc, grid_level, mg_switch_to_pe0, synchronous_exchange 108 110 109 111 USE cpulog, & … … 120 122 121 123 122 #if def _OPENACC124 #if defined( _OPENACC ) 123 125 INTEGER(iwp) :: i !< 124 126 #endif 127 125 128 INTEGER(iwp) :: nbgp_local !< 126 129 … … 131 134 CALL cpu_log( log_point_s(2), 'exchange_horiz', 'start' ) 132 135 133 #if def _OPENACC136 #if defined( _OPENACC ) 134 137 !$ACC UPDATE IF_PRESENT ASYNC(1) & 135 138 !$ACC HOST(ar(:,:,nxr-nbgp_local+1:nxr)) & … … 308 311 #endif 309 312 310 #if def _OPENACC313 #if defined( _OPENACC ) 311 314 DO i = nxl-nbgp_local, nxr+nbgp_local 312 315 !$ACC UPDATE IF_PRESENT ASYNC(2) & -
palm/trunk/SOURCE/exchange_horiz_2d.f90
r3655 r3761 25 25 ! ----------------- 26 26 ! $Id$ 27 ! variables moved to serial branch to avoid compiler warnings about unused variables 28 ! 29 ! 3655 2019-01-07 16:51:22Z knoop 27 30 ! - New routine for exchange of 8-bit integer arrays 28 31 ! - Set Neumann conditions also at radiation boundary … … 93 96 USE control_parameters, & 94 97 ONLY : bc_dirichlet_l, bc_dirichlet_n, bc_dirichlet_r, & 95 bc_dirichlet_s, bc_ lr_cyc, bc_ns_cyc, bc_radiation_l,&98 bc_dirichlet_s, bc_radiation_l, & 96 99 bc_radiation_n, bc_radiation_r, bc_radiation_s 97 100 … … 108 111 USE pmc_interface, & 109 112 ONLY : nesting_mode 113 114 #if ! defined( __parallel ) 115 USE control_parameters, & 116 ONLY: bc_lr_cyc, bc_ns_cyc 117 #endif 110 118 111 119 … … 230 238 bc_dirichlet_s, bc_radiation_l, bc_radiation_n, bc_radiation_r, & 231 239 bc_radiation_s, bc_lr_cyc, bc_ns_cyc, bc_radiation_l, & 232 bc_radiation_n, bc_radiation_r, bc_radiation_s , grid_level240 bc_radiation_n, bc_radiation_r, bc_radiation_s 233 241 234 242 USE cpulog, & -
palm/trunk/SOURCE/header.f90
r3655 r3761 25 25 ! ----------------- 26 26 ! $Id$ 27 ! unused variable removed 28 ! 29 ! 3655 2019-01-07 16:51:22Z knoop 27 30 ! Implementation of the PALM module interface 28 31 ! … … 421 424 422 425 USE basic_constants_and_equations_mod, & 423 ONLY: g, kappa , l_v426 ONLY: g, kappa 424 427 425 428 USE bulk_cloud_model_mod, & -
palm/trunk/SOURCE/init_3d_model.f90
r3747 r3761 628 628 629 629 USE netcdf_data_input_mod, & 630 ONLY: chem_emis, chem_emis_att,init_3d, &630 ONLY: init_3d, & 631 631 netcdf_data_input_init_3d, netcdf_data_input_interpolate 632 632 … … 643 643 ONLY: nested_run 644 644 #endif 645 646 USE radiation_model_mod, &647 ONLY: radiation, radiation_scheme648 645 649 646 USE random_function_mod … … 670 667 USE surface_mod, & 671 668 ONLY : init_surface_arrays, init_surfaces, surf_def_h, surf_lsm_h, & 672 surf_usm_h, get_topography_top_index_ji , vertical_surfaces_exist669 surf_usm_h, get_topography_top_index_ji 673 670 674 671 USE surface_data_output_mod, & -
palm/trunk/SOURCE/init_grid.f90
r3661 r3761 25 25 ! ----------------- 26 26 ! $Id$ 27 ! unused variables removed 28 ! 29 ! 3661 2019-01-08 18:22:50Z suehring 27 30 ! Remove setting of nzb_max to nzt at non-cyclic boundary PEs, instead, 28 31 ! order degradation of advection scheme is handeled directly in advec_ws … … 361 364 362 365 USE control_parameters, & 363 ONLY: bc_dirichlet_l, bc_dirichlet_n, bc_dirichlet_r, & 364 bc_dirichlet_s, bc_lr_cyc, bc_ns_cyc, bc_radiation_l, & 365 bc_radiation_n, bc_radiation_r, bc_radiation_s, & 366 ONLY: bc_lr_cyc, bc_ns_cyc, & 366 367 constant_flux_layer, dz, dz_max, dz_stretch_factor, & 367 368 dz_stretch_factor_array, dz_stretch_level, dz_stretch_level_end,& -
palm/trunk/SOURCE/init_pegrid.f90
r3655 r3761 25 25 ! ----------------- 26 26 ! $Id$ 27 ! unused variable removed 28 ! 29 ! 3655 2019-01-07 16:51:22Z knoop 27 30 ! variables documented 28 31 ! … … 258 261 bc_radiation_s, coupling_mode, coupling_topology, gathered_size,& 259 262 grid_level, grid_level_count, maximum_grid_level, & 260 message_string, mg_switch_to_pe0_level, momentum_advec, neutral,&263 message_string, mg_switch_to_pe0_level, momentum_advec, & 261 264 psolver, outflow_source_plane, recycling_width, scalar_advec, & 262 265 subdomain_size, turbulent_outflow, y_shift -
palm/trunk/SOURCE/palm.f90
r3719 r3761 25 25 ! ----------------- 26 26 ! $Id$ 27 ! unused variable removed 28 ! 29 ! 3719 2019-02-06 13:10:18Z kanani 27 30 ! Included cpu measurement for wall/soil spinup 28 31 ! … … 281 284 282 285 USE control_parameters, & 283 ONLY: air_chemistry, constant_diffusion, child_domain,&286 ONLY: constant_diffusion, child_domain, & 284 287 coupling_char, do2d_at_begin, do3d_at_begin, humidity, & 285 288 initializing_actions, io_blocks, io_group, message_string, & -
palm/trunk/SOURCE/plant_canopy_model_mod.f90
r3745 r3761 27 27 ! ----------------- 28 28 ! $Id$ 29 ! unsed variables removed 30 ! 31 ! 3745 2019-02-15 18:57:56Z suehring 29 32 ! Bugfix in transpiration, floating invalid when temperature 30 33 ! becomes > 40 degrees … … 905 908 INTEGER(iwp) :: k !< running index 906 909 INTEGER(iwp) :: m !< running index 907 INTEGER(iwp) :: pch_index_l908 910 909 911 REAL(wp) :: int_bpdf !< vertical integral for lad-profile construction -
palm/trunk/SOURCE/pmc_child_mod.f90
r3655 r3761 26 26 ! ----------------- 27 27 ! $Id$ 28 ! statemnet added to avoid compiler warning 29 ! 30 ! 3655 2019-01-07 16:51:22Z knoop 28 31 ! explicit kind settings 29 32 ! … … 291 294 ! 292 295 !-- Local variables 296 INTEGER :: idum !< 293 297 INTEGER :: mype !< 294 298 TYPE(dA_namedef) :: myname !< … … 303 307 304 308 CALL pmc_bcast( myname%couple_index, mype, comm=m_to_parent_comm ) 309 310 ! 311 !-- Next statement is just to avoid compiler warnings about unused variables 312 IF ( PRESENT( lastentry ) ) idum = 1 305 313 306 314 END SUBROUTINE pmc_set_dataarray_name_lastentry -
palm/trunk/SOURCE/prognostic_equations.f90
r3719 r3761 25 25 ! ----------------- 26 26 ! $Id$ 27 ! unused variable removed 28 ! 29 ! 3719 2019-02-06 13:10:18Z kanani 27 30 ! Cleaned up chemistry cpu measurements 28 31 ! … … 496 499 497 500 LOGICAL :: loop_start !< 498 INTEGER(iwp) :: n 499 INTEGER(iwp) :: lsp 500 INTEGER(iwp) :: lsp_usr !< lsp running index for chem spcs 501 INTEGER(iwp) :: lsp 502 INTEGER(iwp) :: lsp_usr !< lsp running index for chem spcs 501 503 502 504 -
palm/trunk/SOURCE/set_slicer_attributes_dvrp.f90
r3655 r3761 25 25 ! ----------------- 26 26 ! $Id$ 27 ! statements added to avoid compiler warnings about unused variables 28 ! 29 ! 3655 2019-01-07 16:51:22Z knoop 27 30 ! Corrected "Former revisions" section 28 31 ! … … 105 108 dvrp_colortable_entries = 100 106 109 110 #else 111 ! 112 !-- These statements are just to avoid compiler warnings about unused variables 113 INTEGER :: n_slicer !< 114 115 IF ( n_slicer == 0 ) RETURN 116 107 117 #endif 108 118 -
palm/trunk/SOURCE/singleton_mod.f90
r2001 r3761 8 8 ! ----------------- 9 9 ! $Id$ 10 ! statement added to prevent compiler warning about unused variables 11 ! 12 ! 2001 2016-08-20 18:41:22Z knoop 10 13 ! 11 14 ! 2000 2016-08-20 18:09:15Z knoop … … 210 213 COMPLEX(wp), DIMENSION(SIZE(array, 1)):: ft 211 214 215 INTEGER(iwp):: idum 212 216 INTEGER(iwp):: ishape(1) 213 217 … … 219 223 ishape = SHAPE( array ) 220 224 CALL fftn(ft, ishape, inv = inv, stat = stat) 225 ! 226 !-- Next statement to prevent compiler warning about unused variable 227 IF ( PRESENT( dim ) ) idum = 1 221 228 222 229 END FUNCTION fft1d -
palm/trunk/SOURCE/sum_up_3d_data.f90
r3655 r3761 25 25 ! ----------------- 26 26 ! $Id$ 27 ! unused variables removed 28 ! 29 ! 3655 2019-01-07 16:51:22Z knoop 27 30 ! Implementation of the PALM module interface 28 31 ! … … 249 252 250 253 USE arrays_3d, & 251 ONLY: dzw, d_exner, e, heatflux_output_conversion, nc, nr, p, prr, &252 pt, q, q c, ql, ql_c, ql_v, qr, s, u, v, vpt, w, &254 ONLY: dzw, d_exner, e, heatflux_output_conversion, p, & 255 pt, q, ql, ql_c, ql_v, s, u, v, vpt, w, & 253 256 waterflux_output_conversion 254 257 -
palm/trunk/SOURCE/surface_mod.f90
r3745 r3761 26 26 ! ----------------- 27 27 ! $Id$ 28 ! OpenACC directives added to avoid compiler warnings about unused variables, 29 ! unused variable removed 30 ! 31 ! 3745 2019-02-15 18:57:56Z suehring 28 32 ! +waste_heat 29 33 ! … … 617 621 END INTERFACE init_surface_arrays 618 622 619 INTERFACE enter_surface_arrays620 MODULE PROCEDURE enter_surface_arrays621 END INTERFACE622 623 INTERFACE exit_surface_arrays624 MODULE PROCEDURE exit_surface_arrays625 END INTERFACE626 627 623 INTERFACE surface_rrd_local 628 624 MODULE PROCEDURE surface_rrd_local … … 642 638 END INTERFACE surface_restore_elements 643 639 640 #if defined( _OPENACC ) 641 INTERFACE enter_surface_arrays 642 MODULE PROCEDURE enter_surface_arrays 643 END INTERFACE 644 645 INTERFACE exit_surface_arrays 646 MODULE PROCEDURE exit_surface_arrays 647 END INTERFACE 648 #endif 649 644 650 ! 645 651 !-- Public variables 646 PUBLIC bc_h, ind_pav_green, ind_veg_wall, ind_wat_win, ns_h_on_file, 647 ns_v_on_file, surf_def_h, surf_def_v, surf_lsm_h, surf_lsm_v,&648 surf_usm_h, surf_usm_v, surf_type, vertical_surfaces_exist,&649 surf_ bulk_cloud_model, surf_microphysics_morrison, surf_microphysics_seifert652 PUBLIC bc_h, ind_pav_green, ind_veg_wall, ind_wat_win, ns_h_on_file, ns_v_on_file, surf_def_h, & 653 surf_def_v, surf_lsm_h, surf_lsm_v, surf_usm_h, surf_usm_v, surf_type, & 654 vertical_surfaces_exist, surf_bulk_cloud_model, surf_microphysics_morrison, & 655 surf_microphysics_seifert 650 656 ! 651 657 !-- Public subroutines and functions 652 PUBLIC get_topography_top_index, get_topography_top_index_ji, init_bc, & 653 init_surfaces, init_surface_arrays, enter_surface_arrays, & 654 exit_surface_arrays, surface_rrd_local, surface_restore_elements, & 655 surface_wrd_local, surface_last_actions 656 658 PUBLIC get_topography_top_index, get_topography_top_index_ji, init_bc, init_surfaces, & 659 init_surface_arrays, surface_rrd_local, surface_restore_elements, surface_wrd_local, & 660 surface_last_actions 661 662 #if defined( _OPENACC ) 663 PUBLIC enter_surface_arrays, exit_surface_arrays 664 #endif 657 665 658 666 CONTAINS … … 1109 1117 !> Enter horizontal and vertical surfaces. 1110 1118 !------------------------------------------------------------------------------! 1119 #if defined( _OPENACC ) 1111 1120 SUBROUTINE enter_surface_arrays 1112 1121 … … 1146 1155 1147 1156 END SUBROUTINE enter_surface_arrays 1148 1157 #endif 1149 1158 1150 1159 !------------------------------------------------------------------------------! … … 1153 1162 !> Exit horizontal and vertical surfaces. 1154 1163 !------------------------------------------------------------------------------! 1164 #if defined( _OPENACC ) 1155 1165 SUBROUTINE exit_surface_arrays 1156 1166 … … 1190 1200 1191 1201 END SUBROUTINE exit_surface_arrays 1192 1202 #endif 1193 1203 1194 1204 !------------------------------------------------------------------------------! … … 1437 1447 !> except for top fluxes. 1438 1448 !------------------------------------------------------------------------------! 1449 #if defined( _OPENACC ) 1439 1450 SUBROUTINE exit_surface_attributes_h( surfaces ) 1440 1451 … … 1470 1481 1471 1482 END SUBROUTINE exit_surface_attributes_h 1472 1483 #endif 1473 1484 1474 1485 !------------------------------------------------------------------------------! … … 1478 1489 !> except for top fluxes. 1479 1490 !------------------------------------------------------------------------------! 1491 #if defined( _OPENACC ) 1480 1492 SUBROUTINE enter_surface_attributes_h( surfaces ) 1481 1493 … … 1511 1523 1512 1524 END SUBROUTINE enter_surface_attributes_h 1513 1525 #endif 1514 1526 1515 1527 !------------------------------------------------------------------------------! … … 1655 1667 !> Exit memory for model-top fluxes. 1656 1668 !------------------------------------------------------------------------------! 1669 #if defined( _OPENACC ) 1657 1670 SUBROUTINE exit_surface_attributes_h_top( surfaces ) 1658 1671 … … 1678 1691 1679 1692 END SUBROUTINE exit_surface_attributes_h_top 1680 1693 #endif 1681 1694 1682 1695 !------------------------------------------------------------------------------! … … 1685 1698 !> Enter memory for model-top fluxes. 1686 1699 !------------------------------------------------------------------------------! 1700 #if defined( _OPENACC ) 1687 1701 SUBROUTINE enter_surface_attributes_h_top( surfaces ) 1688 1702 … … 1708 1722 1709 1723 END SUBROUTINE enter_surface_attributes_h_top 1710 1724 #endif 1711 1725 1712 1726 !------------------------------------------------------------------------------! … … 1958 1972 !> Exit memory for vertical surface types. 1959 1973 !------------------------------------------------------------------------------! 1974 #if defined( _OPENACC ) 1960 1975 SUBROUTINE exit_surface_attributes_v( surfaces ) 1961 1976 … … 1982 1997 1983 1998 END SUBROUTINE exit_surface_attributes_v 1984 1999 #endif 1985 2000 1986 2001 !------------------------------------------------------------------------------! … … 1989 2004 !> Enter memory for vertical surface types. 1990 2005 !------------------------------------------------------------------------------! 2006 #if defined( _OPENACC ) 1991 2007 SUBROUTINE enter_surface_attributes_v( surfaces ) 1992 2008 … … 2013 2029 2014 2030 END SUBROUTINE enter_surface_attributes_v 2015 2031 #endif 2016 2032 2017 2033 !------------------------------------------------------------------------------! … … 2773 2789 INTEGER(iwp) :: j !< running index x-direction 2774 2790 INTEGER(iwp) :: k !< running index x-direction 2775 INTEGER(iwp) :: l !< index variable for the surface type, indicating the facing2776 2791 INTEGER(iwp) :: num_v !< current number of surface element 2777 2792 INTEGER(iwp) :: num_v_kji !< current number of surface element at (j,i) -
palm/trunk/SOURCE/swap_timelevel.f90
r3655 r3761 25 25 ! ----------------- 26 26 ! $Id$ 27 ! unused variables removed 28 ! 29 ! 3655 2019-01-07 16:51:22Z knoop 27 30 ! Implementation of the PALM module interface 28 31 ! … … 148 151 149 152 150 USE arrays_3d, & 151 ONLY: nc, nc_1, nc_2, nc_p, nr, nr_1, nr_2, nr_p, pt, pt_1, pt_2, & 152 pt_p, q, q_1, q_2, q_p, qc, qc_1, qc_2, qc_p, qr, qr_1, qr_2, & 153 qr_p, s, s_1, s_2, s_p, sa, sa_1, sa_2, sa_p, u, u_1, u_2, u_p, & 154 v, v_1, v_2, v_p, w, w_1, w_2, w_p 155 156 USE cpulog, & 153 USE arrays_3d, & 154 ONLY: pt, pt_1, pt_2, pt_p, q, q_1, q_2, q_p, s, s_1, s_2, s_p, u, u_1, u_2, u_p, v, v_1, & 155 v_2, v_p, w, w_1, w_2, w_p 156 157 USE cpulog, & 157 158 ONLY: cpu_log, log_point 158 159 159 USE control_parameters, &160 USE control_parameters, & 160 161 ONLY: humidity, neutral, passive_scalar, timestep_count 161 162 162 163 USE kinds 163 164 164 USE module_interface, &165 USE module_interface, & 165 166 ONLY: module_interface_swap_timelevel 166 167 167 USE pmc_interface, &168 USE pmc_interface, & 168 169 ONLY: nested_run, pmci_set_swaplevel 169 170 170 USE turbulence_closure_mod, &171 USE turbulence_closure_mod, & 171 172 ONLY: tcm_swap_timelevel 172 173 -
palm/trunk/SOURCE/time_integration.f90
r3745 r3761 25 25 ! ----------------- 26 26 ! $Id$ 27 ! module section re-formatted and openacc required variables moved to separate section, 28 ! re-formatting to 100 char line width 29 ! 30 ! 3745 2019-02-15 18:57:56Z suehring 27 31 ! Call indoor model after first timestep 28 32 ! … … 456 460 457 461 458 USE advec_ws, &462 USE advec_ws, & 459 463 ONLY: ws_statistics 460 464 461 USE arrays_3d, & 462 ONLY: d, diss, diss_p, ddzu, dd2zu, ddzw, drho_air, drho_air_zw, dzu, & 463 dzw, e, e_p, kh, km, nc, nc_p, nr, nr_p, p, prho, pt, pt_p, & 464 pt_init, ptdf_x, ptdf_y, q_init, q, qc, qc_p, ql, ql_c, ql_v, & 465 ql_vp, qr, qr_p, q_p, rdf, rdf_sc, ref_state, rho_air, & 466 rho_air_zw, rho_ocean, s, s_p, sa_p, te_m, tend, tpt_m, tu_m, & 467 tv_m, tw_m, u, ug, u_init, u_p, u_stokes_zu, v, vg, v_init, vpt,& 468 v_p, v_stokes_zu, w, w_p, zu, heatflux_output_conversion, & 469 momentumflux_output_conversion 470 471 USE biometeorology_mod, & 472 ONLY: bio_calculate_thermal_index_maps, & 473 thermal_comfort, uvem_calc_exposure, uv_exposure 474 475 USE bulk_cloud_model_mod, & 476 ONLY: bulk_cloud_model, calc_liquid_water_content, & 477 collision_turbulence, microphysics_morrison, microphysics_seifert 478 479 USE calc_mean_profile_mod, & 465 USE arrays_3d, & 466 ONLY: diss, diss_p, dzu, e, e_p, nc, nc_p, nr, nr_p, prho, pt, pt_p, pt_init, q_init, q, & 467 qc, qc_p, ql, ql_c, ql_v, ql_vp, qr, qr_p, q_p, ref_state, rho_ocean, s, s_p, sa_p, & 468 tend, u, u_p, v, vpt, v_p, w, w_p 469 470 USE biometeorology_mod, & 471 ONLY: bio_calculate_thermal_index_maps, thermal_comfort, uvem_calc_exposure, uv_exposure 472 473 USE bulk_cloud_model_mod, & 474 ONLY: bulk_cloud_model, calc_liquid_water_content, collision_turbulence, & 475 microphysics_morrison, microphysics_seifert 476 477 USE calc_mean_profile_mod, & 480 478 ONLY: calc_mean_profile 481 479 482 USE chem_emissions_mod, &480 USE chem_emissions_mod, & 483 481 ONLY: chem_emissions_setup 484 482 485 USE chem_modules, &483 USE chem_modules, & 486 484 ONLY: bc_cs_t_val, cs_name, do_emis, nspec, nspec_out 487 485 488 USE chemistry_model_mod, &486 USE chemistry_model_mod, & 489 487 ONLY: chem_boundary_conds, chem_species 490 488 491 USE control_parameters, & 492 ONLY: advected_distance_x, advected_distance_y, air_chemistry, & 493 average_count_3d, averaging_interval, averaging_interval_pr, & 494 bc_lr_cyc, bc_ns_cyc, bc_pt_t_val, bc_q_t_val, biometeorology, & 495 call_psolver_at_all_substeps, child_domain, cloud_droplets, & 496 constant_flux_layer, constant_heatflux, & 497 create_disturbances, dopr_n, constant_diffusion, coupling_mode, & 498 coupling_start_time, current_timestep_number, & 499 disturbance_created, disturbance_energy_limit, dist_range, & 500 do_sum, dt_3d, dt_averaging_input, dt_averaging_input_pr, & 501 dt_coupling, dt_data_output_av, dt_disturb, dt_do2d_xy, & 502 dt_do2d_xz, dt_do2d_yz, dt_do3d, dt_domask,dt_dopts, dt_dopr, & 503 dt_dopr_listing, dt_dots, dt_dvrp, dt_run_control, end_time, & 504 first_call_lpm, first_call_mas, galilei_transformation, & 505 humidity, indoor_model, intermediate_timestep_count, & 506 intermediate_timestep_count_max, & 507 land_surface, large_scale_forcing, & 508 loop_optimization, lsf_surf, lsf_vert, masks, mid, & 509 multi_agent_system_end, multi_agent_system_start, & 510 nesting_offline, neutral, nr_timesteps_this_run, nudging, & 511 ocean_mode, passive_scalar, pt_reference, & 512 pt_slope_offset, random_heatflux, rans_mode, & 513 rans_tke_e, run_coupled, salsa, & 514 simulated_time, simulated_time_chr, & 515 skip_time_do2d_xy, skip_time_do2d_xz, skip_time_do2d_yz, & 516 skip_time_do3d, skip_time_domask, skip_time_dopr, & 517 skip_time_data_output_av, sloping_surface, stop_dt, & 518 surface_output, terminate_coupled, terminate_run, & 519 timestep_scheme, & 520 time_coupling, time_do2d_xy, time_do2d_xz, time_do2d_yz, & 521 time_do3d, time_domask, time_dopr, time_dopr_av, & 522 time_dopr_listing, time_dopts, time_dosp, time_dosp_av, & 523 time_dots, time_do_av, time_do_sla, time_disturb, time_dvrp, & 524 time_run_control, time_since_reference_point, tsc, & 525 turbulent_inflow, turbulent_outflow, urban_surface, & 526 use_initial_profile_as_reference, & 527 use_single_reference_value, u_gtrans, v_gtrans, & 528 virtual_flight, virtual_measurement, wind_turbine, & 529 ws_scheme_mom, ws_scheme_sca 530 531 USE cpulog, & 489 USE control_parameters, & 490 ONLY: advected_distance_x, advected_distance_y, air_chemistry, average_count_3d, & 491 averaging_interval, averaging_interval_pr, bc_lr_cyc, bc_ns_cyc, bc_pt_t_val, & 492 bc_q_t_val, biometeorology, call_psolver_at_all_substeps, child_domain, & 493 cloud_droplets, constant_flux_layer, constant_heatflux, create_disturbances, & 494 dopr_n, constant_diffusion, coupling_mode, coupling_start_time, & 495 current_timestep_number, disturbance_created, disturbance_energy_limit, dist_range, & 496 do_sum, dt_3d, dt_averaging_input, dt_averaging_input_pr, dt_coupling, & 497 dt_data_output_av, dt_disturb, dt_do2d_xy, dt_do2d_xz, dt_do2d_yz, dt_do3d, & 498 dt_domask,dt_dopts, dt_dopr, dt_dopr_listing, dt_dots, dt_dvrp, dt_run_control, & 499 end_time, first_call_lpm, first_call_mas, galilei_transformation, humidity, & 500 indoor_model, intermediate_timestep_count, intermediate_timestep_count_max, & 501 land_surface, large_scale_forcing, loop_optimization, lsf_surf, lsf_vert, masks, & 502 mid, multi_agent_system_end, multi_agent_system_start, nesting_offline, neutral, & 503 nr_timesteps_this_run, nudging, ocean_mode, passive_scalar, pt_reference, & 504 pt_slope_offset, random_heatflux, rans_mode, rans_tke_e, run_coupled, salsa, & 505 simulated_time, simulated_time_chr, skip_time_do2d_xy, skip_time_do2d_xz, & 506 skip_time_do2d_yz, skip_time_do3d, skip_time_domask, skip_time_dopr, & 507 skip_time_data_output_av, sloping_surface, stop_dt, surface_output, & 508 terminate_coupled, terminate_run, timestep_scheme, time_coupling, time_do2d_xy, & 509 time_do2d_xz, time_do2d_yz, time_do3d, time_domask, time_dopr, time_dopr_av, & 510 time_dopr_listing, time_dopts, time_dosp, time_dosp_av, time_dots, time_do_av, & 511 time_do_sla, time_disturb, time_dvrp, time_run_control, time_since_reference_point, & 512 turbulent_inflow, turbulent_outflow, urban_surface, & 513 use_initial_profile_as_reference, use_single_reference_value, u_gtrans, v_gtrans, & 514 virtual_flight, virtual_measurement, wind_turbine, ws_scheme_mom, ws_scheme_sca 515 516 USE cpulog, & 532 517 ONLY: cpu_log, log_point, log_point_s 533 518 534 USE date_and_time_mod, &519 USE date_and_time_mod, & 535 520 ONLY: calc_date_and_time, hour_call_emis, hour_of_year 536 521 537 USE flight_mod, &522 USE flight_mod, & 538 523 ONLY: flight_measurement 539 524 540 USE indices, & 541 ONLY: nbgp, nx, nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nzb, nzt, & 542 nz, nzb_max, advc_flags_1, advc_flags_2, wall_flags_0 543 544 USE indoor_model_mod, & 545 ONLY: dt_indoor, im_main_heatcool, skip_time_do_indoor, time_indoor 546 547 USE interaction_droplets_ptq_mod, & 525 USE indices, & 526 ONLY: nbgp, nx, nxl, nxlg, nxr, nxrg, nzb, nzt 527 528 USE indoor_model_mod, & 529 ONLY: dt_indoor, im_main_heatcool, time_indoor 530 531 USE interaction_droplets_ptq_mod, & 548 532 ONLY: interaction_droplets_ptq 549 533 … … 552 536 USE kinds 553 537 554 USE land_surface_model_mod, & 555 ONLY: lsm_boundary_condition, lsm_energy_balance, lsm_soil_model, & 556 skip_time_do_lsm 557 558 USE lsf_nudging_mod, & 538 USE land_surface_model_mod, & 539 ONLY: lsm_boundary_condition, lsm_energy_balance, lsm_soil_model, skip_time_do_lsm 540 541 USE lpm_mod, & 542 ONLY: lpm 543 544 USE lsf_nudging_mod, & 559 545 ONLY: calc_tnudge, ls_forcing_surf, ls_forcing_vert, nudge_ref 560 546 561 USE module_interface, &547 USE module_interface, & 562 548 ONLY: module_interface_actions 563 549 564 USE multi_agent_system_mod, &550 USE multi_agent_system_mod, & 565 551 ONLY: agents_active, multi_agent_system 566 552 567 USE nesting_offl_mod, &553 USE nesting_offl_mod, & 568 554 ONLY: nesting_offl_bc, nesting_offl_mass_conservation 569 555 570 USE netcdf_data_input_mod, & 571 ONLY: chem_emis, chem_emis_att, nest_offl, & 572 netcdf_data_input_offline_nesting 573 574 USE ocean_mod, & 556 USE netcdf_data_input_mod, & 557 ONLY: chem_emis, chem_emis_att, nest_offl, netcdf_data_input_offline_nesting 558 559 USE ocean_mod, & 575 560 ONLY: prho_reference 576 561 577 USE particle_attributes, & 578 ONLY: particle_advection, particle_advection_start, & 579 use_sgs_for_particles, wang_kernel 562 USE particle_attributes, & 563 ONLY: particle_advection, particle_advection_start, use_sgs_for_particles, wang_kernel 580 564 581 565 USE pegrid 582 566 583 USE pmc_interface, & 584 ONLY: nested_run, nesting_mode, pmci_boundary_conds, pmci_datatrans, & 585 pmci_synchronize 586 587 USE progress_bar, & 567 USE pmc_interface, & 568 ONLY: nested_run, nesting_mode, pmci_boundary_conds, pmci_datatrans, pmci_synchronize 569 570 USE progress_bar, & 588 571 ONLY: finish_progress_bar, output_progress_bar 589 572 590 USE prognostic_equations_mod, &573 USE prognostic_equations_mod, & 591 574 ONLY: prognostic_equations_cache, prognostic_equations_vector 592 575 593 USE radiation_model_mod, & 594 ONLY: dt_radiation, force_radiation_call, radiation, radiation_control,& 595 radiation_interaction, radiation_interactions, & 596 skip_time_do_radiation, time_radiation 576 USE radiation_model_mod, & 577 ONLY: dt_radiation, force_radiation_call, radiation, radiation_control, & 578 radiation_interaction, radiation_interactions, skip_time_do_radiation, time_radiation 597 579 598 USE salsa_mod, & 599 ONLY: aerosol_number, aerosol_mass, nbins, ncc_tot, ngast, & 600 salsa_boundary_conds, salsa_gas, salsa_gases_from_chem, & 601 skip_time_do_salsa 602 603 USE salsa_util_mod, & 604 ONLY: sums_salsa_ws_l 605 606 USE spectra_mod, & 607 ONLY: average_count_sp, averaging_interval_sp, calc_spectra, dt_dosp, & 608 skip_time_dosp 609 610 USE statistics, & 611 ONLY: flow_statistics_called, hom, pr_palm, sums_ls_l, & 612 rmask, statistic_regions, weight_substep, sums_l, sums_l_l, & 613 sums_us2_ws_l, sums_wsus_ws_l, sums_vs2_ws_l, sums_wsvs_ws_l, & 614 sums_ws2_ws_l, sums_wspts_ws_l, sums_wsqs_ws_l, sums_wssas_ws_l,& 615 sums_wsqcs_ws_l, sums_wsqrs_ws_l, sums_wsncs_ws_l, & 616 sums_wsnrs_ws_l, sums_wsss_ws_l 617 618 USE surface_layer_fluxes_mod, & 580 USE salsa_mod, & 581 ONLY: aerosol_number, aerosol_mass, nbins, ncc_tot, ngast, salsa_boundary_conds, & 582 salsa_gas, salsa_gases_from_chem, skip_time_do_salsa 583 584 USE spectra_mod, & 585 ONLY: average_count_sp, averaging_interval_sp, calc_spectra, dt_dosp, skip_time_dosp 586 587 USE statistics, & 588 ONLY: flow_statistics_called, hom, pr_palm, sums_ls_l 589 590 591 USE surface_layer_fluxes_mod, & 619 592 ONLY: surface_layer_fluxes 620 593 621 USE surface_mod, & 622 ONLY: bc_h, surf_def_h, surf_lsm_h, surf_usm_h, & 623 enter_surface_arrays, exit_surface_arrays 624 625 USE surface_data_output_mod, & 626 ONLY: average_count_surf, averaging_interval_surf, dt_dosurf, & 627 dt_dosurf_av, surface_data_output, & 628 surface_data_output_averaging, skip_time_dosurf, & 594 USE surface_data_output_mod, & 595 ONLY: average_count_surf, averaging_interval_surf, dt_dosurf, dt_dosurf_av, & 596 surface_data_output, surface_data_output_averaging, skip_time_dosurf, & 629 597 skip_time_dosurf_av, time_dosurf, time_dosurf_av 630 598 631 USE turbulence_closure_mod, & 599 USE surface_mod, & 600 ONLY: surf_def_h, surf_lsm_h, surf_usm_h 601 602 USE synthetic_turbulence_generator_mod, & 603 ONLY: dt_stg_call, dt_stg_adjust, parametrize_inflow_turbulence, stg_adjust, stg_main, & 604 time_stg_adjust, time_stg_call, use_syn_turb_gen 605 606 USE turbulence_closure_mod, & 632 607 ONLY: tcm_diffusivities, production_e_init 633 608 634 USE urban_surface_mod, & 635 ONLY: usm_boundary_condition, usm_material_heat_model, & 636 usm_material_model, & 609 USE urban_surface_mod, & 610 ONLY: usm_boundary_condition, usm_material_heat_model, usm_material_model, & 637 611 usm_surface_energy_balance, usm_green_heat_model 638 612 639 USE synthetic_turbulence_generator_mod, & 640 ONLY: dt_stg_call, dt_stg_adjust, parametrize_inflow_turbulence, & 641 stg_adjust, stg_main, time_stg_adjust, time_stg_call, & 642 use_syn_turb_gen 643 644 645 USE wind_turbine_model_mod, & 646 ONLY: wtm_forces 647 648 USE lpm_mod, & 649 ONLY: lpm 650 651 USE vertical_nesting_mod, & 652 ONLY: vnested, vnest_anterpolate, vnest_anterpolate_e, & 653 vnest_boundary_conds, vnest_boundary_conds_khkm, & 654 vnest_deallocate, vnest_init, vnest_init_fine, & 613 USE vertical_nesting_mod, & 614 ONLY: vnested, vnest_anterpolate, vnest_anterpolate_e, vnest_boundary_conds, & 615 vnest_boundary_conds_khkm, vnest_deallocate, vnest_init, vnest_init_fine, & 655 616 vnest_start_time 656 617 657 USE virtual_measurement_mod, &618 USE virtual_measurement_mod, & 658 619 ONLY: vm_data_output, vm_sampling, vm_time_start 620 621 USE wind_turbine_model_mod, & 622 ONLY: wtm_forces 623 624 625 #if defined( _OPENACC ) 626 USE arrays_3d, & 627 ONLY: d, dd2zu, ddzu, ddzw, drho_air, drho_air_zw, dzw, heatflux_output_conversion, kh, & 628 km, momentumflux_output_conversion, p, ptdf_x, ptdf_y, rdf, rdf_sc, rho_air, & 629 rho_air_zw, te_m, tpt_m, tu_m, tv_m, tw_m, ug, u_init, u_stokes_zu, vg, v_init, & 630 v_stokes_zu, zu 631 632 USE control_parameters, & 633 ONLY: tsc 634 635 USE indices, & 636 ONLY: advc_flags_1, advc_flags_2, nyn, nyng, nys, nysg, nz, nzb_max, wall_flags_0 637 638 USE statistics, & 639 ONLY: rmask, statistic_regions, sums_l, sums_l_l, sums_us2_ws_l, & 640 sums_wsus_ws_l, sums_vs2_ws_l, sums_wsvs_ws_l, sums_ws2_ws_l, sums_wspts_ws_l, & 641 sums_wsqs_ws_l, sums_wssas_ws_l, sums_wsqcs_ws_l, sums_wsqrs_ws_l, sums_wsncs_ws_l, & 642 sums_wsnrs_ws_l, sums_wsss_ws_l, weight_substep 643 644 USE salsa_util_mod, & 645 ONLY: sums_salsa_ws_l 646 647 USE surface_mod, & 648 ONLY: bc_h, enter_surface_arrays, exit_surface_arrays 649 #endif 650 659 651 660 652 IMPLICIT NONE … … 675 667 676 668 677 ! Copy data from arrays_3d 669 ! 670 !-- Copy data from arrays_3d 678 671 !$ACC DATA & 679 672 !$ACC COPY(d(nzb+1:nzt,nys:nyn,nxl:nxr)) & … … 717 710 !$ACC COPYIN(ug(0:nz+1), vg(0:nz+1)) 718 711 719 ! Copy data from control_parameters 712 ! 713 !-- Copy data from control_parameters 720 714 !$ACC DATA & 721 715 !$ACC COPYIN(tsc(1:5)) 722 716 723 ! Copy data from indices 717 ! 718 !-- Copy data from indices 724 719 !$ACC DATA & 725 720 !$ACC COPYIN(advc_flags_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) & … … 727 722 !$ACC COPYIN(wall_flags_0(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) 728 723 729 ! Copy data from surface_mod 724 ! 725 !-- Copy data from surface_mod 730 726 !$ACC DATA & 731 727 !$ACC COPYIN(bc_h(0:1)) & … … 737 733 !$ACC COPYIN(bc_h(1)%k(1:bc_h(1)%ns)) 738 734 739 ! Copy data from statistics 735 ! 736 !-- Copy data from statistics 740 737 !$ACC DATA & 741 738 !$ACC COPYIN(hom(0:nz+1,1:2,1:4,0)) & … … 759 756 !$ACC COPY(sums_salsa_ws_l(nzb:nzt+1,0)) 760 757 761 #if def _OPENACC758 #if defined( _OPENACC ) 762 759 CALL enter_surface_arrays 763 760 #endif … … 784 781 !-- Data exchange between coupled models in case that a call has been omitted 785 782 !-- at the end of the previous run of a job chain. 786 IF ( coupling_mode /= 'uncoupled' .AND. run_coupled .AND. .NOT. vnested) THEN783 IF ( coupling_mode /= 'uncoupled' .AND. run_coupled .AND. .NOT. vnested ) THEN 787 784 ! 788 785 !-- In case of model termination initiated by the local model the coupler … … 792 789 time_coupling = time_coupling - dt_coupling 793 790 ENDDO 794 IF (time_coupling == 0.0_wp .AND. & 795 time_since_reference_point < dt_coupling ) & 796 THEN 791 IF (time_coupling == 0.0_wp .AND. time_since_reference_point < dt_coupling ) THEN 797 792 time_coupling = time_since_reference_point 798 793 ENDIF … … 806 801 807 802 CALL location_message( 'starting timestep-sequence', .TRUE. ) 803 808 804 ! 809 805 !-- Start of the time loop 810 DO WHILE ( simulated_time < end_time .AND. .NOT. stop_dt .AND. & 811 .NOT. terminate_run ) 806 DO WHILE ( simulated_time < end_time .AND. .NOT. stop_dt .AND. .NOT. terminate_run ) 812 807 813 808 CALL cpu_log( log_point_s(10), 'timesteps', 'start' ) … … 842 837 IF ( air_chemistry ) THEN 843 838 DO lsp = 1, nspec 844 bc_cs_t_val = ( chem_species(lsp)%conc_pr_init(nzt+1) &845 - chem_species(lsp)%conc_pr_init(nzt) ) &839 bc_cs_t_val = ( chem_species(lsp)%conc_pr_init(nzt+1) & 840 - chem_species(lsp)%conc_pr_init(nzt) ) & 846 841 / dzu(nzt+1) 847 842 ENDDO … … 851 846 !-- If forcing by larger-scale models is applied, check if new data 852 847 !-- at domain boundaries need to be read. 853 IF ( nesting_offline ) THEN854 IF ( nest_offl%time(nest_offl%tind_p) <= time_since_reference_point )&848 IF ( nesting_offline .AND. nest_offl%time(nest_offl%tind_p) <= time_since_reference_point ) & 849 THEN 855 850 CALL netcdf_data_input_offline_nesting 856 851 ENDIF … … 867 862 !-- Start of intermediate step loop 868 863 intermediate_timestep_count = 0 869 DO WHILE ( intermediate_timestep_count < & 870 intermediate_timestep_count_max ) 864 DO WHILE ( intermediate_timestep_count < intermediate_timestep_count_max ) 871 865 872 866 intermediate_timestep_count = intermediate_timestep_count + 1 … … 880 874 !-- Calculate those variables needed in the tendency terms which need 881 875 !-- global communication 882 IF ( .NOT. use_single_reference_value .AND. &883 .NOT. use_initial_profile_as_reference )THEN876 IF ( .NOT. use_single_reference_value .AND. .NOT. use_initial_profile_as_reference ) & 877 THEN 884 878 ! 885 879 !-- Horizontally averaged profiles to be used as reference state in … … 902 896 !-- ( might be the case if a vertical level is completely occupied 903 897 !-- with topography ). 904 ref_state = MERGE( MAXVAL(ref_state), ref_state, & 905 ref_state == 0.0_wp ) 898 ref_state = MERGE( MAXVAL(ref_state), ref_state, ref_state == 0.0_wp ) 906 899 ENDIF 907 900 908 901 IF ( .NOT. constant_diffusion ) CALL production_e_init 909 IF ( ( ws_scheme_mom .OR. ws_scheme_sca ) .AND. & 910 intermediate_timestep_count == 1 ) CALL ws_statistics 902 IF ( ( ws_scheme_mom .OR. ws_scheme_sca ) .AND. intermediate_timestep_count == 1 ) & 903 THEN 904 CALL ws_statistics 905 ENDIF 911 906 ! 912 907 !-- In case of nudging calculate current nudging time scale and horizontal … … 937 932 !-- ### particle model should be moved before prognostic_equations, in order 938 933 !-- to regard droplet interactions directly 939 IF ( particle_advection .AND. 940 time_since_reference_point >= particle_advection_start .AND.&941 intermediate_timestep_count == 1 )THEN934 IF ( particle_advection .AND. time_since_reference_point >= particle_advection_start & 935 .AND. intermediate_timestep_count == 1 ) & 936 THEN 942 937 CALL lpm 943 938 first_call_lpm = .FALSE. … … 948 943 !-- Droplet condensation and evaporation is calculated within 949 944 !-- advec_particles. 950 IF ( cloud_droplets .AND. & 951 intermediate_timestep_count == intermediate_timestep_count_max )& 945 IF ( cloud_droplets .AND. intermediate_timestep_count == intermediate_timestep_count_max ) & 952 946 THEN 953 947 CALL interaction_droplets_ptq … … 956 950 ! 957 951 !-- Movement of agents in multi agent system 958 IF ( agents_active .AND. 959 time_since_reference_point >= multi_agent_system_start .AND.&960 time_since_reference_point <= multi_agent_system_end .AND.&961 intermediate_timestep_count == 1 )THEN952 IF ( agents_active .AND. time_since_reference_point >= multi_agent_system_start .AND. & 953 time_since_reference_point <= multi_agent_system_end .AND. & 954 intermediate_timestep_count == 1 ) & 955 THEN 962 956 CALL multi_agent_system 963 957 first_call_mas = .FALSE. … … 973 967 CALL exchange_horiz( pt_p, nbgp ) 974 968 IF ( .NOT. constant_diffusion ) CALL exchange_horiz( e_p, nbgp ) 975 IF ( rans_tke_e .OR. wang_kernel .OR. collision_turbulence &969 IF ( rans_tke_e .OR. wang_kernel .OR. collision_turbulence & 976 970 .OR. use_sgs_for_particles ) THEN 977 971 IF ( rans_tke_e ) THEN … … 1012 1006 DO WHILE ( TRIM( cs_name( lsp_usr ) ) /= 'novalue' ) 1013 1007 IF ( TRIM(chem_species(lsp)%name) == TRIM(cs_name(lsp_usr)) ) THEN 1014 CALL chem_boundary_conds( chem_species(lsp)%conc_p, &1008 CALL chem_boundary_conds( chem_species(lsp)%conc_p, & 1015 1009 chem_species(lsp)%conc_pr_init ) 1016 1010 ENDIF … … 1026 1020 CALL exchange_horiz( aerosol_number(b)%conc_p, nbgp ) 1027 1021 CALL cpu_log( log_point_s(93), 'salsa decycle', 'start' ) 1028 CALL salsa_boundary_conds( aerosol_number(b)%conc_p, & 1029 aerosol_number(b)%init ) 1022 CALL salsa_boundary_conds( aerosol_number(b)%conc_p, aerosol_number(b)%init ) 1030 1023 CALL cpu_log( log_point_s(93), 'salsa decycle', 'stop' ) 1031 1024 DO c = 1, ncc_tot 1032 CALL exchange_horiz( aerosol_mass((c-1)*nbins+b)%conc_p, & 1033 nbgp ) 1025 CALL exchange_horiz( aerosol_mass((c-1)*nbins+b)%conc_p, nbgp ) 1034 1026 CALL cpu_log( log_point_s(93), 'salsa decycle', 'start' ) 1035 CALL salsa_boundary_conds( aerosol_mass((c-1)*nbins+b)%conc_p, &1027 CALL salsa_boundary_conds( aerosol_mass((c-1)*nbins+b)%conc_p, & 1036 1028 aerosol_mass((c-1)*nbins+b)%init ) 1037 1029 CALL cpu_log( log_point_s(93), 'salsa decycle', 'stop' ) … … 1042 1034 CALL exchange_horiz( salsa_gas(g)%conc_p, nbgp ) 1043 1035 CALL cpu_log( log_point_s(93), 'salsa decycle', 'start' ) 1044 CALL salsa_boundary_conds( salsa_gas(g)%conc_p, & 1045 salsa_gas(g)%init ) 1036 CALL salsa_boundary_conds( salsa_gas(g)%conc_p, salsa_gas(g)%init ) 1046 1037 CALL cpu_log( log_point_s(93), 'salsa decycle', 'stop' ) 1047 1038 ENDDO … … 1078 1069 CALL pmci_datatrans( nesting_mode ) 1079 1070 1080 IF ( TRIM( nesting_mode ) == 'two-way' .OR. & 1081 nesting_mode == 'vertical' ) THEN 1071 IF ( TRIM( nesting_mode ) == 'two-way' .OR. nesting_mode == 'vertical' ) THEN 1082 1072 ! 1083 1073 !-- Exchange_horiz is needed for all parent-domains after the … … 1107 1097 IF ( .NOT. constant_diffusion ) CALL exchange_horiz( e, nbgp ) 1108 1098 1109 IF ( .NOT. constant_diffusion .AND. rans_mode .AND. & 1110 rans_tke_e ) & 1099 IF ( .NOT. constant_diffusion .AND. rans_mode .AND. rans_tke_e ) THEN 1111 1100 CALL exchange_horiz( diss, nbgp ) 1101 ENDIF 1112 1102 1113 1103 IF ( air_chemistry ) THEN … … 1130 1120 !-- when a sloping surface is used 1131 1121 IF ( sloping_surface ) THEN 1132 IF ( nxl == 0 ) pt(:,:,nxlg:nxl-1) = pt(:,:,nxlg:nxl-1) - & 1133 pt_slope_offset 1134 IF ( nxr == nx ) pt(:,:,nxr+1:nxrg) = pt(:,:,nxr+1:nxrg) + & 1135 pt_slope_offset 1122 IF ( nxl == 0 ) pt(:,:,nxlg:nxl-1) = pt(:,:,nxlg:nxl-1) - pt_slope_offset 1123 IF ( nxr == nx ) pt(:,:,nxr+1:nxrg) = pt(:,:,nxr+1:nxrg) + pt_slope_offset 1136 1124 ENDIF 1137 1125 … … 1146 1134 ! 1147 1135 !-- Impose a random perturbation on the horizontal velocity field 1148 IF ( create_disturbances .AND. & 1149 ( call_psolver_at_all_substeps .AND. & 1150 intermediate_timestep_count == intermediate_timestep_count_max )& 1151 .OR. ( .NOT. call_psolver_at_all_substeps .AND. & 1152 intermediate_timestep_count == 1 ) ) & 1136 IF ( create_disturbances .AND. ( call_psolver_at_all_substeps .AND. & 1137 intermediate_timestep_count == intermediate_timestep_count_max ) & 1138 .OR. ( .NOT. call_psolver_at_all_substeps .AND. intermediate_timestep_count == 1 ) ) & 1153 1139 THEN 1154 1140 time_disturb = time_disturb + dt_3d 1155 1141 IF ( time_disturb >= dt_disturb ) THEN 1156 IF ( disturbance_energy_limit /= 0.0_wp .AND. &1142 IF ( disturbance_energy_limit /= 0.0_wp .AND. & 1157 1143 hom(nzb+5,1,pr_palm,0) < disturbance_energy_limit ) THEN 1158 1144 CALL disturb_field( 'u', tend, u ) 1159 1145 CALL disturb_field( 'v', tend, v ) 1160 ELSEIF ( ( .NOT. bc_lr_cyc .OR. .NOT. bc_ns_cyc ) &1161 .AND. .NOT. child_domain .AND. .NOT. nesting_offline )&1146 ELSEIF ( ( .NOT. bc_lr_cyc .OR. .NOT. bc_ns_cyc ) & 1147 .AND. .NOT. child_domain .AND. .NOT. nesting_offline ) & 1162 1148 THEN 1163 1149 ! … … 1176 1162 !-- Map forcing data derived from larger scale model onto domain 1177 1163 !-- boundaries. 1178 IF ( nesting_offline .AND. intermediate_timestep_count == &1179 intermediate_timestep_count_max ) &1164 IF ( nesting_offline .AND. intermediate_timestep_count == & 1165 intermediate_timestep_count_max ) & 1180 1166 CALL nesting_offl_bc 1181 1167 ! 1182 1168 !-- Impose a turbulent inflow using synthetic generated turbulence, 1183 1169 !-- only once per time step. 1184 IF ( use_syn_turb_gen .AND. time_stg_call >= dt_stg_call .AND. &1170 IF ( use_syn_turb_gen .AND. time_stg_call >= dt_stg_call .AND. & 1185 1171 intermediate_timestep_count == intermediate_timestep_count_max ) THEN 1186 1172 CALL cpu_log( log_point(57), 'synthetic_turbulence_gen', 'start' ) … … 1244 1230 !-- pt_surface and q_surface in dependence on data from external 1245 1231 !-- file LSF_DATA respectively 1246 IF ( ( large_scale_forcing .AND. lsf_surf ) .AND. &1247 intermediate_timestep_count == intermediate_timestep_count_max ) &1232 IF ( ( large_scale_forcing .AND. lsf_surf ) .AND. & 1233 intermediate_timestep_count == intermediate_timestep_count_max ) & 1248 1234 THEN 1249 1235 CALL ls_forcing_surf( simulated_time ) … … 1335 1321 ! 1336 1322 !-- If required, calculate radiative fluxes and heating rates 1337 IF ( radiation .AND. intermediate_timestep_count & 1338 == intermediate_timestep_count_max .AND. time_since_reference_point > & 1339 skip_time_do_radiation ) THEN 1323 IF ( radiation .AND. intermediate_timestep_count == intermediate_timestep_count_max & 1324 .AND. time_since_reference_point > skip_time_do_radiation ) THEN 1340 1325 1341 1326 time_radiation = time_radiation + dt_3d 1342 1327 1343 IF ( time_radiation >= dt_radiation .OR. force_radiation_call ) & 1344 THEN 1328 IF ( time_radiation >= dt_radiation .OR. force_radiation_call ) THEN 1345 1329 1346 1330 CALL cpu_log( log_point(50), 'radiation', 'start' ) … … 1355 1339 !-- solar positions 1356 1340 time_since_reference_point_save = time_since_reference_point 1357 time_since_reference_point = & 1358 REAL( FLOOR( time_since_reference_point / & 1359 dt_radiation), wp ) & 1360 * dt_radiation 1341 time_since_reference_point = REAL( FLOOR( time_since_reference_point / & 1342 dt_radiation), wp ) * dt_radiation 1361 1343 1362 1344 CALL radiation_control 1363 1345 1364 IF ( ( urban_surface .OR. land_surface ) .AND. & 1365 radiation_interactions ) THEN 1346 IF ( ( urban_surface .OR. land_surface ) .AND. radiation_interactions ) THEN 1366 1347 CALL cpu_log( log_point_s(46), 'radiation_interaction', 'start' ) 1367 1348 CALL radiation_interaction … … 1423 1404 time_indoor = time_indoor + dt_3d 1424 1405 1425 IF ( time_indoor >= dt_indoor .OR. current_timestep_number == 0 ) & 1426 THEN 1406 IF ( time_indoor >= dt_indoor .OR. current_timestep_number == 0 ) THEN 1427 1407 1428 1408 time_indoor = time_indoor - dt_indoor … … 1506 1486 ! 1507 1487 !-- Data exchange between coupled models 1508 IF ( coupling_mode /= 'uncoupled' .AND. run_coupled & 1509 .AND. .NOT. vnested ) THEN 1488 IF ( coupling_mode /= 'uncoupled' .AND. run_coupled .AND. .NOT. vnested ) THEN 1510 1489 time_coupling = time_coupling + dt_3d 1511 1490 … … 1516 1495 !-- If necessary, the coupler will be called at the beginning of the 1517 1496 !-- next restart run. 1518 DO WHILE ( time_coupling >= dt_coupling .AND.terminate_coupled == 0 )1497 DO WHILE ( time_coupling >= dt_coupling .AND. terminate_coupled == 0 ) 1519 1498 CALL surface_coupler 1520 1499 time_coupling = time_coupling - dt_coupling … … 1528 1507 !-- and then we might get trouble with the biomet output, 1529 1508 !-- because we can have 2d and/or 3d biomet output!! 1530 IF ( biometeorology&1531 .AND. ( ( time_do3d >= dt_do3d .AND. time_since_reference_point >= skip_time_do3d )&1532 .OR.&1533 1509 IF ( biometeorology & 1510 .AND. ( ( time_do3d >= dt_do3d .AND. time_since_reference_point >= skip_time_do3d ) & 1511 .OR. & 1512 ( time_do2d_xy >= dt_do2d_xy .AND. time_since_reference_point >= skip_time_do2d_xy ) & 1534 1513 ) ) THEN 1535 1514 ! … … 1576 1555 ! 1577 1556 !-- If required, call flow_statistics for averaging in time 1578 IF ( averaging_interval_pr /= 0.0_wp .AND. &1579 ( dt_dopr - time_dopr ) <= averaging_interval_pr .AND. &1557 IF ( averaging_interval_pr /= 0.0_wp .AND. & 1558 ( dt_dopr - time_dopr ) <= averaging_interval_pr .AND. & 1580 1559 time_since_reference_point >= skip_time_dopr ) THEN 1581 1560 time_dopr_av = time_dopr_av + dt_3d 1582 1561 IF ( time_dopr_av >= dt_averaging_input_pr ) THEN 1583 1562 do_sum = .TRUE. 1584 time_dopr_av = MOD( time_dopr_av, & 1585 MAX( dt_averaging_input_pr, dt_3d ) ) 1563 time_dopr_av = MOD( time_dopr_av, MAX( dt_averaging_input_pr, dt_3d ) ) 1586 1564 ENDIF 1587 1565 ENDIF … … 1590 1568 ! 1591 1569 !-- Sum-up 3d-arrays for later output of time-averaged 2d/3d/masked data 1592 IF ( averaging_interval /= 0.0_wp .AND. &1593 ( dt_data_output_av - time_do_av ) <= averaging_interval .AND. &1594 time_since_reference_point >= skip_time_data_output_av ) &1570 IF ( averaging_interval /= 0.0_wp .AND. & 1571 ( dt_data_output_av - time_do_av ) <= averaging_interval .AND. & 1572 time_since_reference_point >= skip_time_data_output_av ) & 1595 1573 THEN 1596 1574 time_do_sla = time_do_sla + dt_3d … … 1604 1582 !-- Average surface data 1605 1583 IF ( surface_output ) THEN 1606 IF ( averaging_interval_surf /= 0.0_wp&1607 .AND. ( dt_dosurf_av - time_dosurf_av ) <= averaging_interval_surf &1584 IF ( averaging_interval_surf /= 0.0_wp & 1585 .AND. ( dt_dosurf_av - time_dosurf_av ) <= averaging_interval_surf & 1608 1586 .AND. time_since_reference_point >= skip_time_dosurf_av ) THEN 1609 1587 IF ( time_dosurf_av >= dt_averaging_input ) THEN … … 1616 1594 ! 1617 1595 !-- Calculate spectra for time averaging 1618 IF ( averaging_interval_sp /= 0.0_wp .AND. & 1619 ( dt_dosp - time_dosp ) <= averaging_interval_sp .AND. & 1620 time_since_reference_point >= skip_time_dosp ) THEN 1596 IF ( averaging_interval_sp /= 0.0_wp .AND. ( dt_dosp - time_dosp ) <= averaging_interval_sp& 1597 .AND. time_since_reference_point >= skip_time_dosp ) THEN 1621 1598 time_dosp_av = time_dosp_av + dt_3d 1622 1599 IF ( time_dosp_av >= dt_averaging_input_pr ) THEN 1623 1600 CALL calc_spectra 1624 time_dosp_av = MOD( time_dosp_av, & 1625 MAX( dt_averaging_input_pr, dt_3d ) ) 1601 time_dosp_av = MOD( time_dosp_av, MAX( dt_averaging_input_pr, dt_3d ) ) 1626 1602 ENDIF 1627 1603 ENDIF … … 1635 1611 ! 1636 1612 !-- Take virtual measurements 1637 IF ( virtual_measurement .AND. & 1638 vm_time_start <= time_since_reference_point ) THEN 1613 IF ( virtual_measurement .AND. vm_time_start <= time_since_reference_point ) THEN 1639 1614 CALL vm_sampling 1640 1615 CALL vm_data_output … … 1645 1620 IF ( time_dopr_listing >= dt_dopr_listing ) THEN 1646 1621 CALL print_1d 1647 time_dopr_listing = MOD( time_dopr_listing, MAX( dt_dopr_listing, & 1648 dt_3d ) ) 1622 time_dopr_listing = MOD( time_dopr_listing, MAX( dt_dopr_listing, dt_3d ) ) 1649 1623 ENDIF 1650 1624 1651 1625 ! 1652 1626 !-- Graphic output for PROFIL 1653 IF ( time_dopr >= dt_dopr & 1654 .AND. time_since_reference_point >= skip_time_dopr ) THEN 1627 IF ( time_dopr >= dt_dopr .AND. time_since_reference_point >= skip_time_dopr ) THEN 1655 1628 IF ( dopr_n /= 0 ) CALL data_output_profiles 1656 1629 time_dopr = MOD( time_dopr, MAX( dt_dopr, dt_3d ) ) … … 1668 1641 !-- Output of spectra (formatted for use with PROFIL), in case of no 1669 1642 !-- time averaging, spectra has to be calculated before 1670 IF ( time_dosp >= dt_dosp & 1671 .AND. time_since_reference_point >= skip_time_dosp ) THEN 1643 IF ( time_dosp >= dt_dosp .AND. time_since_reference_point >= skip_time_dosp ) THEN 1672 1644 IF ( average_count_sp == 0 ) CALL calc_spectra 1673 1645 CALL data_output_spectra … … 1677 1649 ! 1678 1650 !-- 2d-data output (cross-sections) 1679 IF ( time_do2d_xy >= dt_do2d_xy & 1680 .AND. time_since_reference_point >= skip_time_do2d_xy ) THEN 1651 IF ( time_do2d_xy >= dt_do2d_xy .AND. time_since_reference_point >= skip_time_do2d_xy ) THEN 1681 1652 CALL data_output_2d( 'xy', 0 ) 1682 1653 time_do2d_xy = MOD( time_do2d_xy, MAX( dt_do2d_xy, dt_3d ) ) 1683 1654 ENDIF 1684 IF ( time_do2d_xz >= dt_do2d_xz & 1685 .AND. time_since_reference_point >= skip_time_do2d_xz ) THEN 1655 IF ( time_do2d_xz >= dt_do2d_xz .AND. time_since_reference_point >= skip_time_do2d_xz ) THEN 1686 1656 CALL data_output_2d( 'xz', 0 ) 1687 1657 time_do2d_xz = MOD( time_do2d_xz, MAX( dt_do2d_xz, dt_3d ) ) 1688 1658 ENDIF 1689 IF ( time_do2d_yz >= dt_do2d_yz & 1690 .AND. time_since_reference_point >= skip_time_do2d_yz ) THEN 1659 IF ( time_do2d_yz >= dt_do2d_yz .AND. time_since_reference_point >= skip_time_do2d_yz ) THEN 1691 1660 CALL data_output_2d( 'yz', 0 ) 1692 1661 time_do2d_yz = MOD( time_do2d_yz, MAX( dt_do2d_yz, dt_3d ) ) … … 1695 1664 ! 1696 1665 !-- 3d-data output (volume data) 1697 IF ( time_do3d >= dt_do3d & 1698 .AND. time_since_reference_point >= skip_time_do3d ) THEN 1666 IF ( time_do3d >= dt_do3d .AND. time_since_reference_point >= skip_time_do3d ) THEN 1699 1667 CALL data_output_3d( 0 ) 1700 1668 time_do3d = MOD( time_do3d, MAX( dt_do3d, dt_3d ) ) … … 1704 1672 !-- Masked data output 1705 1673 DO mid = 1, masks 1706 IF ( time_domask(mid) >= dt_domask(mid)&1707 1674 IF ( time_domask(mid) >= dt_domask(mid) & 1675 .AND. time_since_reference_point >= skip_time_domask(mid) ) THEN 1708 1676 CALL data_output_mask( 0 ) 1709 time_domask(mid) = MOD( time_domask(mid), & 1710 MAX( dt_domask(mid), dt_3d ) ) 1677 time_domask(mid) = MOD( time_domask(mid), MAX( dt_domask(mid), dt_3d ) ) 1711 1678 ENDIF 1712 1679 ENDDO … … 1714 1681 ! 1715 1682 !-- Output of time-averaged 2d/3d/masked data 1716 IF ( time_do_av >= dt_data_output_av&1717 1683 IF ( time_do_av >= dt_data_output_av & 1684 .AND. time_since_reference_point >= skip_time_data_output_av ) THEN 1718 1685 CALL average_3d_data 1719 1686 ! … … 1734 1701 !-- Output of surface data, instantaneous and averaged data 1735 1702 IF ( surface_output ) THEN 1736 IF ( time_dosurf >= dt_dosurf & 1737 .AND. time_since_reference_point >= skip_time_dosurf ) THEN 1703 IF ( time_dosurf >= dt_dosurf .AND. time_since_reference_point >= skip_time_dosurf ) THEN 1738 1704 CALL surface_data_output( 0 ) 1739 1705 time_dosurf = MOD( time_dosurf, MAX( dt_dosurf, dt_3d ) ) 1740 1706 ENDIF 1741 IF ( time_dosurf_av >= dt_dosurf_av & 1742 .AND. time_since_reference_point >= skip_time_dosurf_av ) THEN 1707 IF ( time_dosurf_av >= dt_dosurf_av .AND. time_since_reference_point >= skip_time_dosurf_av ) THEN 1743 1708 CALL surface_data_output( 1 ) 1744 1709 time_dosurf_av = MOD( time_dosurf_av, MAX( dt_dosurf_av, dt_3d ) ) … … 1749 1714 !-- Output of particle time series 1750 1715 IF ( particle_advection ) THEN 1751 IF ( time_dopts >= dt_dopts .OR. &1752 ( time_since_reference_point >= particle_advection_start .AND. &1716 IF ( time_dopts >= dt_dopts .OR. & 1717 ( time_since_reference_point >= particle_advection_start .AND. & 1753 1718 first_call_lpm ) ) THEN 1754 1719 CALL data_output_ptseries … … 1813 1778 !-- Computation and output of run control parameters. 1814 1779 !-- This is also done whenever perturbations have been imposed 1815 IF ( time_run_control >= dt_run_control .OR. &1816 timestep_scheme(1:5) /= 'runge' .OR. disturbance_created ) &1780 IF ( time_run_control >= dt_run_control .OR. & 1781 timestep_scheme(1:5) /= 'runge' .OR. disturbance_created ) & 1817 1782 THEN 1818 1783 CALL run_control 1819 1784 IF ( time_run_control >= dt_run_control ) THEN 1820 time_run_control = MOD( time_run_control, & 1821 MAX( dt_run_control, dt_3d_old ) ) 1785 time_run_control = MOD( time_run_control, MAX( dt_run_control, dt_3d_old ) ) 1822 1786 ENDIF 1823 1787 ENDIF … … 1832 1796 ENDDO ! time loop 1833 1797 1834 #if def _OPENACC1798 #if defined( _OPENACC ) 1835 1799 CALL exit_surface_arrays 1836 1800 #endif -
palm/trunk/SOURCE/tridia_solver_mod.f90
r3690 r3761 25 25 ! ----------------- 26 26 ! $Id$ 27 ! OpenACC modification to prevent compiler warning about unused variable 28 ! 29 ! 3690 2019-01-22 22:56:42Z knoop 27 30 ! OpenACC port for SPEC 28 31 ! … … 156 159 157 160 USE arrays_3d, & 158 ONLY: ddzu_pres, ddzw, rho_air_zw, tri 161 ONLY: ddzu_pres, ddzw, rho_air_zw 162 163 #if defined( _OPENACC ) 164 USE arrays_3d, & 165 ONLY: tri 166 #endif 159 167 160 168 IMPLICIT NONE
Note: See TracChangeset
for help on using the changeset viewer.