Partition metadata loads before DOF-based caches, new kernels and column
helpers wire into the load order, Gmsh leaves the default include graph, and
MPI docstrings describe kernel-less overloads plus internal-force hook.
- Add reference_gauss_tuples.jl and dof_based_pass1; include poroelastic and
thermo_poroelastic kernels after thermo_elastic
- Hoist partitioning, halo_exchange, packed_layout, redundant_kernel_depwarn,
ka_column_homogeneity, kernel_column ahead of dof_based_coo.jl
- Add physics/discretization.jl (FEDiscretization); drop gmsh_reader include
- Extend MPI matvec docstrings; declare mpi_partitioned_internal_force_owned!
The core package keeps the mesh and assembly stack type-stable without
shipping a Gmsh dependency or an always-loaded ASCII parser, and the IO
README now states where format readers should live going forward.
- Delete `src/io/gmsh_reader.jl` (`GmshReader`, `read_gmsh_mesh`, `GmshMesh`) including its Dict-heavy parsing path
- Rewrite `src/io/README.md` to describe policy-only `src/io/` (weakdeps/extensions or separate packages), point legacy `.inp`/`.med` readers at `src/legacy/io/` behind `JULIAFEM_ENABLE_LEGACY=1`, and warn against unconditional `include` growth for heavy I/O
Structured mesh helpers now cover 2D quads in the xy plane, a 1D Seg2 chain
embedded in R^3, and Cook’s membrane on a bilinear Quad4 map, so plane tests
and benchmarks can build reference geometry without ad hoc connectivity.
extract_surface gains an explicit volume-local face index and uses faces(T)
when the face vertex count matches the surface topology, which avoids picking
the wrong face by default for low-order hex meshes that list true face corners.
- structured.jl: SPDX header; add create_structured_line_mesh(Seg2; x0,x1,nx,y,z)
- structured.jl: add create_structured_box_mesh(Quad4; xmin,xmax,…,z) with :xmin/:xmax/:ymin/:ymax node sets
- structured.jl: add create_cook_membrane_mesh(Quad4, nx, ny; scale) with classical Cook corner map and same node-set convention
- mesh.jl: extract_surface(mesh, set; local_face=1) selects vol_faces[local_face]; build face_conn from face vertex indices when length matches n_face_nodes, else keep first-n legacy fallback for high-order volume/surface mismatch
- README.md: document Quad4/Seg2/Cook entry points; clarify mesh I/O is not in core load path (see src/io/README.md)
Use get_basis_functions on Quad4/Tri3/Seg2; reference Gauss tuples for face rules; depwarn symmetric apply_load! overloads that carry an unused kernel argument.
Introduce _depwarn_redundant_kernel_arg! and a session Ref so legacy overloads that ignore a volume kernel emit a single Base.depwarn toward kernel-column-only APIs.
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.