Version 113 (modified by suehring, 14 years ago) (diff)

--

Particle Parameters

NAMELIST group name: particles_par

Parameter Name FORTRAN Type Default Value Explanation

dt_prel

R

9999999.9

Temporal interval at which particles are to be released from a particle source (in s).
By default particles are released only at the beginning of a simulation (t_init=0). The time of the first release (t_init) can be changed with package parameter particle_advection_start. The time of the last release can be set with the package parameter end_time_prel. If dt_prel has been set, additional releases will be at t = t_init+dt_prel, t_init+2*dt_prel, t_init+3*dt_prel, etc.. Actual release times may slightly deviate from thesel values (see e.g. dt_dopr).

The domain of the particle source as well as the distance of released particles within this source are determined via package parameters pst, psl, psr, pss, psn, psb, pdx, pdy and pdz. By default, one particle is released at all points defined by these parameters. The package parameter particles_per_point can be used to start more than one particle per point.

Up to 10 different groups of particles can be released at the same time (see number_of_particle_groups) where each group may have a different source. All particles belonging to one group have the same density ratio and the same radius. All other particle features (e.g. location of the source) are identical for all groups of particles.

Subgrid scale velocities can (optionally) be included for calculating the particle advection, using the method of Weil et al. (2004, JAS, 61, 2877-2887). This method is switched on by the package parameter use_sgs_for_particles. This also forces the Euler/upstream method to be used for time advancement of the TKE (see initialization parameter use_upstream_for_tke). The minimum timestep during the sub-timesteps is controlled by package parameter dt_min_part.

By default, particles are weightless and transported passively with the resolved scale flow. Particles can be given a mass and thus an inertia by assigning the package parameter density_ratio a non-zero value (it defines the ratio of the density of the fluid and the density of the particles). In these cases their radius must also be defined, which affects their flow resistance.

Boundary conditions for the particle transport can be defined with package parameters bc_par_t, bc_par_lr, bc_par_ns and bc_par_b.

Timeseries of particle quantities in netCDF format can be output to local file DATA_1D_PTS_NETCDF by using package parameter dt_dopts.

For analysis, additional output of particle information in equidistant temporal intervals can be carried out using dt_write_particle_data (file PARTICLE_DATA).

Statistical informations (e.g. the total number of particles used, the number of particles exchanged between the PEs, etc.) are output to the local file PARTICLE_INFOS, if switched on by the parameter write_particle_statistics.

If a job chain is to be carried out, particle informations for the restart run (e.g. current location of all particles at the end of the run) is output to the local file PARTICLE_RESTART_DATA_OUT, which must be saved at the end of the run and given as an input file to the restart run under local file name PARTICLE_RESTART_DATA_IN using respective file connection statements in the mrun configuration file.

The output of particles for visualization with the graphic software dvrp is steered by the package parameter dt_dvrp. For visualization purposes particles can be given a diameter using the parameters dvrp_psize and particle_dvrpsize (this diameter only affects the visualization). All particles have the same size. Alternatively, particles can be given an individual size and a color by modifying the user-interface (subroutine user_init_particles). Particles can pull a tail behind themselves to improve their visualization. This is steered via the parameter use_particle_tails.

So far, the particle transport realized in PALM does only work duly in case of a constant vertical grid spacing!

bc_par_b

C*15

'reflect'

Bottom boundary condition for particle transport.
By default, particles are reflected at the bottom boundary. Alternatively, a particle absorption can set by bc_par_b = 'absorb'.

bc_par_lr

C*15

'cyclic'

Lateral boundary condition (x-direction) for particle transport.
By default, cyclic boundary conditions are used along x. Alternatively, reflection (bc_par_lr = 'reflect' ) or absorption (bc_par_lr = 'absorb' ) can be set.
This lateral boundary conditions should correspond to the lateral boundary condition used for the flow (see bc_lr).

bc_par_ns

C*15

'cyclic'

Lateral boundary condition (y-direction) for particle transport.
By default, cyclic boundary conditions are used along y. Alternatively, reflection (bc_par_ns = 'reflect' ) or absorption (bc_par_ns = 'absorb' ) can be set.
This lateral boundary conditions should correspond to the lateral boundary condition used for the flow (see bc_ns).

bc_par_t

C*15

'absorb'

Top boundary condition for particle transport.
By default, particles are absorbed at the top boundary. Alternatively, a reflection condition can be set by bc_par_t = 'reflect'.

