Model options ============= The following inputs are defined using the prefix ``mfix``: +--------------------------+----------------------------------------------------------------------------+----------+---------------------+ | | Description | Type | Default | +==========================+============================================================================+==========+=====================+ | gravity | Gravity vector. | Reals<3> | 0 0 0 | +--------------------------+----------------------------------------------------------------------------+----------+---------------------+ Enabling solvers ---------------- The following input is defined using the prefix ``mfix``: +--------------------------+----------------------------------------------------------------------------+----------+---------------------+ | | Description | Type | Default | +==========================+============================================================================+==========+=====================+ | enable.fluid | Enable the fluid solver. | Bool | false | +--------------------------+----------------------------------------------------------------------------+----------+---------------------+ | enable.solids | Enable the solids solver for DEM or PIC. | Bool | false | +--------------------------+----------------------------------------------------------------------------+----------+---------------------+ | solve_species | Enable the MFIX species solver. | Int | 0 | +--------------------------+----------------------------------------------------------------------------+----------+---------------------+ | advect_enthalpy | Enable time evolution of fluid temperature and enthalpy. | Int | 0 | +--------------------------+----------------------------------------------------------------------------+----------+---------------------+ | advect_density | Enable time evolution of fluid density. | Int | 0 | +--------------------------+----------------------------------------------------------------------------+----------+---------------------+ Fluid options ------------- The following input is defined using the prefix ``mfix``: +---------------------------------+----------------------------------------------------------------------------+-------------+---------------------+ | | Description | Type | Default | +=================================+============================================================================+=============+=====================+ | constraint | Select low Mach number constraint. | String | IncompressibleFluid | | | | | | | | Options (case-insensitive): | | | | | | | | | | * ``IncompressibleFluid`` constraint is appropriate for cold flow systems | | | | | that do not have chemical reactions. Fluid temperature and species mass | | | | | fractions act as passive tracers if advected. | | | | | | | | | | * ``IdealGasOpenSystem`` constraint is used if the physical domain | | | | | contains at least one pressure outflow boundary condition. The specified | | | | | outflow (ambient) pressure is maintained so that the thermodynamic | | | | | pressure is constant. | | | | | | | | | | * ``IdealGasClosedSystem`` constraint is used for systems that are fully | | | | | periodic or completely closed with no inflow / outflow boundaries. | | | | | The thermodynamic pressure evolves in time to balance processes like | | | | | chemical reactions. | | | | | | | | +---------------------------------+----------------------------------------------------------------------------+-------------+---------------------+ | thermodynamic_pressure | Thermodynamic pressure. | Real | 0 | | | A value is required when using the | | | | | ``IdealGasClosedSystem`` constraint. If using the | | | | | ``IdealGasOpenSystem`` constraint, if a value is provided then it must | | | | | match all specified outflow pressures. | | | | | | | | +---------------------------------+----------------------------------------------------------------------------+-------------+---------------------+ | advection_type | Advection scheme. | String | Godunov | | | | | | | | Options: | | | | | | | | | | * ``MOL``- Predictor-Corrector Method of Lines. MAC | | | | | (Marker-and-Cell) velocities and edge states are extrapolated in | | | | | space. | | | | | | | | | | * ``Godunov`` - Godunov. MAC velocities and edge states are | | | | | extrapolated in space and time using a second-order Taylor series | | | | | expansion. | | | +---------------------------------+----------------------------------------------------------------------------+-------------+---------------------+ | cfl | CFL constraint (dt < cfl * dx / u) | Real | See note | | | | | | | | * Defaults to 0.5 if ``mfix.advection_type = MOL`` | | | | | * Defaults to 0.9 if ``mfix.advection_type = Godunov`` | | | | | * Ignored if ``mfix.fixed_dt > 0`` | | | +---------------------------------+----------------------------------------------------------------------------+-------------+---------------------+ | redistribution_type | Algorithms to address the *'small cell problem'* associated with | String | StateRedist | | | explicit cut-cell algorithms. | | | | | | | | | | Options: | | | | | | | | | | * ``StateRedist`` :cite:p:`berger21,giuliani22` | | | | | * ``FluxRedist`` :cite:p:`chern87,colella06` | | | | | * ``NoRedist`` - Do not redistribute fluxes. | | | +---------------------------------+----------------------------------------------------------------------------+-------------+---------------------+ | redistribute_before_nodal_proj | Redistribute the velocity field before the nodal projection. | Bool | true | +---------------------------------+----------------------------------------------------------------------------+-------------+---------------------+ | redistribute_nodal_proj | Redistribute the velocity field after the nodal projection. | Bool | false | +---------------------------------+----------------------------------------------------------------------------+-------------+---------------------+ | correction_small_volfrac | Threshold volume fraction for correcting small cell velocity | | | | | at the end of the predictor and corrector. | Real | 1.e-4 | +---------------------------------+----------------------------------------------------------------------------+-------------+---------------------+ | godunov_include_diff_in_forcing | When using Godunov, include viscous/diffusive terms in forcing terms. | Bool | true | +---------------------------------+----------------------------------------------------------------------------+-------------+---------------------+ | godunov_use_ppm | When using Godunov, use piecewise parabolic (PPM) instead of | Bool | false | | | piecewise linear (PLM) reconstruction. | | | +---------------------------------+----------------------------------------------------------------------------+-------------+---------------------+ | godunov_use_forces_in_trans | When using Godunov, add forcing terms in the construction of | Bool | false | | | transverse velocities. | | | +---------------------------------+----------------------------------------------------------------------------+-------------+---------------------+ | godunov_use_mac_phi | When using Godunov, don't include the pressure gradient in the | Bool | false | | | forcing term passed into the Godunov routine; instead use gradient of | | | | | mac phi which contains the full pressure. | | | +---------------------------------+----------------------------------------------------------------------------+-------------+---------------------+ .. note:: The thermodynamic pressure is a scalar value, not a scalar field. This is a consequence of the low Mach number assumption. Particle options ---------------- The following inputs are defined using the prefix ``solids``: +---------------------+---------------------------------------------------------------------------+-------------+-----------+ | | Description | Type | Default | +=====================+===========================================================================+=============+===========+ | enable.momentum | Flag to update particle velocity and position. | Int | 1 | +---------------------+---------------------------------------------------------------------------+-------------+-----------+ | enable.energy | Flag to update particle temperature and enthalpy. | Int | 1 | +---------------------+---------------------------------------------------------------------------+-------------+-----------+ | energy.source | User defined enthalpy source for particles. | Real | 0. | +---------------------+---------------------------------------------------------------------------+-------------+-----------+ Constraints ^^^^^^^^^^^ Additional constraints may be imposed on problems which are under-determined such as particle settling in a fully periodic domain. Currently, only particle constraints are supported. The following inputs are defined using the prefix ``solids.constraint``: +---------------------+---------------------------------------------------------------------------+-------------+-----------+ | | Description | Type | Default | +=====================+===========================================================================+=============+===========+ | model | Constraint type. Options: | String | None | | | | | | | | * ``None`` - Particles evolve normally | | | | | * ``mean_velocity`` - Impose a mean velocity on particles at the end of | | | | | each solids update step. | | | | | | | | +---------------------+---------------------------------------------------------------------------+-------------+-----------+ | mean_velocity_x | mean particle velocity in x-axial direction | Real | None | +---------------------+---------------------------------------------------------------------------+-------------+-----------+ | mean_velocity_y | mean particle velocity in y-axial direction | Real | None | +---------------------+---------------------------------------------------------------------------+-------------+-----------+ | mean_velocity_z | mean particle velocity in z-axial direction | Real | None | +---------------------+---------------------------------------------------------------------------+-------------+-----------+ Below is an example for zero mean particle velocity in all three directions. .. code-block:: none solids.constraint.model = "mean_velocity" solids.constraint.mean_velocity_x = 0. solids.constraint.mean_velocity_y = 0. solids.constraint.mean_velocity_z = 0. In the above example, at the end of each (fluid) time step, the global mean particle velocity is computed in each direction, then subtracted from each particle's velocity vector so that the mean particle velocity for the system is zero. Fluid-particle couping ---------------------- Drag coefficient ^^^^^^^^^^^^^^^^ The following input is defined using the prefix ``mfix.drag``: .. |VirtualMass_Eq| replace:: :math:`\mathbf{F}_p,vm = -C_{p,vm} \rho_f \left( \frac{D\mathbf{u}_f}{Dt} - \frac{d\mathbf{u}_p}{dt}\right)\mathcal{V}_p` .. |VM_Zuber_Eq| replace:: :math:`C_{p,vm} = (\frac{1}{2})\frac{(1+2\varepsilon_p)}{(1-\varepsilon_p)}` .. |VM_Nijssen_Eq| replace:: :math:`\begin{split}C_{p,vm} &= C_{0,vm} \\ &+ \sum_{k=1}^3 \left\{ \left[ a_{k,0} + a_{k,1} \ln \left( \frac{\rho_p}{\rho_f} \right) \right] \varepsilon_p^k \right\}\end{split}` +--------------------------+-------------------------------------------------------------------------------------------+-----------+-----------+ | | Description | Type | Default | +==========================+===========================================================================================+===========+===========+ | model | Fluid-particle drag model. Options: | String | None | | | | | | | | * ``WenYu``- Wen-Yu :cite:p:`Wen66` | | | | | * ``Gidaspow`` :cite:p:`ding90,Lat00` | | | | | * ``BVK2`` - Beetstra, van der Hoef, and Kuipers :cite:p:`Bee07,Bee071,tenneti11,tang15` | | | | | * ``SyamOBrien`` - Syamlal-O'Brien :cite:p:`syam88` | | | | | * ``UserDrag`` - User-supplied drag model | | | | | | | | | | | | | +--------------------------+-------------------------------------------------------------------------------------------+-----------+-----------+ | model.SyamOBrien.c1 | Fitting parameters for ``SyamOBrien`` drag model | Real | None | | model.SyamOBrien.d1 | | | | +--------------------------+-------------------------------------------------------------------------------------------+-----------+-----------+ | virtual_mass | Include virtual mass force in fluid-particle momentum transfer. | String | None | | | The virtual mass force is not included by default. | | | | | | | | | | |VirtualMass_Eq| | | | | | | | | | | Options: | | | | | | | | | | * ``None`` - virtual mass force calculation is skipped | | | | | * ``Null`` - zero virtual mass coefficient, :math:`C_p,vm = 0` (for testing) | | | | | * ``Constant`` - specified constant coefficient | | | | | * ``Zuber`` - :cite:p:`zuber64` | | | | | | | | | | |VM_Zuber_Eq| | | | | | | | | | | * ``Nijssen`` - :cite:p:`nijssen20` | | | | | | | | | | |VM_Nijssen_Eq| | | | +--------------------------+-------------------------------------------------------------------------------------------+-----------+-----------+ | virtual_mass.constant | Constant virtual-mass coefficient. | Real | 0.5 | +--------------------------+-------------------------------------------------------------------------------------------+-----------+-----------+ | include_divtau | Interpolate the fluid shear stress to particles and include in the | Int | 0 | | | fluid-particle drag force. The force is applied to the fluid by | | | | | multiplying the shear stress by fluid volume fraction. | | | +--------------------------+-------------------------------------------------------------------------------------------+-----------+-----------+ .. note:: The ``UserDrag`` keyword is used to invoke a user-defined drag model. This is accomplished by copying ``src/usr/usr_drag.cpp`` file into the build directory, implementing the desired drag model, and recompiling MFIX-Exa. An example can be found in ``tests/DEM06-x``. Heat transfer coefficient ^^^^^^^^^^^^^^^^^^^^^^^^^ The following input is defined using the prefix ``mfix.convection``: +-------------------+-----------------------------------------------------------------------+-------------+--------------+ | | Description | Type | Default | +===================+=======================================================================+=============+==============+ | model | Fluid-particle heat transfer coefficient model. | String | RanzMarshall | | | | | | | | Options: | | | | | | | | | | * ``RanzMarshall`` :cite:p:`ranz52` | | | | | * ``Gunn`` :cite:p:`gunn78` | | | | | * ``None`` - disable fluid-particle heat transfer | | | | | | | | +-------------------+-----------------------------------------------------------------------+-------------+--------------+ Deposition scheme ^^^^^^^^^^^^^^^^^ The following inputs are defined using the prefix ``mfix.deposition``: +-----------------+--------------------------------------------------------------------+-----------+---------------+ | | Description | Type | Default | +=================+====================================================================+===========+===============+ | type | The algorithm used to transfer particle properties to the Eulerian | String | trilinear | | | grid. An overview of the schemes is provided | | | | | :ref:`below`. | | | | | | | | | | Options: | | | | | | | | | | * ``centroid`` | | | | | * ``trilinear`` | | | | | * ``true-dpvm`` | | | | | * ``trilinear-dpvm-square`` | | | +-----------------+--------------------------------------------------------------------+-----------+---------------+ | scale_factor | The deposition scale factor. | Real | 1.0 | | | | | | | | Applicable only with ``true-dpvm`` and ``trilinear-dpvm-square`` | | | | | deposition schemes. The value must be in the interval | | | | | :math:`[0,\Delta x/2]` where :math:`\Delta x` is the mesh spacing. | | | +-----------------+--------------------------------------------------------------------+-----------+---------------+ .. _deposition_description: In the following subsections, the four deposition methods are briefly described and illustrated. Centroid ~~~~~~~~ The centroid deposition scheme transfers particle properties, for example volume, to the Eulerian grid cell containing its center. Illustrated in two-dimensions below, the particle center is in the upper-right cell; therefore, the deposition weight for that cell is 1 and all other weights are zero. .. _fig_centroid_deposition: .. figure:: ./images/centroid.jpg :height: 2in :align: center :alt: visual demonstration of centroid deposition Example of centroid deposition. Trilinear ~~~~~~~~~ Trilinear deposition transfers particle properties to the eight Eulerian grid cells surrounding its center. First, low and high weights are calculated for each direction, then they are multiplied together to form eight composite weights. The following figure illustrates bilinear interpolation. The left image shows weights computed in the *X*-direction, :math:`[0.15, 0.85]`, and the center image shows weights computed in the *Y*-direction, :math:`[0.25,0.75]`. The right image shows the composite weights for the four cells that comprise the 2D neighborhood surrounding the particle. .. _fig_trilinear_deposition: .. figure:: ./images/trilinear.jpg :height: 2in :align: center :alt: visual demonstration of trilinear deposition Example of trilinear deposition. True-DPVM ~~~~~~~~~ The "*true*" divided particle volume method (DPVM) calculates the actual volume of a particle in each cell by computing the intersection between the grid cell faces and the particle. The fractional volume (volume inside the cell divided by total particle volume) is used as the deposition weight. If the ``deposition_scale_factor`` is defined, it multiplies the particle radius increasing the effective area to transfer properties over. The true-DPVM scheme is illustrated below where the dashed line represents the scaled particle radius. The *grown* particle intersects the top two and lower-right cells. Since the *grown* particle does not intersect the lower-left cell, it has a deposition weight of zero. .. figure:: ./images/dpvm.jpg :height: 2in :align: center :alt: visual demonstration of true divided particle volume deposition Example of true-dpvm deposition. Trilinear DPVM square ~~~~~~~~~~~~~~~~~~~~~ The trilinear DPVM square method is similar to the trilinear scheme in that low and high weights are computed for each direction, then multiplied together to give a composite weight for each of the eight cells in the neighborhood. The primary distinction is that the fractional volume cut by the grid cell face for each direction is used to calculate the low and high weights. If the ``deposition_scale_factor`` is defined, it multiplies the particle radius increasing the effective area to transfer properties over. In the below figure, the left image shows the *X*-direction weights, and the center image shows the *Y*-direction weights. The right image shows the resulting composite weights. .. figure:: ./images/square_dpvm.jpg :height: 2in :align: center :alt: visual demonstration of true divided particle volume deposition Example of trilinear dpvm square deposition. Deposition redistribution ^^^^^^^^^^^^^^^^^^^^^^^^^ The following inputs are defined using the prefix ``mfix.deposition.redistribution``: +---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ | Key | Description | Type | Default | +=================================+=======================================================================+=============+==============+ | type | Algorithm used to redistribute excess solids to adjacent cells. This | String | MaxPack | | | typically applies only to small cut-cells along the geometry. | | | | | | | | | | Options: | | | | | | | | | | * ``MaxPack`` - If the solids volume fraction exceeds the prescribed | | | | | ``maxpack.volfrac``, then the local average solids | | | | | volume is computed and solids volume exceeding the average is | | | | | reallocated to adjacent cells. The fraction of redistributed solids | | | | | is applied to all transferred properties. | | | | | | | | | | * ``StateRedist`` - Use the state redistribution algorithm of | | | | | :cite:p:`berger21,giuliani22` to reallocate | | | | | transferred quantities in small cells. | | | | | | | | +---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ | maxpack.volfrac | Threshold solids volume fraction for ``MaxPack`` redistribution. | Real | 0.6 | | | Redistribution of transferred quantities only occurs when the | | | | | solids volume fraction of a cell exceeds this value. | | | +---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ | stateredist.volfrac | Threshold geometric volume fraction ``StateRedist`` redistribution. | Real | 0.1 | | | Redistribution of transferred quantities **always** occurs for cells | | | | | with a geometric volume fraction below this value. | | | +---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ Deposition filter ^^^^^^^^^^^^^^^^^ The filtering operation solves a diffusion equation to smooth deposited particle properties. The following inputs are defined using the prefix ``mfix.deposition.filter``: +---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ | Key | Description | Type | Default | +=================================+=======================================================================+=============+==============+ | type | Algorithm used to redistribute excess solids to adjacent cells. This | String | None | | | typically applies only to small cut-cells along the geometry. | | | | | | | | | | Options: | | | | | | | | | | * ``None`` - No filtering of deposited particle properties. | | | | | * ``constant`` - Filter deposited particle properties using a | | | | | constant filter width. | | | | | * ``variable`` - Filter deposited particle properties using a | | | | | filter width computed from the solids volume fraction. | | | | | | | | +---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ | constant.size | User defined constant filter size. | Real | Undefined | | | Redistribution of transferred quantities only occurs when the | | | | | solids volume fraction of a cell exceeds this value. | | | +---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ | variable.sample_size | Variable filter sample size | Real | 0.1 | +---------------------------------+-----------------------------------------------------------------------+-------------+--------------+ | variable.min_eps | Variable filter minimum volume fraction. | Real | 0.1 | +---------------------------------+-----------------------------------------------------------------------+-------------+--------------+