Commit Graph

1717 Commits

Author SHA1 Message Date
Jukka Aho 4b14ef0ec1 feat(docs): add thermo_elastic_walkthrough.md
docs/src/thermo_elastic_walkthrough.md | 55 ++++++++++++++++++++++++++++++++++  1 file changed, 55 insertions(+)
2026-05-09 16:30:26 +03:00
Jukka Aho aa46ca8810 feat(docs): add legacy.md
docs/src/legacy.md | 25 +++++++++++++++++++++++++  1 file changed, 25 insertions(+)
2026-05-09 16:30:26 +03:00
Jukka Aho 830a7a2866 refactor(docs): update index.md
docs/src/index.md | 132 +++++++++++++++++++++++++++++++++++++-----------------  1 file changed, 90 insertions(+), 42 deletions(-)
2026-05-09 16:30:26 +03:00
Jukka Aho 3b761d86b7 feat(docs): add elements_multiphysics_teaser.md
docs/src/elements_multiphysics_teaser.md | 141 +++++++++++++++++++++++++++++++  1 file changed, 141 insertions(+)
2026-05-09 16:30:25 +03:00
Jukka Aho a03ecc09be feat(docs): add architecture_layers.md
docs/src/developer/architecture_layers.md | 175 ++++++++++++++++++++++++++++++  1 file changed, 175 insertions(+)
2026-05-09 16:30:25 +03:00
Jukka Aho 7acd3380d0 feat(docs): add assembler_choice.md
docs/src/assembler_choice.md | 35 +++++++++++++++++++++++++++++++++++  1 file changed, 35 insertions(+)
2026-05-09 16:30:25 +03:00
Jukka Aho dc3adc7226 refactor(docs): update api.md
docs/src/api.md | 221 ++++++++++++++++++++++++++------------------------------  1 file changed, 103 insertions(+), 118 deletions(-)
2026-05-09 16:30:25 +03:00
Jukka Aho e5865ee750 feat(docs): add repository_layout.md
docs/repository_layout.md | 5 +++++  1 file changed, 5 insertions(+)
2026-05-09 16:30:25 +03:00
Jukka Aho 2a3b11592f refactor(docs): update make.jl
docs/make.jl | 52 ++++++++++++++++++++++------------------------------  1 file changed, 22 insertions(+), 30 deletions(-)
2026-05-09 16:30:24 +03:00
Jukka Aho 482af34fea feat(docs): add index.md
docs/api/index.md | 3 +++  1 file changed, 3 insertions(+)
2026-05-09 16:30:24 +03:00
Jukka Aho 9d7fc6a972 feat(docs): add api.md
docs/api/api.md | 11 +++++++++++  1 file changed, 11 insertions(+)
2026-05-09 16:30:24 +03:00
Jukka Aho f63279ad73 refactor(docs): update README.md
docs/README.md | 170 ++++++++++++++-------------------------------------------  1 file changed, 40 insertions(+), 130 deletions(-)
2026-05-09 16:30:24 +03:00
Jukka Aho 637f58c342 feat(docs): add NEWS.md
docs/NEWS.md | 19 +++++++++++++++++++  1 file changed, 19 insertions(+)
2026-05-09 16:30:24 +03:00
Jukka Aho d1ede2720e feat(benchmarks): add dof_vs_element_assembler_performance.jl
benchmarks/dof_vs_element_assembler_performance.jl | 251 +++++++++++++++++++++  1 file changed, 251 insertions(+)
2026-05-09 16:30:24 +03:00
Jukka Aho 89c7b85e6f feat(benchmarks): add assembly_workspace_performance.jl
benchmarks/assembly_workspace_performance.jl | 292 +++++++++++++++++++++++++++  1 file changed, 292 insertions(+)
2026-05-09 16:30:23 +03:00
Jukka Aho 7fa39b69c5 refactor(root): update Project.toml
Project.toml | 22 +++++++++++++++-------  1 file changed, 15 insertions(+), 7 deletions(-)
2026-05-09 16:30:23 +03:00
Jukka Aho e3717ce2ed feat(root): add Manifest.toml
Manifest.toml | 836 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  1 file changed, 836 insertions(+)
2026-05-09 16:30:23 +03:00
Jukka Aho 68d70c8241 feat(.github): add SiteDocs.yml
.github/workflows/SiteDocs.yml | 63 ++++++++++++++++++++++++++++++++++++++++++  1 file changed, 63 insertions(+)
2026-05-09 16:30:22 +03:00
Jukka Aho 6072bf6bb7 refactor(.github): update CI.yml
.github/workflows/CI.yml | 67 ++++++++++++++++++++++++++++++++++++++++++++++++  1 file changed, 67 insertions(+)
2026-05-09 16:30:22 +03:00
Jukka Aho 8a8e3c72a8 docs(agents): align vision note with 0.x toward 1.0
Clarify llm/vision/vision_2.0.md is a historical filename and not a separate product line; extend roadmap bullet.
2026-05-09 16:28:50 +03:00
Jukka Aho 48a6bcad9f docs(repository_layout): describe legacy as optional 0.x-adjacent API
Replace Pre-2.0 wording with legacy module note aligned with 0.x default surface.
2026-05-09 16:28:42 +03:00
Jukka Aho d4fcbad8f1 docs: Add AGENTS entrypoint and repository layout guide
Introduce root-level AGENTS.md as the architecture and workflow summary for
humans and coding agents. Add docs/src/repository_layout.md as a placement
and anti-pattern reference for sources, tests, scripts, and gitignored trees.

