Commit Graph

1121 Commits

Author SHA1 Message Date
Jukka Aho 086bc061d0 docs(topology): add module README for reference shapes
Outline topology types, aliases, and downstream consumers (`Mesh`, basis).

- Provide quick navigation for contributors touching shape definitions.
2026-05-09 18:36:33 +03:00
Jukka Aho 3788199791 docs(quadrature): add module README for integration rules
Summarize quadrature entry points and how they pair with topology/basis code.

- Document Gauss families and extension hooks at a glance.
2026-05-09 18:36:32 +03:00
Jukka Aho 3788067fa6 feat(mesh): add pyramid facet connectivity maps
Support lowest-order facet metadata on `Pyr5` meshes.

- Introduce `Pyr5FacetMaps` parallel to hex/tet facet helpers.
2026-05-09 18:36:14 +03:00
Jukka Aho 48ebc9bf4d feat(mesh): add wedge facet connectivity maps
Extend facet-map machinery to `Wedge6`/`Wedge15` skeletons.

- Add `Wedge6FacetMaps` builders aligned with topology reference numbering.
2026-05-09 18:36:14 +03:00
Jukka Aho 261b145b92 feat(mesh): add Hex8 facet connectivity maps
Track global facet topology metadata for hex meshes used by face-based DOFs.

- Introduce `Hex8FacetMaps` construction helpers and orientation bookkeeping.
2026-05-09 18:36:14 +03:00
Jukka Aho cbf19a0800 feat(mesh): add Tet4/Tet10 facet connectivity maps
Provide edge/face global IDs and orientation hints for lowest-order facet DOFs on tets.

- Introduce `Tet4FacetMaps` plus builders consumed by DOF handlers.
2026-05-09 18:36:14 +03:00
Jukka Aho a1cf26fa98 feat(legacy): add Legacy.jl entry module
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`.
2026-05-09 18:35:49 +03:00
Jukka Aho 05308161bf docs(legacy): describe opt-in Legacy module scope
Document what ships behind `JULIAFEM_ENABLE_LEGACY=1` and how includes are ordered.

- Summarize Dict fields, Problems/Solvers, and Abaqus IO relocation.
2026-05-09 18:35:49 +03:00
Jukka Aho 598b216b63 feat(legacy/io): restore optional Abaqus example downloader
Reintroduce environment-driven downloads for tutorial `.inp` decks behind Legacy.

- Implement `abaqus_download` with URL/dir env hooks.
2026-05-09 18:35:34 +03:00
Jukka Aho f397e950e4 feat(legacy/io): add surface-element extraction tables
Provide side-mapping helpers that convert solid connectivity to boundary facets.

- Add static face maps plus `create_surface_elements` Dict APIs.
2026-05-09 18:35:34 +03:00
Jukka Aho 013d67fbef feat(legacy/io): vendor Abaqus model AST types
Restore mutable `Model`/`Mesh` Dict containers for `.inp` ingestion.

- Include section parsers and state machine helpers from the historical reader.
2026-05-09 18:35:34 +03:00
Jukka Aho 75902d50d4 feat(legacy/io): vendor Abaqus mesh parser tables
Bring back element-code dispatch and mesh scanning for Dict-based meshes.

- Add `parse_mesh.jl` consumed by `abaqus_read_mesh`.
2026-05-09 18:35:33 +03:00
Jukka Aho e8a0da5c13 feat(legacy/io): add Abaqus keyword registration globals
Restore mutable keyword registry used by the `.inp` parser inside Legacy.

- Implement `register_abaqus_keyword` / `is_abaqus_keyword_registered`.
2026-05-09 18:35:33 +03:00
Jukka Aho e15a97fcfe feat(legacy): add sparse LinearSystem assembly container
Introduce the legacy augmented-system representation used by `Solver`/`Analysis`.

- Track stiffness blocks, constraint matrices, and RHS assembly scratch.
2026-05-09 18:35:23 +03:00
Jukka Aho 6de42a599a feat(legacy): add Poi1/Lagrange element constructors
Provide legacy `Element` factories with Dict-backed geometry fields.

- Implement `elements_lagrange.jl` hooks expected by Abaqus glue and Problems.
2026-05-09 18:35:23 +03:00
Jukka Aho d13f1ec998 feat(legacy): restore Dict-based DCTI/DVTI field containers
Bundle FEMBase-style discrete fields (`DCTI`, `DVTI`, time-variant Dict backs)
inside `JuliaFEM.Legacy`.

- Add constructors, interpolation hooks, and mutation helpers used by old Problems.
2026-05-09 18:35:23 +03:00
Jukka Aho d6c36ade04 feat(legacy): add CSC sparse helpers for linear-system path
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`.
2026-05-09 18:35:22 +03:00
Jukka Aho 955b59c839 feat(materials): add element-wise scalar diffusion coefficient cache
Support piecewise-constant per-element κ fields for nonlinear diffusion assembly.

