Commit Graph

930 Commits

Author SHA1 Message Date
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 a7a0e42c48 refactor(src): remove api.jl
src/api.jl | 202 -------------------------------------------------------------  1 file changed, 202 deletions(-)
2026-05-09 16:30:28 +03:00
Jukka Aho 487f977dea refactor(src): update README.md
src/README.md | 597 ++++++----------------------------------------------------  1 file changed, 61 insertions(+), 536 deletions(-)
2026-05-09 16:30:28 +03:00
Jukka Aho fa0b6b51ba refactor(src): update JuliaFEM.jl
src/JuliaFEM.jl | 821 +++++++++++++++++---------------------------------------  1 file changed, 248 insertions(+), 573 deletions(-)
2026-05-09 16:30:28 +03:00
Jukka Aho 9ee8157c54 test(dofs): add DOF extraction test
New test file for DOF extraction functionality:
- Tests extract_element_dofs() function
- Tests extract_element_dofs_structured() function
- Single-field and multi-field test cases
- Type stability verification

Provides test coverage for DOF extraction from global solution vectors.
2025-12-15 06:20:23 +02:00
Jukka Aho 3090679f85 docs(dofs): add generated vs manual DOF comparison example
New comparison example demonstrating:
- Generated DOF extraction vs manual implementation
- Performance comparison
- Code generation benefits
- Type stability advantages

Provides comparison example for DOF system code generation.
2025-12-15 06:20:06 +02:00
Jukka Aho 418f40a2df docs(dofs): add simple DOF usage example
New example file demonstrating basic DOF system usage:
- Simple single-field and multi-field element creation
- DOFManager usage
- Element creation workflow
- Basic DOF extraction examples

Provides simple usage examples for the DOF system.
2025-12-15 06:19:58 +02:00
Jukka Aho 0f8c013178 docs(dofs): add DOF system performance analysis
New performance analysis documentation for DOF system:
- Performance characteristics of DOF-based operations
- Type stability analysis
- Allocation profiling results
- Optimization strategies

Provides performance documentation for the DOF system.
2025-12-15 06:19:53 +02:00
Jukka Aho 3ee615045b docs(dofs): add comprehensive DOF system documentation
New 205-line DOF system documentation:
- Philosophy: multi-field is fundamental, single-field is special case
- Core concept: DOF{T,E} abstract type for type-level specifications
- Field specifications with @DOFSet macro
- Usage examples for single-field and multi-field elements
- DOFManager and element creation workflow
- DOF connectivity for inverse mapping
- Performance notes and design rationale

Provides complete documentation for the unified DOF system architecture.
2025-12-15 06:19:47 +02:00
Jukka Aho fd51534b6b feat(physics): add helper utilities for multi-field microkernel assembly
New 88-line formulation utilities:
- field_type_for_dispatch(): extract field type from Element's S parameter
- Helper functions for multi-field Element{K,P,S} system
- Works with NamedTuple-based field specifications
- Supports thermoelasticity and other multi-physics couplings
- Already integrated in JuliaFEM.jl (line 500)

Provides utilities for multi-field microkernel assembly with Element{K,P,S} system.
2025-12-15 06:18:44 +02:00
Jukka Aho 72b10c937b feat(physics): add microkernel interface for DOF-based assembly
New 83-line microkernel interface:
- evaluate(): compute single scalar contribution to K[i,j] at integration point
- Matrix-free assembly support for DOF-based assemblers
- Multi-physics coupling via type dispatch
- Zero-allocation assembly with precomputed caches
- Default implementation returns 0.0 (no coupling)
- Already integrated in JuliaFEM.jl (line 499)

Provides microkernel architecture for efficient matrix-free assembly.
2025-12-15 06:18:38 +02:00
Jukka Aho 4a47610d3f feat(physics): add strain extraction from displacement gradients
New 60-line strain extraction system:
- extract_strain(): extract strain tensor from displacement gradient
- extract_strain_rate(): extract strain rate from velocity gradient
- extract_strain_2d(): 2D version
- Uses symmetric() to compute symmetric part of gradient
- Already integrated in JuliaFEM.jl (line 186)

Provides strain computation for continuum mechanics formulations.
2025-12-15 06:18:18 +02:00
Jukka Aho fc2ced0d4a feat(basis): add plate element basis functions (DKT, DST)
New 416-line plate element basis system:
- AbstractPlateBasis: base type for plate bending elements
- DKT (Discrete Kirchhoff Triangle): 3-node triangular plate element
- DST (Discrete Shear Triangle): 3-node Mindlin-Reissner plate element
- Non-conforming elements with multiple DOF types per node (w, θx, θy)
- Mixed continuity: C0 deflection, discontinuous rotations
- Kirchhoff constraint enforcement via basis construction
- References: Batoz et al. (1980), Zienkiewicz & Taylor

Provides plate bending element basis functions for structural analysis.
2025-12-15 06:17:43 +02:00
Jukka Aho d1fb022fcc feat(materials): add material trait system foundation
New 88-line material trait system:
- supported_physics(): returns tuple of supported physics types
- required_field_types(): returns tuple of required field types
- required_state_variables(): returns tuple of state variable types
- Type-level dispatch support for @generated functions
- Extensible trait system for material implementations
- Already integrated in JuliaFEM.jl (line 430)

Provides foundation for compositional material trait system.
2025-12-15 06:17:34 +02:00
Jukka Aho e8c832ac6e feat(materials): add compositional state variable system
New 91-line state variable trait system:
- AbstractStateVariable: base type for state variables
- state_variable_type(), default_symbol(): state variable traits
- PlasticStrain, Backstress, EquivalentPlasticStrain: example implementations
- Compositional design: state variables are independent building blocks
- Already integrated in JuliaFEM.jl (line 425)

