couplingProperties

General

The couplingProperties dictionary defined the setup of the coupling routines for the coupled CFD-DEM simulation.

Location: $caseDir/CFD/constant

Structure: The dictionary is typically divided into two parts:

  1. sub-models & settings specifies which models to use and contains global settings like the particle shape. These settings are documented on this page.

  2. sub-model properties contains sub-dictionaries to configure the individual models. Those model-specific settings are found in the articles on individual models.

Model selection

voidFractionModel

The voidfraction model to use

locateModel

The locate model to use.

dataExchangeModel
Default:

twoWaySocket

The dataExchangeModel to use.

meshMotionModel
Default:

noMeshMotion model

The mesh motion model to use.

IOModel
Default:

noIO

The IO model to use. With the default setting no extra particle data is written by CFDEMcoupling. Instead the output of DEM data is triggered at every CFD write time, see writeAsx.

probeModel
Default:

noProbe model

The probeModel to use.

averagingModel
Default:

dense averaging model

The averaging model to use.

clockModel
Default:

noClock

The clockModel to use.

smoothingModel
Default:

noSmoothing model

The smoothingModel to use.

forceModels
Type:

list

List of force models to use.

postProcessingModels
Default:

By default, the models checkCouplingInterval and checkFluxBalance are loaded.

Type:

list

List of post processing models to use.

asxCommands
Default:

By default the list (runAsx writeAsx) is used, loading the models to run asx and write restart files. Additional configuration of the models in their inidividual properties sub-dictionaries is, of course, possible.

Type:

list

List of command models to use.

Note

Also check the documentation of the enable_cfd_coupling command on how Aspherix interacts with CFDEMcoupling.

momCoupleModels
Default:

set by solver

Type:

list

List of momentum couple models to use. By default, models that are supported by the solver are used. The user can restrict the models used in the simulation by this setting. Momentum couple models that are not supported by the solver cannot be used.

turbulenceModelType

File name of dictionary to use for configurationof turbulence models.

Note

This setting is not available for versions compiled with OpenFOAM-8 and higher.

Model and parameter settings

modelType

Sets which model type to use and refers to the formulation of the equations to be solved. The available options correspond to the defintions used in Zhou et al. (2010): “Discrete particle simulation of particle-fluid flow: model formulations and their applicability”, JFM.

  • "A" requires the use of the force models gradPForce and viscForce. Corresponds to model type II in Zhou et al.

  • "B" requires the force model Archimedes. Corresponds to model type III in Zhou et al.

  • "Bfull" refers to model type I in Zhou et al.

fluidDensity

The fluid density

Note

This setting is only used in single phase solvers for incompressible flow, namely cfdemSolverPiso, cfdemSolverPisoScalar, cfdemSolverPimple, cfdemSolverIB

particleShapeType
Default:

"sphere"

Defines which particle shape is used. Further valid values are "multisphere", "superquadric", and "convex".

particleShapeProps
Type:

dictionary

This dictionary may contain further settings related to the particle shape:

  • DHc: define scale factor for the clump diameter (and so also volume) for each clump type (e.g. multisphere type defined on the DEM side). Default value is 1 for each type. Input is a scalarList. It’s length must be identical to the number of particle shapes. The diameter is calculated from the clump volume coming from Aspherix®: D_\mathrm{clump}^\mathrm{CFDEM} = \mathit{DHc} \sqrt[3]{\frac{6}{\pi }V_\mathrm{clump}^\mathrm{DEM}} Note that this is a hydraulic diameter, i.e. that of a sphere with identical volume. The clump volume is calculated by Aspherix® using a Monte Carlo integration of all the spheres within the clump, or by the given mass and density, see particle_template command for more details.

  • area: Surface area for each clump type. By default the surface area is computed as surface of a sphere with equivalent volume. This calculation is triggered when the area entered by the user is smaller than zero. This means that mixed settings with the area for only some clump being computed automatically are also possible.

solveFlow
Default:

true

Type:

Switch

Switch to determine, whether the fluid equations are solved or not. By setting solveFlow to false, the fluid solver becomes inactive.

couplingInterval
Default:

\Delta t_\mathrm{CFD} / \Delta t_\mathrm{DEM}

Type:

integer

the number of DEM time steps between CFD-DEM data exchanges. Its default value is set in a way that data is exchanged with the DEM after every CFD time step.

Note

If specifying the couplingInterval manually make sure that the CFD time step is a multiple of the DEM time step multiplied by the couplingInterval, i.e. DEM time step * coupling interval = n * CFD time-step with n being a natural number. This restriction especially means that the CFD time step is larger than DEM time step times ``couplingInterval``.