- Implement `ElementWiseScalarDiffusion` behavior trait and evaluation hooks.
2026-05-09 18:34:41 +03:00
Jukka Aho cd60d89407 feat(materials): add hydraulic conductivity for Darcy flow
Wire `HydraulicConductivity` into potential-based Darcy kernels.

- Provide permeability-driven flux linearizations with documented traits.
2026-05-09 18:34:40 +03:00
Jukka Aho 5b99a7a427 feat(materials): add moisture diffusion conductivity tag
Introduce `MoistureDiffusivity` for scalar moisture transport kernels.

- Declare physics traits and constant diffusion tensors/scalars as appropriate.
2026-05-09 18:34:40 +03:00
Jukka Aho ac3675cd3c feat(materials): add thermal conductivity material law
Provide Fourier heat flux linear map with `HeatKernel` trait hooks.

- Implement `HeatConductivity` constants and stress/tangent analogues for diffusion.
2026-05-09 18:34:40 +03:00
Jukka Aho 9d533353ee feat(materials): add eigenstrain-augmented linear elasticity
Support prescribed eigenstrain tensors updated outside `compute_stress`.

- Add `LinearElasticWithEigenstrain` and matching state-variable declarations.
2026-05-09 18:34:40 +03:00
Jukka Aho 13b6c67597 feat(materials): add Norton–Bailey creep coupled to elasticity
Introduce explicit creep strain increment updates with elastic tangent returns.

- Wire `CreepStrain` state requirements and trait classification.
2026-05-09 18:34:40 +03:00
Jukka Aho 5adc180f2f feat(materials): add Chaboche nonlinear kinematic hardening J2 model
Extend J₂ plasticity with Armstrong–Frederick backstress slots using compositional state tags.

- Add `ChabocheJ2Plasticity` plus `compute_stress` integration.
2026-05-09 18:34:40 +03:00
Jukka Aho c19b0aaf00 feat(materials): add scalar damage wrapper on linear elasticity
Provide staggered scalar damage evolution with explicit tangent omissions documented in traits.

- Implement `ScalarDamageLinearElastic` stress/tangent updates.
2026-05-09 18:34:39 +03:00
Jukka Aho ccc2f113b2 feat(materials): add St. Venant–Kirchhoff J2 finite-strain plasticity
Combine Green–Lagrange kinematics with J₂ return mapping on the elastic predictor.

- Override `continuum_kinematics` and declare required IP state variables.
2026-05-09 18:33:56 +03:00
Jukka Aho ea506e2b14 feat(materials): add J2 isotropic hardening plasticity
Introduce classic radial-return J₂ plasticity with NamedTuple IP state.

- Wire traits, consistent tangent assembly, and `compute_stress` updates.
2026-05-09 18:33:56 +03:00
Jukka Aho cf5a29aed3 feat(materials): add Mooney–Rivlin, Yeoh, and Gent hyperelastic laws
Provide additional `StatelessStrainDependent` models alongside Neo-Hookean.

- Implement strain-energy densities and `compute_stress` bridges for common hyperelastic forms.
2026-05-09 18:33:56 +03:00
Jukka Aho dff07f812e feat(materials): add orthotropic linear elasticity model
Implement rotation-aware orthotropic Hooke law with trait hooks for continuum assembly.

- Add `OrthotropicLinearElastic` plus stress/tangent evaluation utilities.
2026-05-09 18:33:56 +03:00
Jukka Aho b93faf8624 feat(materials): add GlobalMaterialCache and material_state_type
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.
2026-05-09 18:33:08 +03:00
Jukka Aho b185f65ad5 feat(quadrature): integrate basis degree into quadrature selection
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.
2026-05-09 18:32:52 +03:00
Jukka Aho 06eb9864a7 feat(materials): add continuum kinematics trait tags
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.
2026-05-09 18:32:40 +03:00
Jukka Aho ec8efd52dd feat(materials): add symmetric fourth-order identity helper
Provide the Lamé-style symmetric identity tensor builder shared by elastoplastic
material implementations.

