Commit Graph

84 Commits

Author SHA1 Message Date
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
Jukka Aho 35bdac5b37 refactor(src): remove material_cache.jl
src/assemblers/material_cache.jl | 782 ---------------------------------------  1 file changed, 782 deletions(-)
2026-05-09 16:30:34 +03:00
Jukka Aho 2e01dfc329 refactor(src): remove kernel_interface.jl
src/assemblers/kernel_interface.jl | 649 -------------------------------------  1 file changed, 649 deletions(-)
2026-05-09 16:30:34 +03:00
Jukka Aho 8e2217ca8c feat(src): add halo_exchange.jl
src/assemblers/halo_exchange.jl | 204 ++++++++++++++++++++++++++++++++++++++++  1 file changed, 204 insertions(+)
2026-05-09 16:30:34 +03:00
Jukka Aho 05d9a2b335 refactor(src): remove geometry_cache.jl
src/assemblers/geometry_cache.jl | 239 ---------------------------------------  1 file changed, 239 deletions(-)
2026-05-09 16:30:33 +03:00
Jukka Aho 036f805e41 refactor(src): remove element_cache.jl
src/assemblers/element_cache.jl | 120 ----------------------------------------  1 file changed, 120 deletions(-)
2026-05-09 16:30:33 +03:00
Jukka Aho 8bab229d88 refactor(src): remove element_based_csc.jl
src/assemblers/element_based_csc.jl | 375 ------------------------------------  1 file changed, 375 deletions(-)
2026-05-09 16:30:33 +03:00
Jukka Aho c19465662c refactor(src): remove element_based_coo.jl
src/assemblers/element_based_coo.jl | 461 ------------------------------------  1 file changed, 461 deletions(-)
2026-05-09 16:30:33 +03:00
Jukka Aho 1b2f5f1738 feat(src): add scatter_blocks_to_triplets_symmetric_direct.jl
.../scatter_blocks_to_triplets_symmetric_direct.jl | 115 +++++++++++++++++++++  1 file changed, 115 insertions(+)
2026-05-09 16:30:33 +03:00
Jukka Aho 387abbb83c feat(src): add scatter_blocks_to_force.jl
.../element_based/scatter_blocks_to_force.jl       | 54 ++++++++++++++++++++++  1 file changed, 54 insertions(+)
2026-05-09 16:30:32 +03:00
Jukka Aho 25315ce40a feat(src): add element_based_coo.jl
src/assemblers/element_based/element_based_coo.jl | 197 ++++++++++++++++++++++  1 file changed, 197 insertions(+)
2026-05-09 16:30:32 +03:00
Jukka Aho d137df930e feat(src): add README.md
src/assemblers/element_based/README.md | 20 ++++++++++++++++++++  1 file changed, 20 insertions(+)
2026-05-09 16:30:32 +03:00
Jukka Aho b6f3e9bef3 refactor(src): remove dof_field_info.jl
src/assemblers/dof_field_info.jl | 197 ---------------------------------------  1 file changed, 197 deletions(-)
2026-05-09 16:30:32 +03:00
Jukka Aho 97739a58f6 refactor(src): remove dof_based_coo.jl
src/assemblers/dof_based_coo.jl | 720 ----------------------------------------  1 file changed, 720 deletions(-)
2026-05-09 16:30:32 +03:00
Jukka Aho 2e6c3f6ea6 feat(src): add dof_based_coo_ka.jl
src/assemblers/dof_based/dof_based_coo_ka.jl | 562 +++++++++++++++++++++++++++  1 file changed, 562 insertions(+)
2026-05-09 16:30:31 +03:00
Jukka Aho 78f5feabfa feat(src): add dof_based_coo.jl
src/assemblers/dof_based/dof_based_coo.jl | 1344 +++++++++++++++++++++++++++++  1 file changed, 1344 insertions(+)
2026-05-09 16:30:31 +03:00
Jukka Aho b87aa90a9c feat(src): add README.md
src/assemblers/dof_based/README.md | 50 ++++++++++++++++++++++++++++++++++++++  1 file changed, 50 insertions(+)
2026-05-09 16:30:31 +03:00
Jukka Aho e5b80fd171 refactor(src): remove csc_cache.jl
src/assemblers/csc_cache.jl | 193 --------------------------------------------  1 file changed, 193 deletions(-)
2026-05-09 16:30:31 +03:00
Jukka Aho 1f64845fad refactor(src): remove coo_cache.jl
src/assemblers/coo_cache.jl | 203 --------------------------------------------  1 file changed, 203 deletions(-)
2026-05-09 16:30:30 +03:00
Jukka Aho a49de72aaf feat(src): add material_cache.jl
src/assemblers/caches/material_cache.jl | 421 ++++++++++++++++++++++++++++++++  1 file changed, 421 insertions(+)
2026-05-09 16:30:30 +03:00
Jukka Aho 378405e210 feat(src): add geometry_cache.jl
src/assemblers/caches/geometry_cache.jl | 123 ++++++++++++++++++++++++++++++++  1 file changed, 123 insertions(+)
2026-05-09 16:30:30 +03:00
Jukka Aho d81a3d4349 feat(src): add element_cache.jl
src/assemblers/caches/element_cache.jl | 132 +++++++++++++++++++++++++++++++++  1 file changed, 132 insertions(+)
2026-05-09 16:30:30 +03:00
Jukka Aho 7069a06a6e feat(src): add coo_cache.jl
src/assemblers/caches/coo_cache.jl | 177 +++++++++++++++++++++++++++++++++++++  1 file changed, 177 insertions(+)
2026-05-09 16:30:30 +03:00
Jukka Aho be505c6fec feat(src): add README.md
src/assemblers/caches/README.md | 16 ++++++++++++++++  1 file changed, 16 insertions(+)
2026-05-09 16:30:29 +03:00
Jukka Aho a2ab84b8cc refactor(src): remove caches.jl
src/assemblers/caches.jl | 21 ---------------------  1 file changed, 21 deletions(-)
2026-05-09 16:30:29 +03:00
Jukka Aho 6db7cf8104 refactor(src): update abstract.jl
src/assemblers/abstract.jl | 274 ++++++++++++++++++++++++---------------------  1 file changed, 144 insertions(+), 130 deletions(-)
2026-05-09 16:30:29 +03:00
Jukka Aho 0d7e64d4ac feat(src): add README.md
src/assemblers/README.md | 27 +++++++++++++++++++++++++++  1 file changed, 27 insertions(+)
2026-05-09 16:30:28 +03:00
Jukka Aho d85d96b899 feat(assemblers): add experimental DOF-based COO assembler
New 720-line experimental DOF-based assembly implementation:
- DOF-by-DOF paradigm: loops over DOFs (matrix rows) instead of elements
- DOFBasedCOOCache: pre-allocated cache with zero-allocation guarantees
- Matrix-free integration: computes K*v without intermediate storage
- Supports single-kernel problems (experimental limitation)
- Uses DOF connectivity infrastructure for inverse mapping
- Pre-computed element/geometry/material caches for performance
- extract_system(): builds sparse matrix from triplets
- create_cache(): factory function for cache creation

