Track global facet topology metadata for hex meshes used by face-based DOFs.
- Introduce `Hex8FacetMaps` construction helpers and orientation bookkeeping.
Provide edge/face global IDs and orientation hints for lowest-order facet DOFs on tets.
- Introduce `Tet4FacetMaps` plus builders consumed by DOF handlers.
Wire optional loading of historical Problems, fields, solvers, and Abaqus IO after
the modern core is defined.
- Gate includes on `JULIAFEM_ENABLE_LEGACY` from `JuliaFEM.jl`.
Document what ships behind `JULIAFEM_ENABLE_LEGACY=1` and how includes are ordered.
- Summarize Dict fields, Problems/Solvers, and Abaqus IO relocation.
Introduce the legacy augmented-system representation used by `Solver`/`Analysis`.
- Track stiffness blocks, constraint matrices, and RHS assembly scratch.
Move `get_nonzero_rows`, resizing utilities, and related helpers into the opt-in
Legacy stack for solver wiring.
- Provide CSC-only helpers consumed by `legacy/solvers.jl` / `linear_system.jl`.
Provide Fourier heat flux linear map with `HeatKernel` trait hooks.
- Implement `HeatConductivity` constants and stress/tangent analogues for diffusion.
Extend J₂ plasticity with Armstrong–Frederick backstress slots using compositional state tags.
- Add `ChabocheJ2Plasticity` plus `compute_stress` integration.
Combine Green–Lagrange kinematics with J₂ return mapping on the elastic predictor.
- Override `continuum_kinematics` and declare required IP state variables.
Provide additional `StatelessStrainDependent` models alongside Neo-Hookean.
- Implement strain-energy densities and `compute_stress` bridges for common hyperelastic forms.
Implement rotation-aware orthotropic Hooke law with trait hooks for continuum assembly.
- Add `OrthotropicLinearElastic` plus stress/tangent evaluation utilities.
Implement the NamedTuple-backed integration-point workspace used across kernels,
including zero-state construction, getters/setters, and trait-driven sizing.
- Introduce `GlobalMaterialCache{StateType}` with paired current/old IP state matrices.
- Wire `material_state_type`, `create_global_material_cache`, and helpers that map
`required_state_variables` into concrete state tuples.
Add `basis_quadrature_order` and an `integration_points(topology, basis)` overload
so assembly can match Gauss rules to `Lagrange{P}` / `Serendipity{P}` instead of
inferring order only from topology node counts.
- Delegate rule choice to `default_quadrature(T, ord)` with `ord` from the basis.
Introduce `SmallStrainKinematics` vs `GreenLagrangeKinematics` hooks so
`update_material_cache!` can pick the strain measure per material.
- Define `AbstractContinuumKinematics`, concrete tags, and default
`continuum_kinematics(::AbstractMaterial)` dispatch.
Provide the Lamé-style symmetric identity tensor builder shared by elastoplastic
material implementations.
- Add `symmetric_identity_tensor()` returning `SymmetricTensor{4,3}` with SPDX header.
Apply the same `AbstractTopology{N}` node-count consolidation and LICENSE URL
fix as other volumetric topologies.
- Drop redundant `nnodes`/`export` lines from `wedges.jl`.
Centralize `nnodes` on `AbstractTopology{N}`, fix LICENSE URL, and trim exports
already declared in `exports.jl`.
- Drop redundant `nnodes`/`export` lines from `tetrahedra.jl`.
Use the generic `AbstractTopology{N}` node count, fix LICENSE URL, and remove
duplicate `Seg*` exports.
- Drop redundant `nnodes`/`export` lines from `segments.jl`.
Route node counts through `AbstractTopology{N}`, fix LICENSE URL, and rely on
`exports.jl` for `Quad*` aliases.
- Drop redundant `nnodes`/`export` lines from `quadrilaterals.jl`.
Point readers at missing higher-order pyramids, adopt `LICENSE.md`, drop the
redundant `nnodes` method, and remove duplicate exports.
- Remove `nnodes(::Pyramid{N})` and `export Pyr5` (manifest handles exports).
Rely on `nnodes(::AbstractTopology{N}) = N` from `topology/api.jl`, fix the
LICENSE deep link, and drop redundant `export` lines now covered by
`exports.jl`.
- Remove per-type `nnodes(::Hexahedron{N})` overloads and file-level exports.
Remove the standalone CSC utilities file now superseded by
`src/legacy/sparse_helpers.jl` and dropped from `sparse.jl`.
- Drop `src/sparse/sparsematrixcsc.jl`.
Stop pulling deleted CSC helper includes into `sparse.jl`, adopt SPDX lines,
and drop unused dense helpers that duplicated `Legacy` utilities.
- Document that `SparseMatrixCOO` is legacy-oriented vs raw assembler triplets.
- Use `resize!(..., 0)` for `empty!` and qualify `Base.append!`.
- Remove `get_nonzero_rows`/`get_nonzero_columns` and `resize_sparse` helpers from
this file (see `src/legacy/sparse_helpers.jl`).
Clarify why `integration_points` converts the quadrature `SVector` to a `Tuple`
for downstream destructuring while noting compile-time stack usage.
- Refresh comments around `default_quadrature` / `_quadrature_topology_type`.
Drop the unused topology×basis doc signature and align comments with the
actually implemented order/topology paths plus `_infer_basis_order`.
- Remove stale `AbstractBasis` overload documentation.
- Renumber the topology-only path as the third dispatch tier.
Drop a duplicated example line and remove the commented-out Fluid placeholder
that suggested unfinished velocity dispatch.
- Clarify `Thermal{Dim}` wording; delete stale `Fluid{Dim}` sketch.
Replace the long `Physics{...}` narrative with short placeholders that explain
how `assemble!`/`solve!`/BC hooks are extended by assemblers or Legacy only.
- Document the kernel + assembler workflow as the active surface.
- Point Dirichlet/Neumann reservations at matrix-free BC and load value types.
- Keep generic function declarations for Legacy method attachment.