density_ratio

R(10)

0.0, 9 * 9999999.9

Ratio of the density of the fluid and the density of the particles.
With the default value the particles are weightless and transported passively with the resolved scale flow. In case of density_ratio /= 0.0 particles have a mass and hence inertia so that their velocity deviates more or less from the velocity of the surrounding flow. Particle velocity is calculated analytically and depends on (besides the density ratio and the current velocity difference between particles and surrounding fluid) the particle radius which is determined via radius as well as on the molecular viscosity (assumed as 1.461E-5 m2/s).

If density_ratio = 1.0, the particle density corresponds to the density of the surrounding fluid and the particles do not feel any buoyancy. Otherwise, particles will be accelerated upwards (density_ratio > 1.0) or downwards (density_ratio < 1.0).

With several groups of particles (see number_of_particle_groups), each group can be assigned a different value. If the number of values given for density_ratio is less than the number of groups defined by number_of_particle_groups), then the last assigned value is used for all remaining groups. This means that by default the particle density ratio for all groups will be 0.0.

dt_dopts

R

value of dt_data
_output

Temporal interval at which time series data of particle quantities shall be output (in s). If particle advection is switched on (see dt_prel) this parameter can be used to assign the temporal interval at which time series of particle quantities shall be output. Output is written in netCDF format on local file DATA_1D_PTS_NETCDF?.

The following list gives a short description of the quantities available. Most quantities are averages over all particles. The quantity name given in the first column is identical to the respective name of the variable on the netCDF file.

In case of using more than one particle group (see number_of_particle_groups), seperate time series are output for each of the groups. The long names of the variables in the netCDF file containing the respective timeseries all end with the string PG ##, where ## is the number of the particle group (01, 02, etc.).

netCDF Variable Name Explanation
tnpt total number of particles
x_ particle x-coordinate with respect to the particle origin (in m)
y_ particle y-coordinate with respect to the particle origin (in m)
z_ particle z-coordinate with respect to the particle origin (in m)
z_abs absolute particle z-coordinate (in m)
u u particle velocity component (in m/s)
v v particle velocity component (in m/s)
w w particle velocity component (in m/s)
u subgrid-scale u particle velocity component (in m/s)
v subgrid-scale v particle velocity component (in m/s)
w subgrid-scale w particle velocity component (in m/s)
npt_up total number of upward moving particles
w_up vertical velocity of the upward moving particles (in m/s)
w_down vertical velocity of the downward moving particles (in m/s)
npt_max maximum number of particles in a subdomain (=tnpt for non-parallel runs)
npt_min minimum number of particles in a subdomain (=tnpt for non-parallel runs)
x*2 variance of the particle x-coordinate with respect to x_ (in m2)
y*2 variance of the particle y-coordinate with respect to y_ (in m2)
z*2 variance of the particle z-coordinate with respect to z_ (in m2)
u*2 variance of the u particle velocity component with respect to u (in m2/s2)
v*2 variance of the v particle velocity component with respect to v (in m2/s2)
w*2 variance of the w particle velocity component with respect to w (in m2/s2)
u"2 variance of the subgrid-scale u particle velocity component with respect to u" (in m2/s2)
v"2 variance of the subgrid-scale v particle velocity component with respect to v" (in m2/s2)
w"2 variance of the subgrid-scale w particle velocity component with respect to w" (in m2/s2)
npt*2 variance of the number of particles with respect to the average number of particles per subdomain

dt_min_part

R

0.0002

Minimum value for the particle timestep when SGS velocities are used (in s).
For a further explanation see package parameter use_sgs_for_particles.

dt_sort_particles

R

0.0

Temporal interval for sorting particles (in s).
By default, particles are sorted in memory in a way that their order follows the order in which the gridpoint values are stored. This may improve cache coherence in case of larger numbers of particles and gridpoints. However, since the sorting itself is time consuming and since the requirement of sorting depends on the strength of mixing in the flow, performance can be improved if the sorting is applied only after certain time intervals. The proper length of this interval dt_sort_particles must be determined empirically by carrying out test runs with different intervals. Check file CPU_MEASURES to find the value of dt_sort_particles which gives the best performance.

Note: In case of cloud_droplets = '.T.' , any given non-zero value of dt_sort_particles will be reset to zero and a corresponding warning message will appear in the job protocol.

dt_write_particle_data

R

9999999.9