Use cases: matrix-free Krylov solvers, very large problems, contact mechanics, mixed methods.

Status: EXPERIMENTAL - single-kernel assumption only.
2025-12-15 06:06:49 +02:00
Jukka Aho fb3ea93d3d feat(assemblers): add DOF field info decoding for DOF-based assembly
New 197-line module for DOF field information:
- DOFFieldInfo struct: field, entity, component, node index
- decode_local_dof(): decodes local DOF indices to field/entity/component
- Supports single-field and multi-field DOF specifications
- Helper functions: flatten_dof_indices, fill_dof_buffer!
- Zero-allocation buffer operations
- Required dependency for dof_based_coo.jl

Enables DOF-based assembly to decode which field/entity/component each DOF represents.
2025-12-15 06:06:23 +02:00
Jukka Aho f252d6cad7 feat(assemblers): add manually unrolled symmetric scatter function
New 124-line scatter function with manual loop unrolling:
- Scatters symmetric blocked tensor stiffness matrix to COO triplets
- Manually unrolls inner 3×3 loops to eliminate dynamic dispatch
- Handles diagonal and off-diagonal blocks with symmetry
- Zero-allocation guarantee with pre-allocated arrays
- Performance optimization: eliminates 18 dynamic dispatch sites
- Required dependency for element_based_coo.jl

Provides optimized symmetric scattering for COO assembly.
2025-12-15 06:06:11 +02:00
Jukka Aho 5995115e72 feat(assemblers): add scatter_to_force! for force vector assembly
New 37-line scatter function for element-based force assembly:
- Scatters element force vector to global force vector in-place
- Zero-allocation guarantee (modifies global vector directly)
- Legacy format support
- Required dependency for element_based_coo.jl

Provides core force scattering functionality for COO assembly.
2025-12-15 06:05:51 +02:00
Jukka Aho 71b580f5ea feat(assemblers): add scatter_to_triplets! for COO assembly
New 63-line scatter function for element-based COO assembly:
- Scatters element stiffness matrix to triplet arrays (I, J, V)
- In-place operation with zero-allocation guarantee
- Capacity checking to prevent overflow
- Required dependency for element_based_coo.jl

Provides core scattering functionality for COO format assembly.
2025-12-15 06:05:32 +02:00
Jukka Aho bab3f6906c refactor(assemblers): replace MaterialStateCache with AssemblyMaterialWorkspace
Major refactoring: replace material state cache with compositional
workspace using NamedTuple fields for better flexibility and zero-allocation.

- Rename MaterialStateCache to AssemblyMaterialWorkspace
- Change from M<:AbstractMaterialState to FieldType, StateType parameters
- Use AoS pattern: fields::Vector{FieldType} instead of separate σ, 𝔻 vectors
- Add zero-allocation field access via @generated functions
- Add extract_tangent! for type-stable zero-allocation tangent extraction
- Add get_tangent_vector, get_stress_vector helper functions
- Add @field_vector macro for compile-time field access
- Add get_stress, get_tangent, get_field accessor functions
- Update reset! to use create_zero_field and create_zero_state
- Update create_material_cache to use trait system for type inference
- Add backward compatibility alias create_assembly_workspace
- Add extensive documentation for zero-allocation usage patterns
2025-12-12 23:31:35 +02:00
Jukka Aho 4385564778 refactor(assemblers): update kernel interface for new API and zero-allocation
Update kernel interface to use new material workspace API and improve
zero-allocation performance.

- Change ip.ξ to ip.coords in compute_element_stiffness!
- Add @inline to get_dof_mapping! for better inlining
- Optimize get_dof_mapping! to use indexed access instead of iteration
- Remove compute_node_contribution! function (unused)
- Update docstrings to use material_workspace instead of material_cache
- Update compute_all_blocks! example to use get_tangent_vector
- Add FIXME comment about removing B matrix computation functions
2025-12-12 23:30:57 +02:00