Solids model

Solids settings

Enabling the solids solver and specifying options common to both DEM and PIC models. The following inputs are defined with the prefix solids:

Description

Type

Default

types

Specified name(s) of the solids types or None to disable the solids solver. The user-defined names are used to specify DEM and/or PIC model inputs.

Strings

None

molecular_weight

Value of constant solid molecular weight.

Real

0

density

Specify which density model to use for solids.

Options (case-insensive):

  • None - solids density specified through initial and boundary conditions;

  • Mixture - solids density computed as a weighted average of the solid phase species densities. It requires constant species densities to be defined by the user.

String

None

specific_heat

Specify which specific heat model to use for solids.

Options:

  • constant - constant specific heat

String

constant

specific_heat.constant

Constant solids specific heat value. A value is required for constant specific heat model.

Real

0

reference_temperature

Reference temperature used for specific enthalpy.

Real

0

species

Specify which species can constitute the solids phase. Defined species must be a subset of the species defined in species.solve

Strings

None

newton_solver.absolute_tol

Define absolute tolerance for damped Newton solver.

Real

1.e-6

newton_solver.relative_tol

Define relative tolerance for damped Newton solver.

Real

1.e-6

newton_solver.max_iterations

Define max number of iterations for damped Newton solver.

Int

100

thermal_conductivity

Specify which thermal conductivity model to use for solids. Options:

  • constant - constant thermal conductivity

A thermal conductivity model is not required for solids. Defining a thermal conductivity model enables conductive heat transfer for DEM. However, it has no effect for PIC solids heat transfer.

String

constant

thermal_conductivity.constant

Constant solids thermal conductivity value. A value is required for constant thermal conductivity model.

Real

0

min_conduction_dist

The surface roughness separating two touching particles. This value is used to remove the singularity that the particle-fluid-particle conduction model develops at the contact interface.

Real

2.e-8

flpc

The fluid lens proportionality constant (flpc) is used to calculate the radius of the fluid lens surrounding the particle for particle-fluid-particle conduction.

Real

0.4

Below is an example for specifying the solids solver model options.

solids.types = my_solid0  my_solid1

solids.reference_temperature = 298.15

solids.specific_heat = mixture

solids.species = Fe2O3  FeO

DEM model settings

Enabling the DEM solver and specifying model options. The following keys must be defined with the prefix dem:

Description

Type

Default

solve

Specified name(s) of the DEM types or None to disable the DEM solver. The user-defined names are used to specify DEM model inputs.

Strings

None

friction_coeff.pp

Friction coefficient :: particle to particle collisions [required]

Real

0

friction_coeff.pw

Friction coefficient :: particle to wall collisions [required]

Real

0

spring_const.pp

Normal spring constant :: particle to particle collisions [required]

Real

0

spring_const.pw

Normal spring constant :: particle to wall collisions [required]

Real

0

spring_tang_fac.pp

Tangential-to-normal spring constant factor :: particle to particle collisions

Real

0.2857

spring_tang_fac.pw

Tangential-to-normal spring constant factor :: particle to wall collisions

Real

0.2857

damping_tang_fac.pp

Factor relating the tangential damping coefficient to the normal damping coefficient :: particle to particle collisions

Real

0.5

damping_tang_fac.pw

Factor relating the tangential damping coefficient to the normal damping coefficient :: particle to wall collisions

Real

0.5

implicit_drag

Apply fluid-particle drag force by implicit velocity update.

Int

0

tan_history

Include tangential history force in the collision model.

Bool

false

tan_history.max_contacts

Maximum number of contacts per particle tracked at any point when tangential history is enabled.

Int

10

rolling_friction

Rolling friction model to use when tangential history is enabled. [ACRO11, BVB+19, WK12, ZWY+99]

Options:

  • None

  • ModelA

    \(\boldsymbol{\tau}_{ij}^{(r)} = -\mu_{r}\hat{r}_{ij} \left| f_{ij}^{(n)} \right| \frac{\omega_{ij}}{\left|\omega_{ij}\right|}\)

  • ModelB

    \(\boldsymbol{\tau}_{ij}^{(r)} = -\mu_{r}\hat{r}_{ij} \left| f_{ij}^{(n)} \right| \boldsymbol{u}_{ij}^{\omega}\)

String

None

rolling_friction.coefficient

Rolling friction coefficient when using a rolling friction model

Real

0

The following inputs use the DEM type names specified using the dem.solve input to define restitution coefficients and are proceeded with the prefix dem.restitution_coeff. These must be defined for all DEM solid-solid and solid-wall combinations.

Description

Type

Default

[dem_solid].[dem_solid2]

Specifies the restitution coefficient between DEM solids. Order is not important and this could be defined as [dem_solid2].[dem_solid]. If both are defined they must be equal.

Real

0

[dem_solid].wall

Specifies the restitution coefficient between solid and the wall. Order is not important and this could be defined as wall.[dem_solid]. If both are defined they must be equal.

Real

0

Below is an example for specifying the inputs for two DEM solids.

dem.solve = sand  char

dem.friction_coeff.pp     =     0.25
dem.friction_coeff.pw     =     0.15

dem.spring_const.pp       =   100.0
dem.spring_const.pw       =   100.0

dem.spring_tang_fac.pp    =     0.2857
dem.spring_tang_fac.pw    =     0.2857

