Skip to content

tractionDisplacementFvPatchVectorField

Description

The tractionDisplacement boundary condition is used to apply a fixed or time- dependent traction vector. The total traction vector is composed of a user-defined traction (provided as a vector) and a pressure, assumed positive when acting against the surface normal vector.

Optionally, a plane strain approximation can be activated: it imposes the same uniform normal strain on the patch. It can be useful when simulating 2D discrete rods with coarse axial division.

Finally, a spring-dashpot system can be activated: it simulates the presence of a spring and dashpot attached to the patch, and it can help convergence for bodies that are not well constrained.

The spring-dahpot system produce a force

\[ \begin{aligned} \tau_{sd} \cdot A_f = -K_s \cdot (D_f) -K_d \cdot (D_f - D_{f,prev}) \end{aligned} \]

where:

  • \(\tau_{sd}\) is the spring-dashpot force on a patch face,
  • \(A_f\) is the face area,
  • \(K_s\) is the spring modulus,
  • \(K_d\) is the dashpot modulus,
  • \(D_f\) is the current face displacement vector, and
  • \(D_{f, prev}\) is the face displacement vector at the previous iteration.

From this expression, it follows that the dashpot force vanishes at convergence, meaning that the dashpot acts only during the iterative process to stabilize and aid in achieving a solution. The spring force, however, persists and contributes to the equilibrium state.


Options

The tractionDisplacement fvPatchField can be selected in the patch subdictionary inside the boundaryField subdictionary of the displacement field.

Parameters in the patch subdictionary for tractionDisplacement:

tractionList A time-dependent traction table. Each entry consists of a time step and a corresponding traction vector value in Pa.
traction Fixed traction vector in Pa. Used only if tractionList is absent.
pressureList A time-dependent pressure table. Each entry consists of a time step and a corresponding pressure value in Pa.
pressure Fixed pressure in Pa. Used only if pressureList is absent.
planeStrain Activates the plane strain approximation for the normal stress at the boundary. When enabled, the normal component of the strain (e.g. epislonZZ) is assumed constant at the boundary. Useful for long axisymmetric rods. It cannot be used in combination with flatSurface keyword. Default: false.
flatSurface Activates the flat surface approximation for the normal stress at the boundary. When enabled, the normal component of the displacement (e.g. Dz) is assumed constant at the boundary, i.e. the patch is forced to remain flat. Useful for instance for the simulation of a half pellet fragment. It cannot be used in combination with planeStrain keyword. Default: false.
fixedSpring Activates a fixed spring-dashpot system for additional stability. Default: false.
fixedSpringModulus Spring modulus in N/m. Required when fixedSpring is set to true.
dashpotModulus Dashpot modulus in N/m. Required when fixedSpring is set to true.
relax Relaxation factor for gradient updates. Default: 1.0.
value Initial displacement value (not stress).


Usage

To apply the tractionDisplacement boundary condition to a given patch, the following examples can be used as templates:

Example 1: Time-varying traction and pressure

cladOuter
{
    type            tractionDisplacement;

    tractionList
    {
        type    table;

        values
        (
            (0.0 (0 0 0))
            (100.0 (-1000 0 0))
        );

        outOfBounds         clamp;     // Optional out-of-bounds handling
        interpolationScheme linear;    // Optional interpolation method
    }

    pressureList
    {
        type    table;

        values
        (
            (0.0    1e5)
            (100.0  1e7)
        );

        outOfBounds         clamp;
        interpolationScheme linear;
    }

    planeStrain     false;  // Optional: Plane strain approximation
    flatSurface     false;  // Optional: Flat surface approximation
    relax           1.0;    // Relaxation factor
    value           $internalField;
}

Example 2: Constant pressure and zero traction

cladOuter
{
    type            tractionDisplacement;

    traction        uniform (0 0 0);  // Fixed traction
    pressure        uniform 15.5e6;  // Fixed pressure

    planeStrain     false;  // Optional: Plane strain approximation
    flatSurface     false;  // Optional: Flat surface approximation

    relax           1.0;
    value           $internalField;
}

Example 3: Adding a fixed spring-dashpot system

cladOuter
{
    type            tractionDisplacement;

    traction        uniform (0 0 0);  // Fixed traction
    pressure        uniform 15.5e6;  // Fixed pressure

    planeStrain     false;  // Optional: Plane strain approximation
    flatSurface     false;  // Optional: Flat surface approximation

    relax           1.0;

    fixedSpring     on;              // Activate spring-dashpot system
    fixedSpringModulus 1e2;          // Spring modulus in N/m
    dashpotModulus     1e4;          // Dashpot modulus in N/m

    value           $internalField;
}
Note

You can mix time-dependent and fixed values for traction and pressure in the boundary condition definition.

Warning

For incremental simulations (DD instead of D), the required traction and pressure values in the dictionary are the respective total quantities (not incremental), even for time-dependent cases.