- Add `symmetric_identity_tensor()` returning `SymmetricTensor{4,3}` with SPDX header.
2026-05-09 18:32:29 +03:00
Jukka Aho 2be9f43bb4 refactor(topology): dedupe Wedge nnodes and exports
Apply the same `AbstractTopology{N}` node-count consolidation and LICENSE URL
fix as other volumetric topologies.

- Drop redundant `nnodes`/`export` lines from `wedges.jl`.
2026-05-09 18:22:50 +03:00
Jukka Aho 7098f78b07 refactor(topology): dedupe Triangle nnodes and exports
Remove the redundant `nnodes(::Triangle{N})` overload and duplicate `Tri*`
exports now handled centrally.

- Keep triangle geometry definitions unchanged aside from cleanup.
2026-05-09 18:22:45 +03:00
Jukka Aho d247e330a3 refactor(topology): dedupe Tetrahedron nnodes and exports
Centralize `nnodes` on `AbstractTopology{N}`, fix LICENSE URL, and trim exports
already declared in `exports.jl`.

- Drop redundant `nnodes`/`export` lines from `tetrahedra.jl`.
2026-05-09 18:22:34 +03:00
Jukka Aho 30e405ecba refactor(topology): dedupe Segment nnodes and exports
Use the generic `AbstractTopology{N}` node count, fix LICENSE URL, and remove
duplicate `Seg*` exports.

- Drop redundant `nnodes`/`export` lines from `segments.jl`.
2026-05-09 18:22:28 +03:00
Jukka Aho ca78e6a645 refactor(topology): dedupe Quadrilateral nnodes and exports
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`.
2026-05-09 18:22:23 +03:00
Jukka Aho fa34183676 docs(topology): clarify pyramid support and dedupe nnodes/export
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).
2026-05-09 18:22:16 +03:00
Jukka Aho 4f8c6b493c refactor(topology): centralize Hexahedron nnodes and trim 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.
2026-05-09 18:22:06 +03:00
Jukka Aho ea12d4310e docs(topology): drop bold emphasis in AbstractTopology docstring
Align the topology API prose with the repository documentation style guide.
2026-05-09 18:21:59 +03:00
Jukka Aho 69e0f3d9e2 chore(sparse): remove unused SparseVector DOK prototype
Delete the experimental dictionary-backed sparse vector helper not wired into
the package entry manifest.

- Drop `src/sparse/sparsevectordok.jl`.
2026-05-09 18:21:34 +03:00
Jukka Aho 32e47f68b6 chore(sparse): delete duplicate CSC helper include target
Remove the standalone CSC utilities file now superseded by
`src/legacy/sparse_helpers.jl` and dropped from `sparse.jl`.

- Drop `src/sparse/sparsematrixcsc.jl`.
2026-05-09 18:21:32 +03:00
Jukka Aho d66c5f78b6 refactor(sparse): slim COO module and SPDX header
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`).
2026-05-09 18:21:11 +03:00
Jukka Aho 4fb3dcec7c chore(solvers): delete unused solver base stubs
Remove the standalone solver scaffolding file outside the active include graph.

- Drop `src/solvers/solvers_base.jl`.
2026-05-09 18:20:19 +03:00
Jukka Aho 59ff3be59b docs(quadrature): explain Tuple wrap in integration_points
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`.
2026-05-09 18:20:11 +03:00
Jukka Aho eddd901fa4 docs(quadrature): clarify default_quadrature overload story
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.
2026-05-09 18:19:56 +03:00
Jukka Aho d1716ab969 docs(physics): cross-link strain extraction helpers
Note that `extract_strain` consumes an existing displacement gradient, with
`compute_strain` covering the assembly path from nodal DOFs.
2026-05-09 18:15:45 +03:00
Jukka Aho 3ada6aa07d docs(physics): tidy Thermal tag docstring
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.
2026-05-09 18:15:35 +03:00
Jukka Aho 6a3c6754cb docs(physics): trim api.jl to assembler-era stubs
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.
2026-05-09 18:15:34 +03:00