Skip to main content

Boundary Conditions & Non-Linearity

Piping systems rarely behave linearly. Pipes lift off resting supports, close gaps on limit stops, and drag across steel beams, generating immense friction.

To solve these non-linearities, the Pipe Stress FEA Engine utilizes an iterative Penalty Method coupled with a Coulomb friction convergence algorithm. This allows the solver to handle dynamic changing states without modifying the size of the global stiffness matrix.

2.1 The Penalty Method

When a node is assigned a Directional Support (e.g., a resting Y-support or an axial limit stop), the engine does not simply delete that Degree of Freedom (DOF) from the matrix. Instead, it injects an artificial "Penalty Stiffness" (kp=1012 N/mk_p = 10^{12} \text{ N/m}) into that specific DOF.

For a support defined in a local coordinate system, the local 6×66 \times 6 penalty matrix [Kp][K_p] is rotated and added to the global stiffness matrix [K][K]:

[Kmod]=[K]+[T]T[Kp][T][K_{mod}] = [K] + [T]^T [K_p] [T]

This method ensures the matrix remains numerically stable while effectively locking the pipe in that specific direction.

2.2 Gap Closures & Limit Stops

Many piping supports allow free movement until a physical gap is closed (e.g., a +X+X limit stop with a 25mm gap). The engine solves this using an iterative status-checking loop.

  1. Initial Assumption: All gapped supports are assumed to be open (inactive). The system is solved.
  2. Displacement Check: The solver checks the local displacement (Δlocal\Delta_{local}) of the node.
  3. Activation: If the pipe has moved further than the allowable gap (Δlocal>gap\Delta_{local} > \text{gap}), the support is flagged as Active.
  4. Penalty Force Injection: On the next iteration, the penalty stiffness is applied, and a corresponding penalty force (FpF_p) is injected to "push" the pipe back to the gap boundary:

Fp=kp×gapF_p = k_p \times \text{gap}

The solver repeats this process, releasing supports if the reaction forces reverse, until the system finds a stable equilibrium where no gaps are being violated.

2.3 Coulomb Friction

Friction opposes thermal expansion and drastically alters the stress profile of a pipeline. The engine models classical Coulomb friction (μ\mu) on all resting and directional supports.

Once the solver determines which supports are active (bearing weight or hitting a stop), it extracts the reaction forces to calculate the Normal Force (NN).

N=Ractive_12+Ractive_22+...N = \sqrt{R_{active\_1}^2 + R_{active\_2}^2 + ...}

The maximum available friction force is then:

Fmax=μNF_{max} = \mu N

The Drag Vector

If the pipe is moving in its free unrestricted DOFs, the engine calculates a drag vector that directly opposes the direction of movement. Let u\vec{u} be the local displacement vector of the free axes:

Fdrag=Fmax(uu)\vec{F}_{drag} = - F_{max} \left( \frac{\vec{u}}{|\vec{u}|} \right)

This drag vector is rotated back to the global coordinate system and applied as an external load opposing the pipe's expansion.

Convergence Stability

Because friction forces change the displacements, which in turn change the normal forces, friction solvers are highly prone to infinite oscillation. To guarantee convergence, the engine employs a 50% relaxation algorithm, blending the friction forces of the previous iteration with the newly calculated forces until the delta drops below 1.0 N1.0 \text{ N}.

2.4 Dynamic Snubbers

Hydraulic and mechanical snubbers act as non-linear velocity-dependent restraints.

During Sustained (Weight) and Expansion (Thermal) load cases, the pipe moves slowly. The engine treats snubbers as Free nodes, allowing the pipe to pass through them without resistance.

However, during Occasional Load Cases (Wind, Seismic) or Modal Analysis, the velocity of the pipe is assumed to be instantaneous. The engine performs a dedicated "Locked Linear" solver pass, where all snubbers are injected with the penalty stiffness (kpk_p) along their active axis, forcing them to act as rigid anchors against the dynamic event.