dem.damping_tang_fac.pp   =     0.5
dem.damping_tang_fac.pw   =     0.5

dem.restitution_coeff.sand.sand =  0.85
dem.restitution_coeff.sand.char =  0.88
dem.restitution_coeff.char.char =  0.90

dem.restitution_coeff.sand.wall =  0.85
dem.restitution_coeff.char.wall =  0.89

Implicit drag

By default, the fluid-particle drag force is applied explicitly to particles,

\[u_p^{n^{\prime}+1} = u_p^{n^\prime} + dt_{\mathrm{DEM}}\left(\beta^n (u_f^{n+1} - u_p^{n}) + \mathcal{F}_p^{n^\prime}\right)/m_p\]

where \(u_p\) is the p-th particle velocity at the indicated time level, \(\beta^n\) is the drag coefficient, \(u_f^{n+1}\) is the fluid velocity, \(\mathcal{F}_p\) are all non-drag forces (e.g., gravitational, buoyancy, collision etc.), and \(m_p\) is particle mass. Terms exist at different time levels due in part to how the fluid and particle models are coupled and partly because particles typically sub-step in time. Specifically, a time step advances the fluid from \(t^n\) to \(t^{n+1}\), then particles take multiple smaller time steps to traverse the same total time. In the above equation, prime markers differentiate quantities updated at each DEM sub-step.

The updated particle velocity, \(u_p^{n^{\prime}+1}\), is substituted into the drag expression when implicit drag is enabled.

\[u_p^{n^{\prime}+1} = \frac{u_p^{n^\prime} + dt_{\mathrm{DEM}}\left( \beta^n u_f^{n+1} + \mathcal{F}_p^{n^\prime} \right)/m_p}{1 + dt_{\mathrm{DEM}} \beta^n / m_p}\]

By using the updated velocity, the drag force computed for the fluid and particles is inconsistent, and interphase momentum is not conserved. However, implicit drag may be needed for numerical stability when the particle density is much less than the fluid (such as bubbles).

PIC model settings

The following inputs define the PIC solids model and its associated frictional stress parameters:

\[\tau_p = \frac{P_s \varepsilon_p^{\beta}}{\max \left[ (\varepsilon_{cp} - \varepsilon_p), \epsilon (1-\varepsilon_p)\right]}\]

The following inputs are defined with the prefix pic:

Description

Type

Default

solve

Specified name(s) of the PIC types or None to disable the PIC solver.

Strings

None

close_pack

Solids volume fraction at close pack, \(\varepsilon_{cp}\). Below this threshold, the solid stress tensor has minimal impact.

Real

0.55

pressure_coefficient

Pressure linear scale factor in frictional stress model, \(P_s\).

Real

100.0

beta

Volume fraction exponential scale factor in frictional stress model, \(\beta\).

Real

3.0

small_number

Non-singularity term in frictional stress model, \(\epsilon\).

Real

1.0e-7

damping_factor

An empirical dampening factor for the frictional stress model.

Real

0.4

damping_factor_wall_normal

Normal coefficient of restitution for parcel-wall collisions.

Real

0.3

damping_factor_wall_tangent

Tangential coefficient of restitution for parcel-wall collisions.

Real

0.99

parcels_per_cell_at_pack

Specifies the number of particles that can occupy a regular computational cell near close packing.

Larger values reduce sensitivity to small changes in parcel positions, which helps stabilize the computed solids volume fraction and, by extension, the frictional stress model. However, increasing this value also results in simulations tracking a greater number of parcels.

Real

32.0

verbose

Verbosity level for PIC-related output.

Int

0

The solids volume fraction is required to evaluate the frictional stress model when advancing parcels from \(t^n\) to \(t^{n+1}\). Ideally, this evaluation would use either the volume fraction at the midpoint of the time step, \(\varepsilon_p^{n+1/2}\), or at the end of the step, \(\varepsilon_p^{n+1}\).

However, since neither of these values is available a priori, an iterative approach is used. An initial approximation of the volume fraction is used to advance parcels to a tentative position at \(t^{n+1}\). These new positions are then used to compute an updated volume fraction field, which is subsequently used in the next iteration to recompute the tentative parcel positions.

The following keywords control the iterative PIC algorithm and are defined with the prefix pic:

Description

Type

Default

initial_step_type

Specifies the initial solids volume fraction used in PIC iterations to approximate the volume fraction at the end of the time step, :math:t^{n+1}.

Options (case-insensitive):

  • nth_eps - use the volume fraction from the previous time step, \(t^{n}\)

  • zero_eps - set the initial volume fraction to zero

  • taylor_approx - use a Taylor series expansion about parcel positions to approximate the volume fraction at \(t^{n+1}\)

String

“nth_eps”

max_iter

Maximum number of iterations used to approximate the end state

Int

3

advance_vel_p

Specifies the weighting factor used to compute the averaged particle velocity field during parcel advancement. The field-averaged velocity is used when applying forces to parcels.

This parameter takes values between 0 and 1, blending the particle velocity at the beginning and end of the time step. A value of 0.5 (default) yields a time-centered average.

Real

0.5

velocity_reference_frame

The velocity reference frame scales the field-averaged velocity used to compute the slip velocity between a parcel and the bulk when when the parcels is moving towards an area of higher solids concentration. This parameter takes values between 0 and 1.

Real

0.5