cohesion model bond
Purpose
Implementing the bond model from Potyondy and Cundall.
Syntax
cohesion bond [other model_type/model_name pairs as described here ] settings keyword values
zero or more keyword/value pairs may be appended after the keyword settings (after all models are specified)
stressBreak values = 'on' or 'off' on = bond will break by exceeding maximum stresses off = no effect due to stress relativeDistanceBreak values = 'on' or 'off' on = bond will break if maximum relative distance (based on particle radii) is exceeded off = other breakage model is used tensionStress values = 'on' or 'off' on = normal, tension force contributes to bond stress off = disabled normal, tension forces compressionStress values = 'on' or 'off' on = normal, compression force contributes to bond stress off = disabled normal, compression forces shearStress values = 'on' or 'off' on = tangential (shear) force contributes to bond stress off = disabled tangential forces normalTorqueStress values = 'on' or 'off' on = normal torque contributes to bond stress off = disabled normal torque shearTorqueStress values = 'on' or 'off' on = tangential (shear) torque contributes to bond stress off = disabled shear torque createBondAlways values = 'on' or 'off' on = bonds are created always for all particles if they are within a user-defined range off = bonds are created at a user-defined time-step for all particles if they are within a user-defined range dampingBond values = 'on' or 'off' on = damping is enabled for bonds off = disabled damping dampingBondSmooth values = 'on' or 'off' on = smooth damping is enabled for bonds off = disabled smooth damping dissipationBond values = 'on' or 'off' on = dissipation is enabled for bonds off = disable dissipation computeDissipatedEnergy values = 'on' or 'off' on = the cohesion model saves the dissipated energy for each contact for the use in fix calculate/dissipated_energy off = no values are saved computeElasticPotential values = 'on' or 'off' on = the bond model saves the current elastic potential for each contact for the use in fix calculate/cohesion_elastic_energy off = no values are saved druckerPrager values = 'on' or 'off' on = a Drucker-Prager type model is used for the tangential limiting stress off = the constant value is used ratioTensionCompression values = 'on' or 'off' on = a different limiting value for the normal tension and compression case is used off = the same value is used useSurfaceSeparation values = 'on' or 'off' on = surface separation is used to determine whether a bond is formed off = centroid distance is used to determine whether a bond is formed (default) useRelativeDistanceForCreation values = 'on' or 'off' on = relative distance is used for bond creation off = absolute distance is used for bond creation (default) zeroizeForcesOnBondCreation values = 'on' or 'off' on = when creating a bond reset all forces of other contact models off = do not reset forces when creating a bond
Associated material properties
Material properties
Material interaction properties
radiusMultiplierBond(
): coefficient which multiplies the minimum particle radius
between bonded particles to determine the radius of the cylindrical beam representing the bond [
]normalBondStiffnessPerUnitArea(
): normal stiffness per unit area of the bond between
the two materials [force/length^3]tangentialBondStiffnessPerUnitArea(
): tangential stiffness per unit area of the bond between
the two materials [force/length^3]dampingNormalForceBond(
): damping factor of the bond normal force [
] (required only if
dampingBond on)dampingTangentialForceBond(
): damping factor of the bond tangential force [
] (required only
if dampingBond on)dampingNormalTorqueBond(
): damping factor of the bond normal torque [
] (required only if
dampingBond on)dampingTangentialTorqueBond(
): damping factor of the bond tangential torque [
] (required
only if dampingBond on)dissipationNormalForceBond(
): dissipation factor of the bond normal force [time]
(required only if dissipationBond on)dissipationTangentialForceBond(
): dissipation factor of the bond tangential
force [time] (required only if dissipationBond on)dissipationNormalTorqueBond(
): dissipation factor of the bond normal torque
[time] (required only if dissipationBond on)dissipationTangentialTorqueBond(
): dissipation factor of the bond tangential
torque [time] (required only if dissipationBond on)maxDistanceBond(
): maximum distance between bonded particles [length] (required only if
relativeDistanceBreak off and stressBreak off)maxRelativeDistanceBond(
): maximum relative distance between bonded particles
[
] (required only if relativeDistanceBreak on)maxSigmaBond(
): maximum normal stress of the bond [pressure] (required only if stressBreak on)maxTauBond(
): maximum tangential stress of the bond [pressure] (required only if stressBreak on)createDistanceBond(
): maximum distance between particles centroids at which bonds can be created [length]
(required only if useSurfaceSeparation off)createDistanceRelativeBond(
): maximum relative distance between particles centroids at which bonds can be created [
]
(required only if useSurfaceSeparation off and useRelativeDistanceForCreation on)createSurfaceSeparationBond(
): maximum distance between particles surfaces at which bonds can be created [length]
(required only if useSurfaceSeparation on)createSurfaceSeparationRelativeBond(
): maximum relative distance between particles surfaces at which bonds can be created [
]
(required only if useSurfaceSeparation on and useRelativeDistanceForCreation on)frictionAngle(
): angle of internal friction [
] (required only if druckerPrager on)ratioTensionCompression(
): determine the maximum stress in normal direction under tension as
[
].
(required only if ratioTensionCompression on)
Global scalars
tsCreateBond(
): time-step number at which the bonds can be created [
]
(required only if createBondAlways off)
Description
This model can be used as part of a particle contact model and a wall contact model
This bond model implements the parallel bond model from Potyondy and Cundall , while facilitating some user customization. The key idea of this model is to create an elastic beam between the centres of two particles (i.e. not between the surfaces). Thus, for non-spherical particles, their shape is largely ignored and any radius that is considered in the following is the volume equivalent one.
The current implementation creates the bond with zero forces and torques between
the bonded particles. Due to relative motion forces and torques will act on the
particles, where the normal force
is calculated explicitly, while the
tangential force
, the normal torque
and the tangential
torque
are calculated incrementally:

where
is the particles’ overlap,
is the relative tangential
velocity at contact,
and
are the relative normal and tangential angular velocity at contact. The
cross-sectional area
, the polar moment of inertia
and
the moment of inertia
are defined as:

where the the beam radius is defined as
, i.e. the product of
the minimum radius of the bonded particles and the user-defined property radiusMultiplierBond.
With the default radiusMultiplierBond = 1 the beam that is located between two particles is a
cylinder with radius equal to the minimum radius of the two particles. The
radiusMultiplierBond allows to shrink (or grow) the beam that represents the
bond between these two particles. Clearly, a thicker beam will make the system
more stiff, while a thinner beam will decrease the stiffness (for constant
and
).
The stress flags (tensionStress, compressionStress, shearStress, normalTorqueStress, and
shearTorqueStress) allow to disable the calculation of the corresponding force/torque components.
Consequently, the disabled component does not contribute to the normal (
) or
tangential stress (
) of the bond, which are used for the stress-based breakage model
(see below).
Unless other breakage models are enabled, the default one depends on the relative maximum bond
distance
, in the sense that the bond breaks if
, where
is the distance between the particles’ centroids.
If relativeDistanceBreak on, the bond breaks when:

where
and
are the particles’ radii.
If stressBreak on, the bond breaks when the maximum bond normal stress
or the maximum bond tangential stress
are reached, namely

Note that “normal” and “tangential” always refer to the coordinate system local to the bond. Thus, these forces and torques need to be rotated along with the bonded pair of particles to compute the forces and torques in the global frame of reference.
Warning
Aspherix® will calculate a maximum bond length / contact distance from values for maxDistanceBond or the max. sigma/tau values which is used for defining the cut-off for the neighbor list build. For unrealistically high values, this might lead to a neighbor list overflow.
In order to stabilize the system a kind of energy dissipation is required. By default the model uses the approach as suggested by Potyondy and Cundall. Thus for each degree of freedom a damping force/torque is added that is defined, in case of the normal force, as

where
provides the direction of motion (normal or tangential relative (angular) velocity).
The damping coefficient, here
, can be set separately for each degree of freedom by
the user-defined properties dampingNormalForceBond, dampingTangentialForceBond,
dampingNormalTorqueBond, and dampingTangentialTorqueBond. The model can be disabled by
setting dampingBond off.
As the damping model above is sensitive to the sign of the normal velocity this model can cause instabilities when a system under loading is considered. In this case the dampingBondSmooth option can be enabled. This will modify the above equation to read

which corresponds to a linear switching for velocities below a velocity threshold that depends on the force intensity.
Additionally, a temporal dissipation model for forces and torques can be enabled by
setting dissipationBond on. This increases numerical stability of the method. The
dissipation is controlled by a user-defined property for each force/torque
(dissipationNormalForceBond, dissipationTangentialForceBond,
dissipationNormalTorqueBond, dissipationTangentialTorqueBond). These values have
the unit of time (e.g. seconds for SI) and they define the relaxation time (63% of a
response answer). In order to disable an individual dissipation term set the corresponding
coefficient dissipation*Bond to a high value (e.g.
). As an example,
the shear force is relaxed as follows:

By default (i.e., createBondAlways on) bonds can be created at every time-step when two particles are closer than a certain threshold. If createBondAlways off, the bonds are only created at the timestep defined in tsCreateBond. If the zeroizeForcesOnBondCreation setting is activated all forces that a bond experiences in this time step are reset to zero. This can be particularly useful when creating bonds for particles that have significant overlap that have just been inserted.
There are two options for setting the bond creation threshold:
useSurfaceSeparation and useRelativeDistanceForCreation. The former controls
whether the centroid distance
or the surface separation
(with
,
the particle radii) is used for bond
creation. The latter sets whether the absolute distance is used, or the distance
is scaled to the sum of the particle radii. The two options are independent of
each other, resulting in four possible combinations:
useSurfaceSeparation off, useRelativeDistanceForCreation off: bond is created when

where
is the value of createDistanceBond.
useSurfaceSeparation off, useRelativeDistanceForCreation on: bond is created when

where
is the value of createDistanceRelativeBond.
useSurfaceSeparation on, useRelativeDistanceForCreation off: bond is created when

where
is the value of createSurfaceSeparationBond.
useSurfaceSeparation on, useRelativeDistanceForCreation on: bond is created when

where
is the value of createSurfaceSeparationRelativeBond.
If druckerPrager on a Drucker-Prager model is used to determine a modified limiting
tangential stress
. Its value is computed as:

where
, in this case, takes the role of the cohesion strength.
If ratioTensionCompression on, the tension/compression ratio
is used
to determine the maximum stress in normal direction under tension as
.
This can be used to simulate materials which exhibit different compressive and tensile
strengths.
Note
For superquadric particles all calculations based on particle radii, use the radius of the volume-equivalent spheres.
Restrictions
None.
Coarse-graining information:
Using coarsegraining in combination with this command might lead to different dynamics or system state and thus to inconsistencies.
Default
stressBreak = off, temperatureBreak = off, tensionStress = on, compressionStress = on, shearStress = on, normalTorqueStress = on, shearTorqueStress = on, createBondAlways = off, dampingBond = on, dampingBondSmooth = off, dissipationBond = off, computeDissipatedEnergy = off, computeElasticPotential = off, druckerPrager = off, ratioTensionCompression = off, useSurfaceSeparation = off, useRelativeDistanceForCreation = off
Literature
[1} Potyondy, D. O., & Cundall, P. A. (2004). A bonded-particle model for rock. International journal of rock mechanics and mining sciences, 41(8), 1329-1364.