implicitGapContactFvPatchVectorField
Description
The implicitGapContact boundary condition is an extension of the standard
gapContact BC, introducing an implicit treatment for better stability
and convergence. This BC was originally developed to solve complex multi-body
contact problems, such as pellet-to-pellet interaction in nuclear fuel rods.
Note
A gapGasModel is required for this boundary condition to function properly.
Warning
This boundary condition assumes that the same boundary condition is applied
to a pair of regionCoupledOFFBEAT patches, coupled using the AMI (Arbitrary
Mesh Interface) mapping algorithm. It is strongly suggested to assign the
owner role to the smaller surface, e.g., the fuelOuter surface in most cases.
The normal traction is treated implicitly. When no penetration is detected,
the boundary condition behaves as a standard tractionDisplacement and applies
the gap pressure. If penetration occurs, a contact pressure proportional to
the penetration depth is applied. The penalty factor is calculated similarly
to the gapContact BC, but the resulting traction vector is partly treated
implicitly.
The tangential traction is treated semi-implicitly up to the maximum friction
limit defined by the friction coefficient times the normal pressure. Also the
friction penalty factor is calculated similarly to the gapContact BC.
The resulting tangent traction vector is partly treated implicitly (scaled by the
frictionToStick ratio).
Augmented Lagrangian Method: To minimize penetration further, an augmented Lagrangian-like approach is available. This method gradually increases the penalty factor over iterations until the penetration falls below a user-defined tolerance. This approach allows smoother convergence, but smaller initial penalty values should be used.
Options
The implicitGapContact fvPatchField can be specified in the boundaryField
subdictionary of the displacement field.
Parameters in the patch subdictionary for implicitGapContact:
| patchType | Specifies the patch field type. Must be set to regionCoupledOFFBEAT. |
| penaltyFactor | Penalty scale factor for normal pressure. Default: 1. Typical values: 0.01 to 1. |
| penaltyFactorFriction | Penalty scale factor for frictional forces. Default: 1. Typical values: 0.01 to 1. |
| frictionCoefficient | Coefficient of friction between surfaces. Default: 0. |
| method | Algorithm for penalty factor adjustment. Either implicitPenalty (default penalty-based approach) or augmentedLagrangian. |
| relativePenetrationTolerance | Penetration threshold for the augmented Lagrangian method, defined as a fraction of the cell depth. Set to SMALL by default. Te maximum between relative and absolute tolerance is used. |
| absolutePenetrationTolerance | Penetration threshold for the augmented Lagrangian method, defined as an absolute value in m. Set to SMALL by default. Te maximum between relative and absolute tolerance is used. |
| relax | Relaxation factor for implicit contributions. Default: 1. Typical values: 0.01 to 1. |
| glued | Treats patches as glued. Default: off. |
| value | Initial displacement field value. |
Usage
To use the implicitGapContact boundary condition, define it in the
patch subdictionary inside the boundaryField subdictionary.
Example configuration:
"fuelOuter|claddingInner"
{
type implicitGapContact;
patchType regionCoupledOFFBEAT;
glued off;
// Alternative method
// method augmentedLagrangian;
// relativePenetrationTolerance 0.001;
// absolutePenetrationTolerance 1e-7;
penaltyFactor 0.1;
penaltyFactorFriction 0.001;
penaltyFactorDashpot 0.0;
frictionCoefficient 0.1;
relax 0.1;
value $internalField;
}