4.18. Particles
Fuego supports inclusion of discrete Lagrangian particles using a particle-in-cell method to transport them. The particles can be zero-mass tracer particles, inertial particles, heated particles, evaporating particles, or combusting particles. For details of the different particle models, refer to the theory manual.
Particles are defined in a separate Particle Region and coupled to the fluid through transfers. The particle region has a background Eulerian mesh, usually the same mesh as the fluid domain, and the particles are modeled using free nodes that move around in that domain. To avoid excessive mesh modification, there is a “particle reservoir” of nodes created on each MPI rank, and as particles are added to the domain they are drawn from the reservoir and “activated”. The particles are advanced in time using sub-steps so their time step is smaller than the overall fluid time step.
begin particle region particle_region
use finite element model femodel
lagrangian particles
fluid region name = fluid_region
minimum particle subcycles = 5
particle reservoir size = 5000
particle rebalance step frequency = 6
particle rebalance imbalance threshold = 1.0
# …
end particle region particle_region
For the complete list of commands in the particle region, refer to the command summary.
4.18.1. Particle Setup
For most particle types, you need to specify three things:
Particle material - Set material properties for the particles. Required properties depend on what physical particle model is in-use.
Particle definition - Define what particle material to use, and which physical model to apply.
Tracer - Mass-less particles, move with the fluid velocity
Inertial - Has mass, drag, and buoyant forces which control its motion
Heated Inertial - The same as inertial, but adds an energy transfer between the particle and fluid.
Evaporating - Same as the heated inertial particle but adds mass transfer via phase change. Requires a
particle interfaceto define the evaporation model.Chemically Reacting, Wildfire - More advanced models involving heat and mass transfer between the particles and fluid.
Particle insertion - Some method for how the particles are inserted. Common options are:
Spray - Set a location, direction, cone angle, and size statistics and uses a pseudo-random algorithm to insert particles.
File - Use a file of tabulated insertion locations, times, and properties to add particles to the domain.
Location - Insert particles at the simulation initiation along a line or in a filled shape
Sideset - Insert particles at a given rate on a sideset. Particles are inserted at face centroids, so behavior may be mesh-dependent.
The insertion methods and definition (physical models) are independent. In the following examples, we show different particle definition setups and different insertion methods, but these can be mixed and matched arbitrarily.
4.18.1.1. Tracer Particle Example
Tracer (or “Tracker”) particles are the simplest particles to define. They require no properties or model parameters. In the example below, we define the tracer_particles definition, and then insert them along surface_1 using the particle inflow boundary. They can leave through the open boundary on surface_2, and will rebound elastically off the wall at surface_3.
begin particle region particle_region
# ...
begin particle definition tracer_particles
particle type is tracker
end particle definition tracer_particles
begin particle inflow boundary condition on surface surface_1
particle definition = solid_particles
end
begin particle open boundary condition on surface surface_2
end
begin particle wall boundary condition on surface surface_3
particle surface interaction type = rebound
end
end particle region particle_region
4.18.1.2. Inertial Particle Example
Inertial particles have mass, so they require a density and diameter. Since they couple with the fluid momentum equation, they also need the compute momentum source command. The following example defines steel inertial particles which will be inserted with the spray model.
begin particle region particle_region
# ...
compute momentum source
begin particle material steel
density = 7800
end particle material steel
begin particle definition metal_particles
particle type is inertial_particle
add particle material steel
end particle definition metal_particles
begin particle spray my_spray
# ...
end particle spray my_spray
end particle region particle_region
4.18.1.2.1. Spray Model
The spray model is one of the most commonly used particle insertion methods. In the example below, we specify a conical spray with distributions for the particle diameter and velocity. We also specify the mass flow rate (a string function of time) and the number represented.
Note
A spray can generate a large number of particles. To reduce computational costs, we can choose to define a number represented, so that each resolved particle represents more than one physical particle. The drag, mass, and other coupling terms between the single resolved particle and the fluid are then multiplied by the number represented.
begin particle region particle_region
# ...
BEGIN PARTICLE SPRAY my_spray
PARTICLE DEFINITION = metal_particles
CENTER = 0.0, 0.0, 0.0
SPRAY_ANGLE = 30 # degrees
NOZZLE RADIUS = 0.0003
NORMAL VECTOR = 0 -1 0
MASS_FLOW_RATE = 0.1*(t>1)*(t<5)
NUMBER REPRESENTED = 10
# Step 1: define the distribution type (LOGNORMAL)
# Step 2: provide required parameters for that distribution
# (LOGNORMAL requires LOGMEAN and LOGSTDEV)
# resulting size = exp(logMean - sqrt(2) * logStDev * inv_erfc(2*R))
# where R is a uniform random number
PARTICLE DIAMETER DISTRIBUTION TYPE = LOGNORMAL
PARTICLE DIAMETER DISTRIBUTION PARAMETER LOGMEAN = -8.0 # exp(-8) = 3.35e-4
PARTICLE DIAMETER DISTRIBUTION PARAMETER LOGSTDEV = 1.0
# Step 1: define the distribution type (CONSTANT)
# Step 2: provide required parameters for that distribution (CONSTANT requires VALUE)
PARTICLE VELOCITY DISTRIBUTION TYPE = CONSTANT
PARTICLE VELOCITY DISTRIBUTION PARAMETER VALUE = 0.00001
END PARTICLE SPRAY my_spray
end particle region particle_region
4.18.1.3. Heated Particle Example
Heated particles require additional coupling source terms (energy, and sometimes radiation) and additional material properties. In the example below, we extend the steel particles to include heat transfer with the fluid, and use an insertion along a line.
begin particle region particle_region
compute momentum source
compute energy source
compute RTE particle source
begin particle material steel
density = 7800
specific_heat = 500
thermal_conductivity = 10
film_Prandtl_number = 5
absorptivity = 1.0
end particle material steel
begin particle definition metal_particles
particle type is heated_particle
add particle material steel
end particle definition metal_particles
begin insert particle my_line
# ...
end insert particle my_line
end particle region particle_region
Heated particles require an initial temperature in their insertion method. In the input below, we specify two points and Number so we insert 5 particles along the line connecting those points.
begin particle region particle_region
# ...
begin insert particle my_line
particle definition = metal_particles
x1 = 0.0
y1 = 0.0
z1 = 0.0
x2 = 0.0
y2 = 0.0
z2 = 1.0
x_velocity = 0.0
x_velocity = 0.0
x_velocity = 0.0
Temperature = 400
Diameter = 1e-3
Number = 5
Number represented = 1
end insert particle my_line
end particle region particle_region
Note
If we omit point 2 in the particle insertion block, the particles are all inserted at point 1.
4.18.1.4. Evaporating Particles
Evaporating particles require an additional particle interface block to define the evaporation model. In the example below we set up the blocks for a spray of evaporating water drops.
begin particle region particle_region
# ...
compute momentum source
compute energy source
compute species source
compute continuity source
compute RTE particle source
begin particle material water
density = 1000
specific_heat = 1000
absorptivity = 0.8
end particle material water
begin particle definition water_particles
particle type is evaporating_particle
add particle interface evapWater
add particle material water
end particle definition water_particles
begin particle interface evapWater
# ...
end particle interface evapWater
begin particle spray my_spray
# ...
end particle spray my_spray
end particle region particle_region
For the particle interface, we need to define what species is evaporating (so we can apply the source to the right equation on the fluid side) and phase change parameters.
begin particle region particle_region
# ...
BEGIN PARTICLE INTERFACE evapWater
PARTICLE SPECIES H2O -1.0
PRANDTL_NUMBER = 0.9
SCHMIDT_NUMBER = 0.9
BEGIN PARTICLE EVAPORATION waterEvaporation
REFERENCE_HEAT_OF_VAPORIZATION = 2.26e6 # J/kg
REFERENCE_TEMPERATURE = 373.0 # K
CRITICAL_TEMPERATURE = 647.0 # K
REFERENCE_PRESSURE = 1.0 # in atm
GAS SPECIES H2O 1.0
END PARTICLE EVAPORATION waterEvaporation
END PARTICLE INTERFACE evapWater
# ...
end particle region particle_region
Next we can define a spray similar to the earlier example, except now we also must supply a temperature. We also changed the spray to a hollow cone (common sprinkler pattern) by supplying SPRAY_ANGLE_START and SPRAY_ANGLE_END instead of just SPRAY_ANGLE`.
begin particle region particle_region
# ...
BEGIN PARTICLE SPRAY my_spray
PARTICLE DEFINITION = water_particles
CENTER = 0.0, 0.0, 0.0
SPRAY_ANGLE_START = 30 # degrees
SPRAY_ANGLE_END = 45
NOZZLE RADIUS = 0.01
NORMAL VECTOR = 0 -1 0
MASS_FLOW_RATE = 0.1*(t>1)*(t<5)
NUMBER REPRESENTED = 10
TEMPERATURE = 300
# Step 1: define the distribution type (LOGNORMAL)
# Step 2: provide required parameters for that distribution
# (LOGNORMAL requires LOGMEAN and LOGSTDEV)
# resulting size = exp(logMean - sqrt(2) * logStDev * inv_erfc(2*R))
# where R is a uniform random number
PARTICLE DIAMETER DISTRIBUTION TYPE = LOGNORMAL
PARTICLE DIAMETER DISTRIBUTION PARAMETER LOGMEAN = -8.0 # exp(-8) = 3.35e-4
PARTICLE DIAMETER DISTRIBUTION PARAMETER LOGSTDEV = 1.0
# Step 1: define the distribution type (CONSTANT)
# Step 2: provide required parameters for that distribution (CONSTANT requires VALUE)
PARTICLE VELOCITY DISTRIBUTION TYPE = CONSTANT
PARTICLE VELOCITY DISTRIBUTION PARAMETER VALUE = 0.00001
END PARTICLE SPRAY my_spray
end particle region particle_region
4.18.2. Modifications to the Fuego Region
The Fuego region needs to be set up to receive external sources from the particles. This is done using the Use external X source commands:
begin solution options
use external momentum source
use external enthalpy source
use external continuity source
use external species source
# ...
End
4.18.3. Particle Output
The syntax for outputting particle data is the same as for fluid data. Some generally useful output rules are:
Anything with a
_psuffix is a particle field (e.g. particle velocity or particle temperature)Always output
coordinatesso you can show particles in the correct locationIt is useful to output
activeso you can filter out inactive reservoir particlesParticle properties such as
radius_portemperature_pcan often relevant
begin particle region particle_region
# ...
Begin Results Output Label output
DATABASE Name = particles.e
At Step 0, Increment = 1
TITLE Lagrangian Particles
NODAL Variables = coordinates AS Coords
NODAL Variables = x_velocity_p AS Ux
NODAL Variables = y_velocity_p AS Uy
NODAL Variables = z_velocity_p AS Uz
NODAL Variables = radius_p AS R
NODAL Variables = temperature_p AS T
NODAL Variables = number_deposition_density
NODAL Variables = number_deposition_rate
NODAL Variables = mass_deposition_density
NODAL Variables = mass_deposition_rate
NODAL Variables = active
NODAL Variables = particle_is_stuck
End Results Output Label output
end particle region particle_region
4.18.4. Advanced Options
Advanced particle options not covered in this guide include:
Particle filled shapes
Wildfire particles