forked from 1b-agent/fieldcraft-upstream
explicit: opt-in mass scaling to a target increment, the added mass reported
An explicit step may ask for mass scaling to a target time increment (on a set, or the whole model): elements whose stable increment is below it get the density that reaches it, with their lumped masses, frequency bound and hourglass scales; adiabatic heating keeps the physical density. The run reports the elements scaled, the added mass in all and per section with its fraction, a warning, and the added mass's kinetic energy in the energy account. Verified on a uniform bar scaled to twice its increment (added mass 3×, increment doubled, a quarter of the kinetic energy left to the physical mass). ROADMAP and parity note the hyperelastic materials and mass scaling. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01UhhZMBTviDQxZvwnyP89fo
This commit is contained in:
1 parent
ce8e23d05b
commit
bc75fd08d1
14 files changed
+249
-14
No files matched your search
+12
@@ -468,3 +468,15 @@ geometry and take no thermal strain yet (both refused by name). Verified by unia
|
||||
λ = 1.5 of all three laws on hex8 and tet4 against the material point (`crates/explicit/tests/hyperelastic.rs`)
|
||||
and by `tests/oracle/explicit-neo-hookean-implicit`, a quasi-static explicit pull against the
|
||||
implicit nonlinear solver.
|
||||
|
||||
## Mass scaling (explicit dynamics)
|
||||
|
||||
Opt-in per explicit step (`mass_scaling: {target_increment, set}`): every solid element (of the
|
||||
set, or of the model) whose stable increment times the step's scale is below the target has its
|
||||
density raised by (target / increment)², which brings its increment to the target (its lumped
|
||||
masses, frequency bound and hourglass and bulk-viscosity scales follow; adiabatic heating keeps
|
||||
the physical density). The run reports the elements scaled, the added mass in all and per
|
||||
section, its fraction of the model's mass, a warning, and the kinetic energy of the added mass
|
||||
(`energy.added_kinetic`, part of the kinetic energy, so the balance holds). Verified on a uniform
|
||||
bar scaled to twice its increment: added mass three times the bar's, the increment doubled, the
|
||||
added mass's share of the kinetic energy three quarters (`crates/explicit/tests/one_d.rs`).
|
||||
Reference in new issue
Block a user