Changeset 4472 for palm/trunk/SOURCE/modules.f90
- Timestamp:
- Mar 24, 2020 12:21:00 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/modules.f90
r4461 r4472 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Additional switch added to activate calculations in flow_statistics for the 28 ! kolmogorov length scale 29 ! 30 ! 4461 2020-03-12 16:51:59Z raasch 27 31 ! +virtual_pe_grid, communicator_configurations 28 ! 32 ! 29 33 ! 4414 2020-02-19 20:16:04Z suehring 30 ! - nzb_diff_s_inner, nzb_diff_s_outer, nzb_inner,nzb_outer, nzb_s_inner, 31 ! nzb_s_outer, nzb_u_inner, nzb_u_outer, nzb_v_inner, nzb_v_outer, 34 ! - nzb_diff_s_inner, nzb_diff_s_outer, nzb_inner,nzb_outer, nzb_s_inner, 35 ! nzb_s_outer, nzb_u_inner, nzb_u_outer, nzb_v_inner, nzb_v_outer, 32 36 ! nzb_w_inner, nzb_w_outer 33 37 ! 34 ! 38 ! 35 39 ! 4360 2020-01-07 11:25:50Z suehring 36 40 ! Introduction of wall_flags_total_0, which currently sets bits based on static 37 41 ! topography information used in wall_flags_static_0 38 ! 42 ! 39 43 ! 4340 2019-12-16 08:17:03Z Giersch 40 44 ! Flag for topography closed channel flow with symmetric boundaries introduced 41 ! 45 ! 42 46 ! 4331 2019-12-10 18:25:02Z suehring 43 47 ! - do_output_at_2m, pt_2m_av 44 ! 48 ! 45 49 ! 4329 2019-12-10 15:46:36Z motisi 46 50 ! Renamed wall_flags_0 to wall_flags_static_0 47 ! 51 ! 48 52 ! 4301 2019-11-22 12:09:09Z oliver.maas 49 53 ! removed recycling_yshift 50 ! 54 ! 51 55 ! 4297 2019-11-21 10:37:50Z oliver.maas 52 56 ! changed variable type of recycling_yshift from LOGICAL to INTEGER 53 ! 57 ! 54 58 ! 4293 2019-11-12 14:44:01Z Giersch 55 59 ! Add origin_date_time 56 ! 60 ! 57 61 ! 4146 2019-08-07 07:47:36Z gronemeier 58 62 ! Added rotation_angle 59 ! 63 ! 60 64 ! 4184 2019-08-23 08:07:40Z oliver.maas 61 ! changed allocated length of recycling_method_for_thermodynamic_quantities 65 ! changed allocated length of recycling_method_for_thermodynamic_quantities 62 66 ! from 20 to 80 characters 63 ! 67 ! 64 68 ! 4183 2019-08-23 07:33:16Z oliver.maas 65 69 ! removed recycle_absolute_quantities and raq 66 70 ! added recycling_method_for_thermodynamic_quantities 67 ! 71 ! 68 72 ! 4182 2019-08-22 15:20:23Z scharf 69 73 ! Corrected "Former revisions" section 70 ! 74 ! 71 75 ! 4173 2019-08-20 12:04:06Z gronemeier 72 76 ! add vdi_internal_controls 73 ! 77 ! 74 78 ! 4172 2019-08-20 11:55:33Z oliver.maas 75 79 ! added recycle_absolute_quantities and raq 76 ! 80 ! 77 81 ! 4168 2019-08-16 13:50:17Z suehring 78 82 ! +topo_top_ind 79 ! 83 ! 80 84 ! 4131 2019-08-02 11:06:18Z monakurppa 81 85 ! Add max_pr_salsa to control_parameters. Used in creating profile output for 82 86 ! salsa. 83 ! 87 ! 84 88 ! 4110 2019-07-22 17:05:21Z suehring 85 89 ! -advc_flags_1, advc_flags_2 86 90 ! +advc_flags_m, advc_flags_s 87 ! 91 ! 88 92 ! 4109 2019-07-22 17:00:34Z suehring 89 93 ! remove old_dt 90 ! 94 ! 91 95 ! 4079 2019-07-09 18:04:41Z suehring 92 96 ! + monotonic_limiter_z 93 ! 97 ! 94 98 ! 4069 2019-07-01 14:05:51Z Giersch 95 ! Masked output running index mid has been introduced as a local variable to 99 ! Masked output running index mid has been introduced as a local variable to 96 100 ! avoid runtime error (Loop variable has been modified) in time_integration 97 ! 101 ! 98 102 ! 4017 2019-06-06 12:16:46Z schwenkel 99 103 ! increase maximum number of virtual flights 100 ! 104 ! 101 105 ! 3987 2019-05-22 09:52:13Z kanani 102 106 ! Introduce alternative switch for debug output during timestepping 103 ! 107 ! 104 108 ! 3885 2019-04-11 11:29:34Z kanani 105 ! Changes related to global restructuring of location messages and introduction 109 ! Changes related to global restructuring of location messages and introduction 106 110 ! of additional debug messages 107 ! 111 ! 108 112 ! 3871 2019-04-08 14:38:39Z knoop 109 113 ! Initialized parameter region 110 ! 114 ! 111 115 ! 3746 2019-02-16 12:41:27Z gronemeier 112 116 ! Removed most_method 113 ! 117 ! 114 118 ! 3648 2019-01-02 16:35:46Z suehring 115 119 ! -surface_data_output +surface_output … … 128 132 !------------------------------------------------------------------------------! 129 133 MODULE advection 130 134 131 135 USE kinds 132 136 … … 135 139 REAL(wp), DIMENSION(:), ALLOCATABLE :: dex !< exponential coefficient for the Bott-Chlond advection scheme 136 140 REAL(wp), DIMENSION(:), ALLOCATABLE :: eex !< exponential coefficient for the Bott-Chlond advection scheme 137 141 138 142 SAVE 139 143 … … 150 154 !------------------------------------------------------------------------------! 151 155 MODULE mas_global_attributes 152 156 153 157 USE kinds 154 158 … … 175 179 REAL(wp), DIMENSION(:), ALLOCATABLE :: c_w_m !< mean phase velocity at outflow for w-component used in radiation boundary condition 176 180 REAL(wp), DIMENSION(:), ALLOCATABLE :: c_w_m_l !< mean phase velocity at outflow for w-component used in radiation boundary condition (local subdomain value) 177 REAL(wp), DIMENSION(:), ALLOCATABLE :: ddzu !< 1/dzu 178 REAL(wp), DIMENSION(:), ALLOCATABLE :: ddzu_pres !< modified ddzu for pressure solver 179 REAL(wp), DIMENSION(:), ALLOCATABLE :: dd2zu !< 1/(dzu(k)+dzu(k+1)) 180 REAL(wp), DIMENSION(:), ALLOCATABLE :: dzu !< vertical grid size (u-grid) 181 REAL(wp), DIMENSION(:), ALLOCATABLE :: ddzw !< 1/dzw 182 REAL(wp), DIMENSION(:), ALLOCATABLE :: dzw !< vertical grid size (w-grid) 183 REAL(wp), DIMENSION(:), ALLOCATABLE :: hyp !< hydrostatic pressure 184 REAL(wp), DIMENSION(:), ALLOCATABLE :: inflow_damping_factor !< used for turbulent inflow (non-cyclic boundary conditions) 185 REAL(wp), DIMENSION(:), ALLOCATABLE :: ptdf_x !< damping factor for potential temperature in x-direction 186 REAL(wp), DIMENSION(:), ALLOCATABLE :: ptdf_y !< damping factor for potential temperature in y-direction 187 REAL(wp), DIMENSION(:), ALLOCATABLE :: pt_init !< initial profile of potential temperature 188 REAL(wp), DIMENSION(:), ALLOCATABLE :: q_init !< initial profile of total water mixing ratio 189 !< (or total water content with active cloud physics) 190 REAL(wp), DIMENSION(:), ALLOCATABLE :: rdf !< rayleigh damping factor for velocity components 191 REAL(wp), DIMENSION(:), ALLOCATABLE :: rdf_sc !< rayleigh damping factor for scalar quantities 192 REAL(wp), DIMENSION(:), ALLOCATABLE :: ref_state !< reference state of potential temperature 181 REAL(wp), DIMENSION(:), ALLOCATABLE :: ddzu !< 1/dzu 182 REAL(wp), DIMENSION(:), ALLOCATABLE :: ddzu_pres !< modified ddzu for pressure solver 183 REAL(wp), DIMENSION(:), ALLOCATABLE :: dd2zu !< 1/(dzu(k)+dzu(k+1)) 184 REAL(wp), DIMENSION(:), ALLOCATABLE :: dzu !< vertical grid size (u-grid) 185 REAL(wp), DIMENSION(:), ALLOCATABLE :: ddzw !< 1/dzw 186 REAL(wp), DIMENSION(:), ALLOCATABLE :: dzw !< vertical grid size (w-grid) 187 REAL(wp), DIMENSION(:), ALLOCATABLE :: hyp !< hydrostatic pressure 188 REAL(wp), DIMENSION(:), ALLOCATABLE :: inflow_damping_factor !< used for turbulent inflow (non-cyclic boundary conditions) 189 REAL(wp), DIMENSION(:), ALLOCATABLE :: ptdf_x !< damping factor for potential temperature in x-direction 190 REAL(wp), DIMENSION(:), ALLOCATABLE :: ptdf_y !< damping factor for potential temperature in y-direction 191 REAL(wp), DIMENSION(:), ALLOCATABLE :: pt_init !< initial profile of potential temperature 192 REAL(wp), DIMENSION(:), ALLOCATABLE :: q_init !< initial profile of total water mixing ratio 193 !< (or total water content with active cloud physics) 194 REAL(wp), DIMENSION(:), ALLOCATABLE :: rdf !< rayleigh damping factor for velocity components 195 REAL(wp), DIMENSION(:), ALLOCATABLE :: rdf_sc !< rayleigh damping factor for scalar quantities 196 REAL(wp), DIMENSION(:), ALLOCATABLE :: ref_state !< reference state of potential temperature 193 197 !< (and density in case of ocean simulation) 194 198 REAL(wp), DIMENSION(:), ALLOCATABLE :: s_init !< initial profile of passive scalar concentration … … 215 219 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: diss_s_diss !< artificial numerical dissipation flux at south face of grid box - TKE dissipation 216 220 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: diss_s_e !< artificial numerical dissipation flux at south face of grid box - subgrid-scale TKE 217 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: diss_s_nc !< artificial numerical dissipation flux at south face of grid box - clouddrop-number concentration 218 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: diss_s_nr !< artificial numerical dissipation flux at south face of grid box - raindrop-number concentration 219 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: diss_s_pt !< artificial numerical dissipation flux at south face of grid box - potential temperature 220 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: diss_s_q !< artificial numerical dissipation flux at south face of grid box - mixing ratio 221 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: diss_s_qc !< artificial numerical dissipation flux at south face of grid box - cloudwater 222 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: diss_s_qr !< artificial numerical dissipation flux at south face of grid box - rainwater 221 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: diss_s_nc !< artificial numerical dissipation flux at south face of grid box - clouddrop-number concentration 222 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: diss_s_nr !< artificial numerical dissipation flux at south face of grid box - raindrop-number concentration 223 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: diss_s_pt !< artificial numerical dissipation flux at south face of grid box - potential temperature 224 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: diss_s_q !< artificial numerical dissipation flux at south face of grid box - mixing ratio 225 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: diss_s_qc !< artificial numerical dissipation flux at south face of grid box - cloudwater 226 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: diss_s_qr !< artificial numerical dissipation flux at south face of grid box - rainwater 223 227 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: diss_s_s !< artificial numerical dissipation flux at south face of grid box - passive scalar 224 228 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: diss_s_sa !< artificial numerical dissipation flux at south face of grid box - salinity … … 230 234 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: flux_s_diss !< 6th-order advective flux at south face of grid box - TKE dissipation 231 235 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: flux_s_e !< 6th-order advective flux at south face of grid box - subgrid-scale TKE 232 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: flux_s_nc !< 6th-order advective flux at south face of grid box - clouddrop-number concentration 233 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: flux_s_nr !< 6th-order advective flux at south face of grid box - raindrop-number concentration 234 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: flux_s_pt !< 6th-order advective flux at south face of grid box - potential temperature 235 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: flux_s_q !< 6th-order advective flux at south face of grid box - mixing ratio 236 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: flux_s_nc !< 6th-order advective flux at south face of grid box - clouddrop-number concentration 237 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: flux_s_nr !< 6th-order advective flux at south face of grid box - raindrop-number concentration 238 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: flux_s_pt !< 6th-order advective flux at south face of grid box - potential temperature 239 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: flux_s_q !< 6th-order advective flux at south face of grid box - mixing ratio 236 240 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: flux_s_qc !< 6th-order advective flux at south face of grid box - cloudwater 237 241 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: flux_s_qr !< 6th-order advective flux at south face of grid box - rainwater … … 246 250 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: mean_inflow_profiles !< used for turbulent inflow (non-cyclic boundary conditions) 247 251 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: precipitation_amount !< precipitation amount due to gravitational settling (bulk microphysics) 248 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: pt_slope_ref !< potential temperature in rotated coordinate system 249 !< (in case of sloped surface) 252 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: pt_slope_ref !< potential temperature in rotated coordinate system 253 !< (in case of sloped surface) 250 254 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: total_2d_a !< horizontal array to store the total domain data, used for atmosphere-ocean coupling (atmosphere data) 251 255 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: total_2d_o !< horizontal array to store the total domain data, used for atmosphere-ocean coupling (ocean data) 252 256 253 257 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: d !< divergence 254 258 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: de_dx !< gradient of sgs tke in x-direction (lpm) … … 281 285 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: flux_l_v !< 6th-order advective flux at south face of grid box - v-component 282 286 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: flux_l_w !< 6th-order advective flux at south face of grid box - w-component 283 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: kh !< eddy diffusivity for heat 287 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: kh !< eddy diffusivity for heat 284 288 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: km !< eddy diffusivity for momentum 285 289 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: prr !< rain rate … … 309 313 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: prho_1 !< pointer for swapping of timelevels for respective quantity 310 314 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: nc_1 !< pointer for swapping of timelevels for respective quantity 311 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: nc_2 !< pointer for swapping of timelevels for respective quantity 315 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: nc_2 !< pointer for swapping of timelevels for respective quantity 312 316 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: nc_3 !< pointer for swapping of timelevels for respective quantity 313 317 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: nr_1 !< pointer for swapping of timelevels for respective quantity 314 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: nr_2 !< pointer for swapping of timelevels for respective quantity 318 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: nr_2 !< pointer for swapping of timelevels for respective quantity 315 319 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: nr_3 !< pointer for swapping of timelevels for respective quantity 316 320 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: pt_1 !< pointer for swapping of timelevels for respective quantity … … 426 430 !------------------------------------------------------------------------------! 427 431 MODULE averaging 428 432 429 433 USE kinds 430 434 … … 458 462 !< (or total water content with active cloud physics) 459 463 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: qc_av !< avg. cloud water content 460 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: ql_av !< avg. liquid water content 461 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: ql_c_av !< avg. change in liquid water content due to 464 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: ql_av !< avg. liquid water content 465 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: ql_c_av !< avg. change in liquid water content due to 462 466 !< condensation/evaporation during last time step 463 467 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: ql_v_av !< avg. volume of liquid water … … 468 472 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: s_av !< avg. passive scalar 469 473 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: sa_av !< avg. salinity 470 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: u_av !< avg. horizontal velocity component u 474 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: u_av !< avg. horizontal velocity component u 471 475 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: v_av !< avg. horizontal velocity component v 472 476 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: vpt_av !< avg. virtual potential temperature 473 477 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: w_av !< avg. vertical velocity component 474 478 475 479 END MODULE averaging 476 480 477 481 478 482 !------------------------------------------------------------------------------! 479 483 ! Description: … … 489 493 LOGICAL :: opened_before !< file is currently closed, but has been openend before 490 494 END TYPE file_status 491 495 492 496 INTEGER, PARAMETER :: mask_xyz_dimension = 100 !< limit of mask dimensions (100 points in each direction) 493 497 INTEGER, PARAMETER :: max_masks = 50 !< maximum number of masks … … 532 536 CHARACTER (LEN=20) :: bc_uv_b = 'dirichlet' !< namelist parameter 533 537 CHARACTER (LEN=20) :: bc_uv_t = 'dirichlet' !< namelist parameter 534 CHARACTER (LEN=20) :: coupling_mode = 'uncoupled' !< coupling mode for atmosphere-ocean coupling 538 CHARACTER (LEN=20) :: coupling_mode = 'uncoupled' !< coupling mode for atmosphere-ocean coupling 535 539 CHARACTER (LEN=20) :: coupling_mode_remote = 'uncoupled' !< coupling mode of the remote process in case of coupled atmosphere-ocean runs 536 540 CHARACTER (LEN=20) :: dissipation_1d = 'detering' !< namelist parameter … … 539 543 CHARACTER (LEN=20) :: random_generator = 'random-parallel' !< namelist parameter 540 544 CHARACTER (LEN=80) :: recycling_method_for_thermodynamic_quantities = 'turbulent_fluctuation' !< namelist parameter 541 CHARACTER (LEN=20) :: reference_state = 'initial_profile' !< namelist parameter 542 CHARACTER (LEN=20) :: timestep_scheme = 'runge-kutta-3' !< namelist parameter 545 CHARACTER (LEN=20) :: reference_state = 'initial_profile' !< namelist parameter 546 CHARACTER (LEN=20) :: timestep_scheme = 'runge-kutta-3' !< namelist parameter 543 547 CHARACTER (LEN=20) :: turbulence_closure = 'Moeng_Wyngaard' !< namelist parameter 544 CHARACTER (LEN=40) :: topography = 'flat' !< namelist parameter 548 CHARACTER (LEN=40) :: topography = 'flat' !< namelist parameter 545 549 CHARACTER (LEN=64) :: host = '????' !< configuration identifier as given by palmrun option -c, ENVPAR namelist parameter provided by palmrun 546 550 CHARACTER (LEN=80) :: log_message !< user-defined message for debugging (sse data_log.f90) … … 554 558 CHARACTER (LEN=varnamelength), DIMENSION(500) :: data_output = ' ' !< namelist parameter 555 559 CHARACTER (LEN=varnamelength), DIMENSION(500) :: data_output_user = ' ' !< namelist parameter 556 CHARACTER (LEN=varnamelength), DIMENSION(500) :: doav = ' ' !< label array for multi-dimensional, 560 CHARACTER (LEN=varnamelength), DIMENSION(500) :: doav = ' ' !< label array for multi-dimensional, 557 561 !< averaged output quantities 558 562 559 563 CHARACTER (LEN=varnamelength), DIMENSION(max_masks,100) :: data_output_masks = ' ' !< namelist parameter 560 564 CHARACTER (LEN=varnamelength), DIMENSION(max_masks,100) :: data_output_masks_user = ' ' !< namelist parameter 561 565 562 566 CHARACTER (LEN=varnamelength), DIMENSION(300) :: data_output_pr = ' ' !< namelist parameter 563 567 564 568 CHARACTER (LEN=varnamelength), DIMENSION(200) :: data_output_pr_user = ' ' !< namelist parameter 565 566 CHARACTER (LEN=varnamelength), DIMENSION(max_masks,0:1,100) :: domask = ' ' !< label array for multi-dimensional, 569 570 CHARACTER (LEN=varnamelength), DIMENSION(max_masks,0:1,100) :: domask = ' ' !< label array for multi-dimensional, 567 571 !< masked output quantities 568 572 569 573 CHARACTER (LEN=varnamelength), DIMENSION(0:1,500) :: do2d = ' ' !< label array for 2d output quantities 570 574 CHARACTER (LEN=varnamelength), DIMENSION(0:1,500) :: do3d = ' ' !< label array for 3d output quantities … … 572 576 INTEGER(iwp), PARAMETER :: fl_max = 500 !< maximum number of virtual-flight measurements 573 577 INTEGER(iwp), PARAMETER :: var_fl_max = 20 !< maximum number of different sampling variables in virtual flight measurements 574 578 575 579 INTEGER(iwp) :: abort_mode = 1 !< abort condition (nested runs) 576 580 INTEGER(iwp) :: agt_time_count = 0 !< number of output intervals for agent data output … … 642 646 INTEGER(iwp) :: timestep_count = 0 !< number of timesteps carried out since the beginning of the initial run 643 647 INTEGER(iwp) :: y_shift = 0 !< namelist parameter 644 648 645 649 INTEGER(iwp) :: dist_nxl(0:1) !< left boundary of disturbance region 646 650 INTEGER(iwp) :: dist_nxr(0:1) !< right boundary of disturbance region … … 662 666 INTEGER(iwp) :: pt_vertical_gradient_level_ind(10) = -9999 !< grid index values of pt_vertical_gradient_level(s) 663 667 INTEGER(iwp) :: q_vertical_gradient_level_ind(10) = -9999 !< grid index values of q_vertical_gradient_level(s) 664 INTEGER(iwp) :: s_vertical_gradient_level_ind(10) = -9999 !< grid index values of s_vertical_gradient_level(s) 668 INTEGER(iwp) :: s_vertical_gradient_level_ind(10) = -9999 !< grid index values of s_vertical_gradient_level(s) 665 669 INTEGER(iwp) :: section(100,3) !< collective array for section_xy/xz/yz 666 670 INTEGER(iwp) :: section_xy(100) = -9999 !< namelist parameter … … 739 743 LOGICAL :: humidity_remote = .FALSE. !< switch for receiving near-surface humidity flux (atmosphere-ocean coupling) 740 744 LOGICAL :: indoor_model = .FALSE. !< switch for indoor-climate and energy-demand model 745 LOGICAL :: kolmogorov_length_scale = .FALSE. !< switch to activate calculations in flow_statistics for the kolmogorov length scale 741 746 LOGICAL :: large_scale_forcing = .FALSE. !< namelist parameter 742 747 LOGICAL :: large_scale_subsidence = .FALSE. !< namelist parameter … … 750 755 LOGICAL :: mg_switch_to_pe0 = .FALSE. !< internal multigrid switch for steering the ghost point exchange in case that data has been collected on PE0 751 756 LOGICAL :: monotonic_limiter_z = .FALSE. !< use monotonic flux limiter for vertical scalar advection 752 LOGICAL :: nesting_offline = .FALSE. !< flag controlling offline nesting in COSMO model 757 LOGICAL :: nesting_offline = .FALSE. !< flag controlling offline nesting in COSMO model 753 758 LOGICAL :: neutral = .FALSE. !< namelist parameter 754 759 LOGICAL :: nudging = .FALSE. !< namelist parameter … … 804 809 LOGICAL, DIMENSION(max_masks) :: mask_surface = .FALSE. !< flag for surface-following masked output 805 810 806 REAL(wp) :: advected_distance_x = 0.0_wp !< advected distance of model domain along x 807 !< (galilei transformation) 808 REAL(wp) :: advected_distance_y = 0.0_wp !< advected distance of model domain along y 811 REAL(wp) :: advected_distance_x = 0.0_wp !< advected distance of model domain along x 812 !< (galilei transformation) 813 REAL(wp) :: advected_distance_y = 0.0_wp !< advected distance of model domain along y 809 814 !< (galilei transformation) 810 815 REAL(wp) :: alpha_surface = 0.0_wp !< namelist parameter … … 830 835 REAL(wp) :: cos_alpha_surface !< cosine of alpha_surface 831 836 REAL(wp) :: coupling_start_time = 0.0_wp !< namelist parameter 832 REAL(wp) :: days_since_reference_point = 0.0_wp !< days after atmosphere-ocean coupling has been activated, 833 !< or after spinup phase of LSM has been finished 837 REAL(wp) :: days_since_reference_point = 0.0_wp !< days after atmosphere-ocean coupling has been activated, 838 !< or after spinup phase of LSM has been finished 834 839 REAL(wp) :: disturbance_amplitude = 0.25_wp !< namelist parameter 835 840 REAL(wp) :: disturbance_energy_limit = 0.01_wp !< namelist parameter … … 886 891 REAL(wp) :: pt_damping_width = 0.0_wp !< namelist parameter 887 892 REAL(wp) :: pt_reference = 9999999.9_wp !< namelist parameter 888 REAL(wp) :: pt_slope_offset = 0.0_wp !< temperature difference between left and right 893 REAL(wp) :: pt_slope_offset = 0.0_wp !< temperature difference between left and right 889 894 !< boundary of total domain 890 895 REAL(wp) :: pt_surface = 300.0_wp !< namelist parameter … … 935 940 REAL(wp) :: time_do3d = 0.0_wp !< time since last 3d output 936 941 REAL(wp) :: time_do_av = 0.0_wp !< time since last averaged-data output 937 REAL(wp) :: time_do_sla = 0.0_wp !< time since last 942 REAL(wp) :: time_do_sla = 0.0_wp !< time since last 938 943 REAL(wp) :: time_restart = 9999999.9_wp !< time at which run shall be terminated and restarted 939 944 REAL(wp) :: time_run_control = 0.0_wp !< time since last RUN_CONTROL output … … 949 954 REAL(wp) :: tunnel_width_y = 9999999.9_wp !< namelist parameter 950 955 REAL(wp) :: tunnel_wall_depth = 9999999.9_wp !< namelist parameter 951 REAL(wp) :: ug_surface = 0.0_wp !< namelist parameter 952 REAL(wp) :: u_bulk = 0.0_wp !< namelist parameter 956 REAL(wp) :: ug_surface = 0.0_wp !< namelist parameter 957 REAL(wp) :: u_bulk = 0.0_wp !< namelist parameter 953 958 REAL(wp) :: u_gtrans = 0.0_wp !< transformed wind component (galilei transformation) 954 959 REAL(wp) :: vg_surface = 0.0_wp !< namelist parameter … … 995 1000 REAL(wp) :: wall_humidityflux(0:5) = 0.0_wp !< namelist parameter 996 1001 REAL(wp) :: wall_salinityflux(0:5) = 0.0_wp !< namelist parameter 997 REAL(wp) :: wall_scalarflux(0:5) = 0.0_wp !< namelist parameter 998 REAL(wp) :: subs_vertical_gradient(10) = 0.0_wp !< namelist parameter 1002 REAL(wp) :: wall_scalarflux(0:5) = 0.0_wp !< namelist parameter 1003 REAL(wp) :: subs_vertical_gradient(10) = 0.0_wp !< namelist parameter 999 1004 REAL(wp) :: subs_vertical_gradient_level(10) = -9999999.9_wp !< namelist parameter 1000 1005 … … 1004 1009 REAL(wp), DIMENSION(max_masks,mask_xyz_dimension) :: mask_y = -1.0_wp !< namelist parameter 1005 1010 REAL(wp), DIMENSION(max_masks,mask_xyz_dimension) :: mask_z = -1.0_wp !< namelist parameter 1006 1011 1007 1012 REAL(wp), DIMENSION(max_masks,3) :: mask_x_loop = -1.0_wp !< namelist parameter 1008 1013 REAL(wp), DIMENSION(max_masks,3) :: mask_y_loop = -1.0_wp !< namelist parameter 1009 1014 REAL(wp), DIMENSION(max_masks,3) :: mask_z_loop = -1.0_wp !< namelist parameter 1010 1015 1011 1016 ! 1012 1017 !-- internal mask arrays ("mask,dimension,selection") … … 1030 1035 REAL(wp) :: ddx !< 1/dx 1031 1036 REAL(wp) :: ddx2 !< 1/dx2 1032 REAL(wp) :: dx = 1.0_wp !< horizontal grid size (along x-direction) 1037 REAL(wp) :: dx = 1.0_wp !< horizontal grid size (along x-direction) 1033 1038 REAL(wp) :: dx2 !< dx*dx 1034 1039 REAL(wp) :: ddy !< 1/dy … … 1040 1045 REAL(wp), DIMENSION(:), ALLOCATABLE :: ddy2_mg !< 1/dy_l**2 (dy_l: grid spacing along y on different multigrid level) 1041 1046 1042 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zu_s_inner !< height of topography top on scalar grid 1043 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zw_w_inner !< height of topography top on w grid 1047 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zu_s_inner !< height of topography top on scalar grid 1048 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zw_w_inner !< height of topography top on w grid 1044 1049 1045 1050 SAVE … … 1090 1095 INTEGER(idp), DIMENSION(:), ALLOCATABLE :: ngp_3d !< number of grid points of the total domain 1091 1096 INTEGER(idp), DIMENSION(:), ALLOCATABLE :: ngp_3d_inner !< ! need to have 64 bit for grids > 2E9 1092 1097 1093 1098 INTEGER(iwp), DIMENSION(:), ALLOCATABLE :: ngp_2dh !< number of grid points of a horizontal cross section through the total domain 1094 1099 INTEGER(iwp), DIMENSION(:), ALLOCATABLE :: nxl_mg !< left-most grid index of subdomain on different multigrid level … … 1105 1110 INTEGER(iwp), DIMENSION(:,:,:), POINTER :: flags !< pointer to wall_flags_1-10 1106 1111 1107 INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: wall_flags_1 !< topograpyh masking flag on multigrid level 1 1108 INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: wall_flags_2 !< topograpyh masking flag on multigrid level 2 1109 INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: wall_flags_3 !< topograpyh masking flag on multigrid level 3 1110 INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: wall_flags_4 !< topograpyh masking flag on multigrid level 4 1111 INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: wall_flags_5 !< topograpyh masking flag on multigrid level 5 1112 INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: wall_flags_6 !< topograpyh masking flag on multigrid level 6 1113 INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: wall_flags_7 !< topograpyh masking flag on multigrid level 7 1114 INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: wall_flags_8 !< topograpyh masking flag on multigrid level 8 1115 INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: wall_flags_9 !< topograpyh masking flag on multigrid level 9 1116 INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: wall_flags_10 !< topograpyh masking flag on multigrid level 10 1112 INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: wall_flags_1 !< topograpyh masking flag on multigrid level 1 1113 INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: wall_flags_2 !< topograpyh masking flag on multigrid level 2 1114 INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: wall_flags_3 !< topograpyh masking flag on multigrid level 3 1115 INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: wall_flags_4 !< topograpyh masking flag on multigrid level 4 1116 INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: wall_flags_5 !< topograpyh masking flag on multigrid level 5 1117 INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: wall_flags_6 !< topograpyh masking flag on multigrid level 6 1118 INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: wall_flags_7 !< topograpyh masking flag on multigrid level 7 1119 INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: wall_flags_8 !< topograpyh masking flag on multigrid level 8 1120 INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: wall_flags_9 !< topograpyh masking flag on multigrid level 9 1121 INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: wall_flags_10 !< topograpyh masking flag on multigrid level 10 1117 1122 1118 1123 INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE :: advc_flags_m !< flags used to degrade order of advection scheme for momentum … … 1221 1226 CHARACTER(LEN=2) :: send_receive = 'al' !< 1222 1227 CHARACTER(LEN=7) :: myid_char = '' !< character string containing processor id number 1223 1228 1224 1229 INTEGER(iwp) :: comm1dx !< communicator for domain decomposition along x 1225 1230 INTEGER(iwp) :: comm1dy !< communicator for domain decomposition along y … … 1256 1261 INTEGER(iwp) :: tasks_per_node = -9999 !< MPI tasks per compute node 1257 1262 INTEGER(iwp) :: threads_per_task = 1 !< number of OPENMP threads per MPI task 1258 INTEGER(iwp) :: type_x !< derived MPI datatype for 2-D ghost-point exchange - north / south 1259 INTEGER(iwp) :: type_xy !< derived MPI datatype for 2-D ghost-point exchange - north / south 1260 INTEGER(iwp) :: type_y !< derived MPI datatype for 2-D exchange in atmosphere-ocean coupler 1263 INTEGER(iwp) :: type_x !< derived MPI datatype for 2-D ghost-point exchange - north / south 1264 INTEGER(iwp) :: type_xy !< derived MPI datatype for 2-D ghost-point exchange - north / south 1265 INTEGER(iwp) :: type_y !< derived MPI datatype for 2-D exchange in atmosphere-ocean coupler 1261 1266 1262 1267 INTEGER(iwp) :: pdims(2) = 1 !< number of processors along x-y dimension 1263 1268 INTEGER(iwp) :: req(100) !< MPI return variable indicating if send-receive operation is finished 1264 1269 1265 INTEGER(iwp), DIMENSION(:,:), ALLOCATABLE :: hor_index_bounds !< horizontal index bounds 1270 INTEGER(iwp), DIMENSION(:,:), ALLOCATABLE :: hor_index_bounds !< horizontal index bounds 1266 1271 INTEGER(iwp), DIMENSION(:,:), ALLOCATABLE :: hor_index_bounds_previous_run !< horizontal index bounds of previous run 1267 1272 … … 1283 1288 INTEGER(iwp) :: pcoord(2) !< PE coordinates along x and y 1284 1289 INTEGER(iwp) :: status(MPI_STATUS_SIZE) !< MPI status variable used in various MPI calls 1285 1290 1286 1291 INTEGER(iwp), DIMENSION(MPI_STATUS_SIZE,100) :: wait_stat !< MPI status variable used in various MPI calls 1287 1292 1288 1293 INTEGER(iwp) :: type_x_byte !< derived MPI datatype for 2-D 8-bit integer ghost-point exchange - north / south 1289 1294 INTEGER(iwp) :: type_y_byte !< derived MPI datatype for 2-D integer ghost-point exchange - left / right 1290 1295 1291 1296 INTEGER(iwp), DIMENSION(:), ALLOCATABLE :: ngp_xz !< number of ghost points in xz-plane on different multigrid level 1292 1297 INTEGER(iwp), DIMENSION(:), ALLOCATABLE :: ngp_xz_int !< number of ghost points in xz-plane on different multigrid level … … 1297 1302 INTEGER(iwp), DIMENSION(:), ALLOCATABLE :: type_xz_int !< derived MPI datatype for 3-D integer ghost-point exchange - north / south 1298 1303 INTEGER(iwp), DIMENSION(:), ALLOCATABLE :: type_y_int !< derived MPI datatype for 2-D integer ghost-point exchange - left / right 1299 INTEGER(iwp), DIMENSION(:), ALLOCATABLE :: type_yz !< derived MPI datatype for 3-D integer ghost-point exchange - left / right 1304 INTEGER(iwp), DIMENSION(:), ALLOCATABLE :: type_yz !< derived MPI datatype for 3-D integer ghost-point exchange - left / right 1300 1305 INTEGER(iwp), DIMENSION(:), ALLOCATABLE :: type_yz_int !< derived MPI datatype for 3-D integer ghost-point exchange - left / right 1301 1306 … … 1354 1359 INTEGER(iwp) :: dopr_index(300) = 0 !< index number of respective profile quantity 1355 1360 INTEGER(iwp) :: dopr_initial_index(300) = 0 !< index number of initial profiles to be output 1356 1361 1357 1362 SAVE 1358 1363 … … 1370 1375 CHARACTER (LEN=40) :: region(0:9) = & !< label for statistic region 1371 1376 'total domain ' 1372 1377 1373 1378 INTEGER(iwp) :: pr_palm = 200 !< maximum number of output profiles 1374 1379 INTEGER(iwp) :: statistic_regions = 0 !< identifier for statistic regions … … 1377 1382 INTEGER(iwp) :: v_max_ijk(3) = -1 !< index values (i,j,k) of location where v_max occurs 1378 1383 INTEGER(iwp) :: w_max_ijk(3) = -1 !< index values (i,j,k) of location where w_max occurs 1379 1384 1380 1385 LOGICAL :: flow_statistics_called = .FALSE. !< flag that tells other routines if flow statistics was executed 1381 1386 !< (after each timestep) 1382 1387 1383 1388 REAL(wp) :: u_max = 0.0_wp !< maximum of absolute u-veloctiy in entire domain 1384 1389 REAL(wp) :: v_max = 0.0_wp !< maximum of absolute v-veloctiy in entire domain … … 1386 1391 1387 1392 REAL(wp), DIMENSION(2) :: z_i !< inversion height 1388 1393 1389 1394 REAL(wp), DIMENSION(:), ALLOCATABLE :: mean_surface_level_height !< mean surface level height for the different statistic regions 1390 REAL(wp), DIMENSION(:), ALLOCATABLE :: sums_divnew_l !< subdomain sum (_l) of divergence after pressure 1395 REAL(wp), DIMENSION(:), ALLOCATABLE :: sums_divnew_l !< subdomain sum (_l) of divergence after pressure 1391 1396 !< solver call (new) 1392 1397 REAL(wp), DIMENSION(:), ALLOCATABLE :: sums_divold_l !< subdomain sum (_l) of divergence before pressure … … 1394 1399 REAL(wp), DIMENSION(:), ALLOCATABLE :: weight_substep !< weighting factor for substeps in timestepping 1395 1400 REAL(wp), DIMENSION(:), ALLOCATABLE :: weight_pres !< substep weighting factor for pressure solver 1396 1401 1397 1402 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: sums !< global sum array for the various output quantities 1398 1403 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: sums_salsa_ws_l !< subdomain sum of vertical salsa flux w's' (5th-order advection scheme only) … … 1413 1418 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: sums_wsss_ws_l !< subdomain sum of vertical passive scalar flux w's' (5th-order advection scheme only) 1414 1419 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: sums_ls_l !< subdomain sum of large scale forcing and nudging tendencies 1415 1420 1416 1421 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: hom_sum !< sum array for horizontal mean 1417 1422 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: rmask !< REAL flag array (0.0 or 1.0) for statistic regions 1418 1423 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: sums_l !< subdomain sum (_l) gathered for various quantities 1419 1424 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: sums_l_l !< subdomain sum (_l) of mixing length from diffusivities 1420 1425 1421 1426 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: hom !< horizontal mean of various quantities (profiles/timeseries) 1422 1427 … … 1452 1457 INTEGER(iwp) :: nzt_y !< internal index bound for transpositions 1453 1458 INTEGER(iwp) :: nzt_yd !< internal index bound for transpositions 1454 1459 1455 1460 SAVE 1456 1461
Note: See TracChangeset
for help on using the changeset viewer.