Provides extensible state variable system for material state management.
2025-12-15 06:17:30 +02:00
Jukka Aho 3259d037be feat(fields): add LocalField structure for material evaluation
New 62-line LocalField structure:
- LocalField{T,G,R,GR}: field quantities at a point (value, gradient, rate, gradient_rate)
- Unified dynamic and quasi-static treatment (quasi-static: rate=0)
- Supports field values, spatial gradients, time derivatives, gradient rates
- Used for material evaluation at integration points
- Already integrated in JuliaFEM.jl (line 141)

Provides comprehensive field data structure for material constitutive evaluation.
2025-12-15 06:17:25 +02:00
Jukka Aho dd50aa3f4c feat(elements): add field interpolation at quadrature points
New 527-line field interpolation system:
- interpolate_fields(): interpolate all fields and gradients at reference point
- interpolate_field(): interpolate single field
- interpolate_field_value(): interpolate field value only
- Supports scalar and vector fields with gradients
- Zero-allocation @generated function for type stability
- Returns NamedTuple with field values and gradients
- Already integrated in JuliaFEM.jl (line 354)

Provides comprehensive field interpolation for material evaluation at integration points.
2025-12-15 06:17:05 +02:00
Jukka Aho 390965b524 feat(elements): add DOF extraction from global solution vector
New 122-line DOF extraction system:
- extract_element_dofs(): extract element DOFs as flat tuples from global vector
- extract_element_dofs_structured(): extract as NamedTuple with field names
- Zero-allocation @generated function for type stability
- Supports single-field and multi-field DOF specifications
- Already integrated in JuliaFEM.jl (line 353)

Provides efficient DOF extraction for element-level operations.
2025-12-15 06:16:39 +02:00
Jukka Aho 56d4a5ae70 feat(materials): add global material cache for state variables
New 362-line material cache system:
- GlobalMaterialCache{StateType}: stores state variables at all IPs/elements
- material_state_type(): infer state NamedTuple type from material traits
- create_global_material_cache(): factory function with automatic type inference
- create_zero_state(): zero-initialize state NamedTuples
- Supports stateless (empty NamedTuple) and stateful materials
- Type-stable NamedTuple-based storage
- Zero-allocation state updates (functional style)
- Already integrated in JuliaFEM.jl (line 437)

Provides persistent state storage for time-stepping and material state management.
2025-12-15 06:16:16 +02:00
Jukka Aho e293e74eae feat(materials): add material field trait system
New 140-line material field trait system:
- required_material_fields(): define fields required by physics (Elasticity, Thermal)
- material_field_type(): infer field NamedTuple type from material's supported physics
- compose_field_types(): compose multiple NamedTuple types for multi-physics
- Supports Elasticity (σ, 𝔻) and Thermal (q, k) physics
- Type-stable field type inference
- Already integrated in JuliaFEM.jl (line 431)

Provides compositional field design for material-physics coupling.
2025-12-15 06:15:49 +02:00
Jukka Aho 291384dcb9 feat(io): add Code Aster .rmed results reading (requires HDF5)
New 60-line Code Aster results reader:
- RMEDFile: Code Aster result .rmed file structure
- aster_read_nodes(): read nodes from result file
- aster_read_data(): read nodal/Gauss point field data
- Supports NODE and ELGA (Gauss point) field types
- Requires HDF5.jl (optional dependency)
- Required by AsterReader module

Provides Code Aster .rmed file results reading functionality.
2025-12-15 06:15:00 +02:00
Jukka Aho ae9de8dd91 feat(io): add Code Aster .med mesh reading (requires HDF5)
New 222-line Code Aster mesh reader:
- MEDFile: Code Aster binary .med file structure
- aster_read_mesh_raw(): read mesh from .med file using HDF5
- aster_parse_nodes(): parse node coordinates from text sections
- get_mesh_names(), get_mesh(): mesh access utilities
- get_node_sets(), get_element_sets(): extract named sets
- to_ascii(): convert Int8 vectors to ASCII strings
- Requires HDF5.jl (optional dependency)
- Required by AsterReader module

Provides Code Aster .med file mesh reading functionality.
2025-12-15 06:14:40 +02:00
Jukka Aho d7607f09fd feat(io): add AsterReader module for Code Aster .med/.rmed files
New 25-line AsterReader module:
- Module wrapper for Code Aster reader (requires HDF5.jl)
- Includes: read_aster_mesh.jl, read_aster_results.jl
- Exports: aster_read_mesh
- parse_node_id(): utility for parsing node IDs from names
- Requires HDF5.jl (optional dependency, conditionally loaded)

Provides Code Aster .med/.rmed file reading infrastructure.
2025-12-15 06:14:19 +02:00
Jukka Aho 832bf2a34d feat(io): add Abaqus model download utility
New 43-line download utility:
- abaqus_download(): download Abaqus models from internet
- Uses environment variables: ABAQUS_DOWNLOAD_URL, ABAQUS_DOWNLOAD_DIR
- Checks if file already exists before downloading
- Supports dry-run mode for testing
- Required by AbaqusReader module for example model downloads

Provides utility for downloading Abaqus example models from documentation.
2025-12-15 06:13:51 +02:00
Jukka Aho 11ff412ed2 feat(io): add surface element creation from Abaqus surfaces
New 68-line surface element creation:
- create_surface_element(): create surface elements from solid element faces
- element_mapping: mapping table for element face → surface element topology
- Supports Tet4→Tri3, Tet10→Tri6, Hex8→Quad4, Hex20→Quad8, Wedge6→Quad4/Tri3
- Maps Abaqus surface definitions to JuliaFEM element types
- Required by abaqus_reader.jl for boundary condition application

Provides surface element extraction from Abaqus .inp file surface definitions.
2025-12-15 06:13:44 +02:00