Temporal interval for output of particle data (in s).
This parameter can be used to assign the temporal interval at which particle data shall be output. Data are output to the local file PARTICLE_DATA. See the file description for more details about its format.
By default, no particle data are output.

end_time_prel

R

9999999.9

Time of the last release of particles (in s).
See also particle_advection_start.

initial_weighting _factor

R

1.0

Factor to define the real number of initial droplets in a grid box.
In case of explicitly simulating cloud droplets (see cloud_droplets), the real number of initial droplets in a grid box is equal to the initial number of droplets in this box (defined by the particle source parameters pst, psl, psr, pss, psn, psb, pdx, pdy and pdz) times the initial_weighting_factor.

maximum_number _of_particles

I

1000

Maximum number of particles (on a PE).
This parameter allows to set the number of particles for which memory must be allocated at the beginning of the run. If this memory becomes insufficient during the run, due to the release of further particles (see dt_prel), then more memory is automatically allocated. For runs on several processors, maximum_number_of_particles defines the maximum number on each PE. This number must be larger than the maximum number of particles initially released in a subdomain.

maximum_number _of_tailpoints

I

100

Maximum number of tailpoints that a particle tail can have.
maximum_number_of_tailpoints sets the number of descrete points the tail consists of. A new point is added to the particle tails after each time step. If the maximum number of tail points is reached after the corresponding number of timesteps, the oldest respective tail points is deleted within the following timestep.

All particle tails have the same number of points. The maximum length of these tails is determined by the value of maximum_number_of_tailpoints and by the minimum distance between each of the adjoining tailpoints, which can be set by minimum_tailpoint_distance. Additionally, it can be determined that the temporal displacement between the current position of the particle and the oldest point of the tail may become not larger than a value to be assigned by maximum_tailpoint_age.

maximum_tailpoint _age

R

100000.0

Maximum age that the end point of a particle tail is allowed to have (in s).
If the temporal displacement between the oldest point of a particle tail and the current position of the particle becomes larger than the value given by maximum_tailpoint_age, this oldest point (which defines the end of the tail) is removed. If this time is so small that the number of points defining the particle tail do not exceed the value given by maximum_number_of_tailpoints, then the length the particle tails is a measure for the distance the particle travelled along during the time interval defined via maximum_tailpoint_age, i.e. for the particle velocity. Fast particles will have long tails, slow particles shorter ones (note: this will not neccessarily hold if minimum_tailpoint_distance = 0.0).

minimum_tailpoint _distance

R

0.0

Minimum distance allowed between two adjacent points of a particle tail (in m).
In case of minimum_tailpoint_distance > 0.0 the particle tail is extended by a new point only if the distance between its current position and the most recent tail point exceed the distance given via minimum_tailpoint_distance.
If the length of the particle tails shall be proportional to the respective particle velocity, the parameter maximum_tailpoint_age must also be set appropriately.

Note: A suitable choice of minimum_tailpoint_distance > 0.0 is recommended, because then the tail coordinates of slowly moving particles require less memory and can also be drawn faster. The upper limit of minimum_tailpoint_distance should be chosen in a way that the visualized particle tails still appear as smooth lines. Example: with a model domain of 1000 m and a monitor resolution of 1280 * 1024 pixels it should be sufficient to set minimum_tailpoint_distance = 5.0 (m).

number_of_particle _groups

I

1

Number of particle groups to be used.
Each particle group can be assigned its own source region (see pdx, psl, psr, etc.), particle diameter (radius) and particle density ratio (density_ratio).
If less values are given for pdx, psl, etc. than the number of particle groups, then the last value is used for the remaining values (or the default value, if the user did not set the parameter).
The maximum allowed number of particle groups is limited to 10.

particles_per_point

I

1

Number of particles to be started per point.
By default, one particle is started at all points of the particle source, defined by the package parameters pst, psl, psr, pss, psn, psb, pdx, pdy and pdz.

particle_advection _start

R

0.0

Time of the first release of particles (in s).
If particles are not to be released at the beginning of the run, the release time can be set via particle_advection_start. If particle transport is switched on in a restart run, then read_particles_from_restartfile = .F. is also required.
See also end_time_prel.

particle_maximum_age

R

9999999.9

Maximum allowed age of particles (in s).
If the age of a particle exceeds the time set by particle_maximum_age, the particle as well as its tail is deleted.

pdx

R (10)

10*dx

