forked from 1b-agent/fieldcraft-upstream
solver, model: arc-length control with critical points from the inertia
NonlinearStatic.arc_length {constraint, max_load_factor, displacement_limit}: Riks–Crisfield
arc-length increments (cylindrical or spherical arc, tangent predictor signed by the angle
criterion, the constraint's quadratic root chosen by the angle with the last iterate), arcs
grown, shrunk and cut back as increments are. The converged state's tangent is factored for the
next predictor (LDLᵀ when indefinite); its negative eigenvalues are recorded per increment and
changes in their count are reported as limit or bifurcation points. Ends at the maximum load
factor, a displacement limit or the increment cap. Abaqus *STATIC, RIKS; LS-DYNA refuses it by
name; forms gain the arc-length group. A shallow arch of hex20 snaps through on the closed-form
path (1.9 %), both limit points found, inertia 0 → 1 → 0 between them.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01UhhZMBTviDQxZvwnyP89fo
This commit is contained in:
1 parent
72696614c2
commit
a953dc6216
11 files changed
+728
-85
No files matched your search
+20
@@ -313,6 +313,26 @@ displacement (at ν = 0.4999 every increment used to be cut back to the cap). On
|
||||
tangent of a model that can move freely is an error. The tangent predictor of path-dependent
|
||||
materials keeps Cholesky and is skipped when the tangent is indefinite.
|
||||
|
||||
**Arc length.** `"arc_length": {"constraint": "cylindrical"|"spherical", "max_load_factor": 1,
|
||||
"displacement_limit": {"node", "direction", "displacement"}}` makes the load factor an unknown
|
||||
(Riks 1979, Crisfield 1981): each increment keeps ‖Δq‖² + w Δλ² = Δl² (w = 0 cylindrical, w the
|
||||
first tangent displacement's ‖q_f‖² for the spherical arc), predicts along the tangent with the
|
||||
sign of its angle to the last increment (Feng, Perić & Owen 1996), and corrects with
|
||||
δq = δq_r + δλ δq_g, δλ the root of the constraint's quadratic whose increment turns least
|
||||
(Crisfield's angle criterion). The first increment's load factor change is `initial_increment`,
|
||||
which sets the arc; arcs grow, shrink and cut back as increments do, within the minimum and
|
||||
maximum increments' arcs. Prescribed motions scale with λ (∂r/∂λ includes −K T_p u_p) and
|
||||
follower pressures with their current faces. The tangent at every converged state is factored
|
||||
for the next predictor (LDLᵀ when indefinite); its negative eigenvalues are recorded per
|
||||
increment (`negative_pivots`), and where their count changes the step reports a **critical
|
||||
point**: a limit point where the load factor turns, a bifurcation otherwise
|
||||
(`History::critical_points`, in the `solve.nonlinear` summary). The step ends at the maximum load
|
||||
factor, at the displacement limit, or at its increment cap (a warning). Refused: a load path,
|
||||
temperatures. Decks: Abaqus `*STATIC, RIKS` (cylindrical only); LS-DYNA refuses arc-length steps
|
||||
by name. Verified by the snap-through of a shallow sinusoidal arch of hex20 solids
|
||||
(`crates/solver/tests/arc_length.rs`, `tests/oracle/arc-shallow-arch`): the path within 1.9 % of
|
||||
the one-mode closed form, both limit points, and the inertia 0 → 1 → 0 exactly between them.
|
||||
|
||||
**Results**: the final displacements and reactions, the **Cauchy stress** and the
|
||||
**logarithmic strain** (ln V, engineering shears; the small strain without nonlinear geometry) at
|
||||
the integration points and averaged at the nodes, the **equivalent plastic strain** at the
|
||||
|
||||
@@ -1244,6 +1244,14 @@ update are written from (cited again in the module docs):
|
||||
indefinite sparse symmetric linear equations*, ACM TOMS 9(3):302–325, 1983; J. W. H. Liu, *The
|
||||
multifrontal method for sparse matrix solution: theory and practice*, SIAM Review
|
||||
34(1):82–109, 1992.
|
||||
- Arc-length: E. Riks, *An incremental approach to the solution of snapping and buckling
|
||||
problems*, Int. J. Solids Struct. 15(7):529–551, 1979; M. A. Crisfield, *A fast
|
||||
incremental/iterative solution procedure that handles "snap-through"*, Computers & Structures
|
||||
13:55–62, 1981; E. Ramm, *Strategies for tracing the nonlinear response near limit points*, in
|
||||
*Nonlinear Finite Element Analysis in Structural Mechanics*, Springer 1981, 63–89; the
|
||||
predictor's sign, M. Feng, D. Perić, D. R. J. Owen, Computers & Structures 58(3):479–485, 1996.
|
||||
Snap-through of a shallow sinusoidal arch: Y. C. Fung, A. Kaplan, NACA TN 2840, 1952;
|
||||
Timoshenko & Gere 1961, §7.6.
|
||||
- Iterative refinement: N. J. Higham, *Accuracy and Stability of Numerical Algorithms*, 2nd ed.,
|
||||
SIAM 2002, §12.2.
|
||||
- Linear buckling and the initial-stress stiffness: K.-J. Bathe, *Finite Element Procedures*,
|
||||
|
||||
Reference in new issue
Block a user