New 137-line test file included in main test/runtests.jl:
- Tests extract_strain() function (displacement gradient → strain tensor)
- Tests extract_strain_rate() function (velocity gradient → strain rate tensor)
- Tests pure extension, shear deformation, and general deformation cases
- Tests quasi-static strain rate from increments
- Validates symmetric tensor properties and engineering shear strain
Ensures strain extraction functions work correctly for continuum mechanics.
New 294-line test file included in main test/runtests.jl:
- Tests refactored AssemblyMaterialWorkspace with compositional field design
- Tests field structure inference from material traits
- Tests workspace creation with correct field types
- Tests field access (backward compatibility)
- Tests multiphysics support preparation
- Validates zero allocations in workspace operations
Ensures assembly workspace refactoring maintains backward compatibility and performance.
New 308-line test file included in main test/runtests.jl:
- Tests GlobalMaterialCache with cantilever beam problem
- Verifies ZERO allocations during state access and updates
- Tests cache creation from material traits (automatic)
- Tests time-stepping workflow with zero allocations in hot loop
- Includes performance benchmarks using BenchmarkTools
- Validates material state type inference
Comprehensive performance test ensuring material cache system has zero allocations.
New 229-line test file included in main test/runtests.jl:
- Tests PerfectPlasticity material instantiation and traits
- Tests global material cache creation for stateful materials
- Tests direct NamedTuple state manipulation (compositional design)
- Tests cache access and manipulation (set_state!, update_cache!)
- Tests multi-step plasticity simulation workflow
- Tests state variable helpers (get_state_variable, set_state_variable)
- Validates type stability of key operations
Comprehensive integration test ensuring plasticity material works with cache system.
New 98-line test file included in main test/runtests.jl:
- Tests GlobalMaterialCache construction for stateless and stateful materials
- Tests state access and update operations (get_state, set_state!, update_cache!, reset_cache!)
- Tests state variable helpers (get_state_variable, set_state_variable)
- Tests integration with material traits (create_global_material_cache)
- Validates cache structure and state management for time-dependent materials
Ensures material cache system works correctly for storing state variables at integration points.
New 99-line test file included in main test/runtests.jl:
- Tests LinearElastic material traits (supported_physics, required_field_types, required_state_variables)
- Validates trait function existence and exports
- Tests helper functions (is_stateful, get_state_variable_types, get_state_variable_symbols)
- Verifies compositional design philosophy for state variables
- Tests physics-to-field-type derivation
Ensures material trait system works correctly for compositional material design.
New 93-line test file included in main test/runtests.jl:
- Tests AbstractStateVariable type hierarchy
- Validates state_variable_type trait (returns concrete types)
- Validates default_symbol trait (returns symbols like :ε_p, :α, :κ, :d)
- Tests concrete type instantiation (PlasticStrain, Backstress, etc.)
- Tests NamedTuple usage with state variable symbols
- Verifies trait consistency across all state variable types
Ensures state variable system works correctly for material models.
New 31-line test for partition of unity property:
- Tests that sum of basis functions equals 1.0
- Covers Seg2, Tri3, Quad4 elements
- Included in test/basis/runtests.jl
- Validates fundamental basis function property
Ensures basis functions satisfy partition of unity requirement.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.