Particle size distributions¶
MFIX-Exa can generate constant (monodisperse or single-sized) particles or
polydisperse particles that follow a normal, log-normal, or uniform
distribution. A user-defined custom distribution can be specified by providing
discrete probabilities via a text input file.
In addition to the distribution type, the distribution weighting must be specified; MFIX-Exa supports two distribution weightings:
- Number-weighted diameter distribution
The number-weighted diameter density function, \(f_X^N(x)\,dx\), can be interpreted as defining the number of particles with diameters between \(x\) and \(x+dx\), divided by the total number of particles.
- Volume-weighted diameter distribution
The volume-weighted diameter density function, \(f_X^V(x)\,dx\), similarly can be interpreted as defining the volume of particles with diameters between \(x\) and \(x+dx\), divided by the total volume of particles.
Warning
Number-weighted and volume-weighted distributions are not interchangeable. Failing to specify the correct distribution weighting can result in unexpected behavior.
Internally, MFIX uses both distribution weightings, deriving whichever one was not provided from the one that was. Because a particle of diameter \(x\) has volume proportional to \(x^3\), the volume-weighted density is proportional to \(x^3 f_X^N(x)\) and the number-weighted density to \(x^{-3} f_X^V(x)\); the derived distribution is generally not of the same family as the specified one (the volume-weighted counterpart of a normal distribution is not normal). The volume-weighted distribution is used to calculate the number of particles (or parcels) to generate in an initial condition region. The number-weighted distribution is sampled when DEM particles are created, while the volume-weighted distribution is sampled when creating PIC parcels. Sampling the volume-weighted distribution for PIC parcels allows fewer parcels to represent very small particles and more parcels to represent large particles. The statistical weight of the parcels is adjusted so that the number distribution is represented accurately.
The following sections overview the distributions supported by MFIX-Exa and the input parameters that control their behavior.
constant distribution¶
The constant distribution defines a monodisperse (single-valued) distribution and uses the following inputs:
Description |
Type |
Default |
|
|---|---|---|---|
constant |
size of the monodisperse distribution |
Real |
N/A |
In the following example, a cuboid is filled with 1 mm diameter monodisperse particles with 2500 kg·m-3 density. The initial condition region volume is 0.001 m3, and it has a solids volume fraction of 0.05 (5% solids).
# Regions for defining ICs and BCs
# -----------------------------------------------------------------------
regions = full-domain
regions.full-domain.lo = 0.0 0.0 0.0
regions.full-domain.hi = 0.1 0.1 0.1
# Initial Conditions
# -----------------------------------------------------------------------
ic.regions = full-domain
mfix.particle_init_type = Auto
# Full domain
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>
ic.full-domain.fluid.volfrac = 0.95
ic.full-domain.fluid.density = 1.0
ic.full-domain.fluid.pressure = 0.0
ic.full-domain.fluid.velocity = 0.0 0.0 0.0
ic.full-domain.solids = solid0
ic.full-domain.packing = random
ic.full-domain.solid0.volfrac = 0.05
ic.full-domain.solid0.velocity = 0.00 0.00 0.00
ic.full-domain.solid0.diameter.distribution = constant
ic.full-domain.solid0.diameter.constant = 1000.e-6 # (m)
ic.full-domain.solid0.density.distribution = constant
ic.full-domain.solid0.density.constant = 2500.0 # (kg/m^3)
With these settings, an MFIX-Exa DEM simulation generates approximately 95,500 particles, while
a PIC simulation with pic.close_pack = 0.64, pic.parcels_per_cell_at_pack = 64, and an
Eulerian mesh spacing \(\Delta x\) of 3.125 mm generates approximately 164,000 parcels.
normal distribution¶
The normal or Gaussian distribution is given by
where the parameter \(\mu\) is the distribution mean, and \(\sigma\) is the standard deviation. The
distribution is truncated to \(\left[ x_\mathrm{min}, x_\mathrm{max} \right]\). The parameters describe the
distribution of the specified weighting; the distribution of the other weighting is derived from it as
described below. The inputs used to specify the distribution are provided in the following table.
Description |
Type |
Default |
|
|---|---|---|---|
weighting |
distribution weighting: |
string |
N/A |
mean |
mean of the normal random variable, \(X\) |
Real |
N/A |
std |
standard deviation of the normal random variable, \(X\) |
Real |
N/A |
min |
Minimum particle diameter; must be positive. Drawn samples below
|
Real |
N/A |
max |
Maximum particle diameter. Drawn samples above |
Real |
N/A |
bins |
Number of bins used when discretizing the distribution to approximate the number of particles within an initial condition region. |
int |
64 |
In the following example, a cuboid with volume 0.001 m3 is filled with a number-weighted normal distribution with 1 mm mean diameter and 0.25 mm standard deviation. The minimum and maximum particle diameters are 0.25 mm and 1.75 mm, respectively.
normal distribution. This is not a complete input file.¶# Regions for defining ICs and BCs
# -----------------------------------------------------------------------
regions = full-domain
regions.full-domain.lo = 0.0 0.0 0.0
regions.full-domain.hi = 0.1 0.1 0.1
# Initial Conditions
# -----------------------------------------------------------------------
ic.regions = full-domain
mfix.particle_init_type = Auto
# Full domain
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>
ic.full-domain.fluid.volfrac = 0.95
ic.full-domain.fluid.density = 1.0
ic.full-domain.fluid.pressure = 0.0
ic.full-domain.fluid.velocity = 0.0 0.0 0.0
ic.full-domain.solids = solid0
ic.full-domain.packing = random
ic.full-domain.solid0.volfrac = 0.05
ic.full-domain.solid0.velocity = 0.00 0.00 0.00
ic.full-domain.solid0.diameter.distribution = normal
ic.full-domain.solid0.diameter.weighting = number-weighted
ic.full-domain.solid0.diameter.mean = 1000.e-6 # (m)
ic.full-domain.solid0.diameter.std = 250.e-6 # (m)
ic.full-domain.solid0.diameter.min = 250.e-6 # (m)
ic.full-domain.solid0.diameter.max = 1750.e-6 # (m)
ic.full-domain.solid0.density.distribution = constant
ic.full-domain.solid0.density.constant = 2500.0 # (kg/m^3)
An MFIX-Exa DEM simulation with these settings generates approximately 81,700 particles. The particle size distribution is shown in Fig. 29 (open circles) in addition to the number-weighted (orange) and volume-weighted (blue) density functions. As noted by Weiner [Wei11], the volume-weighted probability density function (PDF) is shifted to the right of the number-weighted PDF.
Fig. 29 MFIX-Exa DEM particle size distribution (open circles) generated from example inputs. The number-weighted density function (orange) with 1 mm mean and 0.25 mm standard deviation, and volume-weighted density function with ~1.16 mm mean and ~0.23 mm standard deviation are also plotted.¶
An MFIX-Exa PIC simulation with the same settings generates approximately 82,000 parcels when pic.close_pack = 0.64,
pic.parcels_per_cell_at_pack = 32, and the Eulerian mesh spacing \(\Delta x\) is 3.125 mm. The parcel size distribution
shown in Fig. 30 (open triangles) follows the volume-weighted density function.
Small closed circles illustrate the effective particle size distribution, computed by multiplying each observation
by the parcel statistical weight. For example, if a parcel has statistical weight of 10, then 10 observations are
recorded in the bin capturing the parcel’s diameter.
Fig. 30 MFIX-Exa PIC parcel size distribution (open triangles) generated from example inputs. The number-weighted density function (orange) with 1 mm mean and 0.25 mm standard deviation, and volume-weighted density function (blue) with ~1.16 mm mean and ~0.23 mm standard deviation are also plotted.¶
The following sections describe how the number-weighted and volume-weighted distributions are related, and how each is sampled.
Relationship between the number-weighted and volume-weighted normal distributions
A normal distribution is specified for one weighting. The density of the other weighting on \(\left[ x_\mathrm{min}, x_\mathrm{max} \right]\) follows from the definitions of the two weightings, since a particle of diameter \(x\) has volume proportional to \(x^3\):
Neither derived distribution is a normal distribution: multiplying a Gaussian by \(x^3\) skews it to the right, and dividing by \(x^3\) skews it to the left. MFIX-Exa does not approximate the derived distribution by a normal distribution. It is sampled exactly (see below), and the mean and standard deviation reported for the derived weighting are those of Eq.2, computed by numerical quadrature over \(\left[ x_\mathrm{min}, x_\mathrm{max} \right]\). For the example above, the derived volume-weighted distribution has mean ~1.16 mm and standard deviation ~0.23 mm.
The number of particles (or parcels) in an initial condition region is computed from the volume-weighted distribution
discretized into bins bins of equal width on \(\left[ x_\mathrm{min}, x_\mathrm{max} \right]\). The probability
of each bin is the integral of the volume-weighted density over the bin. For a volume-weighted normal distribution this
is a difference of error functions. For a number-weighted normal distribution the integral of \(x^3 f_X^N(x)\) is
also closed-form: with \(z = (x - \mu)/\sigma\),
where \(\phi\) and \(\Phi\) are the standard normal density and cumulative distribution function.
Sampling a normal distribution
The number-weighted distribution is sampled when DEM particles are created, and the volume-weighted distribution is
sampled when PIC parcels are created. When the distribution to be sampled is the one specified by the user, MFIX-Exa
samples the normal distribution with mean m_normal_mean and standard deviation m_normal_stddev to return a
distribution observation.
amrex::Real observation;
do { observation = amrex::RandomNormal(m_normal_mean, m_normal_stddev, a_engine); }
while (!(m_min <= observation && observation <= m_max));
return observation;
The function amrex::RandomNormal returns one pseudo-random real number (double). The sample is discarded and the distribution
is sampled again until the value satisfies \(\mathrm{xmin} \le x\) and \(x \le \mathrm{xmax}\).
When the distribution to be sampled is the derived one, Eq.2 is sampled by rejection sampling. A candidate \(x\) is drawn uniformly from \(\left[ x_\mathrm{min}, x_\mathrm{max} \right]\) and accepted with probability \(g(x)/g_\mathrm{max}\), where
is the unnormalized derived density (\(x^{3}\) when a number-weighted distribution is specified, \(x^{-3}\) when a volume-weighted distribution is specified) and \(g_\mathrm{max}\) is its maximum on \(\left[ x_\mathrm{min}, x_\mathrm{max} \right]\). Accepted candidates are distributed exactly according to Eq.2.
amrex::Real observation, g;
do {
observation = m_min + (m_max - m_min)*amrex::Random(a_engine);
amrex::Real const z = (observation - m_normal_mean)/m_normal_stddev;
amrex::Real const x3 = observation*observation*observation;
g = std::exp(-0.5*z*z) * (m_is_number_weighted ? x3 : 1./x3);
}
while (amrex::Random(a_engine)*m_gmax > g);
return observation;
The function amrex::Random returns one pseudo-random real number (double) from a uniform distribution between
0.0 and 1.0. \(g_\mathrm{max}\) is computed once when the distribution is defined, as the largest value of
\(g\) at the interval endpoints and at the interior stationary point of \(g\), if there is one:
\(x^{3} \exp(\cdot)\) has its maximum at \(x = \left(\mu + \sqrt{\mu^2 + 12\sigma^2}\right)/2\);
\(x^{-3} \exp(\cdot)\) has a local maximum at \(x = \left(\mu + \sqrt{\mu^2 - 12\sigma^2}\right)/2\)
when \(\mu^2 \ge 12\sigma^2\), and is decreasing otherwise. The fraction of candidates accepted depends on the
inputs (about 40% for the example above) and affects only the cost of generating the initial particles.
log-normal distribution¶
The log-normal distribution is given by
where \(\mu\) and \(\sigma\) are parameters defining the distribution.
Note
\(\mu\) and \(\sigma\) are not the mean and standard deviation of \(x\). They are the mean and standard deviation of \(\mathrm{ln}(x)\). The mean (expectation), \(E(x)\), and variance, \(V(x)\), of the log-normal random variable are given by
and
respectively. See William Navidi [WN14] for an overview of log-normal distributions.
Description |
Type |
Default |
|
|---|---|---|---|
weighting |
distribution weighting: |
string |
N/A |
mean |
mean of of the normal random variable, \(\mathrm{ln}(X)\) |
Real |
N/A |
stddev |
standard deviation of the normal random variable, \(\mathrm{ln}(X)\) |
Real |
N/A |
min |
Minimum particle diameter. Drawn samples below |
Real |
N/A |
max |
Maximum particle diameter. Drawn samples above |
Real |
N/A |
bins |
Number of bins used when discretizing the distribution to approximate the number of particles within an initial condition region. |
int |
64 |
In the following example, a cuboid with volume 0.001 m3 is filled with a volume-weighted log-normal distribution with the listed parameters. The minimum and maximum particle diameters are 0.23 mm and 3.00 mm, respectively.
log-normal distribution. This is not a complete input file.¶# Regions for defining ICs and BCs
# -----------------------------------------------------------------------
regions = full-domain
regions.full-domain.lo = 0.0 0.0 0.0
regions.full-domain.hi = 0.1 0.1 0.1
# Initial Conditions
# -----------------------------------------------------------------------
ic.regions = full-domain
mfix.particle_init_type = Auto
# Full domain
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>
ic.full-domain.fluid.volfrac = 0.75
ic.full-domain.fluid.density = 1.0
ic.full-domain.fluid.pressure = 0.0
ic.full-domain.fluid.velocity = 0.0 0.0 0.0
ic.full-domain.solids = solid0
ic.full-domain.packing = random
ic.full-domain.solid0.volfrac = 0.25
ic.full-domain.solid0.velocity = 0.00 0.00 0.00
ic.full-domain.solid0.diameter.distribution = log-normal
ic.full-domain.solid0.diameter.weighting = volume-weighted
ic.full-domain.solid0.diameter.mean = -3.662955279
ic.full-domain.solid0.diameter.std = 1.04
ic.full-domain.solid0.diameter.min = 30.e-6 # (m)
ic.full-domain.solid0.diameter.max = 3000.e-6 # (m)
ic.full-domain.solid0.density.distribution = constant
ic.full-domain.solid0.density.constant = 2500.0 # (kg/m^3)
An MFIX-Exa DEM simulation with these settings generates approximately 162,000 particles. The particle size distribution (open circles), and number-weighted (orange), and volume-weighted (blue) density functions are shown in Fig. 31.
Fig. 31 MFIX-Exa DEM particle size distribution (open circles) and number-weighted (orange) and volume-weighted (blue) density functions.¶
An MFIX-Exa PIC simulation with the same settings generates approximately 410,000 parcels when pic.close_pack = 0.64,
pic.parcels_per_cell_at_pack = 32, and the Eulerian mesh spacing \(\Delta x\) is 3.125 mm.
Fig. 32 shows the parcel size distribution (open triangles) and number-weighted (orange)
and volume-weighted (blue) density functions. Again, small closed circles indicate the effective particle distribution
captured by the PIC parcels.
Fig. 32 MFIX-Exa PIC parcel size distribution (open triangles), number-weighted density function (orange), and volume-weighted density function (blue). Small closed circles indicated the particle size distribution modeled by the parcels.¶
Converting between number-weighted and volume-weighted parameters for log-normal distributions
As reported by El-Hilo [EH12], El-Hilo and Chantrell [EHC12], number-weighted and volume-weighted log-normal distributions use the same \(\sigma\) parameter
while the parameter \(\mu\) is computed directly from the other distribution.
Sampling a log-normal distribution
Rather than sample the log-normal distribution, MFIX-Exa samples the normal distribution with
mean m_mean and standard deviation m_stddev.
amrex::Real observation;
do { observation = amrex::RandomNormal(m_mean, m_stddev, a_engine); }
while (!(m_log_min <= observation && observation <= m_log_max));
return std::exp(observation);
The function amrex::RandomNormal returns one pseudo-random real number (double). The sample is discarded and the distribution
is sampled again until the value satisfies \(\log \mathrm{xmin} \le \log x\) and \(\log x \le \log \mathrm{xmax}\).
The log-normal variable is returned by applying the exponential function, \(x = \exp ( \log x )\).
uniform distribution¶
The uniform distribution is given by
where \(x_\mathrm{min}\) and \(x_\mathrm{max}\) are the minimum and maximum particle diameters. The inputs used to specify the distribution are provided in the following table.
Description |
Type |
Default |
|
|---|---|---|---|
weighting |
distribution weighting: |
string |
N/A |
min |
Minimum particle diameter. Drawn samples below |
Real |
N/A |
max |
Maximum particle diameter. Drawn samples above |
Real |
N/A |
bins |
Number of bins used when discretizing the distribution to approximate the number of particles within an initial condition region. |
int |
64 |
In the following example, a cuboid with volume 0.001 m3 is filled with a number-weighted uniform distribution. The minimum and maximum particle diameters are 0.25 mm and 1.75 mm, respectively.
uniform distribution. This is not a complete input file.¶# Regions for defining ICs and BCs
# -----------------------------------------------------------------------
regions = full-domain
regions.full-domain.lo = 0.0 0.0 0.0
regions.full-domain.hi = 0.1 0.1 0.1
# Initial Conditions
# -----------------------------------------------------------------------
ic.regions = full-domain
mfix.particle_init_type = Auto
# Full domain
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>
ic.full-domain.fluid.volfrac = 0.95
ic.full-domain.fluid.density = 1.0
ic.full-domain.fluid.pressure = 0.0
ic.full-domain.fluid.velocity = 0.0 0.0 0.0
ic.full-domain.solids = solid0
ic.full-domain.packing = random
ic.full-domain.solid0.volfrac = 0.05
ic.full-domain.solid0.velocity = 0.00 0.00 0.00
ic.full-domain.solid0.diameter.distribution = uniform
ic.full-domain.solid0.diameter.weighting = number-weighted
ic.full-domain.solid0.diameter.min = 250.e-6 # (m)
ic.full-domain.solid0.diameter.max = 1750.e-6 # (m)
ic.full-domain.solid0.density.distribution = constant
ic.full-domain.solid0.density.constant = 2500.0 # (kg/m^3)
An MFIX-Exa DEM simulation with these settings generates approximately 110,000 particles. The particle size distribution (open circles), and number-weighted (orange), and volume-weighted (blue) density functions are shown in Fig. 33.
Fig. 33 MFIX-Exa DEM uniform particle size distribution (open circles) and number-weighted (orange) and volume-weighted (blue) uniform density functions.¶
An MFIX-Exa PIC simulation with the same settings generates approximately 410,000 parcels when pic.close_pack = 0.64,
pic.parcels_per_cell_at_pack = 32, and the Eulerian mesh spacing \(\Delta x\) is 3.125 mm.
Fig. 34 shows the parcel size distribution (open triangles) and number-weighted (orange)
and volume-weighted (blue) density functions. Again, small closed circles indicate the effective particle distribution
captured by the PIC parcels.
Fig. 34 MFIX-Exa PIC uniform parcel size distribution (open triangles), number-weighted (orange) and volume-weighted (blue) uniform density functions. Small closed circles indicated the particle size distribution modeled by the parcels.¶
Sampling a uniform distribution
DEM simulations where a number-weighted distribution is specified and PIC simulations where a volume-weighted distribution is specified compute a uniformly distributed variable \(rand \in \left( 0, 1 \right)\), then scale and translate the result such that \(x \in \left[ x_\mathrm{min}, x_\mathrm{max} \right)\).
amrex::Real rand = amrex::Random(a_engine);
return m_min + (m_max-m_min)*rand;
The function amrex::Random returns one pseudo-random real number (double) from a
uniform distribution between 0.0 and 1.0 (0.0 included, 1.0 excluded).
Inverse sampling is used when a volume-weighted distribution is specified for a DEM simulation and when a number-weighted distribution is specified for a PIC simulation. This approach generates random variates from the continuous distribution function \(F\) using the inverse function \(F^{-1}\).
If \(\mathcal{U}\) is a uniform random variable on the interval \([0,1]\) and \(F\) is a continuous cumulative distribution function on \([a,b]\) with inverse
\[F^{-1}(u) = \inf \left\{ x: F(x) = u \right\}\]then \(F^{-1}(\mathcal{U})\) has cumulative distribution function \(F\) (adapted from Devroye [Dev86]).
The number-weighted density function, \(f_X^N(x)\), is computed from a specified volume-weighted density function by dividing Eq.4 by \(x^3\). The brace notation indicating that the density function is zero for \(x \notin \left[ x_\mathrm{min}, x_\mathrm{max} \right]\) is dropped for conciseness.
The cumulative distribution function and its inverse are
and
where \(a = x_{\mathrm{min}}\) and \(b = x_{\mathrm{max}}\). To sample \(f_X^V(x)\), a uniformly distributed variable \(u \in \mathcal{U}(0,1)\) is generated and substituted into the inverse cumulative distribution function.
amrex::Real rand = amrex::Random(a_engine);
amrex::Real const b(m_max);
amrex::Real const a(m_min);
amrex::Real const a2(a*a), b2(b*b);
return (a*b)/std::sqrt(b2 - rand*(b2-a2));
Similarly, a volume-weighted density function, \(f_X^V(x)\), is computed from a number-weighted distribution by multiplying Eq.4 by \(x^3\). Again, the brace notation indicating that the density function is zero for \(x \notin \left[ x_\mathrm{min}, x_\mathrm{max} \right]\) is dropped for conciseness.
The cumulative distribution function and its inverse are
and
where \(a = x_{\mathrm{min}}\) and \(b = x_{\mathrm{max}}\). To sample \(f_X^V(x)\), a uniformly distributed variable \(u \in \mathcal{U}(0,1)\) is generated and substituted into the inverse cumulative distribution function.
amrex::Real rand = amrex::Random(a_engine);
amrex::Real const b(m_max);
amrex::Real const a(m_min);
amrex::Real const a4(a*a*a*a), b4(b*b*b*b);
return std::pow(a4 + rand*(b4-a4),0.25);
custom distribution¶
A user-defined custom distribution can be specified by providing discrete probabilities via a text file.
Description |
Type |
Default |
|
|---|---|---|---|
custom |
File name of user-defined distribution |
String |
N/A |
min |
Minimum particle diameter. Drawn samples below |
Real |
N/A |
max |
Maximum particle diameter. Drawn samples above |
Real |
N/A |
interpolate |
Enable linear interpolation between discrete bins. This option is only available when the initial distribution probability is zero. |
Bool |
false |
The distribution input file contains four components:
line 1: number of distribution entries (integer)
line 2: specifies the distribution as
CDForPDF(string)line 3: comment or blank line (unused by solver)
remaining lines define the bin and probability (Real Real)
The following sections provide a few examples of custom distribution configurations.
Bidisperse mixutre without interpoaltion
In the following example, a cuboid with volume 0.001 m3 is filled with a number-weighted distribution. The distribution is a 50/50 mixture of two particle sizes.
custom distribution. This is not a complete input file.¶# Regions for defining ICs and BCs
# -----------------------------------------------------------------------
regions = full-domain
regions.full-domain.lo = 0.0 0.0 0.0
regions.full-domain.hi = 0.1 0.1 0.1
# Initial Conditions
# -----------------------------------------------------------------------
ic.regions = full-domain
mfix.particle_init_type = Auto
# Full domain
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>
ic.full-domain.fluid.volfrac = 0.95
ic.full-domain.fluid.density = 1.0
ic.full-domain.fluid.pressure = 0.0
ic.full-domain.fluid.velocity = 0.0 0.0 0.0
ic.full-domain.solids = solid0
ic.full-domain.packing = random
ic.full-domain.solid0.volfrac = 0.05
ic.full-domain.solid0.velocity = 0.00 0.00 0.00
ic.full-domain.solid0.diameter.distribution = custom
ic.full-domain.solid0.diameter.custom = bidisperse-pdf.dist
ic.full-domain.solid0.diameter.weighting = number-weighted
ic.full-domain.solid0.density.distribution = constant
ic.full-domain.solid0.density.constant = 2500.0 # (kg/m^3)
ic.full-domain.solid0.density.distribution = constant
ic.full-domain.solid0.density.constant = 2500.0 # (kg/m^3)
12
2PDF
3# bidisperse mixture
4 500.e-6 0.5
51000.e-6 0.5
An MFIX-Exa DEM simulation with these settings generates approximately 180,000 particles with half
of the particles having diameter 0.5 mm and half have diameter 1.0 mm.
An MFIX-Exa PIC simulation with the same settings generates approximately 82,000 parcels when pic.close_pack = 0.64,
pic.parcels_per_cell_at_pack = 32, and the Eulerian mesh spacing \(\Delta x\) is 3.125 mm. Approximately
10% of the parcels have diameter 0.5 mm and 90% have diameter 1.0 mm.
Bimodal mixutre
The following example uses the same layout as the previous example, however the custom distribution is of a CDF describing a bimodal distribution created by combining two normal distributions.
ic.full-domain.solid0.volfrac = 0.05
ic.full-domain.solid0.velocity = 0.00 0.00 0.00
ic.full-domain.solid0.diameter.distribution = custom
ic.full-domain.solid0.diameter.custom = bimodal-cdf.dist
ic.full-domain.solid0.diameter.weighting = number-weighted
125
2CDF
3# bimodal distribution created from two normal distributions
40.000144 0.0000
50.000240 0.0063
60.000336 0.0360
70.000384 0.0818
80.000416 0.1356
90.000432 0.1919
100.000456 0.2495
110.000480 0.3053
120.000496 0.3587
130.000528 0.4055
140.000568 0.4447
150.000584 0.4822
160.000600 0.5191
170.000616 0.5566
180.000632 0.5958
190.000664 0.6408
200.000704 0.6942
210.000720 0.7501
220.000752 0.8075
230.000768 0.8638
240.000784 0.9177
250.000816 0.9635
260.000864 0.9932
270.000960 0.9995
280.001056 1.0000
An MFIX-Exa DEM simulation with these settings generates approximately 2,285,000 particles. The particle size distribution (open circles), and number-weighted (orange), and volume-weighted (blue) density functions are shown in Fig. 35.
Fig. 35 MFIX-Exa DEM custom bimodal particle size distribution (open circles) and number-weighted (orange) and volume-weighted (blue) density functions.¶
An MFIX-Exa PIC simulation with the same settings generates approximately 82,000 parcels when pic.close_pack = 0.64,
pic.parcels_per_cell_at_pack = 32, and the Eulerian mesh spacing \(\Delta x\) is 3.125 mm. The parcel size distribution
shown in Fig. 36 (open triangles) follows the volume-weighted density function.
Small closed circles illustrate the effective particle size distribution, computed by multiplying each observation
by the parcel statistical weight.
Fig. 36 MFIX-Exa PIC custom bimodal parcel size distribution (open triangles), number-weighted (orange) and volume-weighted (blue) density functions. Small closed circles indicated the particle size distribution modeled by the parcels.¶
Measured size distribution
The final example uses the same layout as the previous examples, however the custom distribution
is a CDF describing an experimentally measured size distribution and the distribution type is volume-weighted.
ic.full-domain.solid0.volfrac = 0.05
ic.full-domain.solid0.velocity = 0.00 0.00 0.00
ic.full-domain.solid0.diameter.distribution = custom
ic.full-domain.solid0.diameter.custom = qicpic-cdf.dist
ic.full-domain.solid0.diameter.weighting = volume-weighted
132
2CDF
3
40.00025 0.0013499
50.000298387 0.00250452
60.000346774 0.00448884
70.000395161 0.00777403
80.000443548 0.0130136
90.000491935 0.0210638
100.000540323 0.0329789
110.00058871 0.0499683
120.000637097 0.0733046
130.000685484 0.104184
140.000733871 0.143547
150.000782258 0.191886
160.000830645 0.24907
170.000879032 0.314239
180.000927419 0.385785
190.000975806 0.461453
200.00102419 0.538547
210.00107258 0.614215
220.00112097 0.685761
230.00116935 0.75093
240.00121774 0.808114
250.00126613 0.856453
260.00131452 0.895816
270.0013629 0.926695
280.00141129 0.950032
290.00145968 0.967021
300.00150806 0.978936
310.00155645 0.986986
320.00160484 0.992226
330.00165323 0.995511
340.00170161 0.997495
350.00175 0.99865
An MFIX-Exa DEM simulation with these settings generates approximately 963,000 particles. The particle size distribution (open circles), and number-weighted (orange plus), and volume-weighted (blue cross) probabilities are shown in Fig. 37.
Fig. 37 MFIX-Exa DEM custom bimodal particle size distribution (open circles) and number-weighted (orange plus) and volume-weighted (blue cross ) probabilities.¶
An MFIX-Exa PIC simulation with the same settings generates approximately 164,000 parcels when pic.close_pack = 0.64,
pic.parcels_per_cell_at_pack = 64, and the Eulerian mesh spacing \(\Delta x\) is 3.125 mm. The parcel size distribution
shown in Fig. 38 (open triangles) follows the volume-weighted probabilities.
Small closed circles illustrate the effective particle size distribution, computed by multiplying each observation
by the parcel statistical weight.
Fig. 38 MFIX-Exa PIC custom bimodal parcel size distribution (open triangles), number-weighted (orange plus) and volume-weighted (blue cross) probabilities. Small closed circles indicated the particle size distribution modeled by the parcels.¶