Granular Flow Module User Guide
Granular Flow Module User Guide
User’s Guide
Granular Flow Module User’s Guide
© 1998–2025 COMSOL
Protected by patents listed on [Link]/patents, or see Help > About COMSOL Multiphysics on
the File menu in the COMSOL Desktop for less detailed lists of U.S. Patents that may apply. Patents
pending.
This Documentation and the Programs described herein are furnished under the COMSOL Software License
Agreement ([Link]/sla) and may be used or copied only under the terms of the license
agreement.
Support for implementation of the ODB++ Format was provided by Mentor Graphics Corporation pursuant
to the ODB++ Solutions Development Partnership General Terms and Conditions. ODB++ is a trademark
of Mentor Graphics Corporation.
COMSOL, the COMSOL logo, COMSOL Multiphysics, COMSOL Desktop, COMSOL Compiler,
COMSOL Server, and LiveLink are either registered trademarks or trademarks of COMSOL AB. All other
trademarks are the property of their respective owners, and COMSOL AB and its subsidiaries and products
are not affiliated with, endorsed by, sponsored by, or supported by those trademark owners. For a list of such
trademark owners, see [Link]/trademarks.
Version: COMSOL 6.4
Contact Information
Visit the Contact COMSOL page at [Link]/contact to submit general inquiries
or search for an address and phone number. You can also visit the Worldwide Sales Offices
page at [Link]/contact/offices for address and contact information.
If you need to contact Support, an online request form is located on the COMSOL Access
page at [Link]/support/case. Useful links:
Chapter 1: Introduction
CONTENTS |3
Release from Grid . . . . . . . . . . . . . . . . . . . . . . 43
Release from Data File. . . . . . . . . . . . . . . . . . . . . 46
Outlet . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Force . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Torque . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Auxiliary Dependent Variable . . . . . . . . . . . . . . . . . . 49
Periodic Condition . . . . . . . . . . . . . . . . . . . . . . 50
Grain Counter. . . . . . . . . . . . . . . . . . . . . . . . 51
Bounding Box . . . . . . . . . . . . . . . . . . . . . . . . 51
Heat Source . . . . . . . . . . . . . . . . . . . . . . . . 52
Convective Heat Transfer . . . . . . . . . . . . . . . . . . . 52
Accumulator (Boundary) . . . . . . . . . . . . . . . . . . . . 53
Force Accumulator . . . . . . . . . . . . . . . . . . . . . . 55
Accumulator (Domain) . . . . . . . . . . . . . . . . . . . . 55
4 | CONTENTS
1
Introduction
This user’s guide describes the Granular Flow Module, an optional add-on
package for COMSOL Multiphysics® designed to compute grain trajectories. The
grains can interact with each other and with boundaries, and their motion can be
affected by external fields, which can be user defined or solved for by other physics
interfaces.
The Granular Flow Module User’s Guide introduces the modeling stages in
COMSOL Multiphysics® and this module and serves as a reference for more
advanced modeling techniques and details about the physics interfaces.
In this chapter:
5
About the Granular Flow Module
In this section:
6 | CHAPTER 1: INTRODUCTION
In each module’s documentation, only unique or extra information is included;
standard information and procedures are centralized in the COMSOL Multiphysics
Reference Manual.
• In the Model Builder or Physics Builder, click a node or window and then
press F1.
• In the main toolbar, click the Help ( ) button.
• From the main menu, select Help > Help.
• Press Ctrl+F1.
• From the File menu, select Help > Documentation ( ).
• Press Ctrl+F1.
• In the main toolbar, click the Documentation ( ) button.
• From the main menu, select Help > Documentation.
8 | CHAPTER 1: INTRODUCTION
THE APPLICATION LIBRARIES WINDOW
Each model or application includes documentation with the theoretical background
and step-by-step instructions to create a model or application. The models and
applications are available in COMSOL Multiphysics as MPH files that you can open
for further investigation. You can use the step-by-step instructions and the actual
models as templates for your own modeling. In most models, SI units are used to
describe the relevant properties, parameters, and dimensions, but other unit systems
are available.
Once the Application Libraries window is opened, you can search by name or browse
under a module folder name. Click to view a summary of the model or application and
its properties, including options to open it or its associated PDF document.
To include the latest versions of model examples, from the File > Help
menu select ( ) Update COMSOL Application Libraries.
To include the latest versions of model examples, from the Help menu
select ( ) Update COMSOL Application Libraries.
10 | CHAPTER 1: INTRODUCTION
Overview of the User’s Guide
The Granular Flow Module User’s Guide gets you started with modeling granular
flow using COMSOL Multiphysics. The information in this guide is specific to this
module. Instructions how to use COMSOL in general are included with the
COMSOL Multiphysics Reference Manual.
This chapter gives an overview of the physics interface and features available for
modeling granular flow in COMSOL Multiphysics®.
In this chapter:
| 13
Introduction to Granular Flow
Modeling
Granular flow provides a Lagrangian description of a problem by solving ordinary
differential equations using Newton’s law of motion. Granular flow implements the
discrete element method (DEM), which is a particle-based method that takes into
account the translational and rotational degrees of freedom of the particles, which are
referred to as grains in granular flow. DEM tracks the motion of individual grains by
taking into account the forces on the grains due to external fields such as gravity and
contact with other grains and walls to predict the bulk motion.
The trajectories of individual grains are always solved for in the time domain. The
algorithms in the Granular Flow Module treats the grains as soft particles that can
undergo elastic deformation during contact. The grain shape is spherical in 3D and is
cylindrical in 2D. At each time step taken by the solver, the forces acting on each grain
are queried from the external fields at the current grain position. The grain–grain and
grain–wall collisions are detected, and contact force models are used to evaluate the
forces due to contacts that are added to the total force on the grains. The grain degrees
of freedom are then updated, and the process repeats until the specified end time for
the simulation is reached.
Various contact force models are available in the Granular Flow Module, including
both linear and nonlinear viscoelastic models. Additionally, noncontact force such as
van der Waals force can also be included to take into account the long-range
interactions on the grains. These models can also take into account the resistance to
the rotational motion of the grains that resist rolling and twisting motion during
contact.
Heat transfer effects on the grains can also be included by tracking the temperature of
each grain. A grain’s temperature can change due to an external heat source,
convective heat transfer with the surroundings, and conductive heat transfer due to
grain–grain and grain–wall contacts.
• Special Variables
• Nonlocal Couplings
• Sampling from Random Number Distributions
• Study Setup
• The Grain Dataset
Special Variables
The Granular Flow interface defines a number of special variables, some of which can
only be used during results processing. These variables can be found in the Grain
statistics section of variables when you click Insert Expression or Replace Expression
during results processing.
All of the variables described in this section are preceded by the physics interface
identifier, typically gran. If multiple instances of the physics interface exist, the
additional instances are followed by a number, for example, gran and gran2.
• Grain index, pidx: Each grain is assigned a unique index starting from 1 up to the
total number of grains. This expression can be passed into a function, which can
create, for example, random forces that are unique for each grain. Suppose a random
function has already been defined with name rn1, which takes 2 input arguments.
Then a random force can be constructed with the expression rn1(pidx,t).
• Grain release feature, grf: If there are multiple release features in a model, it is useful
to be able to visualize how the grains mix together based on their initial release
position. The Grain release feature variable takes a numeric value, starting at 1, which
is unique to each release feature.
The following variables are global and can therefore be evaluated using
the Global Evaluation node under Derived Values. They do not have unique
values for each grain.
The following variables are found in the Grain statistics section of variables when you
click Insert Expression or Replace Expression during results processing:
• Total number of grains released by feature, <tag>.Ntf, where <tag> is the tag of a
grain release feature, such as the Release, Inlet, Release from Grid, or Release from
Data File feature. This global variable is uniquely defined for each release feature,
and gives the total number of grains that are successfully released by that feature.
Nonlocal Couplings
The purpose of a model is often to compute the sum, average, maximum value, or
minimum value of a quantity over a group of grains, such as the average kinetic energy
• <phys>.sum(expr) evaluates the sum of the expression expr over the grains. The
sum includes all grains that are active. It excludes grains that have not yet been
released and those that have disappeared.
• <phys>.sum_all(expr) evaluates the sum of the expression expr over all grains,
including grains that are not yet released or have disappeared. Since the coordinates
of unreleased and disappeared grains are not-a-number (NaN), the sum may return
NaN if the model includes unreleased or disappeared grains. An expression such as
pt.sum_all(isnan(qx)) can be used to compute the total number of unreleased
and disappeared grains.
• <phys>.ave(expr) evaluates the average of the expression expr over the active
grains. Unreleased and disappeared grains contribute to neither the numerator nor
the denominator of the arithmetic mean.
• <phys>.ave_all(expr) evaluates the average of the expression expr over all
grains. It is likely to return NaN if the model includes unreleased or disappeared
grains.
• <phys>.max(expr) evaluates the maximum value of the expression expr over all
active grains.
• <phys>.max_all(expr) evaluates the maximum value of the expression expr over
all grains.
The treatment of NaN values in nonlocal maximum couplings can be platform-
dependent, so use caution when evaluating the maximum over all grains including
disappeared and unreleased grains.
• <phys>.min(expr) evaluates the minimum value of the expression expr over the
active grains.
• <phys>.min_all(expr) evaluates the minimum value of the expression expr over
all grains.
The treatment of NaN values in nonlocal minimum couplings can be platform-
dependent, so use caution when evaluating the minimum over all grains including
disappeared and unreleased grains.
• <phys>.max(expr, evalExpr) evaluates the expression evalExpr for the grain
that has the maximum value of the expression expr out of all active grains. For
example, in a model that uses the Granular Flow interface with the name gran, the
expression [Link](gran.V, qx) would evaluate the x-coordinate qx of the
grain with the greatest velocity magnitude gran.V.
An instance of the Granular Flow interface with the default name gran defines the
built-in nonlocal couplings shown in Table 2-1.
TABLE 2-1: BUILT-IN NONLOCAL COUPLINGS FOR THE GRANULAR FLOW INTERFACE.
The pseudorandom numbers used in the Granular Flow Module are generally obtained
from an internal implementation of a PRNG that is instantiated using a seed value.
Controlling this seed can directly influence the behavior of the PRNG and hence the
reproducibility of the model. This seed can be controlled by the Seeds for random
number generation list in the physics interface Advanced Settings section.
• Unique is the default option. When this option is selected, the seed is set to a
predetermined value internally.
• When Random is selected, the seed is itself randomly generated every time the study
is run. This will ensure that the solution is not reproducible when running a study
multiple times.
• When User defined is selected, additional text fields appear in the settings windows
for all nodes that use random numbers. The seed value can be provided directly by
the user. A set of distinct solutions can be obtained by running a Parametric Sweep
over several values of this argument.
For simple models, the Unique and User defined options may make the solution
reproducible when rerunning the study multiple times. Reproducibility is somewhat
easier to achieve when using a manual time step size. However, the results may not be
100% reproducible because even the slightest change in the time step size, down to
machine precision, will cause different pseudorandom numbers to be generated. This
can have a snowballing effect where the different solution values cause subsequent time
steps to take on different sizes, leading to different pseudorandom numbers in all
ensuing time steps. The Random option is never expected to make the solution
reproducible across multiple runs of the study.
SOLVER CONFIGURATIONS
The Granular Flow interface only supports explicit time solver methods. The default
time-stepping method is the second-order Classical Runge–Kutta method.
The default time step provided should be considered as a suggestion and you should
carefully select the appropriate time step based on your model.
This chapter describes the Granular Flow (gran) ( ) interface found under the
Fluid Flow branch ( ) when adding a physics interface.
In this chapter:
| 21
The Granular Flow Interface
The Granular Flow (gran) interface ( ), found under the Fluid Flow branch ( ) when
adding a physics interface, computes the contact forces in between grains and between
grains and geometry walls. The grain motion is usually driven by external fields and is
determined by Newton’s second law.
When this physics interface is added, the following default nodes are also added to the
Model Builder: Grain Properties, Wall, Contact Between Grains, Contact with Walls,
and Gravity. From the Physics toolbar, you can add other nodes that implement, for
example, grain release features and additional external forces or torques. You can also
right-click the Granular Flow to select physics features from the context menu.
The Label is the physics interface name. The default is Granular Flow.
The Name is used primarily as a scope prefix for variables defined by the physics
interface. Refer to such physics interface variables in expressions using the pattern
<name>.<variable_name>. In order to distinguish between variables belonging to
different physics interfaces, the name string must be unique. Only letters, numbers, and
underscores (_) are permitted in the Name field. The first character must be a letter.
The default Name (for the first physics interface in the model) is gran.
FORCE
The Granular Flow interface uses contact force models to evaluate the contact forces
as a function of displacement and velocity.
• The Linear elastic model is a linear viscoelastic model that includes an elastic force
that depends linearly on the overlap, and a viscous force. Spring constants can be
specified in the Settings window for Contact Between Grains and Contact with
Walls nodes.
• The Hertz–MD model is a nonlinear viscoelastic model that includes a more realistic
nonlinear force–displacement relationship.
• The Hertz–MD with adhesion model is an extension of the Hertz–MD model that is
used to model adhesive forces during grain–grain and grain–wall interactions. These
ROTATIONAL RESISTANCE
Select an option from the Rotational resistance model list: Constant torque model,
Varying torque model (the default), or None. Friction coefficients can be specified using
the Settings window for Contact Between Grains and Contact with Walls nodes.
ADDITIONAL VARIABLES
Use the settings in this section to add additional variables to the model that can affect
the solution and provide additional information about the grains.
• The number of grains each grain is in contact with (variable name <name>.Ng).
• The number of wall elements each grain is in contact with (variable name
<name>.Nw).
Contact is defined as any interaction that can induce a normal force on the grain, and
it can therefore include interactions where the grain is not in physical contact with
another grain or a wall element.
ADVANCED SETTINGS
This section is only shown when Advanced Physics Options are enabled (click the Show
More Options button ( ) on the Model Builder toolbar, and select Advanced Physics
Options in the Show More Options dialog).
Many release features in the The Granular Flow Interface utilize pseudorandom
number generators (PRNGs) to sample the grain positions, release times, distribution
of grain properties and initial values of auxiliary dependent variables. The seed for these
internal PRNGs are controlled by this setting.
• When Unique is selected, the seeds are set automatically to a unique value.
• When Random is selected, the seeds are set automatically to a random value that
depends on machine time. This will ensure that the solution is not reproducible
when running a study multiple times.
• When User defined is selected, additional text fields appear in the settings windows
for all nodes that use random numbers. This number is used as the seed value. A set
of distinct solutions can be obtained by running a Parametric Sweep over several
values of this argument.
Note that these PRNGs produce pseudorandom numbers and not truly random
numbers derived from a natural entropy source. For simple models, the Unique and
User defined options may make the solution reproducible when rerunning the study
multiple times. Reproducibility is somewhat easier to achieve when using a manual
time step size. However, the results may not be 100% reproducible because even the
Enter the values of the Maximum number of cells per direction to control the size of the
grid in each direction (x, y in 2D and x, y, z in 3D) independently. The default values
for each direction is 1000.
DEPENDENT VARIABLES
The dependent variables (field variables) are the Grain center position, Grain center
position components, Grain velocity, and Grain velocity components.
Grain Properties
Use the Grain Properties node to specify the grain material properties and grain size.
The default value in the Granular material list is None. If you want to use data from a
Blank Material or from the material libraries, first add the material to the model (right-
click Materials either under the model component or under Global Definitions, and then
select it from the list).
For the Density ρg (SI unit: kg/m3), by default this is taken From material. If User
defined is selected, the default is 2200 kg/m3.
When a Hertz–MD or Hertz–MD with adhesion model is selected in the Contact force
model list in the physics interface Force section, the Specify list appears with the options
When Young’s modulus and Poisson’s ratio is selected, Young’s modulus and Poisson’s
ratio fields appear; and when Young’s modulus and shear modulus is selected, Young’s
• Young’s modulus Eg (SI unit: Pa). By default this is taken From material. If User
defined is selected, the default is 100 GPa.
• Shear modulus Gg (SI unit: Pa). By default this is taken From material. If User defined
is selected, the default is 45.45 GPa.
• Poisson’s ratio νg. By default this is taken From material. If User defined is selected,
the default is 0.1.
The other material properties that can be assigned to grains are as follows:
• Specific heat capacity Cp,g (SI unit: J/(kg.K)). By default this is taken From material.
If User defined is selected, the default is 2000 J/(kg.K). This field is only available
when Compute grain temperature checkbox is selected in the Grain Temperature
section in the physics interface.
• Thermal conductivity kg (SI unit: W/(m.K)). By default this is taken From material.
If User defined is selected, the default is 0.2 W/(m.K). This field is only available
when the Compute conductive heat transfer checkbox is selected in the Grain
Temperature section in the physics interface.
SIZE
Enter value or expression for the Grain diameter dg (SI unit: m). The default value is
1 mm.
Enter value or expression for the Contact search expansion ratio β. β is defined as the
ratio of the contact search diameter to the grain diameter. The default value is 1 which
means the contact search diameter equals the grain diameter. This value must always
be greater than or equal to 1 and can be used to extend the search radius used during
contact detection. Typical use cases include enlarging the search radius to account for
noncontact forces in force models such as Hertz–MD with adhesion or van der Waals.
ADHESION PROPERTIES
Enter value or expression for the Surface energy density γ (SI unit: J/m2). The default
value is 0.05. This field is only available when the Compute van der Waals force
Wall
Use a Wall node to specify a wall’s material properties and movement. The
Accumulator (Boundary) and Force Accumulator subnodes are available from the
context menu (right-click the parent node) or from the Physics toolbar, Attributes
menu.
Young’s modulus and Poisson’s ratio fields appear when Young’s modulus and Poisson’s
ratio is selected. Young’s modulus and Shear modulus fields appear when Young’s modulus
and shear modulus is selected. These properties can be assigned to grains as follows:
• Young’s modulus Eg (SI unit: Pa). By default this is taken From material. If User
defined is selected, the default is 100 GPa.
• Shear modulus Gg (SI unit: Pa). By default this is taken From material. If User defined
is selected, the default is 45.45 GPa.
• Poisson’s ratio νg. By default this is taken From material. If User defined is selected,
the default is 0.1.
ADHESION PROPERTIES
This section is only available when the Compute van der Waals force checkbox is selected
and/or when the Hertz–MD with adhesion is selected in the Contact force model list in
the physics interface Force section. Enter a value or expression for the Surface energy
density γ (SI unit: J/m2). The default value is 0.05.
WALL MOVEMENT
This section controls the rigid-body motion of the selected walls. Select an option from
the Wall motion list.
• Fixed (default) — select this when you want the selected walls to be stationary.
• Translation — select this when you want to impose any arbitrary prescribed
displacement to the walls. This is commonly used to specify translational motion of
the wall but can also be used to prescribe any arbitrary displacement.
• Rotation — select this when you want to impose a rotational displacement to the
walls.
• Translation and rotation — select this when you want to impose a mixture of
translational and rotational motion to the walls.
When either Rotation or Translation and rotation is selected, select an option from the
Rotation type list.
• Choose Constant angular velocity (the default) to specify an angular velocity ω in the
Angular velocity field (SI unit: rad/s) using only numbers and model parameters.
The default value is 0. Specify an initial angle α0 in the Initial angle field (SI unit:
rad). The default value is 0. This effectively sets the rotation angle to α = α0 + ωt.
• Choose General angular velocity to specify a general angular velocity ω using an
expression in the Angular velocity field (SI unit: rad/s) with an initial angle α0
specified in the Initial angle field (SI unit: rad). The rotation angle is computed by
solving an ODE for α, which is therefore a state variable and part of the solution.
• Choose User defined to add a user-defined expression for the rotation angle α in the
Rotation angle field. The default value is 0.
Enter the base point rbp components in the Rotation axis base point fields (SI unit: m).
The default value for each component is 0.
For 3D components, enter the rotation axis eax in the Rotation axis fields. The default
values are 0, 0, 1. In 2D, no rotation axis is specified; it is assumed to point out of the
plane, toward the observer.
If you specify a General angular velocity, the Wall feature uses an ODE to
integrate the rotation angle in time. This can in some situations negatively
affect solver behavior. Therefore, when the rotational velocity is constant,
make sure to select Constant angular velocity.
• When All pairs is selected, the contact properties defined applies to all possible pairs
between different species of grains.
• When Manual is selected, a table is available with two columns Specify properties for
first grain type and Specify properties for second grain type. You can specify any pairs
of grain species to have pair properties defined by this node. This table also has
options to move rows up or down, add a new row, delete selected rows, and clear
the entire table.
The Selection list is disabled in the default Contact Between Grains node.
The default node always specifies contact pair properties for all possible
pairs between grains. If you want to specify different contact pair
properties for different grains pairs, you can add Contact Between Grains
nodes. Then select Manual from the Selection list and edit the table with
desired pairs between different species of grains.
For example, if you set up a model with two Grain Properties nodes to
define two species of grains with labels Grain Properties 1 and Grain
Properties 2, there are three possible pairs between different grain species:
Assume that the first two pairs in the above list have the same contact pair
properties but the third pair has a different set of contact pair properties.
The default Contact Between Grains node specifies properties for all three
pairs. Now, if you add one more Contact Between Grains node and select
Manual from the Selection list in the Grains Pair Selection section, then you
can specify Grain Properties 2 in Specify properties for first grain type and
again Grain Properties 2 in Specify properties for second grain type. Now, all
the values entered in this node will only apply to this selected pair and the
previous values assigned for this specific pair by the default node get
overridden.
• Normal coefficient of restitution en. The default value is 1. This is the value of
coefficient of restitution in normal direction or direction along the line connecting
centers of two grains in contact. It determines the amount of energy loss in the
normal direction when the grains come in contact.
• Tangential coefficient of restitution et. The default value is 1. This is the value of the
coefficient of restitution in the tangential direction or direction perpendicular to the
line connecting centers of two grains in contact. It determines the amount of energy
loss in the tangential direction when the grains come in contact.
• Normal spring constant kn (SI unit: N/m). The default value is 10 MN/m. This
setting is only available when Linear elastic is selected from the Contact force model
list in the physics interface node’s Force section. The normal spring constant for
other contact force models is automatically calculated based on the material
properties and overlapping distance between two grains in contact.
• Tangential spring constant kt (SI unit: N/m). The default value is 10 MN/m. This
setting is only available when Linear elastic is selected from the Contact force model
list in the physics interface Force section. The tangential spring constant for other
contact force models is automatically calculated based on the material properties and
overlapping distance between two grains in contact.
• Static friction coefficient μn. The default value is 0.09.
• Rolling friction coefficient μr. The default value is 0.1. This setting is only available
when the selected Rotational resistance model is either Constant torque model or
Varying torque model in the physics interface node’s Rotational Resistance section.
• Twisting friction coefficient μtw. The default value is 0.1. This setting is only available
in 3D when the selected Rotational resistance model is either Constant torque model
or Varying torque model in the physics interface node’s Rotational Resistance section.
in the physics interface node’s Force section. Enter values or expressions for the
following quantities:
Enter a value or expression for Temperature correction factor for contact radius Cr. The
default is 1. This correction factor can be used to account for the large contact radius
that often results from utilizing artificially low values of Young’s modulus.
• When All pairs is selected, the contact properties defined applies to all possible pairs
between grains and walls.
• When Pair between all walls and selected grain types is selected, a table is available
with one column titled Specify properties of grain where you can add any species of
grains. You can specify contact pair properties between selected grain species and all
types of walls defined by different Wall nodes.
• When Pair between all walls and selected wall types is selected, a table is available with
one column titled Specify properties of wall where you can add any types of walls.
You can specify contact pair properties between selected type of wall and all species
of grains defined by different Grain Properties nodes.
• When Manual is selected, a table is available with two columns: Specify properties for
wall and Specify properties for grain. You can specify any pairs of grain species and
wall types to have pair properties defined by this node.
All the tables mentioned above have options to move rows up or down, add a new row,
delete selected rows, and clear the entire table.
The Selection list is disabled in the default Contact with Walls node. The
default node always specifies contact pair properties for all possible pairs
between grains and walls. If you want to specify different contact pair
properties for different grain–wall pairs, you can add Contact with Walls
nodes. Then select an appropriate option from the Selection list and edit
the table with desired pairs between walls and grains.
Assume that each pair has a different set of contact pair properties. The
default Contact with Walls node specifies properties for both pairs. Now, if
you want to specify different pair properties for the second pair in the
above list, you can add a new Contact with Walls node and then specify the
pair using one of the following two ways:
• Select the Pair between all walls and selected grain type option from the
Selection list in the Grain–Wall Pair Selection section. Choose Grain
Properties 2 for the Specify properties for grain column in the table.
• Select the Manual option from the Selection list in the Grain–Wall Pair
Selection section. Choose Wall 1 for the Specify properties for wall
column and Grain Properties 2 for the Specify properties for grain
column in the table.
Now all the values entered in this node will only apply to this selected pair,
and the previous values assigned for this specific pair by the default node
get overridden.
CONTACT PROPERTIES
Enter a value or expressions for the following:
• Normal coefficient of restitution en. The default value is 1. This is the value of the
coefficient of restitution in the normal direction or direction along the line
connecting center of the grain and the point of contact at wall. It determines the
amount of energy loss in the normal direction when the grain and wall come in
contact.
• Tangential coefficient of restitution et. The default value is 1. This is the value of the
coefficient of restitution in the tangential direction or direction perpendicular to the
line connecting center of the grain and the point of contact at wall. It determines
ADHESION PROPERTIES
This section is only available when
Enter the value or expression for the Temperature correction factor for contact radius
Cr. The default is 1. This correction factor can be used to account for the large contact
radius that often results from utilizing artificially low values of Young’s modulus.
Gravity
The Gravity node is a default node and can be used to exert a gravitational force on
grains. The gravity vector can point in any direction with any magnitude, although the
default is for grains to move downward using the acceleration due to gravity at Earth’s
surface. This feature can only be added once to the model and it applies to all grains
throughout the model.
Release
Use the Release node to release grains into the model from a selected set of domains.
The release times, initial values of the grains’ degrees of freedom such as positions,
velocities and temperature, and initial value of any auxiliary dependent variables can be
specified.
The grains are released sequentially at each release time. For each grain, a release
position and radius are first determined based on the options provided in the Initial
Position and the Released Grain Properties sections. An attempt is made to release the
grain at this position, and the attempt is considered successful only if the new grain
does not overlap with any existing grains or wall elements. Alternatively, a maximum
amount of allowed overlap can also be specified.
If the attempt is deemed successful, the grain is released at the release position.
Alternatively, an unsuccessful attempt can be followed by a number of attempts at
nearby release positions. Once the maximum number of attempts is reached, the grain
is discarded, and the next grain is attempted.
RELEASE TIMES
Select a Distribution function: List of values (default), Uniform, Normal, or Lognormal.
List of Values
Enter Release times (SI unit: s), or click the Range button ( ) to select and define a
range of specific times. At each release time, grains are released with initial position and
velocity as defined in the following sections.
Uniform
Enter the Number of values, along with the First time value (SI unit: s) and the Last time
value (SI unit: s). In addition, select whether the Sampling from distribution should be
Deterministic or Random. When Deterministic is selected, an array of length Number of
values of uniformly spaced release times is generated. This array starts with the First
time value and ends with the Last time value exactly. The release times are reproducible
each time the solution is computed.
INITIAL VALUES
Position
Select a Position from the list: Random (the default) or Density.
Random
For Random the grains are released at random positions within the selected entities. If
grains are released at multiple release times, the initial positions are uniquely generated
for each release time. By contrast, for Density the grains positions are the same at each
release time.
The grain positions are determined in the following way. First a random mesh element
is selected for each grain with a probability proportional to the element size, so that
grains are more likely to be released from larger mesh elements than smaller elements.
After the mesh element is selected, random local coordinates are chosen within the
element, then converted to global coordinates. A grain is then attempted to be placed
at this location.
Density
For Density the grains are positioned in the selected domains by sampling from a user-
defined spatial distribution. Enter a value or expression for the Density proportional to
ρ (dimensionless). The default is 1.
Select a Release distribution accuracy order between 1 and 5 (the default is 5), which
determines the integration order that is used when computing the number of grains to
release within each mesh element. The higher the accuracy order, the more accurately
grains will be distributed among the mesh elements.
The Position refinement factor (default 0) must be a nonnegative integer. When the
refinement factor is 0, each grain is always assigned a unique position, but the density
is taken as a uniform value over each mesh element. If the refinement factor is a positive
integer, the distribution of grains within each mesh element is weighted according to
the density. Further increasing the Position refinement factor increases the number of
evaluation points within each mesh element.
Velocity
Enter values or expressions for the components of the initial grain velocity v0
(SI unit: m/s) based on space dimension. The defaults are 0 m/s.
Temperature
This section is only shown when the Compute grain temperature checkbox is selected
in the physics interface Grain Temperature section. Enter a value or expression for the
initial grain temperature Tg,0 (SI unit: K). The default value is 293.15 K.
• When Number of grains is selected, enter the number of grains to be released for each
grain type corresponding to a Grain Properties node. The default value for the first
row in the table is 1, and it is 0 for all other rows.
• When one of the Number fraction, Mass fraction, or Volume fraction options is
selected, enter the Number of grains per release (default 1). Then enter the values of
the corresponding fractions of the distribution for each grain type. The default value
The values of the distribution can be numerical values or parameters defined in the
Parameters node.
The grains are released sequentially, and each grain is associated with a
Grain Properties node with a probability dictated by the user-specified
distributions.
Further, the grains are only released if the overlap with existing grains and
wall elements is acceptable. Therefore, the total number of grains being
released (and the distribution of their properties) at release time should
be viewed as maximum values (ideal distributions), and may not always
exactly match the user-specified values. The number of grains being
released and their distributions may therefore also be different for each
release time specified in the Release Times section.
The user should therefore test the released grain populations to ensure an
appropriate population is attained. Furthermore, for performance
reasons, it is advised to ensure that the Number of grains per release is set
as close to the actual number of grains being released as possible.
The algorithms used for the contact detection are described in Contact
Force: Linear Elastic Model section in the Theory for the Granular Flow
Interface.
ADVANCED SETTINGS
Enter a nonnegative value or expression for the Maximum allowed normal overlap
(SI unit: m/s). The default is 0 m. This value is used to control the amount of overlap
that is acceptable between a grain being considered for release and existing grains or
wall elements.
If User Defined is selected from the Seeds for random number generator list in the physics
interface Advanced Settings section, the Seed for random number generator text field is
available. Enter the seed value of the pseudorandom number generator (PRNG) used
by this feature. The default value is 1. The PRNG is used to generate random numbers
for sampling grain release times, positions, grain properties, and initial values of
auxiliary dependent variables.
Inlet
Use the Inlet node to release grains into the modeling domain from selected
boundaries. The released grains are positioned such that their centers lie on the
selected boundaries. The selected boundaries are not included in the grain–wall
interactions.
See Release for information about the following sections: Release Times, Released Grain
Properties, Initial Value of Auxiliary Dependent Variables, and Advanced Settings.
INITIAL VALUES
See the Release node for information about Velocity, Angular velocity in body-fixed frame
and Temperature.
Position
Select an option from the Position list: Random (the default), Density, or Uniform
distribution (2D components), or Projected plane grid (3D components). Density, and
Random have the same settings as described for the Release node.
INITIAL VALUES
See the Release node for information about Velocity, Angular velocity in body-fixed
frame, and Temperature.
Position
Select an option from the Position grid type list: All combinations (the default) or
Specified combinations.
If Specified combinations is selected, the number of initial coordinates entered for each
space dimension must be equal, and the total number of grains released is equal to the
length of one of the lists of initial coordinates. If All combinations is selected, the total
number of grains released is equal to the product of the lengths of each list of initial
coordinates.
For example, suppose a 2D model component includes a Release from Grid node with
the following initial coordinates:
• qx,0 = range(0,1,3)
• qy,0 = range(2,2,8)
The position for any grains with initial coordinates outside the geometry are set to not-
a-number (NaN), so the grains do not appear when plotted during results processing.
Figure 3-1: Graphics window after clicking the Preview Initial Coordinates button.
Figure 3-2: Graphics window after clicking the Preview Initial Extents button.
If User Defined is selected from the Seeds for random number generator list in the physics
interface Advanced Settings section, the Seed for random number generator field is
available. Enter the seed value of the pseudorandom number generator (PRNG) used
by this feature. The default value is 1. The PRNG is used to generate random numbers
for sampling grain release times, positions, grain properties, and initial values of
auxiliary dependent variables.
See Release for information about the following sections: Release Times and Initial Value
of Auxiliary Dependent Variables.
See Release from Grid for information about the following sections: Released Grain
Properties and Advanced Settings.
For example, a data file containing the following text would insert grains at the
positions (0.1, 0.2, 0.6) and (0.2, 0.4, 0.8) in a three-dimensional geometry:
Filename
Browse your computer’s file system to select a text file, then click Import to import the
data. To remove the imported data, click Discard. Enter the Index of first column
containing position data i to indicate which column represents the first coordinate of
the grain position vectors. The default value 0 indicates the first column.
Velocity
Select an option from the Initial velocity list: From file, or User defined (the default).
• For From file, enter the Index of first column containing velocity data i. The default
is 3 in 3D and 2 in 2D. The columns are zero-indexed; that is, an index of 0
corresponds to the first column. Select the Rotate velocity vectors checkbox to rotate
the velocity vectors using the specified Euler angles (Z-X-Z) in 3D or Rotation angle
in 2D. The checkbox is cleared by default.
• For User defined, enter values or expressions for the Initial grain velocity v0
(SI unit: m/s) based on space dimension. The defaults are 0 m/s.
TRANSFORMATIONS
The distribution of loaded grain positions can be scaled, rotated, and translated before
the grains are released.
To scale the distribution of release positions, enter a value or expression for the Scale
factor R (dimensionless). The default is 1. This scale factor can be used to correct unit
discrepancies between the data file and the model geometry. For example, if the
geometry length unit is in meters but the data file lists coordinates in millimeters, enter
a scale factor of 0.001.
To rotate the distribution, enter the Euler angles (Z-X-Z) α, β, and γ (in 3D) or the
Rotation angle α (in 2D). The default values are all 0.
In 3D, α is the rotation angle about the space-fixed z-axis, then β is the rotation angle
about the transformed x-axis (or x'-axis), and finally γ is the rotation angle about the
transformed z-axis (or z''-axis). Positive values indicate counterclockwise rotations.
Outlet
Use the Outlet node to determine what happens to the grains when passing through
the selected boundaries. The Accumulator (Boundary) subnode is available from the
context menu (right-click the parent node) or from the Attributes menu on the Physics
toolbar.
OUTLET
Select a Wall condition: Disappear or Pass through (the default).
• When Disappear is selected, the grains passing through the boundaries are removed
from the modeling domain.
• By default, any common boundary between two adjacent domains are treated as
rigid walls. Use the Pass through condition to allow the grains to pass from one
domain to the other.
The Granular Flow interface also provides the Bounding Box feature to
remove grains. For performance reasons, it is recommended to use the
Bounding Box instead of the Disappear option when possible.
Force
Use the Force node to exert user-defined external forces on grains to influence their
motion. All forces defined in the model are added together to compute the total force
on the grains.
FORCE
Enter values or expressions for the components of Force F (SI unit: N) based on space
dimension. The defaults are 0 N.
Torque
Use the Torque node to exert user-defined torque on grains. All torque defined in the
model are added together to compute the total torque on the grains.
In 2D, enter values or expressions for the Grain Torque τ (SI unit: Nm). The default
value is 0 Nm.
Enter a Source R. The unit of the source depends on the settings in the Units section.
Under Integrate choose whether to integrate the equation you have defined With
respect to time (the default) or Along grain trajectory. For example, to compute the
residence time of a group of grains in a given system, set the Source to 1 and set
Integrate to With respect to time. To compute the length of the grain trajectory, set the
Source to 1 and set Integrate to Along grain trajectories.
UNITS
Select a Dependent variable quantity from the list; the default is Dimensionless [1]. To
enter a unit, select None from the list and in the Unit field enter a value (for example,
K, m/s, or mol/m^3).
Grains close to the source (destination) boundaries can interact with the periodic
images of the grains near the destination (source) boundaries. Further, a grain crossing
the source (destination) boundaries will automatically be placed at the corresponding
locations on the destination (source) boundaries.
BOUNDARY SELECTION
The selection of the boundaries is important and needs to satisfy the following criteria
for the periodic boundary conditions to work correctly.
• The source and the destination boundaries need to be planar. Curved boundaries
are not supported. Further, the normals of the selected boundaries must align with
one of the x-, y-, or z-axes.
• If a Periodic Condition is applied along one axis, then all the boundaries in the
geometry whose normals lie along that axis must be selected. Periodic boundary
conditions cannot be selectively applied on a part of the geometry along a chosen
direction.
• The source and destination boundaries must also be the exterior boundaries of the
geometry along the chosen direction.
DESTINATION SELECTION
This section is available for specifying the destination boundaries, if needed, when the
Manual Destination Selection (right-click the parent node) option is selected in the
context menu for the Periodic Condition node. You can only select destination
boundaries from the union of all source and destination boundaries.
GRAIN COUNTER
Select an option from the Grain selection list to specify whether the Grain Counter
collects information based on Release feature (the default) or Grain properties.
If Release feature is selected, select an option from the Release feature list. If All (the
default) is selected, the Grain Counter collects information about all grains in the
selected domains, regardless of how they were released. Alternatively, select a grain
release feature from the list, and then only the grains produced by that release feature
are counted.
If Grain properties is selected from the Grain selection list, select an option from the
Released grain properties list. If All (the default) is selected, the Grain Counter collects
information about all grains in the selected domains, regardless of their grain
properties. Alternatively, select a grain properties feature from the list, and then only
the grains associated with the selected Grain Properties node are counted.
Bounding Box
Use the Bounding Box feature to add a virtual rectangular box that bounds the
modeling domains. Any grains that cross the bounds of this box are removed from the
simulation. This feature can be used to discard the grains that move away from the
region of interest since these grains may otherwise have an adverse effect on the
performance of the simulation. Only one Bounding Box node can be added to the
model.
SETTINGS
Select an option from the Specify bounding box list: From geometry or User defined
(default).
Heat Source
The Heat source node is available when the Compute grain temperature checkbox is
selected in the physics interface node’s Additional Variables section. Use this node to
apply a user-defined source or sink term that affects the grain temperature.
HEAT SOURCE
Enter a Heat source Q (SI unit: W). The default value is 0.
The temperature within the grain is assumed to be uniform; that is, heat transfer by
conduction within the grain takes place on a much shorter time scale than heat transfer
by convection at the surface. This is equivalent to the assumption that the grain Biot
number is much smaller than unity, and allows each grain’s temperature to be stored
as a single number instead of a temperature distribution.
MODEL INPUT
The model input for the Temperature T (SI unit: K) is always shown in the settings
window for this feature, even if there are no material properties that depend on it.
Accumulator (Boundary)
The Accumulator subnode is available from the context menu (right-click the Wall
node) or from the Physics toolbar, Attributes menu. Each Accumulator subnode defines
a variable, called the accumulated variable, on each boundary element in the selection
of the parent node. Whenever a grain hits a boundary element, the value of the
accumulated variable in that element is incremented based on the value of the user-
defined Source term R for the incident grain. The accumulated variable can be
influenced by all grains or be restricted to grains corresponding to a specific release
feature or a Grain Properties node.
ACCUMULATOR SETTINGS
Select an option from the Accumulator type list: Density (default) or Count.
• For Density the accumulated variable is divided by the surface area (in 3D) or length
(in 2D) of the boundary element where it is defined.
• For Count the accumulated variable is the sum of the source terms of all grains that
hit the boundary element and is unaffected by the boundary element size.
Enter the Accumulated variable name. The default is rpb. The accumulated variable is
defined as <scope>.<name>, where <scope> includes the name of the physics
interface node, parent boundary condition, and the Accumulator node; and <name> is
the accumulated variable name.
For example, if the Accumulator subnode is added to a Wall node in an instance of the
Granular Flow interface using the default variable name rpb, the accumulated variable
name might be [Link].
GRAIN SELECTION
Select an option from the Grain selection list to specify whether the accumulated
variable collects information from the grains based on a Release feature (the default) or
a Grain properties node.
If Release feature is selected, select an option from the Release feature list. If All (the
default) is selected, the accumulated variable collects information about all grains in
the selected domains or boundaries, regardless of how they were released.
Alternatively, select a grain release feature from the list, and then only the grains
released by that release feature are included.
If Grain properties is selected from the Grain selection list, select an option from the
Released grain properties list. If All (the default) is selected, the accumulated variable
collects information about all grains in the selected domains or boundaries, regardless
of their grain properties. Alternatively, select a grain properties feature from the list,
and then only the grains associated with the selected Grain Properties node are
included.
UNITS
Select a Dependent variable quantity from the list; the default is Dimensionless [1]. To
enter a unit, select None from the list and in the Unit field enter a value, for example, K,
m/s, or mol/m^3.
SMOOTHING
The accumulated variables are computed using discontinuous shape functions. Select
the Compute smoothed accumulated variable checkbox to compute a smoothed
accumulated variable by computing the average value of the variable within a sphere of
a user-defined radius. Then enter a Smoothing radius r (SI unit: m). The default
is 0.1 m.
ACCUMULATOR SETTINGS
Enter the Accumulated variable name. The default is wf. The accumulated variable is
defined as <scope>.<name>, where <scope> includes the name of the physics
interface node, parent boundary condition, and the Force Accumulator node; and
<name> is the accumulated variable name.
For example, if the Force Accumulator subnode is added to a Wall node in an instance
of the Granular Flow interface using the default variable name wf, the accumulated
variable name might be [Link].
GRAIN SELECTION
See Accumulator (Boundary) for settings related to Grain Selection.
Accumulator (Domain)
Use the Accumulator node to define additional degrees of freedom on a domain. Each
Accumulator defines a variable, called the accumulated variable, on each domain
element in the set of selected domains. The values of the accumulated variables are
determined by the properties of grains in each domain element. The accumulated
variable may be influenced by all grains or may be restricted to grains corresponding
to a specific release feature or a Grain Properties node.
ACCUMULATOR SETTINGS
Select an option from the Accumulator type list: Density (default) or Count.
• For Density, the accumulated variable is divided by the volume of the mesh element
where it is defined.
• For Count, the accumulated variable is unaffected by the element size.
• For Elements, the value of the accumulated variable in an element is the sum of the
source terms of all grains in that element. If the Accumulator type is set to Density,
this sum is divided by the mesh element volume. At a later time, a grain has no effect
on the value of the accumulated variable in an element it passed through previously.
• For Elements and time, the time derivative of the accumulated variable in an element
is the sum of the source terms of all grains in that element. If the Accumulator type
is set to Density, this sum is divided by the mesh element volume. As each grain
moves through a series of mesh elements, it leaves behind a contribution to the
accumulated variable that remains even after the grain has moved on.
Enter the Accumulated variable name. The default name is rpd. The accumulated
variable is defined as <name>.<varname>, where <name> is the physics interface name
and <varname> is the accumulated variable name. For example, in an instance of the
Granular Flow interface with default name gran and default accumulated variable
name rpd, the variable would be named [Link].
Enter a Source R. The unit of the source depends on the settings in the Units section.
The source term is used to calculate the accumulated variable in a manner specified by
the Accumulate over and Accumulator type settings.
If Elements and time is selected from the Accumulate over list, select an option from the
Source interpolation list: Constant, Linear (the default), Quadratic, or Exponential. The
Source interpolation determines what functional form the Source is assumed to follow
during each time step taken by the solver. This information is used to compute the
accumulated variable in mesh elements that the grains pass through during each time
step.
GRAIN SELECTION
See Accumulator (Boundary) for settings related to Grain Selection.
UNITS
Select a Dependent variable quantity from the list; the default is Dimensionless [1]. To
enter a unit, select None from the list and in the Unit field enter a value, for example, K,
m/s, or mol/m^3.
• Kinematics of Grains
• Contact Force: Linear Elastic Model
• Contact Force: Hertz–MD (Mindlin and Deresiewicz) Model
• Contact Force: Hertz–MD with Adhesion Model
• Contact Force: van der Waals Force
• Contact Force: Coulomb’s Criterion
• Rotational Resistance Theory
• Computing Grain Temperature
• Contact Search Theory
• Initial Conditions
• Boundary Conditions
• Auxiliary Dependent Variables Theory
• Accumulator Theory: Domains
• Accumulator Theory: Boundaries
• Force Accumulator Theory
• Time Step Size
• References
Kinematics of Grains
A grain has two types of motion: translational and rotational motion. These motions
of individual grains are determined by the equations of the motion given by
dv i
m i --------- =
dt ( Fn, ij + Ft, ij ) + Fext, i (3-1)
j
dω i
I i --------- =
dt ( Ri × Ft, ij + Mrot, ij ) (3-2)
j
• m, I, v, and ω are the mass, moment of inertia, translational velocity, and rotational
velocity of the grain, respectively.
• Fn and Ft are the normal and the tangential forces during contact between grains i
and j; for example, Contact Force: Hertz–MD (Mindlin and Deresiewicz) Model.
• Ri = Rinij is the vector between the center of the grain and the contact point where
the force Ft is applied, with Ri the radius and nij the unit normal vector along the
line joining the center and point of contact.
• Fext are all other external forces applied to the grain such as gravitational force.
• Mrot is the torque due to rotational friction and resists the rotation of grain; see
Rotational Resistance Theory for more details.
θ φ+ψ
cos --- cos -------------
2 2
q0
θ φ – ψ
q1 sin --- cos -------------
Q = = 2 2 (3-3)
q2 θ φ–ψ
sin --- sin -------------
q3 2 2
θ φ + ψ
cos --- sin -------------
2 2
·
q0 –q1 ω1 – q2 ω2 – q3 ω3
·
· q1 1 q ω + q2 ω3 – q3 ω2
Q = = --- 0 1 (3-4)
· 2 q ω –q ω +q ω
q2 0 2 1 3 3 1
· q0 ω3 + q1 ω2 – q2 ω1
q3
Newton’s second law of motion (Equation 3-1) is expressed as a set of coupled first-
order ordinary differential equations with F as the total force:
mv· = F
v = q·
·
ω = θ
NORMAL FORCE
The following diagram (left) shows two grains in contact with radii R1 and R2. As this
is a soft-sphere model, there is a finite overlap between the grains in contact, although
for illustrative purposes this overlap region has been greatly exaggerated.
Taking a closer look at the overlap region (right figure), define unit vectors in the
tangential direction t and normal direction n. In 3D, there would be two orthogonal
tangential directions t1 and t2. Let the normal displacement δn (SI unit: m) be the
thickness of this overlap region. For intersecting spheres, the radius of the contact area
is denoted a (SI unit: m). For two grains in contact with positions qi and qj (SI unit:
m), the normal direction is
qj – qi
n ij = -------------------
- (3-5)
qj – qi
δ n, ij = R j + R i – q j – q i (3-6)
F n, ij = – ( k n, ij δ n, ij + c n, ij v r, ij ⋅ n ij )n ij (3-7)
where kn is the normal elastic stiffness coefficient and cn is the normal damping
coefficient. In this model, these two coefficients are known and constant. Nc is the
number of neighboring grains, and vr is the relative velocity between colliding grains
at the contact point and is given by
v r, ij = v i – v j + ( R i ω i + R j ω j ) × n ij
where ω is the rotational velocity of the grain. The normal damping coefficient cn is
calculated as
4m eff k n, ij
c n, ij = – log e n -----------------------------------
2 2
π + ( log e n )
1- –1
m eff = ------
1- + ------
m i m j
TANGENTIAL FORCE
The tangential component of the contact force is given by
F t, ij = – ( k t δ t, ij + c t v r, ij ⋅ t ij )t ij (3-8)
where kt is the tangential elastic stiffness coefficient and ct is the tangential damping
coefficient. Similar to normal force, these two are known and constant. The tangential
damping constant is calculated as
4m eff k t, ij
c t, ij = – log e t ----------------------------------
2 2
π + ( log e t )
vt = vr – vn
v n = ( v r ⋅ n )n
Nc
( kn δn, ij + cn vn, ij )
F n, ij = – (3-9)
j=1
Nc
( kt δt, ij + ct vt, ij )
F t, ij = – (3-10)
j=1
The calculation of the tangential displacement, δt, is dependent on time history of the
physical contact between two grains. When a new physical contact happens at time t0
between two grains, δt is zero and is calculated as
t
′
δ t, ij = vt, ij dt
t0
′ ′
δ t, ij = δ t, ij – ( δ t, ij ⋅ n ij )n ij
The two steps in the calculation ensure that δt is in the contact plane. At the end of
contact δt, is set to zero.
δ n, iw = R i – q w – q i (3-11)
qw – qi
n iw = ---------------------
-
qw – qi
v r, iw = v i + R i ω i × n iw
m eff = m i
Substituting all of the above equations in Equation 3-9 and Equation 3-10, the
normal and tangential components of the contact force between grain and wall are
calculated.
NORMAL FORCE
The equation of normal force remains same as Equation 3-9; however, the spring and
damping coefficients are not constant and depend on the material properties of grains
i and j in contact:
4
k n, ij = --- E eq R ij δ n, ij
3
5m eff k n, ij
c n, ij = – log e n -----------------------------------
2 2
π + ( log e n )
2 2 –1
1 – ν 1–ν
E eq = --------------i- + --------------j- (3-12)
Ei Ej
1- – 1
m eff = ------
1- + ------
m m i j
where
TANGENTIAL FORCE
The equation of normal force remains same as Equation 3-10; however, the spring and
damping coefficients are defined as
k t, ij = 8G eq R eq δ n, ij
10 m eff k t, ij
c t, ij = – log e t ------ ----------------------------------
3 π 2 + ( log e ) 2
t
2 2 –1
2 – ν 2–ν
G eq = --------------i- + --------------j- (3-14)
Gi Gj
where
2 2 –1
1 – ν 1 – ν w
E eq = --------------i- + ---------------
- (3-15)
E i Ew
2 2 –1
2 – ν 2 – ν w
G eq = --------------i- + ---------------
- (3-16)
G i Gw
R eq = R i (3-17)
m eff = m i
γ i + γ j – 2γ ij
γ = -----------------------------
-
2
where i and j are indices for the grains in contact and γij is the interface energy density.
NORMAL FORCE
The normal contact force is given by (Ref. 3)
3
4E eq a ij 3
F n, ij = – -------------------- – 16πγE eq a ij + c n, ij v r, ij ⋅ n ij n ij (3-18)
R eq
where a is the radius of the circular contact patch area. For the definition of other
parameters used, see Contact Force: Hertz–MD (Mindlin and Deresiewicz) Model
and Contact Force: Linear Elastic Model.
2
1 1 --------- a0
δ c = --- -----------
⁄
26 1 3 R eq
where a0 is the equilibrium contact patch radius when |Fn|=0 and no other external
forces are acting and is given by
1
2 ---
9πγR eq 3
a 0 = --------------------
E eq
TANGENTIAL FORCE
The tangential force is exactly the same as that of Contact Force: Hertz–MD (Mindlin
and Deresiewicz) Model except the definition of kt, which is given by
k t, ij = 8G eq a ij
4πγR eq if δn > 0
2
4πγR eq D min
F vw = ---------------------------------2- if – D max ≤ δ n ≤ 0
( δ n – D min )
0 if δ n < – D max
The van der Waals force is calculated as an addition to the normal force, Equation 3-
7, as follows:
F n, ij = – ( k n, ij δ n, ij – F vw + c n, ij v r, ij ⋅ n ij )n ij
The effect on the tangential force component is not considered in the current
formulation of the van der Waals force.
Ft ≥ μs Fn (3-19)
δt
F t = – min ( k t ⋅ δ t , μ s F n ) ------- (3-20)
δt
μs Fn δt
δ t ← ---------------- ------- (3-21)
kt δt
Equation 3-19 to Equation 3-21 are true when the contact force model is either linear
elastic or Hertz–MD. However, for the Contact Force: Hertz–MD with Adhesion
Model these equations need to be slightly modified to account for the cohesive effects.
F c = 3πγR eq (3-22)
F t ≥ μ s ( F n + 2F c )
δt
F t = – min ( k t ⋅ δ t , μ s ( F n + 2F c ) ) -------
δt
μ s ( F n + 2F c ) δ t
δ t ← ------------------------------------- -------
kt δt
For example, for a stationary spherical grain sitting on a tabletop, the pressure
distribution (normal contact force per unit area) in the soft-sphere model might look
like the figure shown on the left. The pressure distribution is symmetric. However,
when the grain is rolling as shown on the right, the pressure distribution becomes
asymmetric, creating a net torque that opposes the rotation.
The rolling resistance is Mrot in Equation 3-2 and is implemented based on Ref. 5.
ω
M rot = – min μ r τ, I ------- ω̂
Δt
where
In 3D, the rotational resistance torque has two components rolling resistance torque
and twisting resistance torque and is defined as
ωr ω tw
M rot = – min μ r τ, I --------- ω̂ r – min μ tw τ, I ------------- ω̂ tw
Δt Δt
where
ω tw = ( ω ij ⋅ n )n
ω r = ω ij – ω tw (3-23)
ω ij = ω i – ω j
τ = R eq ( F n + 2F c )
M rot, t + Δt = M r, t + ΔM r
ΔM r = – k rot ( ω i – ω j )Δt
2
k rot = k t R eq (3-24)
This choice sets the nominal rotational natural frequency due to rolling stiffness equal
to the nominal rotational natural frequency due to the tangential or shear stiffness,
leading to a well-behaved and well-damped rolling resistance mechanism without the
need for any additional damping parameters.
The magnitude of the updated rolling resistance cannot be greater than the torque
given by constant torque model
Mr if M r < M rm
Mr = Mr (3-25)
M rm ----------- otherwise
Mr
where
M rm = μ r τ
τ = R eq F n
In 3D, the rotational resistance can be decomposed into two component, rolling
resistance and twisting resistance
M rot, t + Δt = M r, t + ΔM r + M tw, t + ΔM tw
ΔM r = – k rot ω r Δt
ΔM tw = – k rot ω tw Δt
M tw if M tw < M twm
M tw = M tw
M twm -------------- otherwise
M tw
M twm = μ tw τ
τ = R eq ( F n + 2F c )
dT g
m g C p, g ---------- = Q t (3-26)
dt
where
The Biot number Bi (dimensionless) can be used to determine whether the grain
temperature can be treated as a uniform value. The Biot number is defined as
hL
Bi = ----------C-
kg
where LC (SI unit: m) is a characteristic length, typically the ratio of grain volume to
grain surface area, and kg (SI unit: W/(m·K)) is the grain thermal conductivity. If the
• the Hertz–MD or the Hertz–MD with adhesion is selected from the Contact force model
list in the physics interface Force section and
• the Compute grain temperature checkbox is selected in the physics interface
Additional Variables section.
This heat flux contribution is added to total heat source Qt in Equation 3-26 and is
defined as (Ref. 6)
k g, i k g, j
Q ij = – 4r c -------------------------- ( T g, j – T g, i ) (3-27)
k g, i + k g, j
--1-
3 F n R eq 3
r c = C r ------------------------ (3-28)
4E eq
• Fn is the normal component of the contact force; see Contact Force: Hertz–MD
(Mindlin and Deresiewicz) Model, Contact Force: Hertz–MD with Adhesion
Model, or Contact Force: van der Waals Force for more details.
• Req is calculated using Equation 3-13.
• Eeq is given by Equation 3-12.
• Cr is the temperature correction factor for contact radius.
1
---
E eq 3
C r = --------------
E eq, 0
where Eeq,0 is the equivalent Young’s modulus calculated using real values of the
Young’s modulus of grains and walls.
Conductive heat transfer between grain and wall is calculated assuming the wall to have
infinite radius and conductivity. Consequently, Equation 3-27 and Equation 3-28
become
Nw
1
---
3 Fn R 3
r c = C r ------------------ (3-30)
4E eq
Q = hA g ( T – T g )
where
Strictly speaking, T is the temperature that the surrounding fluid would have at the
grain’s position, if the grain were not there; the fluid very close to the surface of a
warmer or cooler grain will show a temperature gradient. Assuming that the fluid
temperature stays relatively constant over length scales comparable to the grain
diameter, we can think of T as the ambient or free-stream temperature at a large
The heat transfer coefficient h can be specified directly or by entering the Nusselt
number Nu (dimensionless),
dg h
Nu = ---------
-
k
where k (SI unit: W/(m·K)) is the thermal conductivity of the fluid (assumed to be
isotropic) and dg (SI unit: m) is the grain diameter.
Broad Search
The broad search begins by constructing a uniform rectangular grid across the entire
geometry. The length of the grid cell in each direction is constrained to be larger than
the maximum contact search radius. The contact search radius for each grain is equal
to or greater than the grain radius depending on the Contact search expansion ratio β
specified in the Grain Properties feature. Subsequently, if the total number of grid cells
in each direction exceeds the Maximum number of cells per direction (specified in the
physics interface settings), the grid cell length is adjusted to ensure that these limits are
satisfied. Once the grid is constructed, each grain is indexed into a grid cell based on
its position.
To avoid double counting the grain contacts, the fine search is restricted to a subset of
neighboring cells. In 2D, if the own cell has the index (0, 0), then the neighboring cells
that are searched for are indexed as
( – 1, 0 ), ( – 1, – 1 ), ( 0, – 1 ), ( 1, – 1 )
Similarly in 3D, if the own cell has the index (0, 0, 0), then the neighboring cells that
are searched for are indexed as
( 0, 0, – 1 ), ( – 1, 0, – 1 ), ( – 1, 0, 0 ), ( – 1, 0, 1 ), ( 0, – 1, – 1 ), ( 0, – 1, 0 ), ( 0, – 1, 1 )
( – 1, – 1, – 1 ), ( – 1, – 1, 0 ), ( – 1, – 1, 1 ), ( 1, – 1, – 1 ), ( 1, – 1, 0 ), ( 1, – 1, 1 )
Once a contact pair has been identified, the contact information is updated for both
grains in the pair.
When a Periodic Condition feature is active in and the target cells are the are near the
boundaries of the geometry, the neighboring cell list is modified to ensure that the
contacts are detected with the periodic images of the grains from across the periodic
boundaries.
When releasing grains, it is often necessary to ensure that the grain being considered
for release has an acceptable overlap with preexisting grains. In such situations, every
single neighboring cell is scanned (along with the own cell) for potential contacts.
Once the tree is constructed, the search for a grain–wall contact consists of two stages.
In the first stage, the tree is traversed beginning at the root node to identify the nodes
of the tree associated with the spatial locations in the vicinity of the grain position. This
step restricts the list of potential wall elements that need to be searched for contact.
Initial Conditions
It is possible to release grains at user defined positions using the Release from Grid and
Release from Data File features, or at arbitrary positions in the domains or on the
boundaries using the Release and Inlet features, respectively.
When using the Release from Grid or Release from Data File features, the grains being
released by a node must have the same material properties. These features are best
suited for situations when the initial conditions of the grains to be released are
predetermined.
The Release or Inlet features on the other hand allow for more flexibility both in terms
of the initial positions and the material properties of the grains being released. The
Release feature allows the initial positions to be either random or based on an analytic
expression. The Inlet feature additionally supports a uniform distribution of the initial
positions along the boundaries. Both the features support releasing multiple types of
grains using a single node. The distribution of the grain types can be directly specified,
or in terms of the number fraction, mass fraction, or volume fractions.
When grains are released using any of the four release features, the grains are released
sequentially. If the grains are released using the Release or Inlet features, the species
index of the grain is selected randomly according to the specified distribution. The
grain is released at the release position only if the overlap with any grain or wall element
is within acceptable limits. The contact search algorithm used to check for the overlap
is described in Contact Search Theory. It is possible to override the contact search
when using the Release from Grid or Release from Data File features.
Apart from the initial positions of the grains, other parameters such as the initial
velocities and angular velocities also need to be specified using expressions.
Additionally, if the Compute grain temperature checkbox is enabled, the initial
temperature of the grains also need to be specified.
Boundary Conditions
The boundary conditions supported by the Granular Flow interface are controlled by
the Wall, Inlet, Outlet, and Periodic Condition features.
Many applications benefit from moving walls, and the motion of the walls is also
controlled by the Wall Movement settings of this feature. The boundaries are treated
as rigid walls, and no deformation is allowed. The allowed rigid body movements
include translation, rotation, and a combination of the two.
INLET
The Inlet feature is used to release grains along the boundary such that the grain
centers lie on the boundary at release time. This feature overrides any Wall features that
are located above it in the Model Builder window, and therefore the selected boundaries
are not considered for grain–wall interactions.
OUTLET
The Outlet feature allows the grains to pass through different adjoining domains or to
remove the grains passing through it from the simulation domain. This feature
naturally overrides the Wall features that are located above it in the Model Builder
window, and therefore the selected boundaries are not considered for grain–wall
interactions. This feature can be combined with the Inlet feature to affect the behavior
of the grains passing through the boundaries selected in the Inlet feature.
PERIODIC CONDITION
The Periodic Condition feature is used to apply periodic boundary conditions in one
of the x, y, or z directions. Grains near the periodic boundaries can interact with the
periodic images of the grains and wall elements, and grains passing through the source
boundaries will be replaced by their periodic images at the destination boundary.
This feature naturally overrides the Wall features that are located above it in the Model
Builder window, and therefore the selected boundaries are not considered for grain–
wall interactions. Additionally, this feature also overrides the Outlet feature but can be
used along with the Inlet feature to release grains along the periodic boundaries.
dw
-------- = R
dt
where R is a user-defined source term. When the Integrate option is set to Along grain
trajectory, the following ODE is solved for each grain instead:
dw- = R
-------
ds
where s (SI unit: m) is the direction tangential to the motion of the grain.
The name of the accumulated variable is specified in the Accumulated variable name
field in the Accumulator Settings section of the settings window. The default variable
name, rpd, will be used in the remainder of this section when referring to the
accumulated variable.
ACCUMULATOR TYPE
The options in the Accumulator type list are Density and Count. If Density is selected, the
source term is divided by the area or volume of the mesh element when calculating
each grain’s contribution to the accumulated variable. If Count is selected, no division
by the area or volume of the mesh element occurs.
The equations in the following section are valid for the Density type. The
corresponding value of the accumulated variable for the Count type is
where V is the mesh element volume (in 3D) or area (in 2D).
N
1
rpd = ----
V Ri
i=1
where N is the total number of grains in the element and V is the area (2D) or volume
(3D) of the mesh element. In other words, the contribution of each grain to the
accumulated variable is distributed uniformly over the mesh element the grain is in,
regardless of the grain’s exact position within the element.
If Elements and time is selected from the Accumulate over list, then the sum of the
source terms for the grains in the mesh element is used to define the time derivative of
the accumulated variable, rather than its instantaneous value:
N
d ( rpd ) = --- 1-
------------------
dt V Ri
i=1
Thus, the value of the accumulated variable depends on the time history of the grains
in the mesh element, instead of the instantaneous positions of the grains. As each grain
propagates, it will leave behind a trail based on its contributions to the accumulated
variables in the mesh elements it has traversed. The algorithm for accumulating over
time takes into account the fraction of a time step taken by the solver that the grain
spends in each mesh element, even if it crosses between elements during the time step.
The name of the accumulated variable is specified in the Accumulated variable name
field in the Accumulator Settings section of the settings window. The default variable
name, rpb, will be used in the remainder of this section when referring to the
accumulated variable.
The equations in the following section are valid for the Density type. The
corresponding value of the accumulated variable for the Count type is
where V is the boundary element surface area (in 3D) or length (in 2D).
The accumulated variable in a boundary element gets incremented by the source term
R whenever a grain hits the boundary:
where division by the mesh element area or length occurs because the accumulator is
assumed to be of type Density. Thus the source term evaluated for an incident grain is
uniformly distributed over the boundary element. It is possible for the same grain to
increment the accumulated variable in many different boundary elements or even in
the same element multiple times.
NAME DESCRIPTION
Here, <scope> includes the physics interface name and <name> the Accumulator and
parent feature. For example, the average of the accumulated variable over a boundary
may be called gran.wp1.bacc1.rpb_ave, where gran is the name of the Granular
Flow interface, wp1 is the name of the parent Wall node, bacc1 is the name of the
Accumulator node, and rpb is the accumulated variable name. These variables are all
These global variables are computed by defining a set of nonlocal couplings on the
selection of the parent physics feature, such as the Wall feature to which the
Accumulator is added. The following expressions for the global variables are used.
NAME EXPRESSION
<scope>.<name>_ave <wscope>.ave(<scope>.<name>)
<scope>.<name>_int <wscope>.sum(<scope>.<name>)
<scope>.<name>_max <wscope>.max(<scope>.<name>)
<scope>.<name>_min <wscope>.min(<scope>.<name>)
<scope>.<name>_sum <wscope>.sum(<scope>.<name>/<scope>.meshVol)
Here, <wscope> is the scope of the parent boundary feature; for example, gran.wp1.
The name of the accumulated variable is specified in the Accumulated variable name
field in the Accumulator Settings section of the settings window. The default variable
name, wf, will be used in the remainder of this section when referring to the
accumulated variable. The accumulated variable in a boundary element gets
incremented according to
wf new = wf + F n
where Fn is the normal contact force. For the theory on contact forces, see Contact
Force: Linear Elastic Model, Contact Force: Hertz–MD (Mindlin and Deresiewicz)
Model, and Contact Force: Hertz–MD with Adhesion Model. It is possible for the
same grain to increment the accumulated variable in many different boundary
elements, or even in the same element multiple times.
Unlike the Accumulator (Boundary) feature, the Settings window for the Force
Accumulator feature does not include an Accumulator type list; the Force Accumulator
feature is an Accumulator boundary feature of Count type. To calculate the accumulated
force on a boundary element divided by the boundary element surface area (equivalent
to the Density type of the Accumulator boundary feature), use the expression
<scope>.<name>/meshvol, for example [Link]/meshvol, in the
results processing. See Accumulator Theory: Boundaries to learn more about the
accumulator types Count and Density.
m
ts = 0.2 -------g- (3-31)
kn
where,
If model other than Linear elastic is selected, then the suggested time step is calculated
based on the Rayleigh time step criteria (Ref. 7):
ρ
πr g ------g-
Gg
ts = 0.2 ------------------------------------------------- (3-32)
0.1631ν g + 0.8766
Equation 3-32 is calculated for each grain species, and the smallest value is stored in
the variable <scope>.ts.
The coefficient 0.2 in both Equation 3-31 and Equation 3-32 is used to make the time
step less restrictive so that the simulation, in most cases, does not become unstable due
to large time step issue.
References
1. H.R. Norouzi, R. Zarghami, R. Sotudeh–Gharebagh, and N. Mostoufi, Coupled
CFD-DEM Modeling: Formulation, Implementation and Application to
Multiphase Flows, John Wiley & Sons, 2016.
5. J. Ai, J.F. Chen, J.M. Rotter, and J.Y. Ooi, “Assessment of rolling resistance models
in discrete element simulations,” Powder Technol., vol. 206, pp. 269–282, 2011.
7. S.B. Yeom, E.S. Ha, M.S. Kim, S.H. Jeong, S.J. Hwang, and D.H. Choi,
“Application of the Discrete Element Method for Manufacturing Process Simulation
in the Pharmaceutical Industry,” Pharmaceutics, vol. 11, no. 8, p. 414, 2019.
C common settings 6
contact between grains (node) 31
contact with walls (node) 34
convective heat losses (node) 52
D documentation 7
E emailing COMSOL 9
F force (node) 48
I inlet (node)
particle tracing 43
internet resources 7
M MPH files 9
O outlet (node) 48
R release (node) 39
release from data file (node) 46
release from grid (node) 43
S standard settings 6
INDEX| 83
84 | I N D E X