diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ce991b9030afab48e9a943dfe90a64e00062eaa3..af197c9250e6d1ede4cf3609cf93bb3d66d091a8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -15,7 +15,7 @@ workflow: docs:userguide: image: sphinxdoc/sphinx:latest script: - - pip install -q sphinx_rtd_theme sphinx_tabs + - pip install -q sphinx_rtd_theme sphinx_tabs sphinxcontrib-bibtex - sphinx-build -b html docs/source_docs/ build/docs - sphinx-build -b html docs/picvva/ build/picvva stage: build-docs @@ -31,7 +31,7 @@ docs:codespell: image: sphinxdoc/sphinx:latest script: - pip install codespell - - codespell --enable-colors --quiet-level 2 docs/source_docs/ docs/picvva/ + - codespell --ignore-words-list strack --enable-colors --quiet-level 2 docs/source_docs/ docs/picvva/ stage: build-docs tags: - docker diff --git a/docs/source_docs/_static/theme_overrides.css b/docs/source_docs/_static/theme_overrides.css index 7c1a5202231086af91e2bd4b388d8de4b064f27f..75a87ae54e1dcf24ef9863f018befc6ed3b49f84 100644 --- a/docs/source_docs/_static/theme_overrides.css +++ b/docs/source_docs/_static/theme_overrides.css @@ -8,3 +8,10 @@ max-width: 100%; overflow: visible; } + +.math { + text-align: left; +} +.eqno { + float: right; +} diff --git a/docs/source_docs/conf.py b/docs/source_docs/conf.py index 23ddcc2f1a5eec855f1e3a1688831ada476949f8..82aa9ba742cb265a3331558791c7690ba7944610 100644 --- a/docs/source_docs/conf.py +++ b/docs/source_docs/conf.py @@ -35,7 +35,8 @@ extensions = ['sphinx.ext.mathjax', 'sphinx.ext.githubpages', 'sphinx.ext.viewcode', 'sphinx_tabs.tabs', - 'sphinx.ext.todo'] + 'sphinx.ext.todo', + 'sphinxcontrib.bibtex' ] # Add any paths that contain templates here, relative to this directory. templates_path = ['ytemplates'] @@ -84,6 +85,9 @@ todo_include_todos = False # This is necessary to reference numbered figures numfig = True +math_numfig = True + +bibtex_bibfiles = ['refs.bib'] # -- Options for HTML output ---------------------------------------------- diff --git a/docs/source_docs/definitions.rst b/docs/source_docs/definitions.rst new file mode 100644 index 0000000000000000000000000000000000000000..2aed9ffa5b3e522e8bb1c1023dd2a1b3b27ac843 --- /dev/null +++ b/docs/source_docs/definitions.rst @@ -0,0 +1,3 @@ + +.. |cdot| unicode:: 0xB7 .. middle dot (https://www.compart.com/en/unicode/U+00B7) + diff --git a/docs/source_docs/index.rst b/docs/source_docs/index.rst index 7d9dc386d0a9b8e0001640564b6f1b0b2885345b..9dc8059b3b1f6f68ebbd9cc8a8ee80da2c367d48 100644 --- a/docs/source_docs/index.rst +++ b/docs/source_docs/index.rst @@ -54,11 +54,14 @@ To learn more about the implementation, follow the following reference sections: :caption: Reference: references/units + references/size_distributions + ManagingGridHierarchy_Chapter Fluids_Chapter Particles_Chapter EB_Chapter references/hpc Debugging + works_cited .. toctree:: :maxdepth: 0 @@ -73,7 +76,6 @@ and performance: :maxdepth: 0 :caption: Tests and Benchmarks: - ManagingGridHierarchy_Chapter RunningTestSuite RegressionTesting CITests diff --git a/docs/source_docs/references/images/log-normal_dem_FVw.png b/docs/source_docs/references/images/log-normal_dem_FVw.png new file mode 100644 index 0000000000000000000000000000000000000000..a9eff82c41b1ec1ec30c5925e08731904b77fcdf Binary files /dev/null and b/docs/source_docs/references/images/log-normal_dem_FVw.png differ diff --git a/docs/source_docs/references/images/log-normal_pic_FVw.png b/docs/source_docs/references/images/log-normal_pic_FVw.png new file mode 100644 index 0000000000000000000000000000000000000000..ff3b80be81f19115d578e0165f60b045e3d362e4 Binary files /dev/null and b/docs/source_docs/references/images/log-normal_pic_FVw.png differ diff --git a/docs/source_docs/references/images/normal-dist-pdf-approx_FN.png b/docs/source_docs/references/images/normal-dist-pdf-approx_FN.png new file mode 100644 index 0000000000000000000000000000000000000000..402305a473054e103a2266d41c3dade48d566dce Binary files /dev/null and b/docs/source_docs/references/images/normal-dist-pdf-approx_FN.png differ diff --git a/docs/source_docs/references/images/normal_dem_FNw.png b/docs/source_docs/references/images/normal_dem_FNw.png new file mode 100644 index 0000000000000000000000000000000000000000..f01f457f91454a0ff5919588a116086a85c329af Binary files /dev/null and b/docs/source_docs/references/images/normal_dem_FNw.png differ diff --git a/docs/source_docs/references/images/normal_pic_FNw.png b/docs/source_docs/references/images/normal_pic_FNw.png new file mode 100644 index 0000000000000000000000000000000000000000..f69958f899e60a451c753778fd08faca6adb3574 Binary files /dev/null and b/docs/source_docs/references/images/normal_pic_FNw.png differ diff --git a/docs/source_docs/references/images/uniform_dem_FNw.png b/docs/source_docs/references/images/uniform_dem_FNw.png new file mode 100644 index 0000000000000000000000000000000000000000..c1b7d1f7497b86880ca8dc9232d298997e1545b4 Binary files /dev/null and b/docs/source_docs/references/images/uniform_dem_FNw.png differ diff --git a/docs/source_docs/references/images/uniform_pic_FNw.png b/docs/source_docs/references/images/uniform_pic_FNw.png new file mode 100644 index 0000000000000000000000000000000000000000..b3df31c18c563ba2d1feade4ad249c653b85631f Binary files /dev/null and b/docs/source_docs/references/images/uniform_pic_FNw.png differ diff --git a/docs/source_docs/references/size_distributions.rst b/docs/source_docs/references/size_distributions.rst new file mode 100644 index 0000000000000000000000000000000000000000..b16dede9e108882eaabf4b67b3ca7026c0176700 --- /dev/null +++ b/docs/source_docs/references/size_distributions.rst @@ -0,0 +1,765 @@ +.. _ReferenceParticleDistributions: + +.. include:: ../definitions.rst + +Particle 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, :math:`f_X^N(x)\,dx`, can be interpreted + as defining the *number of particles* with diameters between :math:`x` and :math:`x+dx`, + divided by the total number of particles. + +Volume-weighted diameter distribution + The volume-weighted diameter density function, :math:`f_X^V(x)\,dx`, similarly can be interpreted + as defining the *volume of particles* with diameters between :math:`x` and :math:`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. + +The code uses both distribution weightings, computing (or approximating) +whichever distribution weighting that was not provided. For example, if a +number-weighted normal distribution is provided, the corresponding volume-weighted +normal distribution is computed. 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 for fewer parcels to represent very +small particles while using more parcels to represent large particles in the distribution. +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 mono-disperse distribution | Real | N/A | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ + +In the following example, a cuboid is filled with 1 mm diameter monodisperse particles with 2500 kg\ |cdot|\ m\ :sup:`-3` +density. The initial condition region volume is 0.001 m\ :sup:`3`, and it has a solids volume fraction of 0.05 (5% solids). + +.. code-block:: bash + :caption: Snippet of inputs defining a ``constant`` distribution. **This is not a complete input file.** + + # Regions for defining ICs and BCs + # ----------------------------------------------------------------------- + mfix.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 = constant + ic.full-domain.solid0.diameter.constant = 1000.e-6 # (m) + + ic.full-domain.solid0.density = constant + ic.full-domain.solid0.density.constant = 2500.0 # (kg/m^3) + +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 +:math:`\Delta x` of 3.125 mm generates approximately 164,000 parcels. + + +``normal`` distribution +^^^^^^^^^^^^^^^^^^^^^^^ + +The ``normal`` or Gaussian distribution is given by + +.. math:: + :label: eq_normal_dist + + f_X(x) = \frac{d}{dx}F_X(x) = \frac{1}{\sigma \sqrt{2\pi}} \exp{\left(- \frac{(x - \mu)^2 }{ 2 \sigma^2 }\right)} + +where the parameter :math:`\mu` is the distribution mean, and :math:`\sigma` is the standard deviation. The inputs +used to specify the distribution are provided in the following table. + ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| | Description | Type | Default | ++=====================+=======================================================================+=============+===========+ +| type | distribution weighting: ``number-weighted`` or ``volume-weighted`` | string | N/A | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| mean | mean of the normal random variable, :math:`X` | Real | N/A | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| std | standard deviation of the normal random variable, :math:`X` | Real | N/A | +| | | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| min | Minimum particle diameter. Drawn samples below ``min`` are discarded | Real | N/A | +| | and a new sample is drawn. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| max | Maximum particle diameter. Drawn samples above ``max`` are discarded | Real | N/A | +| | and a new sample is drawn. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| bins | Number of bins used when discretizing the distribution to approximate | int | 64 | +| | the number of particles within an initial condition region. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ + +In the following example, a cuboid with volume 0.001 m\ :sup:`3` 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. + +.. code-block:: bash + :caption: Snippet of inputs defining a number-weighted ``normal`` distribution. **This is not a complete input file.** + + # Regions for defining ICs and BCs + # ----------------------------------------------------------------------- + mfix.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 = normal + ic.full-domain.solid0.diameter.type = 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 = 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 :numref:`fig_normal_dem_FNw_MFIX_Np` (open circles) in addition to the number-weighted (orange) +and volume-weighted (blue) density functions. As noted by :cite:t:`weiner11`, the volume-weighted +probability density function (PDF) is shifted to the right of the number-weighted PDF. + +.. _fig_normal_dem_FNw_MFIX_Np: + +.. figure:: ./images/normal_dem_FNw.png + :width: 95% + :align: center + :alt: DEM FN and Np + + 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.17 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 :math:`\Delta x` is 3.125 mm. The parcel size distribution +shown in :numref:`fig_normal_pic_FNw_MFIX_Np` (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_normal_pic_FNw_MFIX_Np: + +.. figure:: ./images/normal_pic_FNw.png + :width: 95% + :align: center + :alt: PIC FN and Np + + 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.17 mm mean and ~0.23 mm standard deviation are also plotted. + +The following sections outline how MFIX-Exa computes volume-weighted normal density function parameters from +number-weighted normal density function parameters, and conversely, how number-weighted normal density function +parameters are computed from volume-weighted density function parameters. + +.. rubric:: Computing volume-weighted normal density function parameters, :math:`\mu_V` and :math:`\sigma_V`, from + number-weighted normal density function parameters, :math:`\mu_N` and :math:`\sigma_N` + +The volume-weighted density function, :math:`f_X^V(x)`, computed from the normally distributed number-weighted density +function, :math:`f_X^N(x)`, is normally distributed with mean, :math:`\mu_V`, and variance, :math:`\sigma_V^2`. An +expression for the volume-weighted density function is obtained by multiplying :eq:`eq_normal_dist` by :math:`x^3` +and substituting in the mean and standard deviation of the number-weighted distribution. + +.. math:: + + \tilde{f}_X^V(x) = \frac{x^3}{\sigma_N \sqrt{2\pi}} \exp{\left(- \frac{(x - \mu_N)^2 }{ 2 \sigma_N^2 }\right)} + +The mean of this distribution is computed as + +.. math:: + :label: eq_normal_dist_FN_to_FV_mean + + \begin{align} + \mu_V =& \frac{ \int_{-\infty}^{\infty} x \tilde{f}_X^V(x) dx }{\int_{-\infty}^{\infty} \tilde{f}_X^V(x) dx } \\[10pt] + =& \frac{3\sigma_N^4 + 6\sigma_N^2\mu_N^2 + \mu_N^4}{3\sigma_N^2 \mu_N + \mu_N^3} + \end{align} + +and the variance is given by + +.. math:: + :label: eq_normal_dist_FN_to_FV_variance + + \begin{align} + \sigma^2_V =& \frac{ \int_{-\infty}^{\infty} (x - \mu_V)^2 \tilde{f}_X^V(x) dx }{\int_{-\infty}^{\infty} \tilde{f}_X^V(x) dx } \\[10pt] + =& \frac{3\sigma_N^4 (3\mu_N + 2b) + \sigma^2(\mu_N^3 + 6\mu_N^2 b + 3\mu_Nb^2)+\mu_N^3 b^2}{3\sigma_N^2 \mu_N + \mu_N^3} + \end{align} + +where :math:`b = (\mu_N - \mu_V)`. Because the volume-weighted distribution is normally distributed, the computed +mean and variance can be substituted directly into :eq:`eq_normal_dist`. + +.. math:: + + f_X^V(x) = \frac{1}{\sigma_V \sqrt{2\pi}} \exp{\left(- \frac{(x - \mu_V)^2 }{ 2 \sigma_V^2 }\right)} + +.. rubric:: Computing number-weighted normal density function parameters, :math:`\mu_N` and :math:`\sigma_N`, from + volume-weighted normal density function parameters, :math:`\mu_V` and :math:`\sigma_V` + +The number-weighted density function mean and standard deviation, :math:`\mu_N` and :math:`\sigma_N`, are computed from the volume-weighted +mean and standard deviation, :math:`\mu_V` and :math:`\sigma_V`, by solving the nonlinear system of equations constructed from +:eq:`eq_normal_dist_FN_to_FV_mean` and :eq:`eq_normal_dist_FN_to_FV_variance` for :math:`\mu_N` and :math:`\sigma_N`. + +.. math:: + + \begin{align} + f_1(\mu_N,\sigma_N) &= \left( 3\sigma_N^4 + 6\sigma_N^2\mu_N^2 + \mu_N^4 \right) - \mu_V \left( 3\sigma_N^2 \mu_N + \mu_N^3 \right) = 0 \\ + f_2(\mu_N,\sigma_N) &= \left(3\sigma_N^4 (3\mu_N + 2b) + \sigma^2(\mu_N^3 + 6\mu_N^2 b + 3\mu_Nb^2)+\mu_N^3 b^2\right) - \sigma^2_V \left( 3\sigma_N^2 \mu_N + \mu_N^3 \right) = 0 + \end{align} + +This system is solved using the homotopy method outlined in :cite:t:`Burden10`. To ensure rapid convergence, initial guesses for +:math:`\mu_N` and :math:`\sigma_N` are calculated from the density function created by dividing :eq:`eq_normal_dist` by :math:`x^3` +and substituting in the mean and standard deviation of the volume-weighted distribution, :math:`\mu_V` and :math:`\sigma_V`. + +.. math:: + :label: eq_normal_dist_FV_to_FN_initial_expression + + \tilde{f}_X^N(x) = \frac{1}{x^3\sigma_V \sqrt{2\pi}} \exp{\left(- \frac{(x - \mu_V)^2 }{ 2 \sigma_V^2 }\right)} + + +:math:`\tilde{f}_X^N(x)`, shown in :numref:`fig_normal-dist-pdf-approx_FN`, is not the number-weighted density function, +but an approximation to it. The mean and variance are calculated by numerically integrating :math:`\tilde{f}_X^N(x)` +over the interval :math:`x \in \left[ x_\mathrm{min}, x_\mathrm{max} \right]` where :math:`x_{min}` and :math:`x_{mid}` +are found by setting the derivative of :eq:`eq_normal_dist_FV_to_FN_initial_expression` to zero and computing the roots. +:math:`x_\mathrm{max}` is chosen to mirror :math:`x_\mathrm{min}` across the midpoint. + +.. math:: + :label: eq_normal_dist_FV_to_FN_discrete_values + + \begin{align} + x_{\mathrm{min}} \; =& \; \left( \mu_V - \sqrt{\mu_V^2 -12\sigma_V^2}\right)/2 \\ + x_{\mathrm{mid}} \; =& \; \left(\mu_V + \sqrt{\mu_V^2 -12\sigma_V^2}\right)/2 \\ + x_{\mathrm{max}} \; =& \; 2x_{\mathrm{mid}} - x_{\mathrm{min}} + \end{align} + +.. _fig_normal-dist-pdf-approx_FN: + +.. figure:: ./images/normal-dist-pdf-approx_FN.png + :width: 95% + :align: center + :alt: approximate number-weighted pdf + + The number-weighted normal distribution function approximated by dividing the volume-weighted + distribution function by x\ :sup:`3`. The approximate mean and variance are computed by numerically + integrating this function from x\ :sub:`min` to x\ :sub:`max`. + +.. rubric:: Sampling a normal distribution + +MFIX-Exa samples the normal distribution with mean ``m_mean`` and standard deviation ``m_stddev`` to return an +distribution observation. + +.. code:: + + amrex::Real observation; + + do { observation = amrex::RandomNormal(m_mean, m_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 :math:`\mathrm{xmin} \le x` and :math:`x \le \mathrm{xmax}`. + + +``log-normal`` distribution +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The ``log-normal`` distribution is given by + +.. math:: + + f_X(x) = \frac{d}{dx}F_X(x) = \frac{1}{x \sigma \sqrt{2\pi}} \exp{\left(- \frac{(\mathrm{ln}(x) - \mu)^2 }{ 2 \sigma^2 }\right)} + +where :math:`\mu` and :math:`\sigma` are parameters defining the distribution. + +.. note:: + :math:`\mu` and :math:`\sigma` **are not** the mean and standard deviation of :math:`x`. They are the mean and + standard deviation of :math:`\mathrm{ln}(x)`. The mean (expectation), :math:`E(x)`, and variance, :math:`V(x)`, + of the log-normal random variable are given by + + .. math:: + + E(x) = \exp{\left(\mu + \sigma^s/2\right)} + + and + + .. math:: + + V(x) = \exp{\left(2\mu + 2\sigma^2\right)} - \exp{\left(2\mu + \sigma^2\right)} + + respectively. See :cite:t:`william2014` for an overview of log-normal distributions. + + ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| | Description | Type | Default | ++=====================+=======================================================================+=============+===========+ +| type | distribution weighting: ``number-weighted`` or ``volume-weighted`` | string | N/A | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| mean | mean of of the normal random variable, | Real | N/A | +| | :math:`\mathrm{ln}(X)` | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| stddev | standard deviation of the normal random variable, | Real | N/A | +| | :math:`\mathrm{ln}(X)` | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| min | Minimum particle diameter. Drawn samples below ``min`` are discarded | Real | N/A | +| | and a new sample is drawn. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| max | Maximum particle diameter. Drawn samples above ``max`` are discarded | Real | N/A | +| | and a new sample is drawn. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| bins | Number of bins used when discretizing the distribution to approximate | int | 64 | +| | the number of particles within an initial condition region. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ + + +In the following example, a cuboid with volume 0.001 m\ :sup:`3` 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. + +.. code-block:: bash + :caption: Snippet of inputs defining a number-weighted ``log-normal`` distribution. **This is not a complete input file.** + + # Regions for defining ICs and BCs + # ----------------------------------------------------------------------- + mfix.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 = log-normal + ic.full-domain.solid0.diameter.type = 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 = 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 :numref:`fig_log_normal_dem_FVw_MFIX_Np`. + +.. _fig_log_normal_dem_FVw_MFIX_Np: + +.. figure:: ./images/log-normal_dem_FVw.png + :width: 95% + :align: center + :alt: DEM FN and Np + + 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 :math:`\Delta x` is 3.125 mm. +:numref:`fig_log_normal_pic_FVw_MFIX_Np` 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_log_normal_pic_FVw_MFIX_Np: + +.. figure:: ./images/log-normal_pic_FVw.png + :width: 95% + :align: center + :alt: PIC FN and Np + + 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. + +.. rubric:: Converting between number-weighted and volume-weighted parameters for log-normal distributions + +As reported by :cite:t:`elhilo12,elhilo12a`, number-weighted and volume-weighted log-normal distributions +use the same :math:`\sigma` parameter + +.. math:: + + \sigma = \sigma_{N} = \sigma_{V} + +while the parameter :math:`\mu` is computed directly from the other distribution. + +.. math:: + + \begin{align} + \mu_V =& \mu_N + 3.0\sigma^2 \\[10pt] + \mu_N =& \mu_V - 3.0\sigma^2 + \end{align} + +.. rubric:: 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``. + +.. code:: + + 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 :math:`\log \mathrm{xmin} \le \log x` and :math:`\log x \le \log \mathrm{xmax}`. +The log-normal variable is returned by applying the exponential function, :math:`x = \exp ( \log x )`. + + +``uniform`` distribution +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The ``uniform`` distribution is given by + +.. math:: + :label: eq_uniform_dist + + f_X(x) = \frac{d}{dx}F_X(x) = + \begin{cases} + \left(x_\mathrm{max} - x_\mathrm{min}\right)^{-1}, & \text{for} \; x \in \left[ x_\mathrm{min}, x_\mathrm{max} \right] \\ + 0, & \text{otherwise} + \end{cases} + +where :math:`x_\mathrm{min}` and :math:`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 | ++=====================+=======================================================================+=============+===========+ +| type | distribution weighting: ``number-weighted`` or ``volume-weighted`` | string | N/A | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| min | Minimum particle diameter. Drawn samples below ``min`` are discarded | Real | N/A | +| | and a new sample is drawn. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| max | Maximum particle diameter. Drawn samples above ``max`` are discarded | Real | N/A | +| | and a new sample is drawn. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| bins | Number of bins used when discretizing the distribution to approximate | int | 64 | +| | the number of particles within an initial condition region. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ + +In the following example, a cuboid with volume 0.001 m\ :sup:`3` is filled with a number-weighted uniform distribution. +The minimum and maximum particle diameters are 0.25 mm and 1.75 mm, respectively. + +.. code-block:: bash + :caption: Snippet of inputs defining a number-weighted ``uniform`` distribution. **This is not a complete input file.** + + # Regions for defining ICs and BCs + # ----------------------------------------------------------------------- + mfix.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 = uniform + ic.full-domain.solid0.diameter.type = 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 = 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 :numref:`fig_uniform_dem_FNw_MFIX_Np`. + +.. _fig_uniform_dem_FNw_MFIX_Np: + +.. figure:: ./images/uniform_dem_FNw.png + :width: 95% + :align: center + :alt: DEM FN and Np + + 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 :math:`\Delta x` is 3.125 mm. +:numref:`fig_uniform_pic_FNw_MFIX_Np` 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_uniform_pic_FNw_MFIX_Np: + +.. figure:: ./images/uniform_pic_FNw.png + :width: 95% + :align: center + :alt: PIC FN and Np + + 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. + + +.. rubric:: 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 :math:`rand \in \left( 0, 1 \right)`, then scale and translate the +result such that :math:`x \in \left[ x_\mathrm{min}, x_\mathrm{max} \right)`. + +.. code:: + + 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 :math:`F` using the inverse function :math:`F^{-1}`. + + If :math:`\mathcal{U}` is a uniform random variable on the interval :math:`[0,1]` and + :math:`F` is a continuous cumulative distribution function on :math:`[a,b]` with inverse + + .. math:: + + F^{-1}(u) = \inf \left\{ x: F(x) = u \right\} + + then :math:`F^{-1}(\mathcal{U})` has cumulative distribution function :math:`F` (adapted from :cite:t:`devroye86`). + +The number-weighted density function, :math:`f_X^N(x)`, is computed from a specified volume-weighted density function +by dividing :eq:`eq_uniform_dist` by :math:`x^3`. The brace notation indicating that the density +function is zero for :math:`x \notin \left[ x_\mathrm{min}, x_\mathrm{max} \right]` is dropped for conciseness. + +.. math:: + + f_X^N(x) = \frac{1}{x^3 (x_{\mathrm{min}} - x_{\mathrm{max}})} + +The cumulative distribution function and its inverse are + +.. math:: + + \mathrm{Pr}\left(X \le x\right) = F_X^N(x) + = \frac{ \int_{a}^{x} f_X^N(y) dy }{\int_{a}^{b} f_X^N(y) dy } + = \frac{ b^2(x^2-a^2)}{x^2(b^2 - a^2)} + +and + +.. math:: + + {F_X^N}^{-1}(u) = \frac{ab}{\sqrt{b^2 - u(b^2 -a^2)}} + +where :math:`a = x_{\mathrm{min}}` and :math:`b = x_{\mathrm{max}}`. To sample :math:`f_X^V(x)`, a uniformly distributed +variable :math:`u \in \mathcal{U}(0,1)` is generated and substituted into the inverse cumulative distribution function. + +.. code:: + + 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, :math:`f_X^V(x)`, is computed from a number-weighted distribution +by multiplying :eq:`eq_uniform_dist` by :math:`x^3`. Again, the brace notation indicating that the density +function is zero for :math:`x \notin \left[ x_\mathrm{min}, x_\mathrm{max} \right]` is dropped for conciseness. + +.. math:: + + f_X^V(x) = \frac{x^3}{(x_{\mathrm{min}} - x_{\mathrm{max}})} + +The cumulative distribution function and its inverse are + +.. math:: + + \mathrm{Pr}\left(X \le x\right) = F_X^V(x) + = \frac{ \int_{a}^{x} f_X^V(y) dy }{\int_{a}^{b} f_X^V(y) dy } + = \frac{ x^4 - a^4 }{ b^4 - a^4 } + +and + +.. math:: + + {F_X^V}^{-1}(u) = \left(a^4 + u(b^4 - a^4)\right)^{1/4} + +where :math:`a = x_{\mathrm{min}}` and :math:`b = x_{\mathrm{max}}`. To sample :math:`f_X^V(x)`, a uniformly distributed +variable :math:`u \in \mathcal{U}(0,1)` is generated and substituted into the inverse cumulative distribution function. + +.. code:: + + 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 ``min`` are discarded | Real | N/A | +| | and a new sample is drawn. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| max | Maximum particle diameter. Drawn samples above ``max`` are discarded | Real | N/A | +| | and a new sample is drawn. | | | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| interpolate | Enable linear interpolation between discrete bins | bool | true | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| resample | Resample the distribution to obtain uniform bin widths | bool | true | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ +| bins | Number of bins used when resampleing the distribution. | int | 64 | ++---------------------+-----------------------------------------------------------------------+-------------+-----------+ + + + +.. code-block:: bash + :caption: Snippet of inputs defining a ``constant`` distribution. **This is not a complete input file.** + :linenos: + + 32 + CDF + # comment about the distribution + 0.00025 0.0013499 + 0.000298387 0.00250452 + 0.000346774 0.00448884 + 0.000395161 0.00777403 + 0.000443548 0.0130136 + 0.000491935 0.0210638 + 0.000540323 0.0329789 + 0.00058871 0.0499683 + 0.000637097 0.0733046 + 0.000685484 0.104184 + 0.000733871 0.143547 + 0.000782258 0.191886 + 0.000830645 0.24907 + 0.000879032 0.314239 + 0.000927419 0.385785 + 0.000975806 0.461453 + 0.00102419 0.538547 + 0.00107258 0.614215 + 0.00112097 0.685761 + 0.00116935 0.75093 + 0.00121774 0.808114 + 0.00126613 0.856453 + 0.00131452 0.895816 + 0.0013629 0.926695 + 0.00141129 0.950032 + 0.00145968 0.967021 + 0.00150806 0.978936 + 0.00155645 0.986986 + 0.00160484 0.992226 + 0.00165323 0.995511 + 0.00170161 0.997495 + 0.00175 0.99865 diff --git a/docs/source_docs/refs.bib b/docs/source_docs/refs.bib new file mode 100644 index 0000000000000000000000000000000000000000..5bec8d1ce75072b2a1912eba348e02a9a6c43292 --- /dev/null +++ b/docs/source_docs/refs.bib @@ -0,0 +1,477 @@ +@article{Alm08, + author = {Almedeij, J. }, + title = {Drag coefficient of flow around a sphere: matching asymptotically the wide trend}, + journal = {Powder Technology}, + year = {2008}, + volume = {186}, + pages = {218-223} +} + +@article{almgren96, +author = {Almgren, Ann S. and Bell, John B. and Szymczak, William G.}, +title = {A Numerical Method for the Incompressible Navier--Stokes Equations Based on an Approximate Projection}, +year = {1996}, +issue_date = {March 1996}, +publisher = {Society for Industrial and Applied Mathematics}, +address = {USA}, +volume = {17}, +number = {2}, +issn = {1064-8275}, +url = {https://doi.org/10.1137/S1064827593244213}, +doi = {10.1137/S1064827593244213}, +journal = {SIAM Journal on Scientific Computing}, +month = mar, +pages = {358–369}, +numpages = {12}, +} + +@article{And67, + author = {Anderson, T. B. and Jackson, R. }, + title = {A Fluid Mechanical Description of Fluidized Beds}, + journal = {Industrial \& Engineering Chemistry Fundamentals}, + year = {1967}, + volume = {6}, + pages = {527-534} +} + +@article{And96, +author = {Andrews, M. and O'Rourke, P. }, +title = {The multiphase particle-in-cell (MP-PIC) method for dense particulate flows}, +journal = {International Journal of Multiphase Flow}, +year = {1996}, +volume = {22}, +pages = {379-402} +} + +@article{Ara79, + author = {Arastoopour, H. and Gidaspow, D. }, + title = {Vertical Pneumatic Conveying Using Four Hydrodynamic Models}, + journal = {Industrial \& Engineering Chemistry Fundamentals}, + year = {1979}, + volume = {18}, + pages = {123-130} +} + +@article{Bee07, + author = {Beetstra, R. and van der Hoef, M. A. and Kuipers, J. A.M.}, + title = { Drag force of intermediate Reynolds number flow past mono- and bidisperse arrays of spheres}, + journal = {AIChE Journal}, + year = {2007}, + volume = {53}, + pages = {489–501} +} + +@article{Bee071, + author = {Beestra, R. and van der Hoef, M. A. and Kuipers, J. A.M.}, + title = {Erratum}, + journal = {AIChE Journal}, + year = {2007}, + volume = {2007}, + pages = {3020} +} + +@article{berger21, + title = {A state redistribution algorithm for finite volume schemes on cut cell meshes}, + author = {Marsha Berger and Andrew Giuliani}, + journal = {Journal of Computational Physics}, + volume = {428}, + pages = {109820}, + year = {2021}, + issn = {0021-9991}, + doi = {https://doi.org/10.1016/j.jcp.2020.109820}, + url = {https://www.sciencedirect.com/science/article/pii/S0021999120305945}, +} + +@book{Burden10, + title={Numerical Analysis}, + author={Burden, R.L. and Faires, J.D.}, + isbn={9780538733519}, + lccn={2010922639}, + year={2010}, + publisher={Cengage Learning} +} + + +@article{cap13, + author = {Capecelatro, J. and Desjardins, O. }, + title = {An Euler–Lagrange strategy for simulating particle-laden flows}, + journal = {Journal of Computational Physics}, + year = {2013}, + volume = {238}, + pages = {1-31} +} + + +@techreport{chern87, + author = {Chern, I.-L., and Colella, P. }, + title = {A conservative front tracking method for hyperbolic conservation laws}, + institution = {Lawrence Livermore National Laboratory}, + year = {1987}, + number = {UCRL-97200}, + address = {Livermore, CA}, + publisher = {Lawrence Livermore National Laboratory}, +} + + +@article{colella06, + author = {Phillip Colella and Daniel T. Graves and Benjamin J. Keen and David Modiano}, + title = {A Cartesian grid embedded boundary method for hyperbolic conservation laws}, + journal = {Journal of Computational Physics}, + volume = {211}, + number = {1}, + pages = {347-366}, + year = {2006}, + issn = {0021-9991}, + doi = {https://doi.org/10.1016/j.jcp.2005.05.026}, +} + + +@article{cundall79, + author = {Cundall, Peter A and Strack, Otto DL}, + title = {A discrete numerical model for granular assemblies}, + journal = {Geotechnique}, + volume = {29}, + number = {1}, + pages = {47-65}, + year = {1979} +} + +@article{deen07, + author={Deen, NG and Annaland, M Van Sint and Van der Hoef, Martin Anton and Kuipers, JAM}, + title={Review of discrete particle modeling of fluidized beds}, + journal={Chemical Engineering Science}, + volume={62}, + number={1-2}, + pages={28--44}, + year={2007}, + publisher={Elsevier} +} + +@Inbook{devroye86, + author="Devroye, Luc", + title="General Principles in Random Variate Generation", + bookTitle="Non-Uniform Random Variate Generation", + year="1986", + publisher="Springer New York", + address="New York, NY", + pages="27--82", + isbn="978-1-4613-8643-8", + doi="10.1007/978-1-4613-8643-8_2" +} + +@article{ding90, + author = {Ding, Jianmin and Gidaspow, Dimitri}, + title = {A bubbling fluidization model using kinetic theory of granular flow}, + journal = {AIChE Journal}, + volume = {36}, + number = {4}, + pages = {523-538}, + doi = {https://doi.org/10.1002/aic.690360404}, + url = {https://aiche.onlinelibrary.wiley.com/doi/abs/10.1002/aic.690360404}, + year = {1990} +} + +@article{Dua15, + author = {Duan, Z. and He, B. and Duan, Y. }, + title = {Sphere Drag and Heat Transfer}, + journal = {Scientific Reports}, + year = {2015}, + volume = {5}, + pages = {12304} +} + +@article{elhilo12, +author = {M. El-Hilo and R.W. Chantrell}, +title = {Rationalisation of distribution functions for models of nanoparticle magnetism}, +journal = {Journal of Magnetism and Magnetic Materials}, +volume = {324}, +number = {16}, +pages = {2593-2595}, +year = {2012}, +issn = {0304-8853}, +doi = {https://doi.org/10.1016/j.jmmm.2012.02.108}, +url = {https://www.sciencedirect.com/science/article/pii/S0304885312002132}, +} + +@article{elhilo12a, + author={El-Hilo, M}, + title={Nano-particle magnetism with a dispersion of particle sizes}, + journal={Journal of Applied Physics}, + volume={112}, + number={10}, + year={2012}, + publisher={AIP Publishing} +} + +@article{flad03, + author = {Alexander Fladerer and Reinhard Strey}, + title = {Growth of homogeneously nucleated water droplets: a quantitative comparison of experiment and theory}, + journal = {Atmospheric Research}, + volume = {65}, + number = {3}, + pages = {161 - 187}, + year = {2003}, + issn = "0169-8095", + doi = "https://doi.org/10.1016/S0169-8095(02)00148-5", + url = "http://www.sciencedirect.com/science/article/pii/S0169809502001485", +} + + + +@article{garg12, + title={Open-source {MFIX-DEM} software for gas-solids flows: {Part I-Verification studies}}, + author={Garg, Rahul and Galvin, Janine and Li, Tingwen and Pannala, Sreekanth}, + journal={Powder Technology}, + volume={220}, + pages={122--137}, + year={2012}, + publisher={Elsevier} +} + +@article{Gid83, + author = {Gidaspow, D. and Ettehadieh, B. }, + title = {Fluidization in Two-Dimensional Beds with a Jet; 2. Hydrodynamic Modeling}, + journal = {Industrial \& Engineering Chemistry Fundamentals}, + year = {1983}, + volume = {22}, + pages = {193-201} +} + +@article{giuliani22, +author = {A. Giuliani and A.S. Almgren and J.B. Bell and M.J. Berger and M.T. {Henry de Frahan} and D. Rangarajan}, +title = {A weighted state redistribution algorithm for embedded boundary grids}, +journal = {Journal of Computational Physics}, +volume = {464}, +pages = {111305}, +year = {2022}, +issn = {0021-9991}, +doi = {https://doi.org/10.1016/j.jcp.2022.111305}, +} + +@article{gunn78, + author = {Gunn, D. J.}, + title = {Transfer of heat or mass to particles in fixed and fluidised beds}, + journal = {International Journal of Heat and Mass Transfer}, + year = {1978}, + volume = {21}, + number = {4}, + pages = {467-476} +} + + +@article{harris94, + author={Harris, S. E. and Crighton, D. G.}, + title={Solitons, solitary waves, and voidage disturbances in gas-fluidized beds}, + journal={Journal of Fluid Mechanics}, + year={1994}, + volume={266}, + pages={243–276}, + publisher={Cambridge University Press}, + DOI={10.1017/S0022112094000996}, +} + + +@article{Ish79, + author = {Ishii, M. and Zuber, N. }, + title = {Drag coefficient and relative velocity in bubbly, droplet or particulate flows}, + journal = {AIChE Journal}, + year = {1979}, + volume = {25}, + pages = {843-855} +} + +@article{Lat011, + author = {Lathouwers, D. and Bellan, J. }, + title = {Modeling of dense gas-solid reative mixtures applied to biomass pyrolysis in a fluidized bed}, + journal = {International Journal of Mulitphase Flow}, + year = {2001}, + volume = {27}, + pages = {2155-2187} +} + +@inproceedings{Lat00, + author = {Lathouwers, D. and Bellan, J. }, + title = {Modeling of dense gas-solid reactive mixtures applied to biomass pyrolysis in a fuidized bed}, + year = {2000}, + booktitle = {Proceedings of the 2000 U.S. DOE Hydrogen Program Review}, + booksubtitle = {NREL/CP-570-28990}, + eventdate = {May 9-11}, + publisher = {U.S. Department of Energy, Office of Energy Efficiency and Renewable Energy}, + location = {San Ramon, California}, + pages = {141-203} +} + +@article{Lat001, + author = {Lathouwers, D. and Bellan, J. }, + title = {Modeling and simulation of bubbling fluidized beds containing particle mixtures}, + journal = {Proceedings of the Combustion Institute}, + year = {2000}, + volume = {28}, + pages = {2297-2304} +} + +@article{Massoudi03, + author = {Mehrdad Massoudi}, + title = {Constitutive relations for the interaction force in multicomponent particulate flows}, + journal = {International Journal of Non-Linear Mechanics}, + year = {2003}, + volume = {38}, + number={3}, + pages = {313-336} +} + +@article{Max83, + author = {Maxey, Martin R. and Riley,James J. }, + title = {Equation of motion for a small rigid sphere in a nonuniform flow}, + journal = {Physics of Fluids}, + volume = {26}, + number = {4}, + pages = {883-889}, + year = {1983}, + doi = {10.1063/1.864230}, +} + +@article{Nonaka2018, + author = {Andrew Nonaka and Marcus S. Day and John B. Bell}, + title = {A conservative, thermodynamically consistent numerical approach for low Mach number combustion. Part I: Single-level integration}, + journal = {Combustion Theory and Modelling}, + volume = {22}, + number = {1}, + pages = {156-184}, + year = {2018}, + publisher = {Taylor & Francis}, + doi = {10.1080/13647830.2017.1390610} +} + + +@article{ranz52, + author = {Ranz, W.E. and Marshall, W.R.}, + title = {Friction and transfer coefficients for single particles and packed beds}, + journal = {Chemical Engineering Science}, + year = {1952}, + volume = {48}, + number = {5}, + pages = {247-253} +} + + +@article{Ric54, + author = {Richardson, J. F. and Zaki, W. N.}, + title = {Sedimentation and Fluidization: Part I}, + journal = {Transactions of the Institution of Chemical Engineers}, + year = {1954}, + volume = {32} +} + +@article{Sch33, + author = {Schiller, L. and Naumann, A. }, + title = {A drag coefficient correlation}, + journal = {Zeitschrift des Vereines deutscher Ingenieure}, + year = {1933}, + volume = {77}, + pages = {318-320} +} + +@article{stevens05, + title={Comparison of soft-sphere models to measurements of collision properties during normal impacts}, + author={Stevens, AB and Hrenya, CM}, + journal={Powder Technology}, + volume={154}, + number={2-3}, + pages={99--109}, + year={2005}, + publisher={Elsevier} +} + +@article{tang15, + author = {Tang, Y. and Peters, E. A. J. F. and Kuipers, J. A. M. and Kriebitzsch, S. H. L. and van der Hoef, M. A.}, + title = {A New Drag Correlation from Fully Resolved Simulations of Flow Past Monodisperse Static Arrays of Spheres}, + journal = {AIChE Journal}, + volume = {61}, + number = {2}, + pages = {688-698}, + year = {2015} +} + + +@article{tenneti11, + author = {S. Tenneti and R. Garg and S. Subramaniam}, + title = {Drag law for monodisperse gas–solid systems using particle-resolved direct numerical simulation of flow past fixed assemblies of spheres}, + journal = {International Journal of Multiphase Flow}, + volume = {37}, + number = {9}, + pages = {1072-1092}, + year = {2011}, + issn = {0301-9322}, + doi = {https://doi.org/10.1016/j.ijmultiphaseflow.2011.05.010}, +} + +@article{vanleer79, + author = "Bram [van Leer]", + title = "Towards the ultimate conservative difference scheme. V. A second-order sequel to Godunov's method", + journal = "Journal of Computational Physics", + volume = "32", + number = "1", + pages = "101 - 136", + year = "1979", + issn = "0021-9991", + doi = "https://doi.org/10.1016/0021-9991(79)90145-1", +} + +@article{vanderhoef08, + author = {van der Hoef, MA and van Sint Annaland, M and Deen, NG and Kuipers, JAM}, + title = {Numerical simulation of dense gas-solid fluidized beds: A multiscale modeling strategy}, + journal = {Annual Review of Fluid Mechanics}, + volume = {40}, + pages = {47-70}, + year = {2008} +} + +@article{vreman09, + author = {Vreman, B. and Geurts, B. and Deen, N. and Kuipers, J. and Kuerten, J.}, + title = {Two- and Four-Way Coupled Euler-Lagrangian Large-Eddy Simulation of Turbulent Particle-Laden Channel Flow}, + journal = {Flow Turbulence and Combustion}, + volume = {82}, + number = {1}, + pages = {47-71}, + year = {2009} +} + +@techreport{weiner11, + author = {Bruce B. Weiner}, + title = {What is particle size distribution weighting: How to get fooled about what was measured and what it means?}, + institution = {Brookhaven Instruments}, + year = {2011}, + address = {Holtsville, NY}, + publisher = {Brookhaven Instruments}, +} + + +@article{Wen66, + author = {Wen, C. Y. and Yu, Y. H.}, + title = {Mechanics of fluidization}, + journal = {Chemical Engineering Progress Symposium Series}, + year = {1966}, + volume = {62}, + pages = {100-111} +} + +@book{william2014, + title={Statistics for Engineers and Scientists}, + author={William Navidi, P.}, + isbn={9780073401331}, + lccn={2013035491}, + year={2014}, + publisher={McGraw-Hill Education} +} + +@article{zhu07, + title={Discrete particle simulation of particulate systems: theoretical developments}, + author={Zhu, HP and Zhou, ZY and Yang, RY and Yu, AB}, + journal={Chemical Engineering Science}, + volume={62}, + number={13}, + pages={3378--3396}, + year={2007}, + publisher={Elsevier} +} diff --git a/docs/source_docs/user_guide/inputs/initial_conditions.rst b/docs/source_docs/user_guide/inputs/initial_conditions.rst index 82933487989a81e24e5e12ee86899dca6150368b..0af28ed7cace858d07e30a36ab04e8ca6f6efc24 100644 --- a/docs/source_docs/user_guide/inputs/initial_conditions.rst +++ b/docs/source_docs/user_guide/inputs/initial_conditions.rst @@ -42,6 +42,7 @@ using the ``ic.[region].[fluid]`` compound prefix. +------------------------+------------------------------------------------------------------------+-------------+-----------+ +.. _InputsICSolids: Solids settings ~~~~~~~~~~~~~~~ diff --git a/docs/source_docs/user_guide/inputs/model_options.rst b/docs/source_docs/user_guide/inputs/model_options.rst index f647c8361a39da173c9933b117ca4c28c635afc3..d00510b6da1e8d7597e455411323e4000dd8a1d2 100644 --- a/docs/source_docs/user_guide/inputs/model_options.rst +++ b/docs/source_docs/user_guide/inputs/model_options.rst @@ -60,8 +60,8 @@ The following inputs are defined using the ``mfix`` prefix. | redistribution_type | Algorithms to address the '*small cell problem*' associated with | String | StateRedist | | | explicit cut-cell algorithms. | | | | | | | | -| | * ``StateRedist`` [Berger_Giulini_2021]_ [Giulini_etal_2022]_ | | | -| | * ``FluxRedist`` [Chern_Colella_1987]_ [Colella_etal_2006]_ | | | +| | * ``StateRedist`` :cite:p:`berger21,giuliani22` | | | +| | * ``FluxRedist`` :cite:p:`chern87,colella06` | | | | | * ``NoRedist``: Do not redistribute fluxes. | | | | | | | | +---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ @@ -78,18 +78,6 @@ The following inputs are defined using the ``mfix`` prefix. +---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ -.. [Berger_Giulini_2021] Berger, M., & Giuliani, A. (2021). - A state redistribution algorithm for finite volume schemes on cut cell meshes. Journal of Computational Physics, 428, 109820. - -.. [Giulini_etal_2022] Giuliani, A., Almgren, A. S., Bell, J. B., Berger, M. J., de Frahan, M. H., & Rangarajan, D. (2022). - A weighted state redistribution algorithm for embedded boundary grids. Journal of Computational Physics, 464, 111305. - -.. [Chern_Colella_1987] Chern, I.-L., and Colella, P. (1987). - A conservative front tracking method for hyperbolic conservation laws,” LLNL Rep. No. UCRL-97200, Lawrence Livermore National Laboratory. - -.. [Colella_etal_2006] Colella, P., Graves, D. T., Keen, B. J., & Modiano, D. (2006). - A Cartesian grid embedded boundary method for hyperbolic conservation laws, J. Comput. Phys., vol. 211, no. 1, pp. 347–366. - Additional available constraints -------------------------------- @@ -272,7 +260,7 @@ The following inputs are defined using the ``mfix`` prefix. | | is applied to all transferred properties. | | | | | | | | | | * ``StateRedist`` Use the state redistribution algorithm of | | | -| | [Berger_Giulini_2021]_ and [Giulini_etal_2022]_ to reallocate | | | +| | :cite:p:`berger21,giuliani22` to reallocate | | | | | transferred quantities in small cells. | | | | | | | | +---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ @@ -298,9 +286,9 @@ The following input is defined using the ``mfix`` prefix. +===================+=======================================================================+=============+===========+ | drag_type | Fluid-particle drag model. | String | None | | | | | | -| | * ``WenYu`` [Wen_Yu_1966]_ | | | -| | * ``Gidaspow`` [Ding_Gidaspow_1990]_, [Lathouwers_Bellan_2000]_ | | | -| | * ``BVK2`` [BVK_2007]_, [Tenneti_et_2011]_, [Tang_etal_2015]_ | | | +| | * ``WenYu`` :cite:p:`Wen66` | | | +| | * ``Gidaspow`` :cite:p:`ding90,Lat00` | | | +| | * ``BVK2`` :cite:p:`Bee07,Bee071,tenneti11,tang15` | | | | | * ``UserDrag`` | | | | | | | | +-------------------+-----------------------------------------------------------------------+-------------+-----------+ @@ -312,30 +300,6 @@ The following input is defined using the ``mfix`` prefix. drag model, and recompiling the code. An example can be found in ``tests/DEM06-x``. -.. [Wen_Yu_1966] Wen, C.Y. & Yu, Y.H. (1966). - Mechanics of Fluidization. The Chemical Engineering Progress Symposium Series, 162, 100-111. - -.. [Ding_Gidaspow_1990] Ding, J., & Gidaspow, D. (1990). - A bubbling fluidization model using kinetic theory of granular flow. AIChE journal, 36(4), 523-538. - -.. [Lathouwers_Bellan_2000] Lathouwers D. & Bellan J.(2000). - Proceedings of the 2000 U.S. DOE Hydrogen Program Review NREL/CP-570-28890. - Available from http://www.eere.energy.gov/hydrogenandfuelcells/pdfs/28890k.pdf. - -.. [BVK_2007] Beetstra, R., van der Hoef, M. A., & Kuipers, J. A. M. (2007). - Numerical study of segregation using a new drag force correlation for polydisperse systems derived - from lattice-Boltzmann simulations. Chemical Engineering Science, 62(1-2), 246-255. - -.. [Tenneti_et_2011] Tenneti, S., Garg, R., & Subramaniam, S. (2011). - Drag law for monodisperse gas–solid systems using particle-resolved direct numerical simulation of - flow past fixed assemblies of spheres. International journal of multiphase flow, 37(9), 1072-1092. - -.. [Tang_etal_2015] Tang, Y., Peters, E. A. J. F., Kuipers, J. A. M., Kriebitzsch, S. H. L., & van der Hoef, M. A. (2015). - A new drag correlation from fully resolved simulations of flow past monodisperse static arrays of spheres. - AIChE journal, 61(2), 688-698. - - - Heat transfer coefficients -------------------------- @@ -346,15 +310,7 @@ The following input is defined using the ``mfix`` prefix. +===================+=======================================================================+=============+===========+ | convection_type | Fluid-particle heat transfer coefficient model. | String | None | | | | | | -| | * ``RanzMarshall`` [RanzMarshall_1952]_ | | | -| | * ``Gunn`` [Gunn_1978]_ | | | +| | * ``RanzMarshall`` :cite:p:`ranz52` | | | +| | * ``Gunn`` :cite:p:`gunn78` | | | | | | | | +-------------------+-----------------------------------------------------------------------+-------------+-----------+ - -.. [RanzMarshall_1952] Ranz, W.E. & Marshall, W.R. (1952). - Friction and transfer coefficients for single particles and packed beds. - Chemical Engineering Science, 48(5), 247-253. - -.. [Gunn_1978] Gunn, D. J. (1978). - Transfer of heat or mass to particles in fixed and fluidised beds. - International Journal of Heat and Mass Transfer, 21(4), 467-476. diff --git a/docs/source_docs/works_cited.rst b/docs/source_docs/works_cited.rst new file mode 100644 index 0000000000000000000000000000000000000000..4db72186feb258ae23007adee0155d563d15d8b8 --- /dev/null +++ b/docs/source_docs/works_cited.rst @@ -0,0 +1,4 @@ +Works cited +=========== + +.. bibliography::