Commit Graph

1803 Commits

Author SHA1 Message Date
Jukka Aho bea37f797e test(dofs): remove misplaced extraction test under src/dofs/test
Delete stray test file from src tree; extraction belongs under test/dofs/.
2026-05-09 16:48:00 +03:00
Jukka Aho fe4fff86f0 refactor(dofs): remove unused mixed.jl placeholder module
Drop stale mixed-field scaffold superseded by @DOFSet multifield specs.
2026-05-09 16:47:53 +03:00
Jukka Aho 77fd030124 test(dofs): remove legacy simple_usage script from src/dofs/examples
Delete obsolete usage demo kept next to removed DOFManager workflows.
2026-05-09 16:47:43 +03:00
Jukka Aho 15c8af87bb test(dofs): remove generated_vs_manual_comparison example under src
Drop unmaintained benchmark-style script from src/dofs/examples; coverage lives
in test/dofs instead.
2026-05-09 16:47:30 +03:00
Jukka Aho efde9de197 refactor(dofs): remove entity_dofs convenience aliases
Drop ScalarDOF/VectorDOF/TensorDOF aliases and canned Lagrange-* constants that
duplicated patterns now expressed via `DOF{Q,E}` and `@DOFSet`.

- Eliminates Vec{1}-based scalar alias layering in favor of explicit quantities.
- Removes unused LagrangeHeat/LagrangeElasticity shorthand blocks tied to old tutorials.
2026-05-09 16:46:29 +03:00
Jukka Aho 8c1bb79659 docs(dofs): point module banner at dof_handler include path
Use LICENSE.md URL, drop decorative bold in prose, and rename the JuliaFEM.jl
late-include comment from dof_manager to dof_handler.
2026-05-09 16:45:51 +03:00
Jukka Aho ccffc984b5 refactor(dofs): remove Dict-based dof_manager.jl
Delete the legacy global numbering implementation that stored DOFs in Dicts and
registered Tuple-shaped field specs at runtime.

- Remove `mutable struct DOFManager` with `node_to_dofs`, `field_specs`, mesh
  reference, and incremental `next_dof` counters at odds with type-stable layouts.
- Drop `register_fields!`, `allocate_dofs!`, `count_field_dofs`, mesh-local
  entity counters, and `_assign_element_dofs!` variants tied to that storage.
- Remove `create_elements!` / `_build_dof_connectivity` definitions superseded by
  `dof_handler.jl` (`DOFHandler`, `_make_element_dofs`, `build_dof_connectivity`).
- Element-set helpers and BC-oriented accessors live on `DOFHandler` now; the
  `DOFManager` identifier remains only as the backward-compatible alias.
2026-05-09 16:45:32 +03:00
Jukka Aho 9341b70cd9 docs(agents): tie commit bullet guidance to patch size
Clarify that optional bullets become substantive grouped lists when the diff
is large or spans several concerns.

- Adjust the workflow-rules bullet that describes Conventional Commit bodies.
2026-05-09 16:45:00 +03:00
Jukka Aho d711cab0d3 docs(contributing): note scaled commit message bodies
Explain next to the one-file workflow that message depth should follow patch
size—grouped bullets on large or multi-concern commits.

- Adds one bullet under coding rules pointing readers at `.github/prompts/commit.prompt.md`.
2026-05-09 16:44:46 +03:00
Jukka Aho 0182fc7566 docs(git): add tracked AI commit workflow prompt
Introduce `.github/prompts/commit.prompt.md` as the contributor-facing description
of how assistants should stage, review, propose, and record commits.

- Document defaults: one file per commit, rare justified pairs, no blanket `git add`.
- Describe optional `.githooks/pre-commit` cap at two staged paths.
- Require reading the full `git diff --staged` (no truncation) before messaging.
- Spell out approval-before-commit flow and Conventional Commits subject lines.
- Scale the body to the patch: short summaries for small edits; large or
  multi-concern diffs need grouped, substantive bullets so history stays readable.
