forked from 1b-agent/fieldcraft-upstream
docs: solver literature survey; explicit, EOS, lattice Boltzmann and FSI milestones (#17)
Owner decisions 2026-10-13: own solvers beyond linear (explicit dynamics with equations of state, lattice Boltzmann CFD, fluid-structure interaction; blast fluids after), flow first; published reference values allowed as a tagged benchmark suite beside the analytic gate; GPU backends deterministic per device and checked against the bit-exact CPU path; layered crates (fem kernels, solvers, fsi). ADR 0001 lists the GPL-family solver codes (Palabos, OpenFOAM, ...) and the readable references. Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm Co-authored-by: jyviko <2501648+jyviko@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
4 files changed
+982
-8
No files matched your search
@@ -49,8 +49,11 @@ People trust ModelCraft with their models; a crash loses their work. **This outr
|
||||
produced with them. Deck formats come from the vendors' publicly available reference manuals;
|
||||
we write our own descriptions and our own examples, never copy manual text or example decks.
|
||||
- **Expected values are analytic.** Reference tests compare with closed-form solutions (patch
|
||||
tests, beams, plates, Lamé cylinders, Kirsch plates, natural frequencies) and with mesh
|
||||
invariants (positive Jacobians, conserved volume, watertight boundaries).
|
||||
tests, beams, plates, Lamé cylinders, Kirsch plates, natural frequencies, wave and shock
|
||||
solutions) and with mesh invariants (positive Jacobians, conserved volume, watertight
|
||||
boundaries). A separate **benchmark** suite may compare with reference values published in
|
||||
papers (lid-driven cavity, Schäfer–Turek, Turek–Hron, Taylor bar), each tagged with its source;
|
||||
the analytic suite is the gate. Never values produced with a commercial product.
|
||||
- **Algorithms come from papers.** Meshing and solver methods are implemented from published
|
||||
papers and theses, cited in the module docs and in `docs/meshing/literature.md`.
|
||||
- **Never read, copy or link GPL/LGPL/AGPL code**: TetGen, CGAL, Gmsh, Netgen, CalculiX,
|
||||
@@ -72,11 +75,14 @@ People trust ModelCraft with their models; a crash loses their work. **This outr
|
||||
JSON `run`) + tests. The UI, scripts, CLI and control channel all reach the same commands.
|
||||
- **Programmatic calls never open dialogs.**
|
||||
- **Layering** is enforced by `cargo xtask layers` (`docs/architecture.md`): L0 `model` → L1
|
||||
`geometry`, `mesh`, `solver`, `decks`, `render` → L2 `doc` → L3 `io` → L4 `engine` → L5
|
||||
`ui-egui`, `mcp` → apps. Nothing below L5 depends on egui/eframe/winit/wgpu/rfd. **Only
|
||||
`geometry`, `mesh`, `fem`, `decks`, `render` → L2 solvers (`solver`, `explicit`, `lbm`) → L3
|
||||
`fsi` → then `doc`, `io`, `engine`, UI and apps above (the layer table is renumbered when the
|
||||
first solver crate lands). Nothing below L5 depends on egui/eframe/winit/wgpu/rfd. **Only
|
||||
`crates/geometry` may use `solidcraft-*`.**
|
||||
- **Determinism.** The same input gives the same mesh and the same deck, bit for bit, on every
|
||||
platform: no hash-order iteration into output, no thread-count-dependent results.
|
||||
- **Determinism.** The same input gives the same mesh, deck and CPU solver result, bit for bit, on
|
||||
every platform: no hash-order iteration into output, no thread-count-dependent results. GPU
|
||||
solver backends (wgpu, f32) are the one exception: deterministic per device, and checked against
|
||||
the CPU reference within a stated tolerance.
|
||||
- **Robust geometry.** Meshing decisions (orientation, in-sphere, intersection) use exact or
|
||||
adaptive-precision predicates, never a bare floating-point sign.
|
||||
- **Units.** The model is unit-consistent and never converts (the user picks e.g. mm, t, s, N,
|
||||
|
||||
+8
-1
@@ -5,7 +5,9 @@ with hexahedral meshing as the centre of gravity, plus its own linear solver. Ab
|
||||
reference for scope (its documentation is excellent and its solver strong); its application is
|
||||
where we aim to be clearly better: parametric geometry from SolidCraft, sets that survive
|
||||
remeshing, automatic hex partitioning, undo, a text-diffable model and agent control.
|
||||
The capability checklist is [docs/parity.md](docs/parity.md).
|
||||
The capability checklist is [docs/parity.md](docs/parity.md). Beyond the pre-processor and the
|
||||
linear solver come our own explicit, CFD (lattice Boltzmann) and fluid–structure solvers (M10–M14;
|
||||
methods and papers in [docs/solvers/literature.md](docs/solvers/literature.md)).
|
||||
|
||||
Order (revised 2026-10-13): one end-to-end slice first — *SolidCraft part → named faces → sets →
|
||||
mesh → material and section → BCs and loads → static and frequency steps → Abaqus, Nastran and
|
||||
@@ -26,4 +28,9 @@ hex meshes today and it gives the best elements where stresses are read.
|
||||
| M7 Assemblies and contact | Part instances from SolidCraft occurrences; tie between non-matching meshes; general and pairwise contact with automatic pair detection, friction; bolt pretension, springs, point masses; amplitudes, multiple steps; nonlinear static steps in decks | planned |
|
||||
| M8 Materials, explicit, shells, composites | Plasticity, hyperelasticity, damage data per solver; explicit dynamics decks (Abaqus/Explicit, LS-DYNA); midsurface shells; composite layups and material orientations, continuum shells on swept hex; heat transfer | planned |
|
||||
| M9 Post-processing and deck readers | Results readers for public formats (Nastran OP2, LS-DYNA d3plot, Abaqus `.fil`); XY and path plots, cuts, display groups, free-body forces; deck readers that keep unknown keywords; mesh convergence studies | planned |
|
||||
| M10 Explicit dynamics | Shared element and material kernels with the implicit solver (`fem`); central-difference solver with lumped mass, stable time step, one-point hex8 with hourglass control and nodal-pressure tet4, bulk viscosity, energy accounting; large-deformation materials (objective rates, J2, Johnson–Cook, damage, erosion); contact (global search, penalty with friction, rigid walls); runs on hex and tet meshes | planned |
|
||||
| M11 Equations of state and shells | Polynomial, ideal-gas, Mie–Grüneisen, JWL with programmed burn, tabulated; energy coupling; shock verification (Rankine–Hugoniot, Sod, Noh, Sedov); Belytschko–Lin–Tsay shells with self-contact on quad meshes | planned |
|
||||
| M12 CFD: lattice Boltzmann | D3Q19/D3Q27 on grids voxelised from the face-tagged surface; TRT, regularised and cumulant collision; interpolated walls, inlets and outlets; LES; octree refinement shared with the hex mesher; wgpu backend (deterministic per device, checked against the CPU) | planned |
|
||||
| M13 Fluid–structure interaction | Immersed-boundary coupling of the lattice Boltzmann fluid with the explicit or implicit structure; interface force transfer; sub-cycling; Aitken then interface quasi-Newton coupling; free-surface flow | planned |
|
||||
| M14 Blast and impact fluids | EOS-driven fluids in the explicit solver: ALE multi-material or SPH, with fluid–structure contact | planned |
|
||||
| Continuous: desktop and agents | Desktop app (viewport, model tree, commands, control channel: done), MCP server, browser build, command schema as the public API | started |
|
||||
@@ -44,7 +44,11 @@ CC0 and public domain.
|
||||
| Code_Aster | GPL-3.0 | implicit solver |
|
||||
| OpenRadioss | AGPL-3.0 | explicit solver |
|
||||
| Elmer | GPL-2.0 / LGPL-2.1 | multiphysics solver |
|
||||
| deal.II, FreeFEM, Salome | LGPL | FE libraries, pre-processing |
|
||||
| FreeFEM, Salome | LGPL | FE libraries, pre-processing |
|
||||
| Palabos, OpenLB, waLBerla, lbmpy, VirtualFluids, TCLB | AGPL / GPL | lattice Boltzmann (implement from the papers) |
|
||||
| OpenFOAM, SU2, 4C, DualSPHysics, preCICE | GPL / LGPL | CFD, FSI coupling, SPH |
|
||||
| FluidX3D | non-commercial only | GPU lattice Boltzmann |
|
||||
| LULESH | no licence | explicit hydrodynamics proxy |
|
||||
| OpenCASCADE | LGPL-2.1 | B-rep kernel |
|
||||
| Attene's CDT, Indirect_Predicates, VolumeMesher | GPL / LGPL | robust CDT, indirect predicates (implement from the papers) |
|
||||
| TetWild (original), Evocube, robustPolycube, ultimaille, invertible-maps | GPL-3.0 / AGPL-3.0 | tet meshing, polycube, injective maps |
|
||||
@@ -54,6 +58,8 @@ CC0 and public domain.
|
||||
| libigl `copyleft/` modules | GPL | (libigl core is MPL-2.0 and readable) |
|
||||
| OpenVolumeMesh, CGoGN | believed LGPL, unverified | treat as forbidden until checked |
|
||||
|
||||
deal.II is now dual-licensed Apache-2.0 (with LLVM exception) or LGPL, so it is readable under its Apache-2.0 option. Readable solver references (re-implement from the papers): STLBM (MIT), XLB, lettuce, pylbm, Laghos, MFEM, IBAMR, the Kratos core, MUI, FEBio, SPHinXsys, SPlisHSPlasH, fenris; full table in `docs/solvers/literature.md`.
|
||||
|
||||
**Repositories without a licence are all rights reserved: never read them** (for example Gao
|
||||
2019's octree hex code, LoopyCuts). Readable references for the meshing work (re-implement from
|
||||
the paper, note anything adapted in ATTRIBUTION.md): Shewchuk's `predicates.c` (public domain),
|
||||
|
||||
@@ -0,0 +1,955 @@
|
||||
# Solver literature survey for ModelCraft: explicit dynamics, equations of state, lattice Boltzmann, FSI
|
||||
|
||||
Compiled 2026-10-13. Scope: three new solver families on top of the planned implicit linear solver (M6):
|
||||
(A) an explicit Lagrangian finite element solver of the LS-DYNA / Abaqus-Explicit class, (B) equations of state for
|
||||
that solver's shock and detonation work, (C) a lattice Boltzmann CFD solver of the Palabos class, (D) fluid–structure
|
||||
interaction coupling them, and (E) the alternatives (finite volume, SPH) and GPU compute in pure Rust. The plan is at
|
||||
the end (Part F).
|
||||
|
||||
## How this was verified
|
||||
|
||||
- **DOIs.** Every DOI below resolved through the DOI handle API (`doi.org/api/handles/<doi>` → responseCode 1),
|
||||
and its first author, year, title and venue were checked against Crossref metadata. Volume and page numbers are
|
||||
from memory and were not each checked; title, first author, year and venue were. Four DOIs I had from memory were
|
||||
wrong and were corrected from Crossref search before inclusion:
|
||||
- Flanagan–Belytschko 1984 eigenvalue paper is `10.1115/1.3167594` (`…598` is an unrelated crack paper).
|
||||
- Johnson–Stryk 1987 eroding interface is `10.1016/0734-743X(87)90057-1`.
|
||||
- He–Luo 1997 incompressible LBM is `10.1023/B:JOSS.0000015179.12689.e4` (`10.1007/BF02732106` is a plant-biology paper).
|
||||
- Belytschko–Lin 1987 erosion is `10.1016/0734-743X(87)90033-9`.
|
||||
- **Other URLs** returned HTTP 200 on 2026-10-13 unless marked. Items without a DOI or working URL are marked
|
||||
**(unverified)**.
|
||||
- **Licences** come from GitHub/GitLab licence metadata (`api.github.com/repos/<r>`, GitLab `?license=true`), the
|
||||
repository's LICENSE/COPYING file header, or a README licence sentence when the API reported nothing. **No source
|
||||
code was opened.** Where the API said `NOASSERTION`, the first lines of the licence file decided it.
|
||||
- No section numbers are given: I did not read the PDFs for this survey, so I give none rather than guess.
|
||||
|
||||
### Licence legend for associated code
|
||||
|
||||
| Status | Meaning |
|
||||
|---|---|
|
||||
| **READ OK** | MIT, BSD, Apache-2.0, ISC, MPL-2.0, public domain. May be read for reference; still re-implement from the paper and record anything adapted in ATTRIBUTION.md. |
|
||||
| **FORBIDDEN** | GPL, LGPL or AGPL, or a non-commercial / research-only licence. Do not open. |
|
||||
| **NO LICENCE** | No licence found in metadata: all rights reserved. Do not open. |
|
||||
|
||||
### Associated code bases (licence from metadata only)
|
||||
|
||||
| Code | What it is | Licence (source) | Status |
|
||||
|---|---|---|---|
|
||||
| Palabos `gitlab.com/unigespc/palabos` | LBM framework | AGPL-3.0 (GitLab API) | FORBIDDEN |
|
||||
| OpenLB `gitlab.com/openlb/release` | LBM framework | GPL-2.0+ (GitLab API) | FORBIDDEN |
|
||||
| waLBerla `i10git.cs.fau.de/walberla/walberla` | LBM framework | GPL-3.0 (GitLab API) | FORBIDDEN |
|
||||
| lbmpy `i10git.cs.fau.de/pycodegen/lbmpy` | LBM code generator (cumulant, MRT) | GPL-3.0+ (GitLab API) | FORBIDDEN |
|
||||
| VirtualFluids `git.rz.tu-bs.de/irmb/VirtualFluids` | cumulant LBM (Geier/Krafczyk group) | GPL-3.0 (GitLab API) | FORBIDDEN |
|
||||
| TCLB `CFD-GO/TCLB` | GPU LBM | GPL-3.0 | FORBIDDEN |
|
||||
| HemeLB `hemelb-codes/hemelb` | sparse-geometry LBM | LGPL-3.0 | FORBIDDEN |
|
||||
| Sailfish `sailfish-team/sailfish` | GPU LBM | LGPL-3 (README; API: none) | FORBIDDEN |
|
||||
| FluidX3D `ProjectPhysX/FluidX3D` | GPU LBM, esoteric pull | custom: "public research, education or personal use" (LICENSE.md) | FORBIDDEN (non-commercial) |
|
||||
| ESPResSo `espressomd/espresso` | MD + LBM | GPL-3.0 | FORBIDDEN |
|
||||
| OpenFOAM `OpenFOAM/OpenFOAM-dev` | FV CFD | GPL (COPYING) | FORBIDDEN |
|
||||
| SU2 `su2code/SU2` | FV CFD | LGPL-2.1 (LICENSE.md) | FORBIDDEN |
|
||||
| Fluidity | FE/FV CFD | LGPL-2.1 | FORBIDDEN |
|
||||
| OpenRadioss | explicit FE | AGPL-3.0 (ADR 0001; GitHub mirrors report AGPL-3.0; the `OpenRadioss/OpenRadioss` repo URL returned 404 today) | FORBIDDEN |
|
||||
| preCICE `precice/precice` | partitioned coupling, IQN, RBF mapping | LGPL-3.0 | FORBIDDEN |
|
||||
| 4C (ex-BACI) `4C-multiphysics/4C` | FSI, Aitken (Küttler–Wall group) | LGPL-3.0 | FORBIDDEN |
|
||||
| MOOSE `idaholab/moose` | multiphysics FE | LGPL-2.1 | FORBIDDEN |
|
||||
| FEniCS `FEniCS/dolfinx` | FE library | LGPL-3.0 | FORBIDDEN |
|
||||
| deal.II `dealii/dealii` | FE library | now Apache-2.0 WITH LLVM-exception **and** LGPL-2.1 (LICENSE.md) | FORBIDDEN by ADR 0001 (it lists deal.II as LGPL). The relicensing is an owner decision; until the ADR changes, don't open. |
|
||||
| DualSPHysics `DualSPHysics/DualSPHysics` | GPU SPH | LGPL-2.1 | FORBIDDEN |
|
||||
| IB2d `nickabattista/IB2d` | 2D immersed boundary | GPL-3.0 | FORBIDDEN |
|
||||
| CalculiX, Code_Aster, Elmer | implicit FE | GPL family (ADR 0001) | FORBIDDEN |
|
||||
| STLBM `gitlab.com/unigehpfs/stlbm` | Latt et al. 2021 portable C++ LBM (AA-pattern, BGK/TRT/regularized) | MIT (GitLab API) | **READ OK** — the one readable code by Palabos's authors |
|
||||
| XLB `Autodesk/XLB` | differentiable LBM (JAX/Warp) | Apache-2.0 (LICENSE) | READ OK |
|
||||
| lettuce `lettucecfd/lettuce` | PyTorch LBM | MIT | READ OK |
|
||||
| pylbm `pylbm/pylbm` | LBM schemes generator | BSD-3 ("New BSD", LICENSE) | READ OK |
|
||||
| Ludwig `ludwig-cf/ludwig` | LBM complex fluids | BSD-3-style (LICENSE: redistribution conditions) | READ OK |
|
||||
| Laghos `CEED/Laghos` | high-order Lagrangian hydro, artificial viscosity | BSD-2-Clause | READ OK |
|
||||
| MFEM `mfem/mfem` | FE library | BSD-3-Clause | READ OK |
|
||||
| LULESH `LLNL/LULESH` | Lagrangian hydro proxy app (one-point hex + hourglass) | none in metadata, no licence file, README has no licence sentence | NO LICENCE (until a licence file is confirmed; do not open) |
|
||||
| Kratos `KratosMultiphysics/Kratos` | multiphysics incl. FSI, IQN, mapping | BSD-style (kratos/license.txt: "Redistribution … permitted"; per-application licences may differ) | READ OK for the core; check each application folder's own licence file first |
|
||||
| IBAMR `IBAMR/IBAMR` | immersed boundary (Peskin family) | BSD-3-style (COPYRIGHT file) | READ OK |
|
||||
| MUI `MxUI/MUI` | multiscale coupling interface, RBF | Apache-2.0 (GitHub API; README says dual GPL/Apache, take Apache) | READ OK |
|
||||
| FEBio `febiosoftware/FEBio` | nonlinear implicit FE, FSI | MIT | READ OK |
|
||||
| WARP3D `rhdodds/warp3d` | nonlinear implicit FE | NCSA/MIT-style (LICENSE) | READ OK |
|
||||
| SPlisHSPlasH `InteractiveComputerGraphics/SPlisHSPlasH` | SPH fluids | MIT | READ OK |
|
||||
| SPHinXsys `Xiangyu-Hu/SPHinXsys` | SPH multiphysics incl. FSI | Apache-2.0 | READ OK |
|
||||
| PySPH `pypr/pysph` | SPH | BSD-3-style (LICENSE.txt) | READ OK |
|
||||
| Cabana `ECP-copa/Cabana` | particle toolkit | BSD-3-Clause | READ OK |
|
||||
| Nek5000 | spectral-element CFD | BSD-3-style (LICENSE) | READ OK |
|
||||
| fenris `InteractiveComputerGraphics/fenris` | Rust FE library | Apache-2.0 | READ OK |
|
||||
| wgpu `gfx-rs/wgpu` | Rust WebGPU | MIT OR Apache-2.0 | READ OK, dependency candidate |
|
||||
| rust-gpu `Rust-GPU/rust-gpu` | Rust → SPIR-V | MIT OR Apache-2.0 (API: Apache-2.0) | READ OK |
|
||||
| faer `sarah-quinones/faer-rs` | Rust dense/sparse LA | MIT | READ OK |
|
||||
|
||||
---
|
||||
|
||||
## Part A: Explicit finite element dynamics
|
||||
|
||||
### A1. Time integration and stability
|
||||
|
||||
**A1.1 Belytschko, Liu, Moran, Elkhodary. *Nonlinear Finite Elements for Continua and Structures*, 2nd ed., Wiley 2014.** **Verdict: build on (the spine of the explicit solver).**
|
||||
- **Links.** ISBN 978-1-118-63270-3; publisher page https://www.wiley.com/en-us/Nonlinear+Finite+Elements+for+Continua+and+Structures%2C+2nd+Edition-p-9781118632703 (200). No DOI checked.
|
||||
- **Relevant chapters** (by topic; chapter numbers from memory of the 2nd edition, check before citing in module docs):
|
||||
updated Lagrangian formulation and the internal-force loop; explicit central difference with the
|
||||
"flowchart" for one step, energy balance check, critical time step and element eigenvalue bounds; constitutive
|
||||
models (hypoelastic–plastic, objective rates: Jaumann, Truesdell, Green–Naghdi); element technology (one-point
|
||||
quadrature, hourglass control, B-bar, assumed strain, shells including Belytschko–Lin–Tsay); contact-impact
|
||||
(penalty, Lagrange multipliers, explicit contact algorithms); stability (linearised stability, energy method).
|
||||
- **Method.** Central difference in the half-step form: `v^{n+1/2} = v^{n-1/2} + Δt^n M⁻¹(f_ext − f_int)^n`,
|
||||
`x^{n+1} = x^n + Δt^{n+1/2} v^{n+1/2}`, with a diagonal (lumped) mass so each step is a gather of element
|
||||
internal forces and a nodal division. Stable for `Δt ≤ 2/ω_max` (with damping ratio ξ:
|
||||
`Δt ≤ (2/ω_max)(√(1+ξ²) − ξ)`). ω_max is bounded by the largest element eigenvalue (element eigenvalue inequality),
|
||||
giving `Δt = α · min_e L_e / c_e` with a safety factor α ≈ 0.9 and `c = √((λ+2μ)/ρ)` for solids.
|
||||
- **Solves.** Everything in Part A; the book is the integration framework all the papers below plug into.
|
||||
- **Limits.** Conditionally stable; cost ∝ (number of elements) × (end time / Δt), and Δt is set by the smallest
|
||||
or stiffest element anywhere in the model. One distorted sliver element sets the step for the whole model.
|
||||
- **Complexity.** The core loop is small (≈1–2k lines); everything hard is in elements, materials and contact.
|
||||
- **Code.** None.
|
||||
|
||||
**A1.2 Courant, Friedrichs, Lewy 1928.** **Verdict: reference (the CFL condition).**
|
||||
- **Citation.** R. Courant, K. Friedrichs, H. Lewy. *Über die partiellen Differenzengleichungen der mathematischen Physik.* Math. Ann. 100:32–74, 1928. DOI [10.1007/BF01448839](https://doi.org/10.1007/BF01448839).
|
||||
- **Use.** The origin of `Δt ≤ L/c`; cite for the explicit FE and LBM time-step rules.
|
||||
|
||||
**A1.3 Flanagan & Belytschko 1984, eigenvalues and stable time steps.** **Verdict: build on.**
|
||||
- **Citation.** D. P. Flanagan, T. Belytschko. *Eigenvalues and Stable Time Steps for the Uniform Strain Hexahedron and Quadrilateral.* J. Appl. Mech. 51(1):35–40, 1984. DOI [10.1115/1.3167594](https://doi.org/10.1115/1.3167594).
|
||||
- **Method.** Closed-form upper bound on the maximum eigenvalue of the one-point hexahedron/quadrilateral in terms of
|
||||
its gradient vectors `b_iI` and volume; it yields a characteristic length that is tighter and cheaper than
|
||||
"shortest edge" and is exact for a cube.
|
||||
- **Solves.** The per-element critical time step for the element in A2.1. Tets and shells use their own lengths
|
||||
(tet: volume / largest face area times a factor; shell: area / longest diagonal or side).
|
||||
- **Limits.** A bound per element, so it is conservative; nodal estimates (below) can be larger.
|
||||
- **Complexity.** Low.
|
||||
- **Note on nodal estimates.** Nodal time-step estimates (from nodal mass and an assembled nodal stiffness bound) give
|
||||
larger stable steps on graded meshes. I found no single verified primary paper to cite for them; treat as
|
||||
"reference later" and keep the element estimate as the guaranteed-stable default. **(unverified)**
|
||||
|
||||
**A1.4 Lumped mass.** **Verdict: build on.** Row-sum lumping for linear elements (hex8, tet4, quad4, tri3), which is
|
||||
positive; for quadratic elements row-sum gives zero or negative corner masses, so use HRZ (diagonal scaling)
|
||||
lumping or avoid quadratic elements in explicit (the usual choice). Source: A1.1 book; Hughes, *The Finite Element
|
||||
Method* (Dover 2000, no DOI) for HRZ. **(book, unverified page)**
|
||||
|
||||
**A1.5 Olovsson, Simonsson, Unosson 2005, selective mass scaling.** **Verdict: build on (after plain mass scaling).**
|
||||
- **Citation.** L. Olovsson, K. Simonsson, M. Unosson. *Selective mass scaling for explicit finite element analyses.* IJNME 63(10):1436–1445, 2005. DOI [10.1002/nme.1293](https://doi.org/10.1002/nme.1293).
|
||||
- **Method.** Conventional mass scaling adds nodal mass to small elements until each reaches a target Δt (adds
|
||||
inertia to rigid-body modes too, so it changes the dynamics). Selective mass scaling adds a non-diagonal mass term
|
||||
that leaves translational (rigid-body) inertia unchanged and lowers only the high frequencies, at the cost of a cheap
|
||||
iterative solve per step.
|
||||
- **Solves.** Quasi-static and thin-structure explicit runs whose step is limited by a few small elements.
|
||||
- **Limits.** Conventional scaling must report the added mass (% of total) — silent mass scaling is a classic source
|
||||
of wrong answers. Selective scaling needs a solve each step (CG on a well-conditioned system).
|
||||
- **Complexity.** Conventional: trivial. Selective: moderate.
|
||||
- **Code.** None.
|
||||
|
||||
### A2. Solid element technology
|
||||
|
||||
**A2.1 Flanagan & Belytschko 1981, uniform strain hexahedron with orthogonal hourglass control.** **Verdict: build on (the default solid element).**
|
||||
- **Citation.** D. P. Flanagan, T. Belytschko. *A uniform strain hexahedron and quadrilateral with orthogonal hourglass control.* IJNME 17(5):679–706, 1981. DOI [10.1002/nme.1620170504](https://doi.org/10.1002/nme.1620170504).
|
||||
- **Method.** One-point integration with the mean (volume-averaged) gradient operator, so the element passes the patch
|
||||
test and costs one stress update per step. The four hourglass modes per direction are made orthogonal to the
|
||||
linear velocity field (the γ vectors), and a viscous or stiffness-type hourglass resisting force with a
|
||||
user coefficient (≈0.05–0.15) suppresses them without touching constant-strain modes.
|
||||
- **Solves.** Fast, lock-free (under one-point integration) hex8 for impact and crash.
|
||||
- **Limits.** Hourglass coefficient is a tuning knob; stiffness hourglass is too stiff in bending on coarse meshes,
|
||||
viscous hourglass lets hourglass energy grow in long runs. Monitor hourglass energy against internal energy (rule of
|
||||
thumb < 10%) and report it.
|
||||
- **Complexity.** Moderate (≈500 lines for the element with both hourglass types).
|
||||
- **Code.** LULESH implements this element but has NO LICENCE in its metadata: don't open. Laghos (BSD-2) is a
|
||||
high-order hydro and does not use this element.
|
||||
|
||||
**A2.2 Belytschko, Ong, Liu, Kennedy 1984, hourglass control in linear and nonlinear problems.** **Verdict: reference.**
|
||||
- **Citation.** CMAME 43(3):251–276, 1984. DOI [10.1016/0045-7825(84)90067-7](https://doi.org/10.1016/0045-7825(84)90067-7).
|
||||
- **Method.** Unifies hourglass control as stabilisation of the one-point element, gives the stabilisation
|
||||
parameters and their consistency for nonlinear problems.
|
||||
- **Use.** Background for choosing coefficients; read with A2.1.
|
||||
|
||||
**A2.3 Belytschko & Bindeman 1993, assumed strain stabilisation of the hex8.** **Verdict: build on (second solid formulation).**
|
||||
- **Citation.** T. Belytschko, L. P. Bindeman. *Assumed strain stabilization of the eight node hexahedral element.* CMAME 105(2):225–260, 1993. DOI [10.1016/0045-7825(93)90124-G](https://doi.org/10.1016/0045-7825(93)90124-G).
|
||||
- **Method.** Derive the hourglass (stabilisation) forces from an assumed-strain field instead of an arbitrary
|
||||
coefficient, so the stabilisation stiffness is physical: correct bending with one element through the thickness,
|
||||
no shear locking, and an incompressible variant that avoids volumetric locking. Co-rotational frame.
|
||||
- **Solves.** Coarse-mesh bending accuracy that A2.1 lacks, without a tuning coefficient.
|
||||
- **Limits.** Physical stabilisation is elastic: it uses the elastic moduli (or a tangent estimate) in plasticity,
|
||||
so it is approximate in large plastic flow.
|
||||
- **Complexity.** Moderate–high.
|
||||
|
||||
**A2.4 Puso 2000, enhanced assumed strain physically stabilised hexahedron.** **Verdict: reference (later upgrade over A2.3).**
|
||||
- **Citation.** M. A. Puso. *A highly efficient enhanced assumed strain physically stabilized hexahedral element.* IJNME 49(8):1029–1064, 2000. DOI [10.1002/1097-0207(20001120)49:8<1029::AID-NME990>3.0.CO;2-3](https://doi.org/10.1002/1097-0207(20001120)49:8%3C1029::AID-NME990%3E3.0.CO;2-3).
|
||||
- **Method.** Takes Taylor-expanded EAS (Simo–Rifai) stabilisation to one-point integration; better on distorted
|
||||
(trapezoidal) meshes than Belytschko–Bindeman, still ≈ one-point cost.
|
||||
- **Limits.** More algebra; same elastic-stabilisation caveat.
|
||||
- **Complexity.** High.
|
||||
|
||||
**A2.5 Simo & Rifai 1990, enhanced assumed strain.** **Verdict: reference (implicit solver first).**
|
||||
- **Citation.** IJNME 29(8):1595–1638, 1990. DOI [10.1002/nme.1620290802](https://doi.org/10.1002/nme.1620290802).
|
||||
- **Use.** EAS hex8 for the implicit solver (M6); background for A2.4. Static condensation per element is awkward in
|
||||
explicit.
|
||||
|
||||
**A2.6 Selective / reduced integration and B-bar.** **Verdict: build on (fully integrated hex8 option).**
|
||||
- **Citations.**
|
||||
- D. S. Malkus, T. J. R. Hughes. *Mixed finite element methods — reduced and selective integration techniques: a unification of concepts.* CMAME 15(1):63–81, 1978. DOI [10.1016/0045-7825(78)90005-1](https://doi.org/10.1016/0045-7825(78)90005-1).
|
||||
- T. J. R. Hughes. *Generalization of selective integration procedures to anisotropic and nonlinear media.* IJNME 15(9):1413–1418, 1980. DOI [10.1002/nme.1620150914](https://doi.org/10.1002/nme.1620150914).
|
||||
- **Method.** Integrate the deviatoric part at 2×2×2 points and the volumetric part at one point (B-bar: replace the
|
||||
dilatational part of B with its element mean). No hourglass modes, no volumetric locking.
|
||||
- **Limits.** Eight stress updates per element (≈4–8× the cost of A2.1) and shear locking in bending.
|
||||
- **Complexity.** Low given the implicit solver's hex8.
|
||||
- **Shared with M6.** The implicit solver needs exactly this element; write it once in a shared crate (Part F).
|
||||
|
||||
**A2.7 Bonet & Burton 1998, average nodal pressure tetrahedron.** **Verdict: build on (explicit on tets before hexes exist).**
|
||||
- **Citations.**
|
||||
- J. Bonet, A. J. Burton. *A simple average nodal pressure tetrahedral element for incompressible and nearly incompressible dynamic explicit applications.* Commun. Numer. Methods Eng. 14(5):437–449, 1998. DOI [10.1002/(SICI)1099-0887(199805)14:5<437::AID-CNM162>3.0.CO;2-W](https://doi.org/10.1002/(SICI)1099-0887(199805)14:5%3C437::AID-CNM162%3E3.0.CO;2-W).
|
||||
- J. Bonet, H. Marriott, O. Hassan. *An averaged nodal deformation gradient linear tetrahedral element for large strain explicit dynamic applications.* CNME 17:551–561, 2001. DOI [10.1002/cnm.429](https://doi.org/10.1002/cnm.429).
|
||||
- **Method.** Linear tet with the volumetric strain (pressure) averaged over the elements sharing a node, which
|
||||
removes the volumetric locking of tet4 in nearly incompressible (plastic, rubber) flow. The 2001 paper averages the
|
||||
whole deformation gradient.
|
||||
- **Solves.** Explicit on the tet meshes M2 delivers before the hex mesher (M3) exists.
|
||||
- **Limits.** Known pressure-checkerboard/spurious low-energy modes in some settings (nodal-integration family);
|
||||
needs a small stabilisation. Plain tet4 must be offered only with a warning for plasticity.
|
||||
- **Complexity.** Low–moderate (a nodal gather pass per step).
|
||||
|
||||
### A3. Shell elements
|
||||
|
||||
**A3.1 Belytschko, Lin, Tsay 1984, explicit shells (BLT).** **Verdict: build on (default shell).**
|
||||
- **Citation.** T. Belytschko, J. I. Lin, C.-S. Tsay. *Explicit algorithms for the nonlinear dynamics of shells.* CMAME 42(2):225–251, 1984. DOI [10.1016/0045-7825(84)90026-4](https://doi.org/10.1016/0045-7825(84)90026-4).
|
||||
- **Method.** Four-node quadrilateral with one in-plane integration point, Mindlin plate kinematics in a co-rotational
|
||||
local frame, several through-thickness points for plasticity, and hourglass control. Cost is a small multiple of a
|
||||
solid element's per thickness point. The workhorse of crash simulation.
|
||||
- **Limits.** Fails the patch test for warped elements (the co-rotational flat-element assumption); hourglass control
|
||||
again; poor for strongly warped geometry.
|
||||
- **Complexity.** Moderate.
|
||||
|
||||
**A3.2 Belytschko, Wong, Chiang 1992, advances in one-point quadrature shells.** **Verdict: build on (warping fix for BLT).**
|
||||
- **Citation.** CMAME 96(1):93–107, 1992. DOI [10.1016/0045-7825(92)90100-X](https://doi.org/10.1016/0045-7825(92)90100-X).
|
||||
- **Method.** Corrections to BLT for warped geometry (and physical hourglass stabilisation), at little extra cost.
|
||||
|
||||
**A3.3 Hughes & Liu 1981, degenerated continuum shells.** **Verdict: reference (second shell, later).**
|
||||
- **Citation.** T. J. R. Hughes, W. K. Liu. *Nonlinear finite element analysis of shells: Part I. Three-dimensional shells.* CMAME 26(3):331–362, 1981. DOI [10.1016/0045-7825(81)90121-3](https://doi.org/10.1016/0045-7825(81)90121-3).
|
||||
- **Method.** Shell derived from a 3D solid by constraining fibres (degenerated continuum); handles warping
|
||||
naturally and thickness change, about 2–4× the cost of BLT with one in-plane point.
|
||||
- **Use.** Accuracy option once BLT is verified.
|
||||
|
||||
### A4. Large deformation constitutive integration
|
||||
|
||||
**A4.1 Simo & Hughes, *Computational Inelasticity*, Springer 1998.** **Verdict: build on.**
|
||||
- **Links.** DOI [10.1007/b98904](https://doi.org/10.1007/b98904).
|
||||
- **Method.** Return mapping (closest point projection) for J2 plasticity; radial return for von Mises with
|
||||
isotropic/kinematic hardening is closed form for linear hardening and a scalar Newton iteration for nonlinear
|
||||
hardening; incrementally objective integration of hypoelastic–plastic models (rotate stress to the configuration at
|
||||
the midstep, update, rotate back); consistent tangents (needed by implicit only).
|
||||
- **Solves.** The stress update at every integration point.
|
||||
- **Limits.** Radial return in explicit is unconditionally stable but first-order accurate in the strain increment;
|
||||
fine since explicit steps are tiny.
|
||||
- **Complexity.** Low for J2 radial return; moderate for the objective integration.
|
||||
|
||||
**A4.2 Krieg & Krieg 1977, accuracy of radial return.** **Verdict: reference.** J. Press. Vessel Technol. 99(4):510–515, 1977. DOI [10.1115/1.3454568](https://doi.org/10.1115/1.3454568). Shows radial return is accurate for the elastic–perfectly plastic model; the standard justification.
|
||||
|
||||
**A4.3 Hughes & Winget 1980, incrementally objective integration.** **Verdict: build on.**
|
||||
- **Citation.** IJNME 15(12):1862–1867, 1980. DOI [10.1002/nme.1620151210](https://doi.org/10.1002/nme.1620151210).
|
||||
- **Method.** Rotate the stress with the incremental rotation from the midpoint velocity gradient (a Cayley transform
|
||||
of the spin increment), so a rigid rotation leaves the stress exact. This is the Jaumann-rate update most explicit
|
||||
codes use.
|
||||
- **Complexity.** Low.
|
||||
|
||||
**A4.4 Dienes 1979, rotation and stress rate.** **Verdict: build on (as a verification case).**
|
||||
- **Citation.** J. K. Dienes. *On the analysis of rotation and stress rate in deforming bodies.* Acta Mech. 32:217–232, 1979. DOI [10.1007/BF01379008](https://doi.org/10.1007/BF01379008).
|
||||
- **Method.** Simple shear of a hypoelastic material: the Jaumann rate gives an oscillating shear stress (unphysical),
|
||||
the Green–Naghdi rate a monotonic one. Both have closed-form solutions.
|
||||
- **Use.** Analytic verification of the stress-rate implementation (exactly the kind of test the project wants).
|
||||
|
||||
**A4.5 Flanagan & Taylor 1987, Green–Naghdi stress integration.** **Verdict: build on (second rate).**
|
||||
- **Citation.** D. P. Flanagan, L. M. Taylor. *An accurate numerical algorithm for stress integration with finite rotations.* CMAME 62(3):305–320, 1987. DOI [10.1016/0045-7825(87)90065-X](https://doi.org/10.1016/0045-7825(87)90065-X).
|
||||
- **Method.** Integrates the rotation of the polar decomposition incrementally (no full polar decomposition each step)
|
||||
and updates stress in the unrotated frame: Green–Naghdi rate at low cost. Used by the PRONTO family.
|
||||
- **Limits.** Drift in the rotation over very long runs (re-orthonormalise).
|
||||
|
||||
### A5. Contact
|
||||
|
||||
**A5.1 Hallquist, Goudreau, Benson 1985, sliding interfaces with contact-impact.** **Verdict: build on.**
|
||||
- **Citation.** CMAME 51(1–3):107–137, 1985. DOI [10.1016/0045-7825(85)90030-1](https://doi.org/10.1016/0045-7825(85)90030-1).
|
||||
- **Method.** Node-to-segment penalty contact for explicit: each slave node finds its nearest master segment, a
|
||||
penetration produces a penalty force with stiffness scaled from the segment's bulk modulus, area and volume (so it
|
||||
does not reduce the stable step), symmetric (two-pass) treatment, Coulomb friction with a trial-force return,
|
||||
incremental search tracking the previous master segment. This is the original DYNA3D contact.
|
||||
- **Solves.** General impact between deformable bodies.
|
||||
- **Limits.** Penalty contact allows small penetration and can be noisy; node-to-segment fails at segment edges and
|
||||
corners (snagging, nodes slipping through when the search loses track); initial penetrations must be removed or
|
||||
reported; very soft-against-stiff pairs need soft-constraint penalty (scale on nodal mass/Δt²).
|
||||
- **Complexity.** Moderate for the force; high for robust search.
|
||||
|
||||
**A5.2 Benson & Hallquist 1990, single-surface contact.** **Verdict: build on (self-contact for buckling).**
|
||||
- **Citation.** CMAME 78(2):141–163, 1990. DOI [10.1016/0045-7825(90)90098-7](https://doi.org/10.1016/0045-7825(90)90098-7).
|
||||
- **Method.** Self-contact of one surface (folding shells) with bucket-sort global search; no master/slave pairs needed.
|
||||
- **Solves.** Crush and post-buckling.
|
||||
|
||||
**A5.3 Belytschko & Neal 1991, pinball contact.** **Verdict: build on (simplest robust option first).**
|
||||
- **Citation.** T. Belytschko, M. O. Neal. *Contact-impact by the pinball algorithm with penalty and Lagrangian methods.* IJNME 31(3):547–572, 1991. DOI [10.1002/nme.1620310309](https://doi.org/10.1002/nme.1620310309).
|
||||
- **Method.** Embed spheres ("pinballs") in surface elements; contact is sphere–sphere overlap, which is trivial and
|
||||
vectorises; penalty or Lagrange multiplier enforcement; hierarchical pinballs refine near contact.
|
||||
- **Solves.** Robust contact detection without the edge/corner cases of node-to-segment; ideal for erosion
|
||||
(A7) where the surface keeps changing.
|
||||
- **Limits.** Contact surface is lumpy; accuracy of the contact pressure is low.
|
||||
- **Complexity.** Low.
|
||||
|
||||
**A5.4 Contact search: Oldenburg & Nilsson 1994 position code; Yang & Laursen 2006 BVH.** **Verdict: build on (BVH).**
|
||||
- **Citations.**
|
||||
- M. Oldenburg, L. Nilsson. *The position code algorithm for contact searching.* IJNME 37(3):359–386, 1994. DOI [10.1002/nme.1620370302](https://doi.org/10.1002/nme.1620370302).
|
||||
- B. Yang, T. A. Laursen. *A contact searching algorithm including bounding volume trees applied to finite sliding mortar formulations.* Comput. Mech. 41:189–205, 2008 (online 2006). DOI [10.1007/s00466-006-0116-z](https://doi.org/10.1007/s00466-006-0116-z).
|
||||
- **Method.** Global search finds candidate pairs: bucket/position-code sorting into a spatial grid (O(n log n), good for
|
||||
uniform meshes), or a bounding-volume hierarchy refitted each step and rebuilt occasionally (robust to non-uniform
|
||||
meshes and large motion). Local search then computes the closest point on the candidate segment.
|
||||
- **Choice.** A BVH with AABBs inflated by `v·Δt·k` and refitting, deterministic in build order. The mesher already
|
||||
needs spatial indexing; share it if its API fits.
|
||||
- **Complexity.** Moderate.
|
||||
|
||||
**A5.5 Books: Wriggers; Laursen; Hughes et al. 1976.** **Verdict: reference.**
|
||||
- P. Wriggers. *Computational Contact Mechanics*, 2nd ed., Springer 2006. DOI [10.1007/978-3-540-32609-0](https://doi.org/10.1007/978-3-540-32609-0).
|
||||
- T. A. Laursen. *Computational Contact and Impact Mechanics*, Springer 2003. DOI [10.1007/978-3-662-04864-1](https://doi.org/10.1007/978-3-662-04864-1).
|
||||
- T. J. R. Hughes et al. *A finite element method for a class of contact-impact problems.* CMAME 8(3):249–276, 1976. DOI [10.1016/0045-7825(76)90018-9](https://doi.org/10.1016/0045-7825(76)90018-9). (The impact–release conditions; analytic bar-impact test.)
|
||||
- Use: mortar/segment-to-segment contact for the implicit solver later; theory of penalty regularisation.
|
||||
|
||||
### A6. Johnson–Cook plasticity and damage
|
||||
|
||||
**A6.1 Johnson & Cook 1983 (strength) and 1985 (fracture).** **Verdict: build on.**
|
||||
- **Citations.**
|
||||
- G. R. Johnson, W. H. Cook. *A constitutive model and data for metals subjected to large strains, high strain rates and high temperatures.* Proc. 7th Int. Symp. on Ballistics, The Hague, 541–547, 1983. **No DOI; (unverified)** — conference proceedings, not online through Crossref.
|
||||
- G. R. Johnson, W. H. Cook. *Fracture characteristics of three metals subjected to various strains, strain rates, temperatures and pressures.* Eng. Fract. Mech. 21(1):31–48, 1985. DOI [10.1016/0013-7944(85)90052-9](https://doi.org/10.1016/0013-7944(85)90052-9).
|
||||
- **Method.** Flow stress `σ_y = (A + B ε_p^n)(1 + C ln ε̇*)(1 − T*^m)`, a multiplicative split of hardening, rate and
|
||||
thermal softening (homologous temperature T*; adiabatic heating from plastic work with a Taylor–Quinney factor).
|
||||
Fracture strain `ε_f = (D1 + D2 e^{D3 σ*})(1 + D4 ln ε̇*)(1 + D5 T*)` with stress triaxiality σ*; damage
|
||||
`D = Σ Δε_p / ε_f` accumulates and the point fails at D = 1.
|
||||
- **Solves.** Metals under impact, machining, ballistics.
|
||||
- **Limits.** Rate term `ln ε̇*` is singular at ε̇* → 0 (clamp at 1); T* outside [0, 1] must be clamped; radial return
|
||||
with rate dependence needs a scalar Newton iteration (bounded). Fracture is mesh-dependent without regularisation.
|
||||
Parameter sets are taken from published papers (the 1983/1985 tables), never from a commercial material library.
|
||||
- **Complexity.** Low on top of A4.1.
|
||||
|
||||
### A7. Element erosion
|
||||
|
||||
**A7.1 Johnson & Stryk 1987; Belytschko & Lin 1987.** **Verdict: build on (simple erosion), reference (eroding contact).**
|
||||
- **Citations.**
|
||||
- G. R. Johnson, R. A. Stryk. *Eroding interface and improved tetrahedral element algorithms for high-velocity impact computations in three dimensions.* Int. J. Impact Eng. 5:411–421, 1987. DOI [10.1016/0734-743X(87)90057-1](https://doi.org/10.1016/0734-743X(87)90057-1).
|
||||
- T. Belytschko, J. I. Lin. *A three-dimensional impact-penetration algorithm with erosion.* Int. J. Impact Eng. 5:111–127, 1987. DOI [10.1016/0734-743X(87)90033-9](https://doi.org/10.1016/0734-743X(87)90033-9).
|
||||
- **Method.** Delete an element when a criterion is met (damage D = 1, effective plastic strain, minimum Δt); keep its
|
||||
nodal mass and momentum (optionally as free particles); rebuild the exposed contact surface so the projectile keeps
|
||||
contacting interior faces.
|
||||
- **Limits.** Not mass/energy conservative unless the eroded energy is accounted for (report it); results depend on
|
||||
the erosion threshold. Contact surface update is the hard part.
|
||||
- **Complexity.** Low for deletion, moderate for the surface update.
|
||||
|
||||
### A8. Artificial bulk viscosity and shock capturing
|
||||
|
||||
**A8.1 von Neumann & Richtmyer 1950.** **Verdict: build on.**
|
||||
- **Citation.** J. von Neumann, R. D. Richtmyer. *A Method for the Numerical Calculation of Hydrodynamic Shocks.* J. Appl. Phys. 21(3):232–237, 1950. DOI [10.1063/1.1699639](https://doi.org/10.1063/1.1699639).
|
||||
- **Method.** Add a pressure `q` (only in compression) quadratic in the velocity jump across the element, spreading
|
||||
shocks over a few elements so the Rankine–Hugoniot jump is reached without oscillation.
|
||||
|
||||
**A8.2 Wilkins 1980, artificial viscosity in multidimensions.** **Verdict: build on.**
|
||||
- **Citation.** M. L. Wilkins. *Use of artificial viscosity in multidimensional fluid dynamic calculations.* J. Comput. Phys. 36(3):281–303, 1980. DOI [10.1016/0021-9991(80)90161-8](https://doi.org/10.1016/0021-9991(80)90161-8).
|
||||
- **Method.** The combined form used by explicit FE codes: `q = ρ L (C_q L (ε̇_kk)² − C_l c ε̇_kk)` for `ε̇_kk < 0`,
|
||||
with a quadratic (C_q ≈ 1.5) and a linear (C_l ≈ 0.06) term; the stable step becomes
|
||||
`Δt = L / (Q + √(Q² + c²))`, `Q = C_l c + C_q L |ε̇_kk|`. Default on in every explicit solid element: without it,
|
||||
impact runs ring.
|
||||
- **Limits.** Smears shocks over 3–4 elements; spurious heating in shockless compression (wall heating, see Noh).
|
||||
|
||||
**A8.3 Caramana, Shashkov, Whalen 1998.** **Verdict: reference (later, for hydro).**
|
||||
- **Citation.** JCP 144(1):70–97, 1998. DOI [10.1006/jcph.1998.5989](https://doi.org/10.1006/jcph.1998.5989).
|
||||
- **Method.** Edge-based tensor viscosity with limiters for multidimensional Lagrangian hydro; avoids spurious
|
||||
viscosity in uniform compression and preserves symmetry.
|
||||
- **Code.** Laghos (BSD-2) has related high-order viscosities: READ OK.
|
||||
|
||||
### A9. Hydrocode references
|
||||
|
||||
**A9.1 Wilkins, *Computer Simulation of Dynamic Phenomena*, Springer 1999.** **Verdict: build on (hydro side of the explicit solver).**
|
||||
- **Links.** DOI [10.1007/978-3-662-03885-7](https://doi.org/10.1007/978-3-662-03885-7).
|
||||
- **Method.** The HEMP lineage: staggered Lagrangian grid, the stress/energy update order, artificial viscosity,
|
||||
elastic–plastic flow with a pressure from an EOS and a deviator from a hypoelastic law with radial return, energy
|
||||
equation coupling, programmed-burn detonation, sliding interfaces; with many worked impact problems.
|
||||
- **Complexity.** Moderate, and the order of operations is exactly what the explicit step needs.
|
||||
|
||||
**A9.2 Benson 1992, Lagrangian and Eulerian hydrocodes.** **Verdict: build on (survey and design reference).**
|
||||
- **Citation.** D. J. Benson. *Computational methods in Lagrangian and Eulerian hydrocodes.* CMAME 99(2–3):235–394, 1992. DOI [10.1016/0045-7825(92)90042-I](https://doi.org/10.1016/0045-7825(92)90042-I).
|
||||
- **Method.** 160-page survey: Lagrangian step, artificial viscosity, EOS coupling and the energy update, Eulerian and
|
||||
ALE advection (operator split: Lagrangian step then remap), mixed-material cells, interface reconstruction.
|
||||
- **Use.** The map for whether and how to add ALE/Eulerian multi-material (blast, fluids with EOS). Read before
|
||||
designing anything Eulerian.
|
||||
|
||||
**A9.3 Benson 1989, simple ALE.** **Verdict: reference (later).** CMAME 72(3):305–350, 1989. DOI [10.1016/0045-7825(89)90003-0](https://doi.org/10.1016/0045-7825(89)90003-0). An operator-split ALE added to a Lagrangian FE code with a donor-cell/van Leer advection pass.
|
||||
|
||||
### A10. Verification problems (analytic or published experimental, no commercial results)
|
||||
|
||||
| Case | Reference | Expected value |
|
||||
|---|---|---|
|
||||
| Elastic wave in a bar (step load on a free or fixed end) | d'Alembert; A1.1 book | Wave front at `x = c t`, `c = √(E/ρ)` (rod) or `√((λ+2μ)/ρ)` (constrained); stress `σ = ρ c v`; reflection doubling at a fixed end. Measures dispersion/overshoot of the element and q. |
|
||||
| Elastic bar impact on a rigid wall | Hughes et al. 1976 | Contact duration `2L/c`, release velocity equal and opposite (energy conserved). |
|
||||
| Patch test, rigid rotation | A2.1, A4.3 | Constant strain reproduced; zero stress after a 90° rigid rotation. |
|
||||
| Simple shear, hypoelastic | Dienes 1979 | Closed-form shear stress for Jaumann (oscillating) and Green–Naghdi rates. |
|
||||
| Uniaxial J2 / Johnson–Cook at constant rate | A4.1, A6.1 | Closed-form flow curve from the model's own equations. |
|
||||
| Cantilever free vibration | Euler–Bernoulli / M6 modal solver | Period from the analytic first frequency; cross-check with the implicit modal solver. |
|
||||
| Energy balance | A1.1 | `KE + IE + hourglass + contact + eroded − W_ext` constant within 1%. |
|
||||
| Taylor bar impact | G. I. Taylor 1948, Proc. R. Soc. A 194:289–299, DOI [10.1098/rspa.1948.0081](https://doi.org/10.1098/rspa.1948.0081); M. L. Wilkins, M. W. Guinan 1973, J. Appl. Phys. 44(3):1200–1206, DOI [10.1063/1.1662328](https://doi.org/10.1063/1.1662328) | Taylor's 1D estimate is analytic (final length ratio vs ρv²/σ_y). Wilkins–Guinan experimental final lengths are published experiments: allowed by the "no commercial data" rule, but **owner decision** whether experiment-derived expected values may enter the reference suite. |
|
||||
| Sod, Noh, Sedov (hydro) | Sod 1978 JCP 27(1):1–31, DOI [10.1016/0021-9991(78)90023-2](https://doi.org/10.1016/0021-9991(78)90023-2); Noh 1987 JCP 72(1):78–120, DOI [10.1016/0021-9991(87)90074-X](https://doi.org/10.1016/0021-9991(87)90074-X) | Exact Riemann solution; Noh's exact post-shock density 64 (spherical, γ=5/3); Sedov self-similar solution. Tests q and EOS coupling. |
|
||||
|
||||
---
|
||||
|
||||
## Part B: Equations of state
|
||||
|
||||
All EOS models below give pressure `p(ρ, e)` (e: specific internal energy, or energy per reference volume E);
|
||||
the deviatoric stress comes from the strength model (A4/A6). Every EOS in the solver needs: finite-input checks,
|
||||
the sound speed `c² = (∂p/∂ρ)_s = (∂p/∂ρ)_e + (p/ρ²)(∂p/∂e)_ρ` (for Δt and q), a tension cut-off, and a guard on
|
||||
compression singularities.
|
||||
|
||||
**B1. Mie–Grüneisen with a linear Us–up Hugoniot.** **Verdict: build on.**
|
||||
- **Citations.**
|
||||
- R. G. McQueen, S. P. Marsh, J. W. Taylor, J. N. Fritz, W. J. Carter. *The equation of state of solids from shock wave studies.* In *High-Velocity Impact Phenomena* (R. Kinslow, ed.), Academic Press 1970, 293–417. DOI [10.1016/B978-0-12-408950-1.50012-4](https://doi.org/10.1016/B978-0-12-408950-1.50012-4).
|
||||
- M. A. Meyers. *Dynamic Behavior of Materials.* Wiley 1994. DOI [10.1002/9780470172278](https://doi.org/10.1002/9780470172278). (Textbook derivation of Rankine–Hugoniot and Mie–Grüneisen.)
|
||||
- **Method.** The Hugoniot `U_s = c_0 + s u_p` and Rankine–Hugoniot give, with `η = 1 − ρ_0/ρ`,
|
||||
`p_H = ρ_0 c_0² η / (1 − s η)²` and `e_H = p_H η / (2ρ_0)`; off the Hugoniot,
|
||||
`p = p_H + Γ ρ (e − e_H)` with `Γ ρ = Γ_0 ρ_0` (or `Γ = Γ_0 + a η`). Quadratic/cubic Hugoniot fits extend it.
|
||||
- **Solves.** Metals and water/polymers under shock (impact, penetration, underwater explosion water).
|
||||
- **Limits.** Singular at `η = 1/s` (guard: error or cap, never NaN); tension branch needs a separate form (linear
|
||||
`p = ρ_0 c_0² η`) and a spall cut-off; invalid near phase transitions and in expansion to vapour.
|
||||
- **Complexity.** Low.
|
||||
|
||||
**B2. JWL for detonation products.** **Verdict: build on.**
|
||||
- **Citations.**
|
||||
- E. L. Lee, H. C. Hornig, J. W. Kury. *Adiabatic Expansion of High Explosive Detonation Products.* LLNL report UCRL-50422, 1968. DOI [10.2172/4783904](https://doi.org/10.2172/4783904) (OSTI).
|
||||
- B. M. Dobratz. *LLNL explosives handbook: properties of chemical explosives and explosive simulants.* UCRL-52997, 1981. DOI [10.2172/6530310](https://doi.org/10.2172/6530310) (published JWL parameter sets).
|
||||
- **Method.** `p = A(1 − ω/(R_1 V)) e^{−R_1 V} + B(1 − ω/(R_2 V)) e^{−R_2 V} + ω E / V`, V = relative volume, E =
|
||||
energy per initial volume; fitted to cylinder-test expansion. Used with programmed burn: each element's lighting
|
||||
time = distance from the detonation point / detonation speed D, a burn fraction ramps the pressure in
|
||||
(Wilkins A9.1 describes this).
|
||||
- **Solves.** High-explosive products; with B1 water, underwater explosion; with an Eulerian/ALE or SPH carrier, blast.
|
||||
- **Limits.** Programmed burn ignores shock initiation and shadowing (needs a ray/eikonal lighting time around
|
||||
obstacles); in a Lagrangian mesh the products' expansion tangles the mesh quickly, so practical blast needs
|
||||
ALE/Eulerian (A9.2/A9.3) or SPH (E2).
|
||||
- **Complexity.** Low for the EOS; programmed burn moderate.
|
||||
|
||||
**B3. Ideal gas / gamma law, polynomial, stiffened gas.** **Verdict: build on.**
|
||||
- Ideal gas `p = (γ − 1) ρ e`. Linear polynomial `p = C_0 + C_1 μ + C_2 μ² + C_3 μ³ + (C_4 + C_5 μ + C_6 μ²) E`,
|
||||
`μ = ρ/ρ_0 − 1` (a general form that contains ideal gas and linear elastic as special cases; a hydrocode
|
||||
convention, described in A9.2 — write our own description). Stiffened gas `p = (γ − 1) ρ e − γ p_∞`:
|
||||
O. Le Métayer, J. Massoni, R. Saurel, Int. J. Therm. Sci. 43(3):265–276, 2004, DOI [10.1016/j.ijthermalsci.2003.09.002](https://doi.org/10.1016/j.ijthermalsci.2003.09.002) (French title in Crossref).
|
||||
- **Limits.** Polynomial may give negative sound speed in tension for arbitrary coefficients: validate c² > 0 over the
|
||||
admissible range at model check time.
|
||||
- **Complexity.** Trivial.
|
||||
|
||||
**B4. Tabulated EOS.** **Verdict: build on (simple bilinear table), reference (SESAME-class).**
|
||||
- **Method.** `p(ρ, e)` (or `p(ρ, T)`, `e(ρ, T)`) on a rectilinear grid with bilinear or monotone bicubic
|
||||
interpolation; for a 1D compaction table `p(ε_v)` with unloading slopes (porous materials, soils).
|
||||
- **Limits.** Thermodynamic consistency (positive c², convexity) is not guaranteed by the user's table: check at
|
||||
model-check time and report the bad cells. The LANL SESAME tables carry their own distribution terms: do not
|
||||
bundle any.
|
||||
- **Reference.** R. Menikoff, B. J. Plohr. *The Riemann problem for fluid flow of real materials.* Rev. Mod. Phys. 61(1):75–130, 1989. DOI [10.1103/RevModPhys.61.75](https://doi.org/10.1103/RevModPhys.61.75) — convexity (fundamental derivative) conditions an EOS must meet for well-posed shocks.
|
||||
|
||||
**B5. Tillotson.** **Verdict: reference (later; for hypervelocity impact).**
|
||||
- **Citations.**
|
||||
- J. H. Tillotson. *Metallic equations of state for hypervelocity impact.* General Atomic report GA-3216, 1962. **(unverified: no DOI or OSTI record found by API search)**.
|
||||
- A. L. Brundage. *Implementation of Tillotson Equation of State for Hypervelocity Impact of Metals, Geologic Materials, and Liquids.* Procedia Eng. 58:461–470, 2013. DOI [10.1016/j.proeng.2013.05.053](https://doi.org/10.1016/j.proeng.2013.05.053).
|
||||
- **Method.** Separate forms for compressed, cold-expanded and hot-expanded (vapour) states with an interpolation
|
||||
region between incipient and complete vaporisation energies.
|
||||
- **Limits.** The region switch is discontinuous in published forms; Brundage documents the fix. Needed only for
|
||||
hypervelocity (> ~5 km/s) work.
|
||||
- **Complexity.** Low–moderate.
|
||||
|
||||
**B6. Energy equation coupling and pressure–energy iteration.** **Verdict: build on (A9.1, A9.2).**
|
||||
- **Method.** Per element, per step: `e^{n+1} = e^n − ((p^{n+1} + p^n)/2 + q) ΔV/m + (deviatoric work)/m`. Since
|
||||
`p^{n+1}` depends on `e^{n+1}`, the update is implicit. For EOS linear in energy (`p = f(ρ) + g(ρ) e`: ideal gas,
|
||||
polynomial, Mie–Grüneisen, JWL) it is solved in closed form; for tabulated or Tillotson, a bounded scalar
|
||||
fixed-point or Newton iteration (≤ 10 iterations, report non-convergence).
|
||||
- **Limits.** Energy conservation of the whole scheme depends on using the same ΔV for work and volume change, and on
|
||||
adding q-work to e (shock heating).
|
||||
|
||||
**B7. Shock capturing.** Lagrangian explicit captures shocks with artificial viscosity (A8). Godunov/Riemann-solver
|
||||
shock capturing belongs to Eulerian finite volume (E1); not needed for the Lagrangian solver.
|
||||
|
||||
---
|
||||
|
||||
## Part C: Lattice Boltzmann method
|
||||
|
||||
### C1. Foundations
|
||||
|
||||
**C1.1 Chen & Doolen 1998.** **Verdict: reference (orientation).**
|
||||
- **Citation.** S. Chen, G. D. Doolen. *Lattice Boltzmann method for fluid flows.* Annu. Rev. Fluid Mech. 30:329–364, 1998. DOI [10.1146/annurev.fluid.30.1.329](https://doi.org/10.1146/annurev.fluid.30.1.329).
|
||||
- **Method.** Review: from lattice-gas automata to BGK LBM, Chapman–Enskog recovery of Navier–Stokes, boundary
|
||||
conditions, multiphase and thermal extensions.
|
||||
|
||||
**C1.2 Krüger, Kusumaatmaja, Kuzmin, Shardt, Silva, Viggen. *The Lattice Boltzmann Method: Principles and Practice*, Springer 2017.** **Verdict: build on (the spine of the LBM solver).**
|
||||
- **Links.** DOI [10.1007/978-3-319-44649-3](https://doi.org/10.1007/978-3-319-44649-3).
|
||||
- **Content used.** Velocity sets (D2Q9, D3Q15/19/27) and equilibria; Chapman–Enskog; unit conversion and the choice
|
||||
of lattice parameters; stream-collide algorithm; BGK, TRT and MRT; bounce-back, interpolated bounce-back, Zou–He
|
||||
and other boundary conditions; forces (Guo); stability and accuracy analysis; sound waves. The book has
|
||||
companion example code on its site: **licence not checked — do not open until checked**.
|
||||
- **Method in one line.** `f_i(x + c_i Δt, t + Δt) = f_i(x, t) + Ω_i(f)`; density and momentum are moments of f;
|
||||
viscosity `ν = c_s² (τ − ½) Δt` with `c_s² = 1/3` in lattice units.
|
||||
- **Limits** (general, LBM): weakly compressible — the error is O(Ma²), so lattice velocity `u_lat ≲ 0.1`
|
||||
(Ma ≲ 0.17); `τ → ½` (high Re on a coarse grid) destabilises BGK; uniform Cartesian grid, so curved walls are
|
||||
staircased unless interpolated BCs are used; acoustic time step `Δt ∝ Δx` (acoustic scaling) or `∝ Δx²`
|
||||
(diffusive scaling) makes incompressible low-speed flows costly.
|
||||
- **Complexity.** BGK D3Q19 with bounce-back on a uniform grid: ≈1k lines. Everything production-grade (refinement,
|
||||
turbulence, BCs, GPU) is the real work.
|
||||
|
||||
**C1.3 Bhatnagar, Gross, Krook 1954; Qian, d'Humières, Lallemand 1992.** **Verdict: build on (BGK as the first collision).**
|
||||
- P. L. Bhatnagar, E. P. Gross, M. Krook. Phys. Rev. 94(3):511–525, 1954. DOI [10.1103/PhysRev.94.511](https://doi.org/10.1103/PhysRev.94.511).
|
||||
- Y. H. Qian, D. d'Humières, P. Lallemand. *Lattice BGK Models for Navier-Stokes Equation.* EPL 17(6):479, 1992. DOI [10.1209/0295-5075/17/6/001](https://doi.org/10.1209/0295-5075/17/6/001).
|
||||
- **Method.** Single relaxation toward a second-order Hermite equilibrium; the DnQm lattices.
|
||||
- **Limits.** Viscosity-dependent wall location with bounce-back; unstable at low viscosity.
|
||||
|
||||
**C1.4 He & Luo 1997, incompressible LBM.** **Verdict: reference.** J. Stat. Phys. 88:927–944, 1997. DOI [10.1023/B:JOSS.0000015179.12689.e4](https://doi.org/10.1023/B:JOSS.0000015179.12689.e4). An equilibrium that removes O(Ma²) compressibility error in steady flows; useful for steady validation.
|
||||
|
||||
**C1.5 Sterling & Chen 1996; Lallemand & Luo 2000 — stability.** **Verdict: reference.**
|
||||
- J. D. Sterling, S. Chen. *Stability Analysis of Lattice Boltzmann Methods.* JCP 123(1):196–206, 1996. DOI [10.1006/jcph.1996.0016](https://doi.org/10.1006/jcph.1996.0016).
|
||||
- P. Lallemand, L.-S. Luo. *Theory of the lattice Boltzmann method: Dispersion, dissipation, isotropy, Galilean invariance, and stability.* PRE 61:6546–6562, 2000. DOI [10.1103/PhysRevE.61.6546](https://doi.org/10.1103/PhysRevE.61.6546).
|
||||
- **Use.** Linear stability (von Neumann) analysis of BGK/MRT; the source for the stable (u, τ) region and the case for MRT.
|
||||
|
||||
**C1.6 Guo, Zheng, Shi 2002, forcing.** **Verdict: build on.** PRE 65:046308, 2002. DOI [10.1103/PhysRevE.65.046308](https://doi.org/10.1103/PhysRevE.65.046308). The second-order body-force scheme every IB-LBM coupling (D2) needs.
|
||||
|
||||
### C2. Collision operators
|
||||
|
||||
**C2.1 d'Humières et al. 2002, MRT in 3D.** **Verdict: build on (second collision).**
|
||||
- **Citation.** D. d'Humières, I. Ginzburg, M. Krafczyk, P. Lallemand, L.-S. Luo. *Multiple-relaxation-time lattice Boltzmann models in three dimensions.* Phil. Trans. R. Soc. A 360(1792):437–451, 2002. DOI [10.1098/rsta.2001.0955](https://doi.org/10.1098/rsta.2001.0955).
|
||||
- **Method.** Collide in moment space with a separate relaxation rate per moment group (D3Q15/D3Q19 matrices given);
|
||||
free rates damp non-hydrodynamic modes, raising stability and fixing the wall location.
|
||||
- **Limits.** Still loses stability at very high Re; parameters need care.
|
||||
- **Complexity.** Low–moderate (a constant 19×19 transform).
|
||||
|
||||
**C2.2 Ginzburg, Verhaeghe, d'Humières 2008, TRT.** **Verdict: build on (default over BGK).**
|
||||
- **Citation.** Commun. Comput. Phys. 3(2):427–478, 2008. DOI [10.4208/cicp.2008.v3.p427](https://doi.org/10.4208/cicp.2008.v3.p427).
|
||||
- **Method.** Two relaxation rates (symmetric/antisymmetric parts); the "magic parameter" Λ = 3/16 puts the
|
||||
bounce-back wall exactly halfway and makes the solution viscosity-independent in steady flow. BGK cost, much of
|
||||
MRT's benefit.
|
||||
- **Complexity.** Low.
|
||||
|
||||
**C2.3 Geier et al. 2015, cumulant LBM.** **Verdict: build on (high-Re collision, D3Q27).**
|
||||
- **Citations.**
|
||||
- M. Geier, M. Schönherr, A. Pasquali, M. Krafczyk. *The cumulant lattice Boltzmann equation in three dimensions: Theory and validation.* Comput. Math. Appl. 70(4):507–547, 2015. DOI [10.1016/j.camwa.2015.05.001](https://doi.org/10.1016/j.camwa.2015.05.001).
|
||||
- M. Geier, A. Pasquali, M. Schönherr. *Parametrization of the cumulant lattice Boltzmann method for fourth order accurate diffusion part I.* JCP 348:862–888, 2017. DOI [10.1016/j.jcp.2017.05.040](https://doi.org/10.1016/j.jcp.2017.05.040).
|
||||
- **Method.** Relax statistically independent cumulants (computed via a central-moment chain transform on D3Q27);
|
||||
Galilean invariant and very stable; the 2017 parametrisation chooses the free rates so the scheme is fourth-order
|
||||
accurate in diffusion, and acts as an implicit LES at high Re without an explicit sub-grid model.
|
||||
- **Limits.** D3Q27 (27 populations: ≈40% more memory and bandwidth than D3Q19); the transform is long (hundreds of
|
||||
flops) but bandwidth, not flops, limits LBM; a limiter is needed for under-resolved flows.
|
||||
- **Complexity.** Moderate–high (careful transcription of the transforms; test each against the moment definitions).
|
||||
- **Code.** VirtualFluids and lbmpy implement it: both GPL-3.0, FORBIDDEN. Implement from the paper.
|
||||
|
||||
**C2.4 Regularised and recursive-regularised collision.** **Verdict: build on (alternative to cumulant; compare).**
|
||||
- **Citations.**
|
||||
- J. Latt, B. Chopard. *Lattice Boltzmann method with regularized pre-collision distribution functions.* Math. Comput. Simul. 72(2–6):165–168, 2006. DOI [10.1016/j.matcom.2006.05.017](https://doi.org/10.1016/j.matcom.2006.05.017).
|
||||
- O. Malaspinas. *Increasing stability and accuracy of the lattice Boltzmann scheme: recursivity and regularization.* arXiv:1505.06900, 2015. https://arxiv.org/abs/1505.06900 (200).
|
||||
- C. Coreixas, G. Wissocq, G. Puigt, J.-F. Boussuge, P. Sagaut. *Recursive regularization step for high-order lattice Boltzmann methods.* PRE 96:033306, 2017. DOI [10.1103/PhysRevE.96.033306](https://doi.org/10.1103/PhysRevE.96.033306).
|
||||
- C. Coreixas, B. Chopard, J. Latt. *Comprehensive comparison of collision models in the lattice Boltzmann framework: Theory and investigations.* PRE 100:033305, 2019. DOI [10.1103/PhysRevE.100.033305](https://doi.org/10.1103/PhysRevE.100.033305).
|
||||
- **Method.** Before collision, project the non-equilibrium part onto its second-order Hermite component (regularised),
|
||||
or reconstruct higher-order Hermite coefficients recursively from it (recursive regularised): filters the ghost modes
|
||||
that destabilise BGK. Coreixas 2019 compares BGK, MRT (raw/central/Hermite moments), cumulant, regularised and
|
||||
recursive-regularised on the same linear stability and benchmark cases — **the paper to pick the operator with**.
|
||||
- **Limits.** Regularised adds numerical dissipation; RR is near-cumulant in stability on D3Q19/27.
|
||||
- **Code.** STLBM (MIT) has BGK/TRT/regularised kernels: READ OK.
|
||||
|
||||
**C2.5 Velocity sets.** D3Q19 for laminar and moderate Re (cheapest isotropic-enough set); D3Q27 for cumulant and
|
||||
wall-bounded turbulence. Kang & Hassan 2013 show D3Q19 artefacts in wall-bounded turbulence: S. K. Kang, Y. A. Hassan,
|
||||
JCP 232(1):100–117, 2013, DOI [10.1016/j.jcp.2012.07.023](https://doi.org/10.1016/j.jcp.2012.07.023). **Verdict: reference.**
|
||||
|
||||
### C3. Boundary conditions
|
||||
|
||||
**C3.1 Bounce-back; Ladd 1994 moving walls.** **Verdict: build on.**
|
||||
- A. J. C. Ladd. *Numerical simulations of particulate suspensions via a discretized Boltzmann equation. Part 1.* JFM 271:285–309, 1994. DOI [10.1017/S0022112094001771](https://doi.org/10.1017/S0022112094001771).
|
||||
- **Method.** Halfway bounce-back reflects populations crossing a wall link: second-order for a wall halfway between
|
||||
nodes, staircase otherwise. Ladd adds the moving-wall momentum term (`−2 w_i ρ c_i·u_w / c_s²`) and the
|
||||
momentum-exchange force on the body, which is how LBM computes drag/lift and FSI loads with bounce-back.
|
||||
- **Complexity.** Low.
|
||||
|
||||
**C3.2 Bouzidi, Firdaouss, Lallemand 2001, interpolated bounce-back.** **Verdict: build on.**
|
||||
- **Citation.** Phys. Fluids 13(11):3452–3459, 2001. DOI [10.1063/1.1399290](https://doi.org/10.1063/1.1399290).
|
||||
- **Method.** For each wall link, the fraction q ∈ (0, 1] of the link inside the fluid; linear or quadratic
|
||||
interpolation of the reflected population, second-order for curved walls.
|
||||
- **Needs from meshing.** q comes from ray–triangle intersection of the lattice link with the face-tagged boundary
|
||||
surface — robust predicates (modelcraft-mesh) give the inside/outside decision; q itself is a constructed value.
|
||||
- **Limits.** Not mass conservative; small q (< ~0.01) can destabilise: treat as q = 0 or use the Mei variant.
|
||||
- **Also.** R. Mei, L.-S. Luo, W. Shyy, JCP 155(2):307–330, 1999, DOI [10.1006/jcph.1999.6334](https://doi.org/10.1006/jcph.1999.6334) — the alternative curved-boundary scheme. **Reference.**
|
||||
|
||||
**C3.3 Zou & He 1997, pressure and velocity BCs.** **Verdict: build on (inlet/outlet).**
|
||||
- **Citation.** Phys. Fluids 9(6):1591–1598, 1997. DOI [10.1063/1.869307](https://doi.org/10.1063/1.869307).
|
||||
- **Method.** Unknown incoming populations from the prescribed velocity (or density) plus bounce-back of the
|
||||
non-equilibrium part normal to the boundary.
|
||||
- **Limits.** Defined for flat, axis-aligned boundaries; corners need special treatment; unstable at high Re outlets —
|
||||
use regularised or convective/sponge outlets there.
|
||||
|
||||
### C4. Grid refinement
|
||||
|
||||
**C4.1 Filippova & Hänel 1998; Dupuis & Chopard 2003.** **Verdict: build on (Dupuis–Chopard cell-vertex refinement).**
|
||||
- O. Filippova, D. Hänel. *Grid Refinement for Lattice-BGK Models.* JCP 147(1):219–228, 1998. DOI [10.1006/jcph.1998.6089](https://doi.org/10.1006/jcph.1998.6089).
|
||||
- A. Dupuis, B. Chopard. *Theory and applications of an alternative lattice Boltzmann grid refinement algorithm.* PRE 67:066707, 2003. DOI [10.1103/PhysRevE.67.066707](https://doi.org/10.1103/PhysRevE.67.066707).
|
||||
- **Method.** Nested grids at ratio 2 with time-step ratio 2 (acoustic scaling); τ rescaled per level to keep ν;
|
||||
populations at the interface are rescaled non-equilibrium parts with spatial and temporal interpolation from the
|
||||
coarse level.
|
||||
- **Limits.** Interface artefacts (spurious acoustic reflections); mass conservation not exact in the vertex scheme.
|
||||
|
||||
**C4.2 Rohde et al. 2006, mass-conservative cell-centred refinement.** **Verdict: build on (with the octree).**
|
||||
- **Citation.** M. Rohde, D. Kandhai, J. J. Derksen, H. E. A. van den Akker. *A generic, mass conservative local grid refinement technique for lattice-Boltzmann schemes.* IJNMF 51(4):439–468, 2006. DOI [10.1002/fld.1140](https://doi.org/10.1002/fld.1140).
|
||||
- **Method.** Volumetric (cell-centred) formulation: a coarse cell is split into 8 fine cells, populations are
|
||||
distributed homogeneously (explode) and gathered (coalesce) across levels; exactly mass conservative and naturally
|
||||
fits an octree with 2:1 balance.
|
||||
- **Fit.** The M3 octree (2:1-balanced, adapted to the surface) is the same data structure. Reuse it.
|
||||
|
||||
**C4.3 Lagrava et al. 2012.** **Verdict: reference.** JCP 231(14):4808–4822, 2012. DOI [10.1016/j.jcp.2012.03.015](https://doi.org/10.1016/j.jcp.2012.03.015). Multi-domain refinement with filtering of the coarse-to-fine transfer (the Palabos approach; the paper is fine to read, the code is AGPL).
|
||||
|
||||
### C5. Turbulence
|
||||
|
||||
**C5.1 Smagorinsky LES in LBM: Smagorinsky 1963; Hou et al. 1995; Krafczyk, Tölke, Luo 2003.** **Verdict: build on.**
|
||||
- J. Smagorinsky. Mon. Weather Rev. 91(3):99–164, 1963. DOI [10.1175/1520-0493(1963)091<0099:GCEWTP>2.3.CO;2](https://doi.org/10.1175/1520-0493(1963)091%3C0099:GCEWTP%3E2.3.CO;2).
|
||||
- S. Hou, J. Sterling, S. Chen, G. D. Doolen. *A lattice Boltzmann subgrid model for high Reynolds number flows.* Fields Inst. Commun. 6:151–166, 1996 (Crossref year 1995). DOI [10.1090/fic/006/12](https://doi.org/10.1090/fic/006/12).
|
||||
- M. Krafczyk, J. Tölke, L.-S. Luo. *Large-eddy simulations with a multiple-relaxation-time LBE model.* Int. J. Mod. Phys. B 17:33–39, 2003. DOI [10.1142/S0217979203017059](https://doi.org/10.1142/S0217979203017059).
|
||||
- **Method.** The strain rate is local in LBM (from the non-equilibrium second moment), so `ν_t = (C_s Δ)² |S|` is
|
||||
computed without finite differences and enters as a local τ. Cheap and local.
|
||||
- **Limits.** Smagorinsky is over-dissipative near walls (needs damping or a wall model) and in transition.
|
||||
|
||||
**C5.2 Malaspinas & Sagaut 2012, 2014 — consistent SGS and wall models.** **Verdict: reference (wall model later).**
|
||||
- *Consistent subgrid scale modelling for lattice Boltzmann methods.* JFM 700:514–542, 2012. DOI [10.1017/jfm.2012.155](https://doi.org/10.1017/jfm.2012.155).
|
||||
- *Wall model for large-eddy simulation based on the lattice Boltzmann method.* JCP 275:25–40, 2014. DOI [10.1016/j.jcp.2014.06.020](https://doi.org/10.1016/j.jcp.2014.06.020).
|
||||
- **Method.** Derives the SGS closure consistently from the filtered LB equation; the wall model imposes a log-law
|
||||
(Musker profile) wall shear stress through a regularised BC at the first off-wall node.
|
||||
- **Use.** Wall-modelled LES is what makes industrial-Re external flow tractable; it comes after laminar validation.
|
||||
|
||||
### C6. Memory layouts and GPU
|
||||
|
||||
**C6.1 Bailey et al. 2009, AA pattern.** **Verdict: build on.**
|
||||
- **Citation.** P. Bailey, J. Myre, S. D. C. Walsh, D. J. Lilja, M. O. Saar. *Accelerating Lattice Boltzmann Fluid Flow Simulations Using Graphics Processors.* ICPP 2009, 550–557. DOI [10.1109/ICPP.2009.38](https://doi.org/10.1109/ICPP.2009.38).
|
||||
- **Method.** One population array updated in place by alternating two kernels (even step: read/write own cell
|
||||
reversed; odd step: read/write neighbours), halving memory against the two-array (A–B) scheme with no extra traffic.
|
||||
- **Limits.** Even/odd steps have different index maps; boundaries must be written for both.
|
||||
|
||||
**C6.2 Geier & Schönherr 2017, esoteric twist.** **Verdict: reference (alternative to AA).**
|
||||
- **Citation.** *Esoteric Twist: An Efficient in-Place Streaming Algorithmus for the Lattice Boltzmann Method on Massively Parallel Hardware.* Computation 5(2):19, 2017. DOI [10.3390/computation5020019](https://doi.org/10.3390/computation5020019).
|
||||
- **Method.** In-place streaming with a single kernel by storing populations at "twisted" locations (each cell owns
|
||||
the populations pointing in negative directions of itself and its neighbours), with pointer swaps instead of
|
||||
alternating kernels; works on sparse/block grids.
|
||||
- **Also.** Lehmann 2022, *Esoteric Pull and Esoteric Push*, Computation 10(6):92, DOI [10.3390/computation10060092](https://doi.org/10.3390/computation10060092): simpler variants. The paper is open access and readable; its author's code (FluidX3D) is non-commercial: FORBIDDEN.
|
||||
- Wittmann et al. 2013, *Comparison of different propagation steps for lattice Boltzmann methods*, Comput. Math. Appl. 65(6):924–935, DOI [10.1016/j.camwa.2012.05.002](https://doi.org/10.1016/j.camwa.2012.05.002): measured comparison of A–B, AA, esoteric twist and others on CPUs. **Reference.**
|
||||
|
||||
**C6.3 Tölke & Krafczyk 2008; Latt et al. 2021.** **Verdict: reference.**
|
||||
- J. Tölke, M. Krafczyk. *TeraFLOP computing on a desktop PC with GPUs for 3D CFD.* Int. J. Comput. Fluid Dyn. 22(7):443–456, 2008. DOI [10.1080/10618560802238275](https://doi.org/10.1080/10618560802238275). (DOI resolves; publisher page 403 to a script.)
|
||||
- J. Latt, C. Coreixas, J. Beny. *Cross-platform programming model for many-core lattice Boltzmann simulations.* PLoS ONE 16(4):e0250306, 2021. DOI [10.1371/journal.pone.0250306](https://doi.org/10.1371/journal.pone.0250306). Code STLBM: MIT, READ OK — the best readable reference for data layouts (AoS vs SoA, AA) with measured performance.
|
||||
- J. Latt et al. *Palabos: Parallel Lattice Boltzmann Solver.* Comput. Math. Appl. 81:334–350, 2021. DOI [10.1016/j.camwa.2020.03.022](https://doi.org/10.1016/j.camwa.2020.03.022). Paper: read for architecture (block-structured multi-block, data processors). Code: AGPL, FORBIDDEN.
|
||||
|
||||
**Cost model.** LBM is memory-bound: a D3Q19 update moves 2 × 19 populations. In f32 that is 152 B/cell/step,
|
||||
so a 500 GB/s GPU tops out near 3 G cell-updates/s and a 50 GB/s CPU near 0.3 G (half in f64). Memory: AA-pattern
|
||||
D3Q19 f32 ≈ 80 B/cell (with flags): 10⁸ cells ≈ 8 GB. These numbers decide the GPU question (E3).
|
||||
|
||||
### C7. Free-surface LBM
|
||||
|
||||
**C7.1 Körner et al. 2005; Thürey 2007; Thürey & Rüde 2009.** **Verdict: reference (a later milestone).**
|
||||
- C. Körner, M. Thies, T. Hofmann, N. Thürey, U. Rüde. *Lattice Boltzmann Model for Free Surface Flow for Modeling Foaming.* J. Stat. Phys. 121:179–196, 2005. DOI [10.1007/s10955-005-8879-8](https://doi.org/10.1007/s10955-005-8879-8).
|
||||
- N. Thürey. *Physically based animation of free surface flows with the lattice Boltzmann method.* PhD thesis, FAU Erlangen-Nürnberg, 2007. PDF https://www10.cs.fau.de/publications/dissertations/Diss_2007-Thuerey.pdf (200, application/pdf; title page not machine-checked).
|
||||
- N. Thürey, U. Rüde. *Stable free surface flows with the lattice Boltzmann method on adaptively coarsened grids.* Comput. Vis. Sci. (Crossref issue year 2008; volume/pages not checked). DOI [10.1007/s00791-008-0090-4](https://doi.org/10.1007/s00791-008-0090-4).
|
||||
- **Method.** Volume-of-fluid-like cell types (fluid, interface, gas) with a fill level; missing populations at the
|
||||
interface reconstructed from the gas pressure; mass exchange through links; cell conversion with flag
|
||||
propagation.
|
||||
- **Solves.** Sloshing, slamming, filling — the FSI cases engineers ask for with water.
|
||||
- **Limits.** Single-phase (gas pressure only); mass loss without care; many special cases in cell conversion.
|
||||
- **Complexity.** High.
|
||||
|
||||
### C8. Validation cases
|
||||
|
||||
| Case | Reference | Expected |
|
||||
|---|---|---|
|
||||
| Poiseuille channel/pipe | analytic | parabolic profile; second-order convergence with halfway BB (TRT magic Λ gives exact steady result) |
|
||||
| Couette, Womersley | analytic | linear profile; Womersley oscillatory solution |
|
||||
| Taylor–Green vortex (decay) | analytic | `exp(−2νk²t)` decay; measures viscosity and order |
|
||||
| Lid-driven cavity Re 100–1000 | U. Ghia, K. N. Ghia, C. T. Shin, JCP 48(3):387–411, 1982, DOI [10.1016/0021-9991(82)90058-4](https://doi.org/10.1016/0021-9991(82)90058-4) | published numerical reference values (not analytic: owner decision, same as Taylor bar) |
|
||||
| Flow past a cylinder 2D-1/2D-2/3D | M. Schäfer, S. Turek, *Benchmark computations of laminar flow around a cylinder*, NNFM 52:547–566, 1996, DOI [10.1007/978-3-322-89849-4_39](https://doi.org/10.1007/978-3-322-89849-4_39); LBM results: J. Geller et al., Comput. Fluids 35:888–897, 2006, DOI [10.1016/j.compfluid.2005.08.009](https://doi.org/10.1016/j.compfluid.2005.08.009) | drag/lift coefficient intervals and Strouhal number given by the benchmark (published numerical reference) |
|
||||
| Sphere Stokes drag | analytic | `F = 6πμRU` (with confinement correction) |
|
||||
|
||||
---
|
||||
|
||||
## Part D: Fluid–structure interaction
|
||||
|
||||
### D1. Immersed boundary
|
||||
|
||||
**D1.1 Peskin 2002.** **Verdict: build on.**
|
||||
- **Citation.** C. S. Peskin. *The immersed boundary method.* Acta Numerica 11:479–517, 2002. DOI [10.1017/S0962492902000077](https://doi.org/10.1017/S0962492902000077).
|
||||
- **Method.** The structure is a Lagrangian set of points on a fixed Eulerian fluid grid; regularised delta functions
|
||||
(2-, 3-, 4-point kernels with stated moment conditions) spread structure forces to the grid and interpolate fluid
|
||||
velocity back. No body-fitted fluid mesh, so arbitrarily large motion is free.
|
||||
- **Limits.** The interface is smeared over ~2 cells (first-order near the wall); force is computed from the
|
||||
structure's constitutive law (classic) which brings a stiff time-step restriction for stiff structures.
|
||||
- **Code.** IBAMR (BSD-3-style): READ OK. IB2d (GPL-3.0): FORBIDDEN.
|
||||
|
||||
**D1.2 Mittal & Iaccarino 2005; Uhlmann 2005.** **Verdict: reference / build on.**
|
||||
- R. Mittal, G. Iaccarino. *Immersed boundary methods.* Annu. Rev. Fluid Mech. 37:239–261, 2005. DOI [10.1146/annurev.fluid.37.061903.175743](https://doi.org/10.1146/annurev.fluid.37.061903.175743). (Review: continuous vs discrete forcing, sharp-interface methods.)
|
||||
- M. Uhlmann. *An immersed boundary method with direct forcing for the simulation of particulate flows.* JCP 209(2):448–476, 2005. DOI [10.1016/j.jcp.2005.03.017](https://doi.org/10.1016/j.jcp.2005.03.017). Direct forcing: the force is whatever makes the interpolated fluid velocity equal the structure velocity, so no stiff spring. **Build on.**
|
||||
|
||||
**D1.3 Feng & Michaelides 2004; Wu & Shu 2009 — IB-LBM.** **Verdict: build on (Wu–Shu).**
|
||||
- Z.-G. Feng, E. E. Michaelides. *The immersed boundary-lattice Boltzmann method for solving fluid–particles interaction problems.* JCP 195(2):602–628, 2004. DOI [10.1016/j.jcp.2003.10.013](https://doi.org/10.1016/j.jcp.2003.10.013).
|
||||
- J. Wu, C. Shu. *Implicit velocity correction-based immersed boundary-lattice Boltzmann method and its applications.* JCP 228(6):1963–1979, 2009. DOI [10.1016/j.jcp.2008.11.019](https://doi.org/10.1016/j.jcp.2008.11.019).
|
||||
- **Method.** Feng–Michaelides: penalty (feedback) forcing in LBM via a body-force term. Wu–Shu: treat the velocity
|
||||
correction at all Lagrangian points implicitly — one small linear system per step (matrix of delta-kernel
|
||||
overlaps) — so the no-slip condition is satisfied exactly at the markers with no penetration.
|
||||
- **Limits.** Wu–Shu solves a dense-ish system in the number of markers each step (factor once for rigid bodies,
|
||||
re-solve for deforming ones; use CG). Smeared interface, so wall shear is first-order.
|
||||
|
||||
**D1.4 Momentum-exchange bounce-back for moving bodies (Ladd C3.1, Bouzidi C3.2)** is the sharp-interface
|
||||
alternative to IB in LBM: cells are uncovered/covered as the body moves (refill rule needed). **Verdict: reference** —
|
||||
IB is simpler with a deforming FE surface; bounce-back is better for rigid or slowly deforming walls.
|
||||
|
||||
### D2. LBM coupled to finite elements
|
||||
|
||||
**D2.1 Kollmannsberger et al. 2009.** **Verdict: reference.** S. Kollmannsberger, S. Geller, A. Düster, J. Tölke, C. Sorger, M. Krafczyk, E. Rank. *Fixed-grid fluid–structure interaction in two dimensions based on a partitioned Lattice Boltzmann and p-FEM approach.* IJNME 79(7):817–845, 2009. DOI [10.1002/nme.2581](https://doi.org/10.1002/nme.2581). Partitioned implicit coupling (structure solved implicitly with high-order p-FEM) with interpolated bounce-back on a fixed LBM grid; includes Turek–Hron-type validation.
|
||||
|
||||
**D2.2 De Rosis et al. 2013/2014.** **Verdict: reference.** A. De Rosis, G. Falcucci, S. Ubertini, F. Ubertini. *A coupled lattice Boltzmann-finite element approach for two-dimensional fluid–structure interaction.* Comput. Fluids 86:558–568, 2013. DOI [10.1016/j.compfluid.2013.08.004](https://doi.org/10.1016/j.compfluid.2013.08.004). Explicit-in-time staggered LBM–FE coupling for flexible plates.
|
||||
|
||||
**D2.3 Li & Favier 2017.** **Verdict: build on (closest to our design).** Z. Li, J. Favier. *A non-staggered coupling of finite element and lattice Boltzmann methods via an immersed boundary scheme for fluid-structure interaction.* Comput. Fluids 143:90–102, 2017. DOI [10.1016/j.compfluid.2016.11.008](https://doi.org/10.1016/j.compfluid.2016.11.008). IB-LBM fluid coupled to a nonlinear FE structure with synchronous time stepping; validated on flexible-flag benchmarks.
|
||||
|
||||
**D2.4 Owen, Leonardi, Feng 2011.** **Verdict: reference.** IJNME 87(1–5):66–95, 2011 (online 2010). DOI [10.1002/nme.2985](https://doi.org/10.1002/nme.2985). LBM with immersed moving boundaries (partial-volume bounce-back) coupled to explicit discrete/finite elements — evidence that explicit structure + LBM with subcycling works.
|
||||
|
||||
### D3. Partitioned coupling and stability
|
||||
|
||||
**D3.1 Causin, Gerbeau, Nobile 2005, added mass.** **Verdict: build on (as the design constraint).**
|
||||
- **Citation.** P. Causin, J.-F. Gerbeau, F. Nobile. *Added-mass effect in the design of partitioned algorithms for fluid–structure problems.* CMAME 194(42–44):4506–4527, 2005. DOI [10.1016/j.cma.2004.12.005](https://doi.org/10.1016/j.cma.2004.12.005).
|
||||
- **Result.** For incompressible flow, explicit (loosely coupled) partitioned schemes are unconditionally unstable when
|
||||
the structure-to-fluid mass ratio falls below a geometry-dependent threshold — and refining Δt makes it *worse*.
|
||||
Strongly coupled (iterated) schemes converge only with relaxation whose required strength grows as the mass ratio
|
||||
drops.
|
||||
- **Consequence.** Light structures in water (membranes, valves, Turek–Hron FSI3 with ρ_s/ρ_f = 1) need strong
|
||||
coupling with IQN (D3.3). Heavy structures (steel plates in water, anything in air) work loosely coupled.
|
||||
- Also: C. Förster, W. A. Wall, E. Ramm, CMAME 196(7):1278–1293, 2007, DOI [10.1016/j.cma.2006.09.002](https://doi.org/10.1016/j.cma.2006.09.002) — the same instability for sequential staggered coupling, and why predictors don't cure it. **Reference.**
|
||||
- Serino, Banks, Henshaw, Schwendeman 2019, *A stable added-mass partitioned (AMP) algorithm for elastic solids and incompressible flow*, JCP 399:108923, DOI [10.1016/j.jcp.2019.108923](https://doi.org/10.1016/j.jcp.2019.108923): Robin-type interface conditions derived from the solid's characteristics give a stable loosely coupled scheme even for light solids. **Reference (research; promising for explicit solids, whose characteristic impedance is cheap).**
|
||||
|
||||
**D3.2 Küttler & Wall 2008, Aitken relaxation.** **Verdict: build on (first strong coupling).**
|
||||
- **Citation.** U. Küttler, W. A. Wall. *Fixed-point fluid–structure interaction solvers with dynamic relaxation.* Comput. Mech. 43:61–72, 2008. DOI [10.1007/s00466-008-0255-5](https://doi.org/10.1007/s00466-008-0255-5).
|
||||
- **Method.** Fixed-point (Dirichlet–Neumann) iteration on the interface displacement with Aitken's Δ² dynamic
|
||||
relaxation factor computed from the last two residuals; also steepest-descent variants.
|
||||
- **Limits.** Convergence degrades with strong added mass; still the cheapest robust starting point.
|
||||
- **Complexity.** Low (≈100 lines).
|
||||
- **Code.** 4C (LGPL-3.0): FORBIDDEN.
|
||||
|
||||
**D3.3 Degroote, Bathe, Vierendeels 2009, IQN-ILS.** **Verdict: build on (production strong coupling).**
|
||||
- **Citation.** J. Degroote, K.-J. Bathe, J. Vierendeels. *Performance of a new partitioned procedure versus a monolithic procedure in fluid–structure interaction.* Comput. Struct. 87(11–12):793–801, 2009. DOI [10.1016/j.compstruc.2008.11.013](https://doi.org/10.1016/j.compstruc.2008.11.013).
|
||||
- **Method.** Interface quasi-Newton with an approximate inverse Jacobian from least squares on the differences of
|
||||
previous residuals and outputs (black-box: needs only the two solvers' input/output); within ~5–10 iterations even
|
||||
for strong added mass; competitive with monolithic.
|
||||
- **Limits.** The least-squares system becomes ill-conditioned as columns accumulate: filter (Haelterman et al. 2016,
|
||||
Comput. Struct. 171:9–17, DOI [10.1016/j.compstruc.2016.04.001](https://doi.org/10.1016/j.compstruc.2016.04.001), **build on**) and reuse columns from earlier steps with care.
|
||||
- **Complexity.** Low–moderate (QR updates on a tall skinny matrix).
|
||||
- **Code.** preCICE (LGPL-3.0) FORBIDDEN; Kratos core (BSD-style) READ OK — check the CoSimulation application's own licence file first.
|
||||
|
||||
**D3.4 Farhat et al. 2010, explicit–explicit staggered for compressible FSI.** **Verdict: reference (the explicit–explicit path).**
|
||||
- **Citation.** C. Farhat, A. Rallu, K. Wang, T. Belytschko. *Robust and provably second-order explicit–explicit and implicit–explicit staggered time-integrators for highly non-linear compressible fluid–structure interaction problems.* IJNME 84(1):73–107, 2010. DOI [10.1002/nme.2883](https://doi.org/10.1002/nme.2883).
|
||||
- **Method.** Staggered schemes with a carefully placed fluid/structure time offset that are second-order and
|
||||
stable for compressible flow + explicit structure (the added-mass problem is far milder for compressible fluids).
|
||||
- **Use.** LBM is a weakly compressible explicit scheme; this is the closest analysis for explicit LBM + explicit FE.
|
||||
|
||||
### D4. ALE
|
||||
|
||||
**D4.1 Donea et al. 2004; Hughes, Liu, Zimmermann 1981.** **Verdict: reference (not first).**
|
||||
- J. Donea, A. Huerta, J.-Ph. Ponthot, A. Rodríguez-Ferran. *Arbitrary Lagrangian–Eulerian methods.* Encyclopedia of Computational Mechanics, Wiley 2004. DOI [10.1002/0470091355.ecm009](https://doi.org/10.1002/0470091355.ecm009).
|
||||
- T. J. R. Hughes, W. K. Liu, T. K. Zimmermann. *Lagrangian-Eulerian finite element formulation for incompressible viscous flows.* CMAME 29(3):329–349, 1981. DOI [10.1016/0045-7825(81)90049-9](https://doi.org/10.1016/0045-7825(81)90049-9).
|
||||
- **Method.** The mesh moves with an arbitrary velocity: Lagrangian at the FSI interface, Eulerian far away, with mesh
|
||||
smoothing and the convective term relative to mesh motion; geometric conservation law.
|
||||
- **Why not first.** LBM is fixed-grid; ALE needs a body-fitted, moving fluid mesh and a FV/FE fluid solver. ALE in the
|
||||
*explicit solver* (A9.3) is a different use (multi-material hydro) and comes after Lagrangian.
|
||||
|
||||
### D5. Interface data transfer
|
||||
|
||||
**D5.1 de Boer, van Zuijlen, Bijl 2007; Farhat, Lesoinne, Le Tallec 1998.** **Verdict: build on.**
|
||||
- A. de Boer, A. H. van Zuijlen, H. Bijl. *Review of coupling methods for non-matching meshes.* CMAME 196(8):1515–1525, 2007. DOI [10.1016/j.cma.2006.03.017](https://doi.org/10.1016/j.cma.2006.03.017).
|
||||
- C. Farhat, M. Lesoinne, P. Le Tallec. *Load and motion transfer algorithms for fluid/structure interaction problems with non-matching discrete interfaces.* CMAME 157(1–2):95–114, 1998. DOI [10.1016/S0045-7825(97)00216-8](https://doi.org/10.1016/S0045-7825(97)00216-8).
|
||||
- **Method.** Nearest neighbour, nearest projection (project each fluid point onto the structural surface and use the
|
||||
element's shape functions), and RBF; conservative transfer: if displacements map with H (`u_f = H u_s`) then forces
|
||||
map with Hᵀ (`f_s = Hᵀ f_f`), which conserves energy over the interface.
|
||||
- **Use.** With IB-LBM the Lagrangian markers *are* the structural surface nodes (or quadrature points of its faces),
|
||||
so mapping reduces to the IB kernel plus Hᵀ. Projection mapping is needed only for body-fitted coupling.
|
||||
|
||||
**D5.2 Beckert & Wendland 2001, RBF.** **Verdict: reference (needed only for non-IB couplings).** Aerosp. Sci. Technol. 5(2):125–134, 2001. DOI [10.1016/S1270-9638(00)01087-7](https://doi.org/10.1016/S1270-9638(00)01087-7). Compactly supported Wendland RBF interpolation for mesh-free interface mapping.
|
||||
|
||||
### D6. Verification
|
||||
|
||||
| Case | Reference | Expected |
|
||||
|---|---|---|
|
||||
| Turek–Hron FSI1/FSI2/FSI3 | S. Turek, J. Hron, *Proposal for numerical benchmarking of fluid-structure interaction between an elastic object and laminar incompressible flow*, in *Fluid-Structure Interaction*, LNCSE 53:371–385, Springer 2006, DOI [10.1007/3-540-34596-5_15](https://doi.org/10.1007/3-540-34596-5_15) | Tip displacement amplitude/frequency, drag/lift (published numerical reference values). FSI1 steady; FSI2 large periodic motion (ρ_s/ρ_f = 10); FSI3 strong added mass (ρ_s/ρ_f = 1) — the IQN test. |
|
||||
| Rigid cylinder in a fluid, added-mass coefficient | potential flow (analytic) | C_a = 1 for a circular cylinder; tests the coupling's inertia, not just loads |
|
||||
| 1D piston / elastic slab on a fluid column | analytic | linear acoustic–structure solution; checks energy conservation of the transfer |
|
||||
| Sphere settling (terminal velocity, Stokes regime) | analytic | `U = 2(ρ_s − ρ_f) g R² / (9μ)` with wall correction |
|
||||
|
||||
---
|
||||
|
||||
## Part E: Alternatives and GPU compute
|
||||
|
||||
**E1. Finite-volume CFD (SIMPLE/PISO).** **Verdict: reference (not first).**
|
||||
- S. V. Patankar, D. B. Spalding. *A calculation procedure for heat, mass and momentum transfer in three-dimensional parabolic flows.* Int. J. Heat Mass Transf. 15(10):1787–1806, 1972. DOI [10.1016/0017-9310(72)90054-3](https://doi.org/10.1016/0017-9310(72)90054-3).
|
||||
- R. I. Issa. *Solution of the implicitly discretised fluid flow equations by operator-splitting.* JCP 62(1):40–65, 1986. DOI [10.1016/0021-9991(86)90099-9](https://doi.org/10.1016/0021-9991(86)90099-9).
|
||||
- C. M. Rhie, W. L. Chow. AIAA J. 21(11):1525–1532, 1983. DOI [10.2514/3.8284](https://doi.org/10.2514/3.8284). (Collocated-grid pressure–velocity coupling.)
|
||||
- J. H. Ferziger, M. Perić, R. L. Street. *Computational Methods for Fluid Dynamics*, 4th ed., Springer 2020. DOI [10.1007/978-3-319-99693-6](https://doi.org/10.1007/978-3-319-99693-6).
|
||||
- **Why LBM first anyway.** FV needs a body-fitted (polyhedral or hex-dominant) fluid mesh, a pressure Poisson solve
|
||||
(algebraic multigrid in pure Rust: real work) and turbulence-model wall functions tuned to y+; its robustness lives
|
||||
in the mesh quality, which is exactly what our meshers will be judged on. LBM needs only a voxel/octree grid from the
|
||||
surface (no fluid volume mesh to fail), is explicit and local (trivially parallel, GPU-friendly, wasm-friendly), and
|
||||
its FSI with IB needs no mesh motion. LBM is the right first fluid solver for incompressible, low-Mach, transient flow
|
||||
around complex geometry. FV is the right choice for steady RANS at high Re, compressible high-Mach flow and heat
|
||||
transfer with conjugate solids, none of which LBM does well. **If wrong:** if owners mostly want steady internal
|
||||
flows with pressure drop at high Re (pipes, manifolds), LBM spends hours of transient time-stepping to reach a steady
|
||||
state that a SIMPLE solver reaches in minutes; that is the trigger to add FV.
|
||||
|
||||
**E2. SPH for fluids and impact.** **Verdict: reference (a later, separate path for fragmentation and blast).**
|
||||
- J. J. Monaghan. *Smoothed particle hydrodynamics.* Rep. Prog. Phys. 68(8):1703–1759, 2005. DOI [10.1088/0034-4885/68/8/R01](https://doi.org/10.1088/0034-4885/68/8/R01).
|
||||
- L. D. Libersky, A. G. Petschek, T. C. Carney, J. R. Hipp, F. A. Allahdadi. *High Strain Lagrangian Hydrodynamics.* JCP 109(1):67–75, 1993. DOI [10.1006/jcph.1993.1199](https://doi.org/10.1006/jcph.1993.1199). (SPH with material strength.)
|
||||
- J. W. Swegle, D. L. Hicks, S. W. Attaway. *Smoothed Particle Hydrodynamics Stability Analysis.* JCP 116(1):123–134, 1995. DOI [10.1006/jcph.1995.1010](https://doi.org/10.1006/jcph.1995.1010). (The tensile instability.)
|
||||
- G. R. Johnson, R. A. Stryk, S. R. Beissel. *SPH for high velocity impact computations.* CMAME 139:347–373, 1996. DOI [10.1016/S0045-7825(96)01089-4](https://doi.org/10.1016/S0045-7825(96)01089-4).
|
||||
- S. W. Attaway, M. W. Heinstein, J. W. Swegle. *Coupling of smooth particle hydrodynamics with the finite element method.* Nucl. Eng. Des. 150:199–205, 1994. DOI [10.1016/0029-5493(94)90136-8](https://doi.org/10.1016/0029-5493(94)90136-8).
|
||||
- C. Antoci, M. Gallati, S. Sibilla. *Numerical simulation of fluid–structure interaction by SPH.* Comput. Struct. 85(11–14):879–890, 2007. DOI [10.1016/j.compstruc.2007.01.002](https://doi.org/10.1016/j.compstruc.2007.01.002).
|
||||
- **Assessment.** SPH shares the explicit solver's whole stack (time step, EOS, Johnson–Cook, artificial viscosity,
|
||||
contact via the same penalty), so it slots *into* `modelcraft-explicit` as another discretisation — the natural
|
||||
home for hypervelocity impact, fragmentation and blast with JWL, which LBM cannot do. As a general fluid solver it is
|
||||
noisy (pressure), needs many particles for accuracy and has the tensile instability; LBM beats it for viscous
|
||||
low-Mach flow. Code: SPHinXsys (Apache-2.0), SPlisHSPlasH (MIT), PySPH (BSD-3-style), Cabana (BSD-3): READ OK;
|
||||
DualSPHysics (LGPL-2.1): FORBIDDEN.
|
||||
|
||||
**E3. GPU compute in pure Rust.** **Verdict: CPU first for both solvers; wgpu compute for LBM second; explicit FE on GPU only on evidence.**
|
||||
- **Stack.** `wgpu` (MIT OR Apache-2.0) compute pipelines with WGSL shaders. The API we call is safe Rust, so
|
||||
`unsafe_code = "forbid"` in our crates holds (wgpu's own internals use unsafe, as every dependency on the OS does).
|
||||
`rust-gpu` (Rust → SPIR-V) would let kernels be written in Rust, but it needs a pinned nightly toolchain to build
|
||||
shaders: reject for now, revisit when it builds on stable.
|
||||
- **Precision.** WGSL (https://www.w3.org/TR/WGSL/, 200) has no `f64` type; wgpu exposes `Features::SHADER_F64`
|
||||
(https://docs.rs/wgpu/latest/wgpu/struct.Features.html, 200) only on native backends that support it, and not on
|
||||
Metal or the browser. **So GPU kernels are f32.** For LBM that is standard (store `f_i − w_i` to recover
|
||||
precision). For explicit FE, f32 is workable for stresses and velocities (single precision is common in explicit
|
||||
codes) but coordinates/displacements over long runs need f64 accumulation; that rules out a naive GPU port.
|
||||
- **Layering.** `xtask/src/layers.rs` lists `wgpu` in `UI_CRATES`: nothing below L5 may depend on it. A GPU backend
|
||||
therefore needs either an owner decision to allow `wgpu` in a dedicated compute crate below L5 (headless compute is
|
||||
not UI), or a `modelcraft-gpu` crate at L5 that implements a backend trait the L1 solver crates define. I recommend
|
||||
the second (no rule change): the solver crate defines a `LatticeBackend` trait and a CPU implementation; the GPU
|
||||
implementation lives at L5. **Owner decision either way.**
|
||||
- **Determinism.** The project requires bit-identical output on every platform. GPU f32 results differ from CPU and
|
||||
between vendors (FMA contraction, transcendental precision). LBM kernels are per-cell with no reductions, so a GPU
|
||||
run is deterministic on one device, but not equal to the CPU. Explicit FE assembly on GPU needs scatter-add with
|
||||
float atomics, which is order-dependent (non-deterministic even on one device) unless assembly is a gather over a
|
||||
node-to-element list. **The rule needs an explicit exception: CPU path is the bit-identical reference; GPU results
|
||||
are deterministic per device and verified against CPU to a tolerance.** Owner decision.
|
||||
- **CPU parallelism.** `rayon` (MIT OR Apache-2.0) over cell blocks (LBM) and element blocks with a deterministic
|
||||
gather assembly (explicit FE) is deterministic by construction. On `wasm32-unknown-unknown` there are no threads by
|
||||
default: rayon must be behind a feature, with a serial fallback (same results).
|
||||
- **Browser.** WebGPU's default limits (128 MiB per storage binding, 256 MiB per buffer, unless the adapter grants
|
||||
more) cap a browser LBM domain at roughly 1.5 M D3Q19 cells per buffer unless populations are split across buffers.
|
||||
Fine for demos, not for production. **(limits from memory of the WebGPU spec; check the adapter's reported limits at
|
||||
run time, never assume)**
|
||||
- **Feasibility verdict.** LBM on wgpu: high feasibility, 10–30× over a multi-core CPU on a discrete GPU since it is
|
||||
bandwidth-bound and kernels are simple. Explicit FE on wgpu: feasible for hex8 one-point + J2 (a single kernel) but
|
||||
contact search, erosion and shells make it a large porting effort; LS-DYNA-class codes remain CPU/MPI-first for good
|
||||
reasons. Do it last, and only if profiling shows the element loop dominates.
|
||||
|
||||
---
|
||||
|
||||
## Part F: Plan (opinionated)
|
||||
|
||||
### F1. Strategic call
|
||||
|
||||
Build **explicit FE first, LBM second, FSI third.** Explicit FE reuses the M6 element and material work, runs on the
|
||||
tet meshes M2 produces (Bonet–Burton) before hexes exist, writes the same LS-DYNA keyword concepts M5 targets, and
|
||||
its verification is analytic. LBM is independent of everything except the octree (M3) and is the best place to spend
|
||||
GPU effort. FSI needs both to be verified first; a coupling bug on top of an unverified solver is undiagnosable.
|
||||
|
||||
One correction to the brief: **LBM + EOS is not a pairing.** LBM is a weakly compressible, low-Mach method; EOS
|
||||
matters for shocks, detonations and blast, which LBM cannot represent. EOS-driven fluids (water under underwater
|
||||
explosion, detonation products, air blast) belong to the explicit solver (Lagrangian first, then ALE/Eulerian per
|
||||
Benson 1992 or SPH). The LBM–explicit FSI covers low-Mach problems: flexible structures in flow, valves, sloshing,
|
||||
slamming with free-surface LBM. If the owner's motivating use cases are blast/impact on structures, the order changes:
|
||||
explicit FE → EOS → SPH or ALE multi-material, and LBM drops a step.
|
||||
|
||||
### F2. Crate layout
|
||||
|
||||
Current layers: L0 `model` → L1 `geometry`, `mesh`, `solver`, `decks`, `render` → L2 `doc` → L3 `io` → L4 `engine` → L5.
|
||||
Implicit and explicit share element kinematics (shape functions, quadrature, B-matrices, hex8/tet4/quad4), materials
|
||||
(elastic, J2, Johnson–Cook) and EOS. Two L1 crates cannot depend on each other, and FSI depends on both solvers. So:
|
||||
|
||||
| Layer | Crate | Contents |
|
||||
|---|---|---|
|
||||
| L0 | `modelcraft-model` | + materials, EOS, sections/formulations, explicit and fluid steps, contact, fluid domains, coupling interfaces (F3) |
|
||||
| L1 | `modelcraft-fem` (new) | element kernels (shape functions, quadrature, B/B-bar, one-point hex with FB hourglass and Belytschko–Bindeman stabilisation, Bonet–Burton tet, BLT shell), constitutive updates (hypoelastic, objective rates, J2 radial return, Johnson–Cook, damage), EOS evaluation. Pure functions over `model` types; no solver loop. |
|
||||
| L2 | `modelcraft-lbm` (new) | lattices, collision operators, BCs, voxelisation from the face-tagged surface and the octree from `mesh`\*, stepping on CPU, momentum-exchange forces, IB kernels; a backend trait for GPU |
|
||||
| L2 | `modelcraft-solver` (moved up from L1) | implicit linear static/modal (M6), later nonlinear implicit; uses `fem` |
|
||||
| L2 | `modelcraft-explicit` (new) | central-difference driver, time step, mass scaling, q, contact (search + penalty), erosion, energy accounting, output; uses `fem` (and later SPH) |
|
||||
| L3 | `modelcraft-fsi` (new) | IB coupling, interface mapping, Aitken/IQN-ILS, subcycling, coupled step driver; uses `explicit`, `solver`, `lbm` |
|
||||
| L4… | `doc`, `io`, `engine`, then L5+ shifts up by two | results (time histories, field frames) in `doc`/`io` |
|
||||
| L5+ | `modelcraft-gpu` (new, with the UI layer or an owner-approved compute layer) | wgpu implementations of the solver backend traits |
|
||||
|
||||
\* `modelcraft-lbm` needs the octree and predicates from `modelcraft-mesh` (L1), so it sits at L2. **`lbm` at L2** next to `solver` and `explicit` (it may then use `mesh`'s octree and
|
||||
predicates), and `fem` at L1. That is one coherent rule: L1 = geometry and math kernels, L2 = solvers, L3 = coupling.
|
||||
|
||||
Cost of this being wrong: renumbering the layer table is a mechanical edit to `xtask/src/layers.rs` and
|
||||
`docs/architecture.md`; the risk is churn, not breakage. The alternative (one `modelcraft-solver` crate with
|
||||
`implicit`/`explicit`/`lbm`/`fsi` modules) needs no layer change, but a 50k-line crate compiles slowly and lets the
|
||||
LBM depend on FE internals by accident. If the owner prefers no renumbering, take the single-crate option and enforce
|
||||
module boundaries with `pub(crate)` discipline. This layout change is an owner decision.
|
||||
|
||||
### F3. Solver-neutral model extensions in `modelcraft-model`
|
||||
|
||||
- **Materials** (named, unit-consistent, no product numbering): density; isotropic elastic; J2 plasticity with
|
||||
isotropic/kinematic hardening (bilinear, power law, table); Johnson–Cook strength (A, B, n, C, m, ε̇₀, T_room,
|
||||
T_melt, specific heat, Taylor–Quinney); damage (JC D1–D5); failure/erosion criteria; Newtonian fluid (ρ, μ).
|
||||
- **EOS** as a separate attachable record: `ideal_gas{γ}`, `polynomial{c0..c6}`, `mie_gruneisen{c0, s1[,s2,s3], γ0, a}`,
|
||||
`jwl{A, B, R1, R2, ω, e0, D, p_cj}`, `tillotson{…}`, `tabulated{…}`; a material with an EOS takes its pressure from
|
||||
it and only the deviatoric part from the strength model.
|
||||
- **Sections / formulations:** solid formulation enum (`one_point_hourglass{kind, coeff}`, `assumed_strain`,
|
||||
`selective_reduced`, `full`, `nodal_pressure_tet`), shell sections (thickness, integration points, BLT/Hughes–Liu).
|
||||
- **Steps:** `explicit_dynamic{end_time, dt_scale (default 0.9), mass_scaling: none | target_dt, output_interval}`,
|
||||
`fluid{end_time or steps, lattice, collision, les}`, `coupled{explicit/implicit structure, fluid, scheme: loose |
|
||||
aitken | iqn_ils, tolerances, max_iters}`. Every iterative or time-marching step carries caps (max steps, max
|
||||
iterations, max cells) per the never-crash rules.
|
||||
- **Loads/conditions:** initial velocity, prescribed motion, rigid walls, gravity, detonation points with lighting
|
||||
times.
|
||||
- **Contact:** surface pairs and self-contact on face sets, penalty scale, friction, search interval.
|
||||
- **Fluid domain:** bounding box, base spacing, refinement regions (by distance to named faces), boundary conditions on
|
||||
box faces (velocity inlet, pressure outlet, slip/no-slip) and on named geometry faces (wall, moving wall); fluid
|
||||
material.
|
||||
- **Coupling interface:** named structural face set ↔ fluid domain.
|
||||
- **Output requests:** history (energies, reaction forces, contact forces, probe points) and field frames.
|
||||
|
||||
All of these must map to the LS-DYNA keyword and Abaqus input concepts M5 writes, described in our own words.
|
||||
|
||||
### F4. Milestones
|
||||
|
||||
| # | Milestone | Needs from meshing | Verification (analytic first) |
|
||||
|---|---|---|---|
|
||||
| X0 | `modelcraft-fem` extraction with M6: hex8/tet4 kinematics, elastic and J2 updates, shared with the implicit solver | M2 tets, generated boxes | patch tests, J2 uniaxial curve, rigid rotation |
|
||||
| X1 | Explicit core: central difference, lumped mass, element Δt (FB 1984), one-point hex8 + FB hourglass, Bonet–Burton tet4, artificial viscosity, energy accounting, prescribed BCs, initial velocity, history output | structured hex8 boxes generated in code (no M3 needed), M2 tets | bar wave (front position and amplitude), bar–rigid wall contact time 2L/c, energy balance, cantilever period vs M6 modal |
|
||||
| X2 | Large deformation materials: Hughes–Winget Jaumann, Flanagan–Taylor Green–Naghdi, J2 radial return, Johnson–Cook strength + damage, erosion | same | Dienes simple shear (both rates, closed form), Taylor bar (Taylor 1948 analytic estimate; experimental comparison only if the owner allows) |
|
||||
| X3 | Contact: BVH global search, node-to-segment penalty two-pass + friction, pinball for eroding surfaces, rigid walls | surface extraction of volume meshes (have it) | two bars colliding (momentum exchange, analytic), block sliding with friction on a slope (analytic), Hertz sphere-on-plane at low speed (analytic contact time and force) |
|
||||
| X4 | EOS: polynomial, ideal gas, Mie–Grüneisen, JWL + programmed burn, energy coupling | hex8 strongly preferred (tets smear shocks) — M3 octree hex | 1D shock in Mie–Grüneisen material vs Rankine–Hugoniot with `U_s = c0 + s u_p`, Sod, Noh, Sedov (Lagrangian 1D/axisymmetric) |
|
||||
| X5 | Shells: BLT + Belytschko–Wong–Chiang warping, self-contact (Benson–Hallquist) | quad4 surface meshes (a quad-dominant surface mesher is not yet on the roadmap — gap) | plate free vibration (analytic), cylinder crush (energy only) |
|
||||
| L1 | LBM core on CPU: D3Q19, TRT, halfway bounce-back, Zou–He, uniform grid from voxelising the face-tagged surface with exact predicates, momentum-exchange forces | voxelisation (inside/outside with `mesh` predicates); no volume mesh | Poiseuille (2nd order), Couette, Taylor–Green decay, sphere Stokes drag |
|
||||
| L2 | Accuracy and range: Bouzidi interpolated walls (link fractions from ray–triangle tests), regularised/RR and cumulant D3Q27, Smagorinsky LES, Schäfer–Turek, cavity | link-surface intersections | Schäfer–Turek 2D-1/2D-2/3D (published numerical bounds, owner sign-off), Womersley |
|
||||
| L3 | Octree refinement: Rohde cell-centred on the M3 2:1 octree; then wgpu backend at L5 (AA pattern) | M3 octree (shared data structure) | refinement across a channel (Poiseuille exact across levels, mass conservation to round-off), GPU-vs-CPU tolerance check |
|
||||
| F1 | FSI loose: IB-LBM (Wu–Shu) with markers on the structure's surface nodes, explicit FE structure with subcycling, conservative Hᵀ force transfer | structural surface of a hex/tet mesh | rigid cylinder added-mass C_a = 1, settling sphere, Turek–Hron FSI1 |
|
||||
| F2 | FSI strong: Aitken, then IQN-ILS with filtering; implicit (M6 linear dynamic) structure as well as explicit | same | Turek–Hron FSI2 and FSI3 |
|
||||
| F3 | Free-surface LBM (Körner/Thürey) with FSI | same | dam break front position (published experiment — owner sign-off), hydrostatic column (analytic) |
|
||||
|
||||
**Time-step mismatch, concretely.** Steel structure (c ≈ 5,900 m/s) with 1 mm elements: Δt_s ≈ 1.7×10⁻⁷ s. Water LBM
|
||||
at 1 mm spacing with lattice velocity 0.1 for a 1 m/s flow: Δt_f = 0.1·Δx/u = 10⁻⁴ s. The structure needs ~600
|
||||
substeps per fluid step: subcycle the structure (cheap, it is a thin interface region) or apply mass scaling with
|
||||
reported added mass. For soft structures (Turek–Hron), the implicit structure solver with one step per fluid step is
|
||||
the better pairing — this is why FSI should support both structure solvers.
|
||||
|
||||
### F5. Biggest risks, and what happens if wrong
|
||||
|
||||
1. **Hourglass and contact robustness, not the time integrator, decide whether people trust the explicit solver.**
|
||||
If hourglass control is weak, coarse-mesh results look plausible and are wrong; if contact misses penetrations,
|
||||
runs explode at hour 3. Mitigation: hourglass and contact energies reported every run with thresholds that warn;
|
||||
contact verification cases from day one; a crash-report replay path for solver blow-ups.
|
||||
2. **Silent mass scaling and time step collapse.** One bad element sets Δt for the whole model. Mitigation: report the
|
||||
ten controlling elements and the added mass; mesh-quality gate before a run. If wrong, users see runs that never
|
||||
finish rather than wrong answers — annoying, not dangerous.
|
||||
3. **Determinism vs GPU vs parallelism.** The determinism rule and GPU f32 are in direct conflict (E3). If no
|
||||
exception is agreed, the GPU work cannot ship; if the exception is too loose, regression tests flake. Decide before
|
||||
L3.
|
||||
4. **Added-mass instability in FSI.** Loose coupling will diverge for light structures in water no matter how small
|
||||
the step (Causin 2005). If F1 ships only loose coupling, the first realistic marine/biomedical case fails; F2 (IQN)
|
||||
must follow immediately, and the loose scheme must detect divergence (interface energy growth) and stop with an
|
||||
error.
|
||||
5. **LBM at industrial Reynolds numbers.** Laminar validation is easy; turbulent external flow needs D3Q27 cumulant
|
||||
or RR, LES, wall models and refinement before results are useful. If underestimated, the LBM looks like a toy for a
|
||||
year. Budget L2–L3 as the main LBM work, not L1.
|
||||
6. **Scope creep toward LS-DYNA's material library.** LS-DYNA has hundreds of materials; each is a paper. Ship
|
||||
elastic, J2, Johnson–Cook, a hyperelastic rubber, a crushable foam, and EOS; add on demand. Never mirror any
|
||||
product's material numbering in the model — only in the deck writer's mapping.
|
||||
7. **Expected-value policy.** Taylor bar, cavity, Schäfer–Turek, Turek–Hron, dam break all compare with published
|
||||
experiments or published numerical references, not closed forms. The project rule says expected values are
|
||||
analytic. **Owner decision:** allow published, non-commercial reference values for benchmarks (I recommend yes,
|
||||
tagged as "benchmark", kept separate from the analytic suite).
|
||||
8. **Quad shell meshing is missing from the roadmap.** X5 needs quad-dominant surface meshes; without them shells
|
||||
run on tri3 (BLT has a triangular variant, less accurate). Flag for the roadmap.
|
||||
Reference in new issue
Block a user