Mirror the new test/io tree in TOPICS so Pkg.test and topic filtering pick up
WriteVTK coverage after mesh and before quadrature.
- Insert "io" after "mesh" in the TOPICS constant ordering
Add io tests that load WriteVTK with JuliaFEM and cover stub misuse, Hex8 and
Quad4 VTU output with nodal and cell data, suffix handling, and bad topologies.
- Add test/io/runtests.jl wrapper around the VTK-focused cases
- Implement test_writevtk.jl with structured mesh grids and negative cases
Add a focused test file asserting read_gmsh_msh raises ErrorException and
mesh_from_current_gmsh_model stays undefined until JuliaFEMGmshExt loads.
- Add test_gmsh_stub.jl with two throws checks for the weakdep path
- Include the new file from test/mesh/runtests.jl next to existing mesh tests
Add SPDX to src/README, trim mesh/io blurbs for extension-based formats, and
extend thermo-poroelastic notes with Val-split THM helpers and a test pointer.
- SPDX HTML banner on src/README plus refreshed mesh and io table descriptions
- Document `_thm_stiff_K_*` / `_thm_mass_M_*` helpers and microkernel alloc test
MixedDarcyTet4BoundaryNormalFluxLoad faces now reuse REF_GAUSS_TRIANGLE_ORDER2
and map reference points through Tri3 Lagrange shape functions instead of local
quadrature tuples duplicated in loads.jl.
- Drop private _MIXED_DARCY_TRI3_* constants from the mixed Darcy flux section
- Point the docstring at reference_gauss_tuples.jl and the isoparametric map
Normalize SPDX header and define PorePressure as a scalar vertex field with the
same numeric layout as Temperature so poroelastic kernels can tag pressure DOFs.
- Document pairing with BiotPoroelasticKernel and HydraulicConductivity
- Implement dofs_per_node and quantity_type for the new field tag
The optional Gmsh and WriteVTK entry points are defined as stubs until their
extensions load; mesh includes now sit with structured mesh generation.
- Pull in gmsh_stub.jl and write_vtu.jl right after structured mesh includes
- IO banner comment now points at Gmsh and VTK export extensions
Gmsh and WriteVTK remain optional weakdeps; these extensions implement the
typed mesh import and VTU export entry points used by examples and tests.
- Import linear Tris, Quads, Tets, Hexes from GMSH MSH with physical groups
- Export Mesh to VTU with optional point and cell named tuples
Optional mesh and VTK stacks load only via weakdeps so the default install
stays slim while readers remain available for examples and tests.
- Add weakdeps Gmsh and WriteVTK with JuliaFEMGmshExt and JuliaFEMWriteVTKExt
- Pin Gmsh compat 0.3 and WriteVTK 1.21.2; add WriteVTK to extras and tests
- Refresh Manifest project_hash and JuliaFEM extension entries
Long echo strings broke the same eighty-column rule the hook enforces on log
messages. Error output is split so the hook file itself stays readable.
- Wrap rejection messages to eighty columns or fewer
- Keep wording aligned with subject, summary, and bullet layout rules
Top-level and contributor README text now mention layout as well as width when
hooks gate commits.
- Note subject and bullet structure in README.md contributing blurb
- Mirror the same requirement in docs/CONTRIBUTING.md Git subsection
Contributor guides now match what the hook enforces so failures are obvious
before push when core.hooksPath points at .githooks.
- Refresh commit.prompt.md hook bullets and the canonical message checklist
- Update AGENTS.md workflow paragraph for commit-msg structure plus line cap
The commit-msg hook parses messages in bash only so contributors get the same
shape every time without Python or other helpers in the hook path.
- Enforce eighty-column lines plus subject, blank, summary, blank, then bullets
- Reject bullet-looking lines inside the summary block and blanks among bullets
- Skip all checks while .git/MERGE_HEAD exists for merge commits
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!
CI gains focused Ubuntu jobs for new domain topics and physics/fields so
failures surface without waiting for the full matrix, and the MPI loop now
drives partitioned_internal_force_smoke alongside matvec drivers.
- Add test-domains-multiphysics (poroelastic + thermo_poroelastic test_args)
- Add test-physics-fields (physics + fields test_args), each with layer check
- Include partitioned_internal_force_smoke.jl in mpiexec driver loop
The default harness loads shared helpers and smoke checks before topic
includes, registers poroelastic and thermo_poroelastic, drops the retired IO
topic, and removes the orphaned ASCII fixture.
- Add zero_alloc_helpers.jl, test_api_contract.jl, test_pkg_hygiene.jl, and
test_inference_smoke.jl included once from runtests.jl
- Extend TOPICS; remove io; clarify test_args accepts topic names only
- Delete test/testdata/cantilever_beam.msh
Long commit subjects and bullets are hard to read in narrow terminals and
mailed logs. Contributors using `.githooks` via core.hooksPath now get an
automatic guard in addition to the two-file pre-commit cap.
- Add `.githooks/commit-msg` to fail when any message line exceeds 80 chars
- Skip length checks while `.git/MERGE_HEAD` exists for merge commits
- Sync AGENTS.md, README.md, CONTRIBUTING.md, and commit.prompt.md
The in-tree `GmshReader` module is gone, so the dedicated IO test driver and
Tet4 fixture assertions are removed to keep the default suite aligned with
core dependencies.
- Delete `test/io/runtests.jl`, which only included `test_gmsh_reader.jl`
- Delete `test/io/test_gmsh_reader.jl`, which exercised `read_gmsh_mesh` and `get_surface_nodes` against bundled `.msh` data
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
Runtime `[deps]` no longer pull in mesh tooling or dev-formatting stacks,
while CSV is available for lightweight tabular I/O and Aqua can run as part
of the standard test target.
- `Project.toml`: drop `BenchmarkTools`, `Gmsh`, and `JuliaFormatter` from `[deps]`; add `CSV` with `[compat]` entries `CSV = "0.10"` and `Aqua = "0.8"`; remove `Gmsh`/`JuliaFormatter` compat pins while keeping `BenchmarkTools` for extras-only use
- `Project.toml`: trim `[extras]` to packages still referenced by tests (add `Aqua`, drop unused entries such as `Documenter`, `ForwardDiff`, `HDF5`, `LightXML`, duplicate stdlib listings) and extend `[targets].test` with `Aqua` while removing `Gmsh`
- `Manifest.toml`: refresh `project_hash` and JuliaFEM stanza so the resolved tree matches the slimmer direct deps, pruning the `gmsh_jll`/`JuliaFormatter`/`BenchmarkTools` transitive closure and recording the CSV dependency subgraph (e.g. `Tables`, `Parsers`, `TranscodingStreams`)
The agent entry point now matches current mesh I/O packaging, the expanded
partitioned matvec smoke set, and stricter guidance on reading staged diffs
before every commit.
- Table row for `src/io/` now points at policy README and weakdeps/extensions instead of implying a default Gmsh reader in core
- MPI reference list includes `partitioned_internal_force_smoke.jl` and states CI runs all three under mpiexec
- Zero-alloc invariant bullet cites `test_dof_based_internal_force.jl` for `assemble_internal_force!` / `apply_f_int_owned_rows!`
- New bullet forbids scripted placeholder commits and points to `reset --soft` / `rebase -i` for repair
- Testing section documents `Pkg.test(; test_args=[...])` topic filtering and warns that unknown args fall back to full suite
- Quickstart snippet uses `ContinuumFormulation{ThreeDimensional}()` instead of removed `FullThreeD` alias
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.
Replace the retired per-shape modules with the single `test_quadrature_rules.jl`
entry point that mirrors the current quadrature implementation layout.
- SPDX header; trim imports to `Test`, `JuliaFEM`, and `Tensors`.
Legacy physics API tests were retired with the module reset; keep only the strain
smoke file until higher-level physics coverage returns.
- Import `JuliaFEM` explicitly for includes under `Pkg.test`.
Drive refinement through `create_structured_box_mesh` so tests stay aligned with
the dimensioned `Mesh{8,Hex8}` constructors, and keep a cheap analytic volume
sanity check for `compute_element_volume`.
- SPDX header; replace bespoke manual meshes with structured coupons + bisection counts.
Register the recently introduced damage/creep/eigenstrain/Chaboche markers so the
generated registry cannot drift from their storage types and default symbols.
- SPDX header refresh.
Add a focused regression that `compute_stress` lands on the von Mises surface when
the trial state lies outside yield, using the returned backstress state.
- SPDX header refresh for the file.
The refactor exposes in-place `get_*_vector(workspace, buf)` overloads; exercise them
beside the allocating helpers and keep allocation probes on pre-filled buffers.
- Assert buffer aliases and equality against freshly extracted vectors.
- Replace generic `get_field` probes with direct NamedTuple field access.
The previous file duplicated a long narrative and many scenarios that better live
in basis/quadrature coverage; keep the Jacobian helpers exercised with tuple vs
vector coordinates and physical derivative consistency.
- SPDX header; drop unused `LinearAlgebra` import.
- Fix basis calls to `Triangle{3}` / `Lagrange{1}` and verify scaling + PoU gradient sum.
Replace the hand-built toy elements with a single coupon produced by
`create_elements!`, matching how assembly pulls DOFs from handlers.
- SPDX header + one regression comparing flat vs structured extraction for T+u on Hex8.
The stiffness check already targets the shipped COO assembler; drop marketing-style
labels from comments and console banners so failures read like ordinary regressions.
Material-cache reset coverage should populate stresses through the global cache
API rather than the removed `create_material_state` helper.
- Mirror production signatures for `update_geometry_cache!` / `update_material_cache!`.