Distance along x between particles within a particle source (in m).
If the particle source shall be confined to one grid point, the distances given by pdx, pdy and pdz must be set larger than the respective domain size or psl = psr has to be set alternatively.
pdx can be assigned a different value for each particle group (see number_of_particle_groups).

pdy

R (10)

10*dy

Distance along y between particles within a particle source (in m).

pdz

R (10)

10*
(zu(2)-zu(1))

Distance along z between particles within a particle source (in m).

psb

R (10)

10*zu(nz/2)

Bottom edge of a particle source (in m).

psl

R (10)

10*0.0

Left edge of a particle source (in m).

psn

R (10)

10*(ny*dy)

Rear ("north") edge of a particle source (in m).

psr

R (10)

10*(nx*dx)

Right edge of a particle source (in m).

pss

R (10)

10*0.0

Front ("south") edge of a particle source (in m).

pst

R (10)

10*zu(nz/2)

Top edge of a particle source (in m).

radius

R (10)

0.0, 9*
9999999.9

Particle radius (in m).
The viscous friction (in case of a velocity difference between particles and surrounding fluid) depends on the particle radius which must be assigned as soon as density_ratio /= 0.0.
With several groups of particles (see number_of_particle_groups), each group can be assigned a different value. If the number of values given for radius is less than the number of groups defined by number_of_particle_groups), then the last assigned value is used for all remaining groups. This means that by default the particle radius for all groups will be 0.0.

random_start_position

L

.F.

Initial position of the particles is varied randomly within certain limits.
By default, the initial positions of particles within the source excatly correspond with the positions given by psl, psr, psn, pss, psb, pst, pdx, pdy, and pdz. With random_start_position = .T. the initial positions of the particles are allowed to randomly vary from these positions within certain limits.

Very important: In case of random_start_position = .T., the random-number generators on the individual PEs no longer run synchronously. If random disturbances are applied to the velocity field (see create_disturbances), then as consequence for parallel runs the realizations of the turbulent flow fields will deviate between runs which used different numbers of PEs!

read_particles _from_restartfile

L

.T.

Read particle data from the previous run.
By default, with restart runs particle data is read from file PARTICLE_RESTART_DATA_IN, which is created by the preceding run. If this is not requested or if in a restart run particle transport is switched on for the first time (see particle_advection_start), then read_particles_from_restartfile = .F. is required.

skip_particles_ for_tail

I

100

Limit the number of particle tails.
If particle tails are switched on (see use_particle_tails), every particle is given a tail by default. skip_particles_for_tail can be used to give only every n'th particle a tail.

Example: skip_particles_for_tail = 10 means that only every 10th particle will be given a tail.

use_particle_tails

L

.F.

Give particles a tail.
A particle tail is defined by the path a particle has moved along starting from some point of time in the past. It consists of a set of descrete points in space which may e.g. be connected by a line in order visualize how the particle has moved.

By default, particles have no tail. Parameter skip_particles_for_tail can be used to give only every n'th particle a tail.
The length of the tail is controlled by parameters maximum_number_of_tailpoints, maximum_tailpoint_age, and minimum_tailpoint_distance.

use_sgs_for_particles

L

.F.

Use subgrid-scale velocities for particle advection.
These velocities are calculated from the resolved and subgrid-scale TKE using the Monte-Carlo random-walk method described by Weil et al. (2004, JAS, 61, 2877-2887). When using this method, the timestep for the advancement of the particles is limited by the so-called Lagrangian time scale. This may be smaller than the current LES timestep so that several particle (sub-) timesteps have to be carried out within one LES timestep. In order to limit the number of sub-timesteps (and to limit the CPU-time), the minimum value for the particle timestep is defined by the package parameter dt_min_part.

Setting use_sgs_for_particles = .T. automatically forces use_upstream_for_tke = .T.. This inhibits the occurrence of large (artificial) spatial gradients of the subgrid-scale TKE which otherwise would lead to wrong results for the particle advection.

vertical_particle _advection

L

.T.

Switch on/off vertical particle transport.
By default, particles are transported along all three directions in space. With vertical_particle_advection = .F., the particles will only be transported horizontally.

write_particle _statistics

L

.F.

Switch on/off output of particle informations.
For write_particle_statistics = .T. statistical informations (e.g. the total number of particles used, the number of particles exchanged between the PEs, etc.) which may be used for debugging are output to the local file PARTICLE_INFOS.

Note: For parallel runs files may become very large and performance of PALM may decrease.