- AGENTS.md links deep docs and states 2.0 invariants
- repository_layout.md includes .cursor/ as gitignored local tooling
2026-05-09 16:21:31 +03:00
Jukka Aho 3bdbde3326 docs: Refresh README and contributing guide for post-reset API
Replace outdated badges and roadmap prose with the current 2.0 focus areas,
installation notes, and pointers to AGENTS.md. Rewrite CONTRIBUTING as a
concise fork/test/layer-contract checklist aligned with the repo layout.

- README: drop stale Travis/Gitter stack; document legacy module caveat
- CONTRIBUTING: remove Quarto front matter; link architecture_layers checker
2026-05-09 16:21:06 +03:00
Jukka Aho 7caf02611d ci(docs): Scope Documentation workflow and verify quickstart
Restrict pull_request runs to doc-, source-, and dependency-touching paths.
Run scripts/verify_docs_quickstart.jl before docs/make.jl so the homepage
snippet cannot drift without failing CI.
2026-05-09 16:19:42 +03:00
Jukka Aho e76ec8fdc0 chore(gitignore): Ignore local .cursor directory
Cursor editor and agent metadata under .cursor/ is per-machine and should not
be proposed in pull requests.
2026-05-09 16:19:25 +03:00
Jukka Aho 86a2021c92 chore(githooks): Add pre-commit hook allowing two staged paths
Ship a tracked hook that rejects more than two staged paths so commits stay
small while still allowing tightly coupled pairs.

- Activate with: git config core.hooksPath .githooks (from repo root)
2026-05-09 16:12:58 +03:00
Jukka Aho 52dbf26d62 chore(scripts): Add docs quickstart regression verifier
Activates the repo project, includes the minimal elasticity snippet, and
errors unless assembled ndofs and stiffness nnz match locked doc values.

- Expected (375, 19773); for Documentation CI / local checks
2026-05-09 16:04:51 +03:00
Jukka Aho b4a2caa31e docs(snippet): Add minimal elasticity quickstart source
Runnable 4×4×4 Hex8 linear elasticity assembly used as the Documenter/README
minimal example source of truth; returns (; ndofs, nnz_stiffness).

- Intended for @literalinclude, test/docs, and scripts/verify_docs_quickstart.jl
2026-05-09 16:04:40 +03:00
Jukka Aho c666ee48b2 chore(gitignore): Ignore coverage/ directory
Coverage tooling writes artifacts under coverage/; ignoring the folder keeps
those outputs out of git status alongside existing *.cov ignores.
2026-05-09 15:57:53 +03:00
Jukka Aho b9534e2c55 test(solvers): add modal analysis new API visionary test
New 560-line test file for modal analysis NEW API (test-driven development):
- Visionary tests for ModalSolver and EigenvalueProblem
- Tests single Tet4 element modal analysis
- Tests with and without geometric stiffness
- Tests heat transfer modal analysis
- Extensive documentation of intended API design
- Tests currently skipped (@test_skip) until implementation complete
- Documents eigenvalue problem K φ = λ M φ
- Documents mass matrix assembly and mode shape normalization

