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 (\alpha_b): coefficient which multiplies the minimum particle radius between bonded particles to determine the radius of the cylindrical beam representing the bond [\cdot]

  • normalBondStiffnessPerUnitArea (k_n): normal stiffness per unit area of the bond between the two materials [force/length^3]

  • tangentialBondStiffnessPerUnitArea (k_t): tangential stiffness per unit area of the bond between the two materials [force/length^3]

  • dampingNormalForceBond (\xi_n): damping factor of the bond normal force [\cdot] (required only if dampingBond on)

  • dampingTangentialForceBond (\xi_t): damping factor of the bond tangential force [\cdot] (required only if dampingBond on)

  • dampingNormalTorqueBond (\xi_{nt}): damping factor of the bond normal torque [\cdot] (required only if dampingBond on)

  • dampingTangentialTorqueBond (\xi_{tt}): damping factor of the bond tangential torque [\cdot] (required only if dampingBond on)

  • dissipationNormalForceBond (\epsilon_n): dissipation factor of the bond normal force [time] (required only if dissipationBond on)

  • dissipationTangentialForceBond (\epsilon_t): dissipation factor of the bond tangential force [time] (required only if dissipationBond on)

  • dissipationNormalTorqueBond (\epsilon_{nt}): dissipation factor of the bond normal torque [time] (required only if dissipationBond on)

  • dissipationTangentialTorqueBond (\epsilon_{tt}): dissipation factor of the bond tangential torque [time] (required only if dissipationBond on)

  • maxDistanceBond (d_{max}): maximum distance between bonded particles [length] (required only if relativeDistanceBreak off and stressBreak off)

  • maxRelativeDistanceBond (d_{max}^{rel}): maximum relative distance between bonded particles [\cdot] (required only if relativeDistanceBreak on)

  • maxSigmaBond (\sigma_{max}): maximum normal stress of the bond [pressure] (required only if stressBreak on)

  • maxTauBond (\tau_{max}): maximum tangential stress of the bond [pressure] (required only if stressBreak on)

  • createDistanceBond (d_c): maximum distance between particles centroids at which bonds can be created [length] (required only if useSurfaceSeparation off)

  • createDistanceRelativeBond (d_c^{rel}): maximum relative distance between particles centroids at which bonds can be created [\cdot] (required only if useSurfaceSeparation off and useRelativeDistanceForCreation on)

  • createSurfaceSeparationBond (d_s): maximum distance between particles surfaces at which bonds can be created [length] (required only if useSurfaceSeparation on)

  • createSurfaceSeparationRelativeBond (d_s^{rel}): maximum relative distance between particles surfaces at which bonds can be created [\cdot] (required only if useSurfaceSeparation on and useRelativeDistanceForCreation on)

  • frictionAngle (\phi): angle of internal friction [rad] (required only if druckerPrager on)

  • ratioTensionCompression (r_{tc}): determine the maximum stress in normal direction under tension as r_{tc} \sigma_{max} [\cdot]. (required only if ratioTensionCompression on)

Global scalars

  • tsCreateBond (t_s): time-step number at which the bonds can be created [\cdot] (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 F_n is calculated explicitly, while the tangential force F_t, the normal torque T_n and the tangential torque T_t are calculated incrementally:

F_n = k_n A (d_0 - d)

F_t += k_t A v_t dt

T_n += k_t J \omega_n dt

T_t += k_n I \omega_t dt

where d_0 - d is the particles’ overlap, v_t is the relative tangential velocity at contact, \omega_n and \omega_t are the relative normal and tangential angular velocity at contact. The cross-sectional area A, the polar moment of inertia J and the moment of inertia I are defined as:

A = \pi r_b^2

J = \frac{1}{2} \pi r_b^4

I = \frac{1}{4} \pi r_b^4

where the the beam radius is defined as r_b = r_{min} \alpha_b, 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 k_n and k_t).

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 (\sigma_b) or tangential stress (\tau_b) 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 d_{max}, in the sense that the bond breaks if d > d_{max}, where d is the distance between the particles’ centroids.

If relativeDistanceBreak on, the bond breaks when:

\frac{d}{r_i + r_j} > d_{max}^{rel}

where r_i and r_j are the particles’ radii.

If stressBreak on, the bond breaks when the maximum bond normal stress \sigma_{max} or the maximum bond tangential stress \tau_{max} are reached, namely

\sigma_b = \frac{\left | F_n \right | }{A} + \left | T_t \right |  \frac{r_b}{I} = \sigma_{max}

\tau_b = \frac{ \left | F_t \right | }{A} + \left | T_n \right | \frac{r_b}{J} = \tau_{max}

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

F_d = - \xi_n \left | F_n \right | sign(v_n)

where sign(v) provides the direction of motion (normal or tangential relative (angular) velocity). The damping coefficient, here \xi_n, 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

F_d = - \xi_n \left | F_n \right | \lambda

\lambda = \min{(1, \max{(-1, v_n/\max{(v_{min}, dv)})})}

dv = \left | F_n dt \right |

v_{min} = 0.001 \frac{r}{dt}

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. 10^{20}). As an example, the shear force is relaxed as follows:

\tilde{F}_t = F_t ( 1 - \min{(dt/\epsilon_t, 1)})

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 d or the surface separation d -
(r_i+r_j) (with r_i, r_j 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

r_i+r_j < d_c

where d_c is the value of createDistanceBond.

useSurfaceSeparation off, useRelativeDistanceForCreation on: bond is created when

\frac{d}{r_i+r_j} < d_c^{rel}

where d_c^{rel} is the value of createDistanceRelativeBond.

useSurfaceSeparation on, useRelativeDistanceForCreation off: bond is created when

d - (r_i+r_j) < d_s

where d_s is the value of createSurfaceSeparationBond.

useSurfaceSeparation on, useRelativeDistanceForCreation on: bond is created when

\frac{d - (r_i+r_j)}{r_i+r_j} < d_s^{rel}

where d_s^{rel} is the value of createSurfaceSeparationRelativeBond.

If druckerPrager on a Drucker-Prager model is used to determine a modified limiting tangential stress \tau_{max,dp}. Its value is computed as:

\tau_{max,dp} = \tau_{max} + \sigma_b \tan(\theta)

where \tau_{max}, in this case, takes the role of the cohesion strength.

If ratioTensionCompression on, the tension/compression ratio r_{tc} is used to determine the maximum stress in normal direction under tension as r_{tc} \sigma_{max}. 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.