source: palm/trunk/SOURCE/mod_particle_attributes.f90 @ 1849

Last change on this file since 1849 was 1849, checked in by hoffmann, 5 years ago

lpm_droplet_condensation improved, microphysics partially modularized

  • Property svn:keywords set to Id
File size: 7.8 KB
Line 
1!> @file mod_particle_attributes.f90
2!--------------------------------------------------------------------------------!
3! This file is part of PALM.
4!
5! PALM is free software: you can redistribute it and/or modify it under the terms
6! of the GNU General Public License as published by the Free Software Foundation,
7! either version 3 of the License, or (at your option) any later version.
8!
9! PALM is distributed in the hope that it will be useful, but WITHOUT ANY
10! WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
11! A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
12!
13! You should have received a copy of the GNU General Public License along with
14! PALM. If not, see <http://www.gnu.org/licenses/>.
15!
16! Copyright 1997-2014  Leibniz Universitaet Hannover
17!--------------------------------------------------------------------------------!
18!
19! Current revisions:
20! ------------------
21! bfactor, mass_of_solute, molecular_weight_of_solute, molecular_weight_of_water,
22! vanthoff added from modules
23!
24! Former revisions:
25! -----------------
26! $Id: mod_particle_attributes.f90 1849 2016-04-08 11:33:18Z hoffmann $
27!
28! 1831 2016-04-07 13:15:51Z hoffmann
29! palm_kernel removed, curvature_solution_effects added
30!
31! 1822 2016-04-07 07:49:42Z hoffmann
32! +collision_algorithm, all_or_nothing, average_impact
33! Tails removed.
34!
35! 1727 2015-11-20 07:22:02Z knoop
36! Bugfix: Cause of syntax warning gfortran preprocessor removed
37!
38! 1682 2015-10-07 23:56:08Z knoop
39! Code annotations made doxygen readable
40!
41! 1575 2015-03-27 09:56:27Z raasch
42! +seed_follows_topography
43!
44! 1359 2014-04-11 17:15:14Z hoffmann
45! new module containing all particle related variables
46! -dt_sort_particles
47!
48! Description:
49! ------------
50!> Definition of variables used to compute particle transport
51!------------------------------------------------------------------------------!
52MODULE particle_attributes
53 
54
55    USE kinds
56
57    CHARACTER(LEN=15) ::  bc_par_lr = 'cyclic'                    !< left/right boundary condition
58    CHARACTER(LEN=15) ::  bc_par_ns = 'cyclic'                    !< north/south boundary condition
59    CHARACTER(LEN=15) ::  bc_par_b  = 'reflect'                   !< bottom boundary condition
60    CHARACTER(LEN=15) ::  bc_par_t  = 'absorb'                    !< top boundary condition
61    CHARACTER(LEN=15) ::  collision_algorithm = 'all_or_nothing'  !< collision algorithm
62    CHARACTER(LEN=15) ::  collision_kernel = 'none'               !< collision kernel
63
64    INTEGER(iwp) ::  deleted_particles = 0,                                    &
65                     dissipation_classes = 10, ibc_par_lr,                     &
66                     ibc_par_ns, ibc_par_b, ibc_par_t, iran_part = -1234567,   &
67                     maximum_number_of_particles = 0,                          &
68                     min_nr_particle = 50,                                     &
69                     mpi_particle_type,                                        &
70                     number_of_particles = 0,                                  &
71                     number_of_particle_groups = 1,                            &
72                     number_of_sublayers = 20,                                 &
73                     offset_ocean_nzt = 0,                                     &
74                     offset_ocean_nzt_m1 = 0, particles_per_point = 1,         &
75                     particle_file_count = 0, radius_classes = 20,             &
76                     sort_count = 0,                                           &
77                     total_number_of_particles,                                &
78                     trlp_count_sum, trlp_count_recv_sum, trrp_count_sum,      &
79                     trrp_count_recv_sum, trsp_count_sum, trsp_count_recv_sum, &
80                     trnp_count_sum, trnp_count_recv_sum
81
82    INTEGER(iwp), PARAMETER ::  max_number_of_particle_groups = 10
83
84    INTEGER(iwp), DIMENSION(:,:,:), ALLOCATABLE ::  prt_count
85
86    LOGICAL ::  all_or_nothing = .FALSE., average_impact = .FALSE.,            &
87                curvature_solution_effects = .FALSE.,                          &
88                hall_kernel = .FALSE., particle_advection = .FALSE.,           &
89                random_start_position = .FALSE.,                               &
90                read_particles_from_restartfile = .TRUE.,                      &
91                seed_follows_topography = .FALSE.,                             &
92                uniform_particles = .TRUE., use_kernel_tables = .FALSE.,       &
93                use_sgs_for_particles = .FALSE., wang_kernel = .FALSE.,        &
94                write_particle_statistics = .FALSE.
95
96    LOGICAL, DIMENSION(max_number_of_particle_groups) ::                       &
97                vertical_particle_advection = .TRUE.
98
99    REAL(wp) ::  alloc_factor = 20.0_wp, c_0 = 3.0_wp,                         &
100                 dt_min_part = 0.0002_wp, dt_prel = 9999999.9_wp,              &
101                 dt_write_particle_data = 9999999.9_wp,                        &
102                 end_time_prel = 9999999.9_wp,                                 &
103                 initial_weighting_factor = 1.0_wp,                            &
104                 particle_advection_start = 0.0_wp,                            &
105                 sgs_wfu_part = 0.3333333_wp, sgs_wfv_part = 0.3333333_wp,     &
106                 sgs_wfw_part = 0.3333333_wp, time_prel = 0.0_wp,              &
107                 time_sort_particles = 0.0_wp,                                 &
108                 time_write_particle_data = 0.0_wp, z0_av_global
109
110    REAL(wp), DIMENSION(max_number_of_particle_groups) ::                      &
111                 density_ratio = 9999999.9_wp, pdx = 9999999.9_wp,             &
112                 pdy = 9999999.9_wp, pdz = 9999999.9_wp, psb = 9999999.9_wp,   &
113                 psl = 9999999.9_wp, psn = 9999999.9_wp, psr = 9999999.9_wp,   &
114                 pss = 9999999.9_wp, pst = 9999999.9_wp, radius = 9999999.9_wp
115
116    REAL(wp), DIMENSION(:), ALLOCATABLE     ::  log_z_z0
117
118!
119!-- Lagrangian cloud model constants
120    REAL(wp) ::  mass_of_solute = 1.0E-17_wp                !< soluted NaCl (kg)
121    REAL(wp) ::  molecular_weight_of_solute = 0.05844_wp    !< mol. m. NaCl (kg mol-1)
122    REAL(wp) ::  molecular_weight_of_water = 0.01801528_wp  !< mol. m. H2O (kg mol-1)
123    REAL(wp) ::  vanthoff = 2.0_wp                          !< van't Hoff factor for NaCl
124
125    TYPE particle_type
126        SEQUENCE
127        REAL(wp)     ::  radius, age, age_m, dt_sum, dvrp_psize, e_m,          &
128                         origin_x, origin_y, origin_z, rvar1, rvar2, rvar3,    &
129                         speed_x, speed_y, speed_z, weight_factor, x, y, z
130        INTEGER(iwp) ::  class, group, tailpoints, tail_id
131        LOGICAL      ::  particle_mask
132        INTEGER(iwp) ::  block_nr
133    END TYPE particle_type
134
135    TYPE(particle_type), DIMENSION(:), POINTER ::  particles
136    TYPE(particle_type)                        ::  zero_particle
137
138    TYPE particle_groups_type
139        SEQUENCE
140        REAL(wp) ::  density_ratio, radius, exp_arg, exp_term
141    END TYPE particle_groups_type
142
143    TYPE(particle_groups_type), DIMENSION(max_number_of_particle_groups) ::    &
144       particle_groups
145
146    TYPE  grid_particle_def
147        INTEGER(iwp), DIMENSION(0:7)               ::  start_index
148        INTEGER(iwp), DIMENSION(0:7)               ::  end_index
149        LOGICAL                                    ::  time_loop_done
150        TYPE(particle_type), POINTER, DIMENSION(:) ::  particles                !Particle array for this grid cell
151    END TYPE grid_particle_def
152
153    TYPE(grid_particle_def), DIMENSION(:,:,:), ALLOCATABLE, TARGET ::  grid_particles
154
155    TYPE block_offset_def
156        INTEGER(iwp) ::  i_off
157        INTEGER(iwp) ::  j_off
158        INTEGER(iwp) ::  k_off
159    END TYPE block_offset_def
160
161    TYPE(block_offset_def), DIMENSION(0:7)         ::  block_offset
162
163    SAVE
164
165
166END MODULE particle_attributes
167
Note: See TracBrowser for help on using the repository browser.