This test file serves as both test suite and API design documentation
for the new modal analysis solver interface.
2025-12-15 16:19:59 +02:00
Jukka Aho 782c252719 test(solvers): add modal elasticity test 2
New 59-line test file for modal elasticity analysis:
- Tests modal analysis of two cylinder meshes (CYLINDER1 and CYLINDER20)
- Compares eigenfrequencies with Code Aster results (Tet4 elements)
- Tests 3 lowest eigenfrequencies for each cylinder
- Uses legacy Element/Problem API

Validates modal analysis accuracy for different cylinder geometries
by comparing with reference Code Aster results.
2025-12-15 13:45:46 +02:00
Jukka Aho f3f42fd115 test(solvers): add modal elasticity test
New 102-line test file for modal elasticity analysis:
- Tests modal analysis of long rod with fixed-fixed boundary conditions
- Compares eigenfrequencies with Code Aster results (Tet10 elements)
- Validates against analytical solution (fixed-fixed beam)
- Tests 5 lowest eigenfrequencies
- Uses legacy Element/Problem API

Validates modal analysis accuracy by comparing with reference
Code Aster results and analytical beam theory.
2025-12-15 13:44:13 +02:00
Jukka Aho b7c26835c9 test(solvers): add postprocess test
New 97-line test file for postprocessing functionality:
- Tests postprocessing fields (strain, stress, reaction force, contact pressure)
- Tests contact problem with two blocks (upper and lower)
- Tests XDMF output writer
- Tests field extraction at specific points
- Tests nodal vector extraction
- Validates contact interface displacement uniformity

Tests complete postprocessing workflow including field computation,
output writing, and field querying at arbitrary points.
2025-12-15 13:35:01 +02:00
Jukka Aho b9389a1331 test(solvers): add modal analysis test
New 110-line test file for modal analysis:
- Tests modal analysis with Tet4 element (eigenvalue computation)
- Tests with and without geometric stiffness
- Tests Poisson problem modal analysis (heat equation)
- Uses legacy Element/Problem API
- Contains commented-out test for mesh tie (future work)

Validates eigenvalue computation for structural and thermal modal analysis.
2025-12-15 13:31:43 +02:00
Jukka Aho a2ae06bd47 test(solvers): add modal zero eigenmodes test
New 33-line test file for modal analysis:
- Tests modal analysis with Tet10 element
- Validates zero eigenmodes (rigid body modes)
- Tests eigenvalue computation for modal analysis
- Uses legacy Element/Problem API

Tests that modal analysis correctly identifies rigid body modes
as zero eigenvalues.
2025-12-15 13:31:26 +02:00
Jukka Aho 14ccc79b40 test(topology): add comprehensive topology and integration test
New 474-line comprehensive test file for topology and integration:
- Tests all 17 topology types using full JuliaFEM module
- Tests reference coordinates, edge/face connectivity
- Tests Gauss quadrature integration for all topologies
- Validates integration weights sum to reference element volumes
- Tests higher-order elements use same quadrature rules
- Validates zero-allocation design (NTuple returns)
- Tests API completeness (all types exported)

Complements test_topology.jl (standalone) by testing integrated system.
This is the ACID TEST - validates real usage pattern with 'using JuliaFEM'.
2025-12-15 12:09:07 +02:00
Jukka Aho 42f50c95cd test(topology): add standalone topology and integration test
New 213-line standalone test file for topology and integration modules:
- Tests all 17 topology types (Seg2, Tri3, Quad4, Tet4, Hex8, etc.)
- Tests node counts, dimensionality, reference coordinates
- Tests edge and face connectivity
- Tests IntegrationPoint structure
- Tests Gauss quadrature integration for various topologies
- Validates integration weights sum to reference element volume
- Standalone execution to avoid conflicts during transition period