Example

DEMts = 1e-5, CFDts = 1e-4 ==> couplingInterval = 10 means that data exchange (i.e. coupling between CFD and DEM) will happen every 10 DEM time steps and, thus, every 1e-4 s.

expCorrDeltaUError
Default:

false

Type:

Switch

Can be used with solvers capable of handling explicit volumetric forces on the fluid. Typiocally, implicit force coupling will result in a small difference in the coupling force exerted on the particles and the fluid, i.e. a small violation of Newton’s Third Law. This error can be calculated by TotalError(dU) = Ksl*(Uf_preStep - Uf_postStep), since CFD experiences new Uf values, while particles only experience drag with Uf_postStep. expCorrDeltaUError true will correct for this error in an explicit fashion.

Note

Typically, correcting for this error results in a less stable solution. The sum of this error normalized by the total implicit drag is displayed during the simulation.

useDDTvoidfraction
Default:

"off"

Defines how to caluclate the time derivatve of voidfraction. Following values are recognized:

  • "a" – compute from divergence of mapped particle velocities, i.e. fvc::div(Us*(1 - voidfraction)).

  • "b" – direct variant , i.e. fvc::ddt(voidfraction).

  • "off": ignore the time derivative of the voidfraction field, resulting in ddt(voidfraction) = 0. Since the time derivative of this field usually varies substantial in time and space, this is the default behavior to improve numerical stability.

An exclusion mask for ddt(voidfraction) can be configured in the voidfraction model.

verbose
Default:

false

Type:

Switch

Display extra output on coupling procedure for debugging purposes.

fieldVerbosity
Default:

0

Type:

integer

Integer value to activate writing of more fields, e.g. Us. Most solvers will write all fields when setting fieldVerbosity 1. With the default setting, no additional fields will be written. Intended for debugging purposes.

fixedFluxPressureCheck
Default:

true

Type:

Switch

Check that fixedFluxPressure boundary conditions are used for the pressure field. This check is performed by default and disallows the usage of zeroGradient conditions for pressure. If you want to use zeroGradient conditions, this switch must be set to false.

Extra settings for concave particles

concaveWeightList
Type:

list

In Aspherix and CFDEMcoupling concave particles are generally represented by an assembly of convex particles. When running simulations with concave particles, use particleShapeType "convex" and specify the contribution of each convex particle to the entire concave object manually using this setting.

Example

Assuming two concave particles, the first consisting of three, the second fo two convex particles, we have five convex particle types in total.

particleShapeType "convex";
concaveWeightList
(
    0.3  0.5  0.2  // contributions to first concave
    0.5  0.5       // contributions to second concave
);

Warning

The order of this list important: The weights for each convex particle must be given in the same order as used in Aspherix during the definition of the particle templates.

Settings for Volume-of-Fluid solvers

For the Volume-of-Fluid (VoF)s solver cfdemSolverInter restrictions resulting from the phase boundary must be taken into account.

In general, discontinuities may arise at the fluid-fluid interface, for instance in the pressure field. These discontinuities render the results of interpolation or gradients calculated across this interface numerically very delicate and usually meaningless.

noParticlesAtInterface
Default:

false

Type:

Switch

Forces the user to confirm that particles are not close to the liquid-gas interface in case

  • Pressure gradients are used due to the gradPForce forceModel being present.

  • Any force model will interpolate fluid fields to the particle positions.

phaseChange
Default:

true if a temperatue field called T is defined in the startTime folder, false otherwise

Type:

Switch

Consider phase change or solve for the temperature field. Can be dectivated manually using this switch, see also cfdemSolverInter.

IB settings

In simualtions using an IB-style locate model, e.g. engineIB, periodic boundaries need to be declared explicitly in couplingProperties, especially in setups where particles cross this periodic boundary.

An example setup using these settings is found in the case tutorials/cfdemSolverIB/periodicSettling.

checkPeriodicCells
Default:

false

Type:

Switch

Check for particles in cells at periodic boundaries

wall_blockPeriodicityCheck
Default:

false, for each coordinate direction

Type:

dictionary

Dictionary containing entries for individual coordinate directions. Each entry defines if periodicity checks in this direction are performed.

wall_periodicityCheckTolerance
Default:

1e-7

Type:

scalar

Tolerance for wall peridicity checks

Example

// handle periodic wall
checkPeriodicCells true;
wall_blockPeriodicityCheck
{
        x   true;
        y   true;
        z   false; //periodic in this direction
}
wall_periodicityCheckTolerance 1e-8;