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
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.