Comprehensive validation of zero-allocation topology and integration
infrastructure, essential for all FEM operations.
2025-12-15 11:58:37 +02:00
Jukka Aho 4886cef85a test(mesh): add mesh coloring test
New 20-line test file for mesh coloring:
- Tests that create_coloring produces valid graph coloring
- Validates that elements in same color don't share nodes
- Uses Abaqus mesh file (cube_tet4.inp) for testing

Essential for parallel element assembly where elements sharing
nodes must be processed in different colors to avoid race conditions.
2025-12-15 10:25:57 +02:00
Jukka Aho fde2c6a4a8 test(mesh): add parallel features test
New 297-line test file for mesh parallel features:
- Tests node and element naming (industrial ID ranges, symbolic names)
- Tests node coloring for load balancing (MPI ranks)
- Tests element coloring for graph coloring (threading)
- Tests ghost nodes and elements (MPI domain decomposition)
- Tests node and element permutation (bandwidth minimization, cache optimization)
- Tests combined features in industrial workflow
- Validates forward/inverse permutation consistency

Comprehensive test suite for parallel computing features including
MPI domain decomposition and threading support.
2025-12-15 09:04:22 +02:00
Jukka Aho 0e5641a081 test(mesh): add structured mesh generation test
New 292-line test file for structured mesh generation:
- Tests unit cube mesh creation (single and multiple elements)
- Tests structured box mesh with custom dimensions
- Tests uniform spacing verification
- Tests cantilever and thin plate mesh generation
- Tests anisotropic mesh (fine in one direction, coarse in others)
- Tests connectivity validation
- Tests integration with refinement
- Tests convergence study pattern

Comprehensive test suite for structured mesh generation utilities.
2025-12-15 08:50:32 +02:00
Jukka Aho c544c25830 test(mesh): add mesh refinement test
New 166-line test file for mesh refinement operations:
- Tests single Hex8 refinement at 1, 2, and 3 levels
- Tests rectangular Hex8 refinement (longest edge bisection)
- Tests multiple element refinement
- Tests element set preservation during refinement
- Validates element and node count after refinement
- Validates refinement along longest dimension

Tests LongestEdgeBisection strategy for adaptive mesh refinement.
2025-12-15 08:46:00 +02:00
Jukka Aho 1881787f49 test(mesh): add parametric mesh test
New 501-line test file for Mesh{T} parametric implementation:
- Tests basic construction (single and multiple elements)
- Tests construction with element sets and node sets
- Tests validation (connectivity size mismatch, node index out of range)
- Tests connectivity matrix generation
- Tests element and node set operations
- Tests surface topology extraction
- Tests mesh refinement operations
- Tests different topology types (Tet4, Hex8, Seg2, Tri6)
- Tests I/O operations (show, info)

Comprehensive test suite for type-stable parametric mesh data structure.
2025-12-15 08:44:11 +02:00
Jukka Aho c514c1bdcc test(materials): add damage mechanics new API visionary test
New 868-line test file for damage mechanics NEW API (test-driven development):
- Visionary tests for isotropic damage model
- Tests for ductile damage (Lemaitre model)
- Tests for crack band regularization (mesh independence)
- Tests for damage unloading and irreversibility
- Extensive documentation of intended API design
- Tests currently skipped (@test_skip) until implementation complete
- Documents damage variable, effective stress, damage evolution
- Documents regularization and coupled damage-plasticity

This test file serves as both test suite and API design documentation
for the new damage mechanics material model interface.
2025-12-15 08:41:24 +02:00
Jukka Aho 6526697497 test(materials): add hyperelasticity new API visionary test
New 693-line test file for hyperelasticity NEW API (test-driven development):
- Visionary tests for Neo-Hookean material model
- Tests for Mooney-Rivlin and Ogden models
- Tests for incompressibility constraint (nearly incompressible materials)
- Tests for uniaxial tension with large strains
- Extensive documentation of intended API design
- Tests currently skipped (@test_skip) until implementation complete
- Documents strain energy functions, stress computation, tangent moduli
- Documents frame-invariance and material objectivity