- Keep checklist items aligned with that depth expectation.
2026-05-09 16:44:31 +03:00
Jukka Aho 3af1067aeb feat(dofs): add type-stable DOFHandler implementation
Introduce `DOFHandler{M,S,NF}` with flat `field_starts::NTuple{NF,Vector{Int}}`
per field and entity id, optional `facet_maps` for Edge/Face unknowns, running
`total_dofs`, and a `dof_connectivity` slot populated after element creation.
Reserve `DOFManager` as a backward-compatible alias.

Construction and layout:

- Number DOFs in field-declaration order; within each field walk entities in id
  order (nodes, cells, or facet ids) using compile-time `dof_size` widths.
- Auto-build `AbstractFacetConnectivityMaps` for Hex8/Hex20/Tet4/Tet10/Wedge6/Pyr5
  when the DOFSet references Edge or Face; error on unsupported mesh/topology pairs.

Mixed-field helpers:

- `global_field_ranges` — contiguous global index ranges per declared field,
  checked against `handler.total_dofs`.
- `global_facet_dof` — first global DOF for a Face-owned field given facet gid.
- `saddle_point_blocks` / `saddle_point_matrix_blocks` — named views or CSC
  subblocks for two-field `u`/`p`-style matrices using those ranges.

Hot path:

- `@generated _make_element_dofs` emits an `NTuple{N,UInt64}` from handler tables:
  Vertex via element connectivity, Cell via element id, Edge/Face via
  `elem_edge_gid` / `elem_face_gid`; assert emitted length matches `N`.
- `create_elements!` builds the handler, fills `Vector{Element{K,P,S,N}}`, assigns
  DOFs with `_make_element_dofs`, then replaces `handler.dof_connectivity` via
  `build_dof_connectivity`. Support `Element{K,P,S}` with inferred `N`, and wrap a
  bare single `DOF{Q,E}` into a one-field DOFSet.

Legacy-oriented utilities:

