Changeset 2312 for palm/trunk/SOURCE/mod_particle_attributes.f90
- Timestamp:
- Jul 14, 2017 8:26:51 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/mod_particle_attributes.f90
r2305 r2312 20 20 ! Current revisions: 21 21 ! ------------------ 22 ! 23 ! 22 ! 23 ! 24 24 ! Former revisions: 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Aerosol initialization improved. 28 ! 29 ! 2305 2017-07-06 11:18:47Z hoffmann 27 30 ! Improved calculation of particle IDs. 28 ! 31 ! 29 32 ! 2278 2017-06-12 13:08:18Z schwenkel 30 33 ! Added comments 31 ! 34 ! 32 35 ! 2265 2017-06-08 16:58:28Z schwenkel 33 36 ! Unused variables removed. 34 ! 37 ! 35 38 ! 2263 2017-06-08 14:59:01Z schwenkel 36 39 ! Implemented splitting and merging algorithm 37 ! 40 ! 38 41 ! 2183 2017-03-17 14:29:15Z schwenkel 39 42 ! 40 43 ! 2182 2017-03-17 14:27:40Z schwenkel 41 44 ! Added parameters for simplified particle initialization. 42 ! 45 ! 43 46 ! 2122 2017-01-18 12:22:54Z hoffmann 44 47 ! Calculation of particle ID … … 48 51 ! 2000 2016-08-20 18:09:15Z knoop 49 52 ! Forced header and separation lines into 80 columns 50 ! 53 ! 51 54 ! 1936 2016-06-13 13:37:44Z suehring 52 55 ! +deallocate_memory, step_dealloc … … 71 74 ! 72 75 ! 1727 2015-11-20 07:22:02Z knoop 73 ! Bugfix: Cause of syntax warning gfortran preprocessor removed 74 ! 76 ! Bugfix: Cause of syntax warning gfortran preprocessor removed 77 ! 75 78 ! 1682 2015-10-07 23:56:08Z knoop 76 ! Code annotations made doxygen readable 79 ! Code annotations made doxygen readable 77 80 ! 78 81 ! 1575 2015-03-27 09:56:27Z raasch … … 88 91 !------------------------------------------------------------------------------! 89 92 MODULE particle_attributes 90 93 91 94 92 95 USE kinds 93 96 94 CHARACTER(LEN=15) :: bc_par_lr = 'cyclic' !< left/right boundary condition 95 CHARACTER(LEN=15) :: bc_par_ns = 'cyclic' !< north/south boundary condition 96 CHARACTER(LEN=15) :: bc_par_b = 'reflect' !< bottom boundary condition 97 CHARACTER(LEN=15) :: bc_par_t = 'absorb' !< top boundary condition 98 CHARACTER(LEN=15) :: collision_algorithm = 'all_or_nothing' !< collision algorithm 99 CHARACTER(LEN=15) :: collision_kernel = 'none' !< collision kernel 100 CHARACTER(LEN=5) :: splitting_function = 'gamma' !< function for calculation critical weighting factor 101 CHARACTER(LEN=5) :: splitting_mode = 'const' !< splitting mode 102 103 104 INTEGER(iwp) :: deleted_particles = 0 !< number of deleted particles per time step 97 CHARACTER(LEN=15) :: aero_type = 'maritime' !< aerosol type 98 CHARACTER(LEN=15) :: bc_par_lr = 'cyclic' !< left/right boundary condition 99 CHARACTER(LEN=15) :: bc_par_ns = 'cyclic' !< north/south boundary condition 100 CHARACTER(LEN=15) :: bc_par_b = 'reflect' !< bottom boundary condition 101 CHARACTER(LEN=15) :: bc_par_t = 'absorb' !< top boundary condition 102 CHARACTER(LEN=15) :: collision_kernel = 'none' !< collision kernel 103 CHARACTER(LEN=5) :: splitting_function = 'gamma' !< function for calculation critical weighting factor 104 CHARACTER(LEN=5) :: splitting_mode = 'const' !< splitting mode 105 106 INTEGER(iwp) :: deleted_particles = 0 !< number of deleted particles per time step 105 107 INTEGER(iwp) :: dissipation_classes = 10 !< namelist parameter (see documentation) 106 108 INTEGER(iwp) :: ibc_par_b !< particle bottom boundary condition dummy … … 113 115 INTEGER(iwp) :: max_number_particles_per_gridbox = 100 !< namelist parameter (see documentation) 114 116 INTEGER(iwp) :: merge_drp = 0 !< number of merged droplets 115 INTEGER(iwp) :: min_nr_particle = 50 !< namelist parameter (see documentation) 117 INTEGER(iwp) :: min_nr_particle = 50 !< namelist parameter (see documentation) 116 118 INTEGER(iwp) :: new_particles = 0 !< number of new particles 117 INTEGER(iwp) :: n_max = 100 !< number of radii bin for splitting functions 118 INTEGER(iwp) :: number_of_particles = 0 !< number of particles for each grid box (3d array is saved on prt_count) 119 INTEGER(iwp) :: number_of_particle_groups = 1 !< namelist parameter (see documentation) 120 INTEGER(iwp) :: number_of_sublayers = 20 !< number of sublayers for particle velocities betwenn surface and first grid level 121 INTEGER(iwp) :: number_particles_per_gridbox = -1 !< namelist parameter (see documentation) 122 INTEGER(iwp) :: offset_ocean_nzt = 0 !< in case of oceans runs, the vertical index calculations need an offset 119 INTEGER(iwp) :: n_max = 100 !< number of radii bin for splitting functions 120 INTEGER(iwp) :: number_of_particles = 0 !< number of particles for each grid box (3d array is saved on prt_count) 121 INTEGER(iwp) :: number_of_particle_groups = 1 !< namelist parameter (see documentation) 122 INTEGER(iwp) :: number_of_sublayers = 20 !< number of sublayers for particle velocities betwenn surface and first grid level 123 INTEGER(iwp) :: number_particles_per_gridbox = -1 !< namelist parameter (see documentation) 124 INTEGER(iwp) :: offset_ocean_nzt = 0 !< in case of oceans runs, the vertical index calculations need an offset 123 125 INTEGER(iwp) :: offset_ocean_nzt_m1 = 0 !< in case of oceans runs, the vertical index calculations need an offset 124 126 INTEGER(iwp) :: particles_per_point = 1 !< namelist parameter (see documentation) … … 130 132 INTEGER(iwp) :: sum_merge_drp = 0 !< sum of merged super droplets 131 133 INTEGER(iwp) :: sum_new_particles = 0 !< sum of created particles (in splitting algorithm) 132 INTEGER(iwp) :: total_number_of_particles !< total number of particles in the whole model domain 134 INTEGER(iwp) :: total_number_of_particles !< total number of particles in the whole model domain 133 135 INTEGER(iwp) :: trlp_count_sum !< parameter for particle exchange of PEs 134 136 INTEGER(iwp) :: trlp_count_recv_sum !< parameter for particle exchange of PEs … … 144 146 INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE :: prt_count !< 3d array of number of particles of every grid box 145 147 146 LOGICAL :: all_or_nothing = .FALSE. !< flag for collision algorithm 147 LOGICAL :: average_impact = .FALSE. !< flag for collision algortihm 148 LOGICAL :: curvature_solution_effects = .FALSE. !< namelist parameter (see documentation) 149 LOGICAL :: deallocate_memory = .TRUE. !< namelist parameter (see documentation) 148 LOGICAL :: curvature_solution_effects = .FALSE. !< namelist parameter (see documentation) 149 LOGICAL :: deallocate_memory = .TRUE. !< namelist parameter (see documentation) 150 150 LOGICAL :: hall_kernel = .FALSE. !< flag for collision kernel 151 LOGICAL :: init_aerosol_probabilistic = .FALSE. !< namelist parameter (see documentation)152 151 LOGICAL :: merging = .FALSE. !< namelist parameter (see documentation) 153 LOGICAL :: monodisperse_aerosols = .FALSE. !< namelist parameter (see documentation)154 152 LOGICAL :: particle_advection = .FALSE. !< parameter to steer the advection of particles 155 LOGICAL :: random_start_position = .FALSE. !< namelist parameter (see documentation) 156 LOGICAL :: read_particles_from_restartfile = .TRUE. !< namelist parameter (see documentation) 153 LOGICAL :: random_start_position = .FALSE. !< namelist parameter (see documentation) 154 LOGICAL :: read_particles_from_restartfile = .TRUE. !< namelist parameter (see documentation) 157 155 LOGICAL :: seed_follows_topography = .FALSE. !< namelist parameter (see documentation) 158 156 LOGICAL :: splitting = .FALSE. !< namelist parameter (see documentation) 159 157 LOGICAL :: use_kernel_tables = .FALSE. !< parameter, which turns on the use of precalculated collision kernels 160 LOGICAL :: use_sgs_for_particles = .FALSE. !< namelist parameter (see documentation) 158 LOGICAL :: use_sgs_for_particles = .FALSE. !< namelist parameter (see documentation) 161 159 LOGICAL :: wang_kernel = .FALSE. !< flag for collision kernel 162 160 LOGICAL :: write_particle_statistics = .FALSE. !< namelist parameter (see documentation) 163 161 164 162 LOGICAL, DIMENSION(max_number_of_particle_groups) :: & 165 163 vertical_particle_advection = .TRUE. !< Switch on/off vertical particle transport 166 164 165 REAL(wp) :: aero_weight = 1.0_wp !< namelist parameter (see documentation) 167 166 REAL(wp) :: alloc_factor = 20.0_wp !< namelist parameter (see documentation) 168 167 REAL(wp) :: c_0 = 3.0_wp !< parameter for lagrangian timescale 169 168 REAL(wp) :: dt_min_part = 0.0002_wp !< minimum particle time step when SGS velocities are used (s) 170 169 REAL(wp) :: dt_prel = 9999999.9_wp !< namelist parameter (see documentation) 171 REAL(wp) :: dt_write_particle_data = 9999999.9_wp !< namelist parameter (see documentation) 172 REAL(wp) :: end_time_prel = 9999999.9_wp !< namelist parameter (see documentation) 170 REAL(wp) :: dt_write_particle_data = 9999999.9_wp !< namelist parameter (see documentation) 171 REAL(wp) :: end_time_prel = 9999999.9_wp !< namelist parameter (see documentation) 173 172 REAL(wp) :: initial_weighting_factor = 1.0_wp !< namelist parameter (see documentation) 173 REAL(wp) :: log_sigma(3) = 1.0_wp !< namelist parameter (see documentation) 174 174 REAL(wp) :: molecular_weight_of_solute = 0.05844_wp !< mol. m. NaCl (kg mol-1) 175 175 REAL(wp) :: molecular_weight_of_water = 0.01801528_wp !< mol. m. H2O (kg mol-1) 176 REAL(wp) :: n1 = 100.0_wp !< namelist parameter (see documentation) 177 REAL(wp) :: n2 = 0.0_wp !< namelist parameter (see documentation) 178 REAL(wp) :: n3 = 0.0_wp !< namelist parameter (see documentation) 176 REAL(wp) :: na(3) = 0.0_wp !< namelist parameter (see documentation) 179 177 REAL(wp) :: number_concentration = -1.0_wp !< namelist parameter (see documentation) 180 178 REAL(wp) :: particle_advection_start = 0.0_wp !< namelist parameter (see documentation) 181 179 REAL(wp) :: radius_merge = 1.0E-7_wp !< namelist parameter (see documentation) 182 180 REAL(wp) :: radius_split = 40.0E-6_wp !< namelist parameter (see documentation) 183 REAL(wp) :: rho_s = 2165.0_wp !< density of NaCl (kg m-3) 184 REAL(wp) :: rm1 = 0.05E-6_wp !< namelist parameter (see documentation) 185 REAL(wp) :: rm2 = 0.05E-6_wp !< namelist parameter (see documentation) 186 REAL(wp) :: rm3 = 0.05E-6_wp !< namelist parameter (see documentation) 187 REAL(wp) :: s1 = 2.0_wp !< namelist parameter (see documentation) 188 REAL(wp) :: s2 = 2.0_wp !< namelist parameter (see documentation) 189 REAL(wp) :: s3 = 2.0_wp !< namelist parameter (see documentation) 190 REAL(wp) :: sgs_wf_part !< parameter for sgs 181 REAL(wp) :: rho_s = 2165.0_wp !< density of NaCl (kg m-3) 182 REAL(wp) :: rm(3) = 1.0E-6_wp !< namelist parameter (see documentation) 183 REAL(wp) :: sgs_wf_part !< parameter for sgs 191 184 REAL(wp) :: time_prel = 0.0_wp !< time for particle release 192 185 REAL(wp) :: time_write_particle_data = 0.0_wp !< write particle data at current time on file … … 210 203 REAL(wp), DIMENSION(:), ALLOCATABLE :: log_z_z0 !< Precalculate LOG(z/z0) 211 204 212 205 213 206 TYPE particle_type 207 REAL(wp) :: aux1 !< auxiliary multi-purpose feature 208 REAL(wp) :: aux2 !< auxiliary multi-purpose feature 214 209 REAL(wp) :: radius !< radius of particle 215 210 REAL(wp) :: age !< age of particle 216 REAL(wp) :: age_m !< 211 REAL(wp) :: age_m !< 217 212 REAL(wp) :: dt_sum !< 218 REAL(wp) :: user !< varible for user 219 REAL(wp) :: e_m !< interpolated sgs tke 213 REAL(wp) :: e_m !< interpolated sgs tke 220 214 REAL(wp) :: origin_x !< origin x-position of particle (changed cyclic bc) 221 215 REAL(wp) :: origin_y !< origin y-position of particle (changed cyclic bc) 222 216 REAL(wp) :: origin_z !< origin z-position of particle (changed cyclic bc) 223 REAL(wp) :: rvar1 !< 217 REAL(wp) :: rvar1 !< 224 218 REAL(wp) :: rvar2 !< 225 REAL(wp) :: rvar3 !< 219 REAL(wp) :: rvar3 !< 226 220 REAL(wp) :: speed_x !< speed of particle in x 227 221 REAL(wp) :: speed_y !< speed of particle in y 228 222 REAL(wp) :: speed_z !< speed of particle in z 229 REAL(wp) :: weight_factor !< weighting factor 230 REAL(wp) :: x !< x-position 231 REAL(wp) :: y !< y-position 232 REAL(wp) :: z !< z-position 223 REAL(wp) :: weight_factor !< weighting factor 224 REAL(wp) :: x !< x-position 225 REAL(wp) :: y !< y-position 226 REAL(wp) :: z !< z-position 233 227 INTEGER(iwp) :: class !< radius class needed for collision 234 228 INTEGER(iwp) :: group !< number of particle group … … 274 268 275 269 END MODULE particle_attributes 276
Note: See TracChangeset
for help on using the changeset viewer.