This test file serves as both test suite and API design documentation
for the new hyperelastic material model interface.
2025-12-15 08:38:19 +02:00
Jukka Aho 2bcc7ecd1e test(materials): add plasticity new API visionary test
New 747-line test file for plasticity NEW API (test-driven development):
- Visionary tests for J2 plasticity with isotropic hardening
- Tests for radial return mapping algorithm
- Tests for kinematic hardening and Bauschinger effect
- Tests for perfect plasticity and cyclic loading
- Extensive documentation of intended API design
- Tests currently skipped (@test_skip) until implementation complete
- Documents return mapping, consistent tangent, state storage
- Documents nodal assembly for plasticity

This test file serves as both test suite and API design documentation
for the new plasticity material model interface.
2025-12-15 08:36:54 +02:00
Jukka Aho 4ff5044dc0 test(materials): add finite strain plasticity test
New 328-line test file for FiniteStrainPlasticity material model:
- Tests material construction and parameter validation
- Tests state management (FiniteStrainPlasticityState with F_p, α_bar, κ)
- Tests small strain limit (should recover small-strain plasticity)
- Tests identity deformation (F=I gives zero stress)
- Tests pure rotation (objectivity, frame-invariance)
- Tests uniaxial extension in elastic and plastic regimes
- Tests simple shear deformation
- Tests incremental loading and plastic incompressibility (det(F_p)=1)
- Tests hardening behavior (kinematic hardening via backstress)
- Tests state persistence (unloading doesn't decrease plastic strain)
- Validates type stability

Comprehensive test for geometrically exact plasticity using multiplicative
decomposition F = F_e F_p, essential for large deformation analysis.
2025-12-15 08:35:12 +02:00
Jukka Aho 3b4a028fec test(materials): add material cache test
New 286-line test file for GlobalMaterialCache system:
- Tests state type inference from material traits
- Tests zero state creation for empty, tensor, scalar, and mixed states
- Tests MaterialCache construction for stateless and stateful materials
- Tests state access functions (get_state, get_old_state, set_state!)
- Tests update_cache! for time stepping (copying current to old)
- Tests reset_cache! for zeroing all states
- Tests state variable helpers (get_state_variable, set_state_variable)
- Validates type stability of cache operations
- Tests integration with material traits

Essential for stateful material models requiring history-dependent behavior.
2025-12-15 08:34:47 +02:00
Jukka Aho bf5df988b8 test(materials): add perfect plasticity material test
New 352-line test file for PerfectPlasticity material model:
- Tests material construction and parameter validation
- Tests state management (PlasticityState with ε_p, α, κ)
- Tests elastic loading (small strain, no plastic strain)
- Tests plastic loading and yield criterion enforcement
- Tests radial return mapping algorithm
- Tests hardening behavior (kinematic hardening via backstress)
- Tests incremental loading and Bauschinger effect
- Tests pure shear case
- Validates consistency (yield criterion f ≤ 0)
- Validates zero-allocation and type stability

Comprehensive test for J2 plasticity with return mapping essential
for nonlinear structural analysis beyond elastic limit.
2025-12-15 08:28:40 +02:00
Jukka Aho 18529a3f51 test(materials): add Neo-Hookean hyperelastic test
New 352-line test file for NeoHookean hyperelastic material:
- Tests material construction and parameter validation
- Tests strain energy function ψ(C) = μ/2·(I₁-3) - μ·ln(J) + λ/2·ln²(J)
- Tests 2nd Piola-Kirchhoff stress S = 2∂ψ/∂C
- Tests tangent modulus (4th-order tensor)
- Validates automatic differentiation consistency
- Tests small strain limit (recovery to linear elasticity)
- Tests incompressibility (ν → 0.5)
- Validates zero-allocation and type stability

Comprehensive test for hyperelasticity essential for finite strain
analysis of rubber-like materials and soft tissues.
2025-12-15 08:25:58 +02:00
Jukka Aho 4716432d20 test(materials): add linear elastic material test
New 319-line test file for LinearElastic material model:
- Tests material construction and parameter validation
- Tests Lamé parameters (λ, μ) computation
- Tests stress computation: uniaxial, pure shear, hydrostatic
- Tests tangent modulus (4th-order elasticity tensor)
- Validates symmetry, isotropy, and physical properties
- Tests simplified interface (without state, Δt)
- Validates zero-allocation and type stability

Comprehensive test for Hooke's law implementation essential
for linear static and dynamic analysis.
2025-12-15 08:25:25 +02:00