- `get_node_dofs` collects Vertex-field DOFs for one node (allocating helper).
- `get_element_ids` resolves ids from `mesh.element_sets` by name or symbol.
2026-05-09 16:42:13 +03:00
Jukka Aho 2afd7a856a refactor(dofs): slim dof_connectivity.jl to builders + DOFHandler overload
Move struct definitions to dof_connectivity_types.jl; drop GPU matrix layout;
use DOFHandler in docs and convenience build_dof_connectivity overload.
2026-05-09 16:35:59 +03:00
Jukka Aho 0f1a1f2f4c feat(dofs): split DOF connectivity structs into dof_connectivity_types.jl
Add DOFElementConnection/DOFConnectivity definitions and empty-placeholder ctor
for handlers before create_elements!.
2026-05-09 16:35:44 +03:00
Jukka Aho 3a1c931021 docs(dofs): remove stale performance_analysis markdown
Drop superseded DOF extraction benchmark narrative from src/dofs/docs.
2026-05-09 16:34:36 +03:00
Jukka Aho f56c9f2d11 docs(dofs): refresh api.jl DOF docstrings for @DOFSet
Align module docs with flat dof_indices, LICENSE.md link, and NamedTuple caveat.
2026-05-09 16:34:16 +03:00
Jukka Aho ef38a28fb2 docs(dofs): rewrite README for DOFHandler and matrix-free connectivity
Replace outdated DOFManager/@Fields prose with current files, create_elements!,
facet-DOF notes, and assembler pointers.
2026-05-09 16:34:03 +03:00
Jukka Aho abd21331c9 docs(basis): fix LICENSE URL in vandermonde.jl header 2026-05-09 16:33:46 +03:00
Jukka Aho a43ae90891 docs(basis): fix LICENSE URL in subs.jl header 2026-05-09 16:33:39 +03:00
Jukka Aho c9d806a946 feat(basis): add reference RT0 vector fields for Tet4 and Hex8
Add Whitney-type tet face basis and hex tensor-product face constants for Piola push-forward.
2026-05-09 16:33:27 +03:00
Jukka Aho 852ee67f79 refactor(basis): remove legacy plate_elements DKT basis module
Delete AbstractPlateBasis/DKT definitions from basis/; plate handling moves elsewhere.
2026-05-09 16:33:16 +03:00
Jukka Aho 29a01c1156 refactor(basis): remove NSurf NURBS surface basis
Drop unmaintained tensor-product surface NURBS tied to removed NURBS helpers.
2026-05-09 16:33:05 +03:00
Jukka Aho 3af6d35503 refactor(basis): remove NSolid NURBS volume basis
Drop unmaintained tensor-product solid NURBS tied to removed NURBS helpers.
2026-05-09 16:32:57 +03:00
Jukka Aho d3f6e96393 refactor(basis): remove NSeg NURBS segment basis
Delete unmaintained nurbs_segment.jl tied to removed NURBS helpers.
2026-05-09 16:32:26 +03:00
Jukka Aho f20e095a9c refactor(basis): remove unused NURBS recursion stub
Drop standalone nurbs.jl helper not wired into the current basis pipeline.
2026-05-09 16:32:18 +03:00
Jukka Aho 0b22b324b8 feat(basis): add reference Tet4 Whitney Nédélec edge helpers
Introduce nedelec_whitney_tet_reference and hierarchical slot-2 enrichment
using barycentric gradients on the linear reference tetrahedron.
2026-05-09 16:32:05 +03:00
Jukka Aho 947dbaa625 refactor(src): remove math.jl
src/basis/math.jl | 255 ------------------------------------------------------  1 file changed, 255 deletions(-)
2026-05-09 16:30:39 +03:00
Jukka Aho 038d115d8a refactor(src): update basis_generator.jl
src/basis/basis_generator.jl | 4 ++--  1 file changed, 2 insertions(+), 2 deletions(-)
2026-05-09 16:30:39 +03:00
Jukka Aho 1f87d1d21a refactor(src): update basis_generated.jl
src/basis/basis_generated.jl | 2 +-  1 file changed, 1 insertion(+), 1 deletion(-)
2026-05-09 16:30:39 +03:00
Jukka Aho 1c5fbd00a6 refactor(src): update api.jl
src/basis/api.jl | 43 ++++++++-----------------------------------  1 file changed, 8 insertions(+), 35 deletions(-)
2026-05-09 16:30:39 +03:00
Jukka Aho 80d0cde05f refactor(src): update README.md
src/basis/README.md | 1554 ++++-----------------------------------------------  1 file changed, 114 insertions(+), 1440 deletions(-)
2026-05-09 16:30:39 +03:00
Jukka Aho 028c4e6a2c refactor(src): remove cpu.jl
src/backend/cpu.jl | 261 -----------------------------------------------------  1 file changed, 261 deletions(-)
2026-05-09 16:30:38 +03:00
Jukka Aho dce7affae8 refactor(src): remove abstract.jl
src/backend/abstract.jl | 241 ------------------------------------------------  1 file changed, 241 deletions(-)
2026-05-09 16:30:38 +03:00
Jukka Aho 707940181b refactor(src): remove scatter_to_triplets.jl
src/assemblers/scatter_to_triplets.jl | 63 -----------------------------------  1 file changed, 63 deletions(-)
2026-05-09 16:30:38 +03:00
Jukka Aho 04a5b6015b refactor(src): remove scatter_to_force.jl
src/assemblers/scatter_to_force.jl | 37 -------------------------------------  1 file changed, 37 deletions(-)
2026-05-09 16:30:38 +03:00
Jukka Aho 5d8af1e862 refactor(src): remove scatter_blocks_to_triplets_symmetric_manually_unrolled.jl
...ocks_to_triplets_symmetric_manually_unrolled.jl | 124 ---------------------  1 file changed, 124 deletions(-)
2026-05-09 16:30:38 +03:00
Jukka Aho 20d4b46f5e refactor(src): remove scatter_blocks_to_triplets_symmetric_direct.jl
.../scatter_blocks_to_triplets_symmetric_direct.jl | 115 ---------------------  1 file changed, 115 deletions(-)
2026-05-09 16:30:37 +03:00
Jukka Aho 9a04a32d2b refactor(src): remove scatter_blocks_to_triplets_symmetric.jl
.../scatter_blocks_to_triplets_symmetric.jl        | 101 ---------------------  1 file changed, 101 deletions(-)
2026-05-09 16:30:37 +03:00
Jukka Aho 7095d8597e refactor(src): remove scatter_blocks_to_triplets.jl
src/assemblers/scatter_blocks_to_triplets.jl | 78 ----------------------------  1 file changed, 78 deletions(-)
2026-05-09 16:30:37 +03:00
Jukka Aho 6fdb2fac29 refactor(src): remove scatter_blocks_to_force.jl
src/assemblers/scatter_blocks_to_force.jl | 54 -------------------------------  1 file changed, 54 deletions(-)
2026-05-09 16:30:37 +03:00
Jukka Aho 8cf3222d05 feat(src): add partitioning.jl
src/assemblers/partitioning.jl | 462 +++++++++++++++++++++++++++++++++++++++++  1 file changed, 462 insertions(+)
2026-05-09 16:30:36 +03:00
Jukka Aho 4edf8301b1 feat(src): add partitioned_matvec.jl
src/assemblers/partitioned_matvec.jl | 276 +++++++++++++++++++++++++++++++++++  1 file changed, 276 insertions(+)
2026-05-09 16:30:36 +03:00
Jukka Aho c8add0befa feat(src): add packed_layout.jl
src/assemblers/packed_layout.jl | 597 ++++++++++++++++++++++++++++++++++++++++  1 file changed, 597 insertions(+)
2026-05-09 16:30:36 +03:00
Jukka Aho 1b702c22eb feat(src): add microkernel.jl
src/assemblers/microkernel.jl | 144 ++++++++++++++++++++++++++++++++++++++++++  1 file changed, 144 insertions(+)
2026-05-09 16:30:36 +03:00
Jukka Aho a6c39ab1cb feat(src): add preconditioners.jl
src/assemblers/matrix_free/preconditioners.jl | 817 ++++++++++++++++++++++++++  1 file changed, 817 insertions(+)
2026-05-09 16:30:36 +03:00
Jukka Aho db933c9ba1 feat(src): add operator.jl
src/assemblers/matrix_free/operator.jl | 303 +++++++++++++++++++++++++++++++++  1 file changed, 303 insertions(+)
2026-05-09 16:30:35 +03:00
Jukka Aho f9eda10278 feat(src): add mpc.jl
src/assemblers/matrix_free/mpc.jl | 336 ++++++++++++++++++++++++++++++++++++++  1 file changed, 336 insertions(+)
2026-05-09 16:30:35 +03:00
Jukka Aho 20b405429a feat(src): add loads.jl
src/assemblers/matrix_free/loads.jl | 716 ++++++++++++++++++++++++++++++++++++  1 file changed, 716 insertions(+)
2026-05-09 16:30:35 +03:00
Jukka Aho 8ac04798a0 feat(src): add eigensolve.jl
src/assemblers/matrix_free/eigensolve.jl | 288 +++++++++++++++++++++++++++++++  1 file changed, 288 insertions(+)
2026-05-09 16:30:35 +03:00
Jukka Aho 956020de73 feat(src): add dirichlet.jl
src/assemblers/matrix_free/dirichlet.jl | 405 ++++++++++++++++++++++++++++++++  1 file changed, 405 insertions(+)
2026-05-09 16:30:35 +03:00
Jukka Aho 3f9ba65f5e feat(src): add README.md
src/assemblers/matrix_free/README.md | 38 ++++++++++++++++++++++++++++++++++++  1 file changed, 38 insertions(+)
2026-05-09 16:30:35 +03:00