Impact Dynamics Submit
impact_dynamics_submitSimulate a part drop onto a rigid floor to compute transient impact forces, stresses, and failure checks. Returns a job ID to poll for results.
Instructions
Transient DROP / IMPACT dynamics — the solve drop_impact escalates to. Meshes
body, flies it at velocity_m_s (or the free-fall speed of drop_height_mm —
exactly one) along direction into a fixed rigid floor through penalty contact,
and integrates the motion with CalculiX *DYNAMIC. Async: returns a job — poll
job_result. Degrades to {ok:false, reason, install} when ccx is absent.
direction is the way the part TRAVELS: '-z' (default), '+x', … or any 3-vector —
[-1,-1,-1] is a corner drop (the floor turns, the part is not re-meshed).
Material from material or explicit youngs_mpa/poisson/density_kg_m3
(required, no defaults — the answer scales with √(E·ρ)). yield_mpa arms the
stress criterion; plastic=True (+ tangent_mpa, bilinear) lets it yield
instead. deceleration_limit_g arms the fragility criterion.
method: 'implicit' (default; HHT-α, ccx steps adaptively — right for ms-scale
drops) | 'explicit' (central difference at the stable step — for stress-wave
events ≲ 100 µs; first-order tets). time_step_s on an implicit run switches to a
FIXED step: several times faster where contact comes on smoothly, but ccx stops
if an increment diverges (a flat face landing all at once does). duration_s
defaults to free flight + 10 wave round trips along the drop — enough for a stiff
body; a compliant one needs more, and the gate says so. samples is the single
output cadence ccx allows (force history AND stress frames; default sized to the
mesh). contact: 'auto' (default) | 'face' | 'node' — measured: ccx's face-to-face
penalty never engages a corner strike (the part falls through) and its
node-to-face one locks up on a broad flat landing, so 'auto' uses face contact
down to a 45° edge and node contact for anything sharper. engagement_lag_mm
reports how far the strike point sank before the contact pushed back.
Validated against the exact St-Venant bar (bar_impact): face force ρ·c₀·v₀·A,
contact duration 2L/c₀, restitution 1 and the plastic-wave cap all within ~1–3 %.
A real part is banded (~20 %): peak force depends on the penalty stiffness and
mesh, a stress peak AT the strike point is mesh-dependent, and a sharp wave front
rings ~20 % high. No friction, failure or erosion.
Returns the degradation dict, or {job_id, status, cache_hit}; poll job_result for {ok, returncode, solver, case_dir, nodes, tets, method, direction, velocity_m_s, drop_height_mm, duration_s, time_step_s, mass_g, strike_node, contact_faces, contact, strike_alignment, plastic, bar_stress_mpa, peak_force_n, peak_force_median3_n, peak_force_time_s, peak_g, impulse_n_s, contact_start_s, contact_duration_s, separated, arrested, rebound_velocity_m_s, restitution, energy_end_ratio, energy_min_ratio, mass_check, samples, contact_samples, engagement_lag_mm, peak_von_mises_mpa, peak_stress_node, peak_stress_time_s, peak_stress_location_mm, force_history, gate} where gate is {pass, score, fidelity:"solve", band_pct, checks, utilisation, warnings} — a run that ends before the fall is arrested, or whose energy grows, FAILS.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| gap_mm | No | ||
| method | No | implicit | |
| contact | No | auto | |
| gravity | No | ||
| plastic | No | ||
| poisson | No | ||
| samples | No | ||
| material | No | ||
| direction | No | -z | |
| yield_mpa | No | ||
| duration_s | No | ||
| youngs_mpa | No | ||
| tangent_mpa | No | ||
| time_step_s | No | ||
| velocity_m_s | No | ||
| density_kg_m3 | No | ||
| char_length_mm | No | ||
| drop_height_mm | No | ||
| max_time_step_s | No | ||
| deceleration_limit_g | No | ||
| contact_stiffness_mpa_mm | No |