Commit Graph

1121 Commits

Author SHA1 Message Date
Jukka Aho 2df1072f65 feat(dofs): add DOF API with type-level field specifications
New 230-line API file defining DOF system foundation:
- AbstractDOF: base type for all field specifications
- DOF{T,E}: abstract type for type-level field specs (never instantiated)
- DOFSet: type alias for multi-field specifications (currently NamedTuple)
- dof_size(): utility for counting DOF components (Float64, Vec, Tensor, etc.)
- @DOFSet macro support for clean multi-field syntax
- Comprehensive documentation with examples
- Type-level, compile-time resolved (no runtime overhead)

Provides foundation for unified multi-field DOF system.
2025-12-15 06:08:58 +02:00
Jukka Aho 2c1701e6a5 feat(dofs): add DOF system main entry point
New 40-line main entry point for DOF system:
- Includes api.jl (DOF{T,E} abstract type)
- Includes fields.jl (field specification system)
- Documents multi-field philosophy (single-field is special case)
- Defines module structure and dependencies
- Already integrated in JuliaFEM.jl (line 313)

Provides unified type-level field specification system for finite elements.
2025-12-15 06:08:09 +02: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 078e9f2bc5 docs(mesh): add comprehensive mesh module documentation
New 303-line documentation file describing:
- Type-stable parametric Mesh{N,T} data structure
- Core data (nodes, connectivity, element/node sets, inverse connectivity)
- Files and their purposes (api.jl, mesh.jl, structured.jl, circular.jl, refine.jl, graph_ordering.jl)
- Mesh creation strategies (structured, circular, Gmsh)
- Mesh manipulation (refinement with LongestEdgeBisection)
- Mesh optimization (RCM bandwidth minimization)
- Usage patterns and examples
- Design philosophy (separation of concerns, type stability, industrial workflows)
- Future extensions and dependencies

Documents the complete mesh architecture and API.
2025-12-15 05:48:11 +02:00
Jukka Aho bb51559d92 docs(io): add I/O module documentation for mesh import/export
New 120-line documentation file describing:
- Supported mesh formats (Abaqus .inp, Code Aster .med/.rmed, Gmsh .msh)
- File organization (core readers vs legacy vendor package infrastructure)
- Design philosophy (weak dependencies, two-tier strategy)
- Future work (export formats, import enhancements, consolidation)
- Usage examples and dependency requirements

Documents the mesh I/O architecture and reader strategy.
2025-12-15 05:47:02 +02:00
Jukka Aho 71145f2ce1 docs(elements): add comprehensive elements module documentation
New 219-line documentation file explaining:
- Ciarlet's finite element triple (K, P, Σ) and computational implementation
- Element structure with type-stable @generated constructor
- Field specifications for single and multi-field elements
- DOF extraction strategies (flat and structured)
- Local-global DOF mapping for coupled multi-field assembly
- Performance notes showing zero-allocation achievement (5.5 ns)

Documents the Element{K,P,S,N} type and its zero-allocation design philosophy.
2025-12-15 05:46:24 +02:00
Jukka Aho 91e1428300 docs(src): add comprehensive source code architecture guide
New 536-line documentation file describing:
- Purpose and responsibility of each src/ subdirectory
- Module dependency order and include structure
- Directory health status with action items
- Cleanup plan for dead code and duplicates
- Design principles and future architecture roadmap

Documents all active modules (topology, basis, quadrature, mesh, materials,
assemblers, domains, solvers, physics, etc.) and identifies legacy/duplicate
code that needs cleanup.
2025-12-15 05:46:07 +02:00
Jukka Aho d2031036d9 refactor(materials): streamline perfect plasticity documentation
Removed verbose documentation sections:
- Removed extensive theory documentation (yield function, flow rule, hardening law, consistency condition)
- Removed detailed algorithm step-by-step explanations (radial return mapping)
- Removed type hierarchy, construction examples, and derived properties
- Removed performance notes and timing information
- Removed detailed function documentation with algorithm steps

Simplified docstrings to essential information about material parameters and function signatures.
2025-12-15 03:18:27 +02:00
Jukka Aho a682e964b4 refactor(materials): streamline Neo-Hookean documentation
Removed verbose documentation sections:
- Removed detailed theory explanations and strain energy formulas from module docstring
- Removed type hierarchy, properties, and construction examples
- Removed detailed function documentation with usage examples
- Removed performance notes and automatic differentiation explanations
- Removed stress conversion formulas and notes

Simplified docstrings to essential formulas (strain energy, stress computation) and function signatures.
2025-12-15 03:18:17 +02:00
Jukka Aho 8b1bc18124 refactor(materials): streamline linear elastic documentation
Removed verbose documentation sections:
- Removed detailed theory explanations and formulas from module docstring
- Removed type hierarchy and properties sections
- Removed usage examples from function docstrings
- Removed performance notes and implementation details
- Simplified docstrings to essential formulas (Hooke's law, elasticity tensor)

Kept core mathematical formulas and function signatures.
2025-12-15 03:18:07 +02:00
Jukka Aho 1a8927c8f6 refactor(materials): streamline finite strain plasticity documentation
Removed verbose documentation sections:
- Removed detailed theory references (Simo & Hughes)
- Removed algorithm step-by-step explanations
- Removed performance notes and timing information
- Removed detailed field descriptions and invariants
- Simplified docstrings to essential information about fields and function signatures

Kept core information about multiplicative decomposition and material parameters.
2025-12-15 03:17:57 +02:00
Jukka Aho a6d77d4705 refactor(materials): streamline API documentation by removing verbose sections
Removed extensive documentation from material API docstrings:
- Removed detailed interface requirements sections
- Removed type hierarchy explanations
- Removed design philosophy sections
- Removed usage examples and 'See Also' references
- Kept only essential type and function descriptions

This simplifies the API documentation while maintaining core information
about material types and their behavior traits.
2025-12-15 03:17:44 +02:00
Jukka Aho d59b32fed5 refactor(physics): replace Physics struct with trait-based category types
Replace monolithic Physics struct and boundary condition types with
simpler physics category types used for trait-based dispatch.

- Remove Physics struct (Formulation, Field, Mesh, Material coupling)
- Remove DirichletBC and NeumannBC boundary condition storage types
- Remove Constraint type
- Add Elasticity{Dim} and Thermal{Dim} physics category types
- Add required_field_type trait function for physics-to-field mapping
- Simplify to type tags for material trait dispatch
- Support compile-time field type inference from physics
- Align with new architecture: physics types are dispatch tags, not problem containers
2025-12-12 23:45:16 +02:00
Jukka Aho ddb00eda0c fix(physics): update deformation_gradient to use coords field
Update compute_deformation_gradient to use coords field instead of ξ
field from QuadraturePoint, matching the API change.
2025-12-12 23:44:48 +02:00
Jukka Aho 04b7eff2a2 refactor(materials): migrate PerfectPlasticity to compositional state design
Replace monolithic PlasticityState struct with compositional NamedTuple
state system and add new material trait system support.

- Remove PlasticityState struct (now using NamedTuple composition)
- Add supported_physics trait (Elasticity{3})
- Add required_state_variables trait (PlasticStrain, Backstress, EquivalentPlasticStrain)
- Change compute_stress to use NamedTuple for state_old and state_new
- Use get() with defaults for state extraction (handles empty initial state)
- Update state creation to use NamedTuple syntax (ε_p, α, κ)
- Remove state_type trait (replaced by required_state_variables)
2025-12-12 23:44:26 +02:00
Jukka Aho 6f0dd71d2e refactor(materials): update LinearElastic for new trait system and compositional state
Update LinearElastic to support new material trait system and
compositional state design with NamedTuple instead of Nothing.

- Add supported_physics trait (Elasticity{3})
- Add required_state_variables trait (empty tuple for stateless)
- Change state_old parameter to Union{Nothing,NamedTuple}
- Return NamedTuple() instead of nothing for state update
- Support compositional state system in compute_stress
2025-12-12 23:43:51 +02:00
Jukka Aho 87d79f15b1 docs(materials): update docstrings for AssemblyMaterialWorkspace API
Update AbstractMaterialState and EmptyState docstrings to reference
new AssemblyMaterialWorkspace and GlobalMaterialCache instead of
old MaterialStateCache API.
2025-12-12 23:42:02 +02:00
Jukka Aho fd4dc1cb28 fix(geometry): update jacobian docstring to use coords field
Update documentation example to use coords field instead of ξ field
from QuadraturePoint, matching the API change.
2025-12-12 23:41:34 +02:00
Jukka Aho 92b3df4526 feature(fields): add quantity_type trait and optimize get_dof_mapping!
Add quantity type extraction trait for field types and optimize DOF
mapping function for zero-allocation performance.

- Add quantity_type trait function for field types
- Implement quantity_type for Displacement, Temperature, DisplacementRotation
- Add @inline to get_dof_mapping! for better inlining
- Optimize get_dof_mapping! loop to use indexed access instead of iterator
- Avoid iterator allocation in DOF mapping computation
2025-12-12 23:41:16 +02:00
Jukka Aho 8f9f701b39 refactor(api): update main module file for DOF-based architecture
Update JuliaFEM.jl to reflect major architectural changes: DOF system,
material workspace API, and microkernel architecture.

- Add DOF system includes (dofs.jl, dof_manager.jl, dof_connectivity.jl)
- Add material state variables and traits includes
- Add GlobalMaterialCache API exports
- Add DOF-based assembler includes and exports
- Add microkernel and formulation exports (evaluate, field_type_for_dispatch)
- Update MaterialStateCache → AssemblyMaterialWorkspace exports
- Add LocalField and strain extraction exports
- Add element interpolation and DOF extraction includes
- Update readers → io directory includes
- Remove/comment legacy includes (boundary_conditions.jl, assemble_v2.jl, etc.)
- Add DOF system exports (DOFSet, @DOFSet, DOFManager, etc.)
- Add element accessor exports (element_id, element_dofs, field_dof_range)
- Update physics exports (Elasticity, Thermal, required_field_type)
- Add material state variable exports (PlasticStrain, Backstress, etc.)
- Comment out contact problems (uses old Element API)
- Update documentation comments for new architecture
2025-12-12 23:40:44 +02:00
Jukka Aho 4968acd069 refactor(elements): redesign Element type to Ciarlet's triple (K,P,Σ) with DOF-based API
Major architectural refactoring: replace old field-based element system
with modern DOF-based design following Ciarlet's finite element triple.

- Redesign Element from Element{N,NIP,F,B} to Element{K,P,S,N}
- Replace connectivity with dof_indices (flat tuple of global DOF indices)
- Remove all old field system (sfields, dfields, fields, update_field!, etc.)
- Remove old constructors and compatibility shims
- Add compile-time DOF computation via @generated ndofs(K, S)
- Add field_dof_range for compile-time local DOF range computation
- Add local_to_global_map for type-stable DOF mapping
- Add topology_type, basis_type, dof_type query functions
- Add element_id, element_dofs, n_element_dofs, nnodes accessors
- Remove 593 lines of legacy code (963 → 370 lines)
- Simplify API: elements now store DOF indices, not node connectivity
- Support multi-field elements via DOFSet specifications
- Zero-allocation design with compile-time type information
2025-12-12 23:40:15 +02:00
Jukka Aho 47f207bced refactor(domains): migrate update_material_cache! to AssemblyMaterialWorkspace and add GlobalMaterialCache API
Major refactoring: migrate material cache updates to new workspace API
and add support for GlobalMaterialCache alongside legacy API.

- Change all material_cache to material_workspace parameter names
- Remove M<:AbstractMaterialState type constraints from functions
- Change state handling from EmptyState() to NamedTuple()
- Change material_cache.σ/𝔻/states to material_workspace.fields/states
- Add new overloads for GlobalMaterialCache API (NEW API)
- Add zero-allocation optimizations using getfield and pre-allocated NamedTuples
- Add backward compatibility handling for legacy state types
- Update all function signatures and docstrings
- Add imports for GlobalMaterialCache and helper functions
- Add StatelessConstantTangent overload with pre-allocated NamedTuples
- Add StatelessStrainDependent and StatefulStrainDependent overloads for GlobalMaterialCache
- Keep legacy API overloads for Matrix{<:AbstractMaterialState}
2025-12-12 23:38:47 +02:00
Jukka Aho fb770644c4 refactor(domains): optimize update_geometry_cache! for zero-allocation
Optimize update_geometry_cache! to eliminate iterator allocations and
update to use coords field.

- Add @inline to update_geometry_cache! for better inlining
- Change enumerate loop to indexed loop to avoid iterator allocation
- Add @inbounds annotation for bounds-check elimination
- Change ip.ξ to ip.coords to use new QuadraturePoint API
2025-12-12 23:36:21 +02:00
Jukka Aho 00448c8c52 refactor(domains): optimize update_element_cache! for zero-allocation
Optimize update_element_cache! to eliminate iterator and view allocations.

- Add @inline to update_element_cache! for better inlining
- Change enumerate loop to indexed loop to avoid iterator allocation
- Add @inbounds annotations for bounds-check elimination
- Remove @view allocation by passing array directly to get_dof_mapping!
2025-12-12 23:35:56 +02:00
Jukka Aho 9b6e3a5803 fix(domains): use coords field instead of ξ in kinematics
Update kinematics to use coords field from QuadraturePoint instead
of deprecated ξ field.

- Change ip.ξ to ip.coords in compute_deformation_gradient
2025-12-12 23:35:26 +02:00
Jukka Aho ece0428a33 refactor(domains): add atomic stiffness computation and microkernel interface
Refactor continuum kernel to add atomic scalar computation and microkernel
interface while maintaining backward compatibility.

- Add compute_stiffness_value for atomic scalar K[k,l][α,β] computation
- Add compute_stiffness_block for D×D block building using atomic kernel
- Refactor compute_block_at_point to use compute_stiffness_block internally
- Add evaluate function for microkernel interface with field coupling dispatch
- Add basevec import for unit vector construction
- Add conditional imports for evaluate and get_tangent
- Update documentation to reflect new atomic operation structure
2025-12-12 23:34:58 +02:00
Jukka Aho 7a580e604d fix(backend): use coords field instead of ξ in CPU backend
Update CPU backend to use coords field from QuadraturePoint instead
of deprecated ξ field.

- Change ip.ξ to ip.coords in compute_element_stiffness
2025-12-12 23:33:47 +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
Jukka Aho 1f6ec9e7fe fix(assemblers): use coords field instead of ξ in geometry cache
Update geometry cache to use coords field from QuadraturePoint
instead of deprecated ξ field.

- Change ip.ξ to ip.coords in create_geometry_cache function
- Update both gradient computation and detJ*w computation
2025-12-12 23:30:00 +02:00
Jukka Aho 73fdcae019 refactor(assemblers): remove NodeCache and simplify integration points API
Remove unused NodeCache code and simplify integration points call in
element cache creation.

- Remove NodeCache struct and create_node_cache function
- Simplify integration_points call to use auto-selected quadrature
- Remove integration_scheme parameter from create_element_cache
2025-12-12 23:29:29 +02:00
Jukka Aho 9ee84e7480 refactor(assemblers): migrate to AssemblyMaterialWorkspace and add GlobalMaterialCache API
Refactor element-based COO assembler to use new material workspace API
and add support for GlobalMaterialCache alongside legacy API.

- Add new assemble_element! overload using GlobalMaterialCache (NEW API)
- Add new assemble! overload using GlobalMaterialCache (NEW API)
- Update legacy assemble_element! to use material_workspace and
  𝔻_vec_buffer parameter
- Update legacy assemble! to use material_workspace and 𝔻_vec_buffer
- Change counter from Ref{Int} to Int for zero-allocation access
- Use extract_tangent! with pre-allocated buffer for zero-allocation
  tangent extraction
- Add imports for GlobalMaterialCache and tangent extraction functions
- Update all function signatures and docstrings to reflect new API
2025-12-12 23:29:02 +02:00
Jukka Aho 94a88721a5 refactor(assemblers): update COOCache for new material workspace API
Refactor COOCache to use AssemblyMaterialWorkspace and improve
zero-allocation performance.

- Add FieldType and StateType type parameters to COOCache struct
- Change material_cache to material_workspace field name
- Change counter from Ref{Int} to Int for zero-allocation access
- Add 𝔻_vec_buffer for pre-allocated tangent vector extraction
- Update constructor to infer FieldType and StateType from workspace
- Update reset! and extract_system to use direct counter access
- Add Tensors import and AssemblyMaterialWorkspace import
2025-12-12 23:28:33 +02:00
Jukka Aho c5a1202c1d chore(assemblers): comment out missing nodal_cache.jl include
Comment out include for nodal_cache.jl as the file does not exist yet.

- Comment out include("nodal_cache.jl") with TODO note
2025-12-12 23:27:50 +02:00
Jukka Aho 259276a06e feature(assemblers): add DOFBasedCOOAssembler and refactor material cache
Add new DOF-by-DOF assembler and refactor material state cache type
parameters for better flexibility.

- Add DOFBasedCOOAssembler struct with comprehensive documentation
- Change AbstractMaterialStateCache from M<:AbstractMaterialState to
  FieldType, StateType parameters
- Update material cache docstring to reflect new type structure
- Clarify purpose as per-element workspace vs persistent storage
2025-12-12 23:27:28 +02:00
Jukka Aho c9dfcddd8d chore(api): remove include for deleted topology.jl
Remove include statement for topology.jl which was deleted after
its content was moved to topology/api.jl.

- Remove include("topology/topology.jl") line
2025-12-12 23:26:55 +02:00
Jukka Aho 2d1ba0a0a1 refactor(quadrature): simplify documentation and remove legacy code
Major cleanup of quadrature module: simplify docstrings to minimal
code-focused style, remove all legacy symbol-based API, and fix Vec
constructor syntax throughout.

Documentation simplification:
- Remove all examples from docstrings
- Simplify file-level docstrings to one-line descriptions
- Remove verbose explanations, accuracy details, references, and
  "See also" sections
- Keep only essential information about types and functions

Legacy code removal:
- Remove all legacy symbol-based API (Val{:GLTRI*}, Val{:GLTET*},
  Val{:GLPYR*}, Val{:GLWED*}, Val{:GLSEG*}, Val{:GLQUAD*},
  Val{:GLHEX*})
- Remove get_order() functions for legacy symbols
- Remove _legacy_tensor_product helper function
- Remove legacy symbol generation code from gl_tensor_product.jl

gauss.jl refactoring:
- Remove old Gauss{N} type and AbstractIntegration hierarchy
- Remove get_rule_name() function and all rule name mappings
  (hundreds of lines for segments, triangles, quads, tets, hexes,
  wedges, pyramids)
- Remove IntegrationPointNEW alias
- Replace with simple integration_points() function using new API
- Change npoints() signature to take only topology parameter

api.jl improvements:
- Uncomment and fix _infer_basis_order implementations
- Add proper type constraints (<:) for all topology types
- Add Triangle{10} case for cubic triangles
- Add _quadrature_topology_type mapping functions for all topologies
- Enable topology-only dispatch for default_quadrature

Vec constructor fixes:
- Fix all Vec{D} constructor calls to use tuple syntax
- Change Vec{2}(x, y) to Vec{2}((x, y))
- Change Vec{3}(x, y, z) to Vec{3}((x, y, z))
- Applied consistently across all quadrature rule files
2025-12-12 23:22:29 +02:00
Jukka Aho ff3c26d2c3 chore: remove obsolete and legacy files
Major cleanup: remove obsolete files that have been replaced or
moved to new locations. Files removed include legacy assembly
implementations, old API files, and deprecated test files.

Removed files:

Assemblers and assembly:
- src/assemblers/nodal_based.jl
- src/assemblers/nodal_cache.jl
- src/assemblers/node_based_coo.jl
- src/assembly/assembly.jl
- src/assembly/element_structures.jl
- src/assembly/framework.jl
- src/assembly/nodal_structures.jl
- src/assembly/problems.jl
- src/element_assembly_structures.jl
- src/nodal_assembly_structures.jl

Legacy API and structure files:
- src/beams/api.jl
- src/formulations/api.jl
- src/gpu_elasticity.jl
- src/io.jl
- src/materials_plasticity.jl
- src/postprocess_utils.jl
- src/preprocess.jl
- src/quadrature.jl
- src/readers.jl
- src/shells/api.jl
- src/trusses/api.jl

Elements and domains:
- src/domains/continuum/assemble_v2.jl
- src/elements/integrate.jl

Quadrature legacy files:
- src/quadrature/gauss_points.jl
- src/quadrature/integration.jl

Test files:
- test/runtests_new.jl
- test/runtests.jl.old
- test/test_problems_elasticity_assemble_3d_seg3.jl
2025-12-12 22:45:49 +02:00
Jukka Aho cba8d19c1c chore: remove src/readers directory
Remove src/readers directory as files have been moved to src/io/

Removed files:
- src/readers/abaqus_download.jl
- src/readers/AbaqusReader.jl
- src/readers/AsterReader.jl
- src/readers/create_surface_elements.jl
- src/readers/keyword_register.jl
- src/readers/parse_mesh.jl
- src/readers/parse_model.jl
- src/readers/read_aster_mesh.jl
- src/readers/read_aster_results.jl
2025-12-12 22:41:39 +02:00
Jukka Aho b9fafd4e09 refactor(topology): consolidate files and simplify documentation
Consolidate topology module by merging topology.jl into api.jl and
significantly simplify documentation across all topology files. Remove
verbose docstrings, examples, and design notes in favor of minimal,
code-focused documentation.

Major changes:
- Merge topology.jl into api.jl (delete topology.jl)
- Simplify docstrings in api.jl, triangles.jl, and tetrahedra.jl
- Remove verbose documentation from type aliases and functions
- Remove topology type parameter from entity types (Vertex, Edge, Face, Cell)
- Update all entity constructors to remove topology parameter
- Add entities dispatcher and helper functions to api.jl

File changes:
- api.jl: Simplified AbstractTopology docstring, added topological entities
  and helpers from topology.jl, added entities dispatcher
- triangles.jl: Removed verbose documentation
- tetrahedra.jl: Removed verbose documentation
- hexahedra.jl, pyramids.jl, quadrilaterals.jl, segments.jl, wedges.jl:
  Updated entity constructors to remove topology type parameter
- topology.jl: Deleted (content moved to api.jl)

Documentation philosophy:
- Keep docstrings minimal and code-focused
- Remove examples unless function use is unclear
- Move comprehensive documentation to website/docs, not in code
- Maintain essential type information and interface requirements
2025-12-12 22:27:09 +02:00
Jukka Aho 09eb3928db feat(topology): Add comprehensive typed entity system
- Define TopologicalEntity{D, Topo} abstract type hierarchy
- Add concrete entity types: Vertex{T}, Edge{T}, Face{T}, Cell{T}
- Implement type-based entity queries: entities(Edge{Tet4})
- Add entity dimension query: dim(::Type{<:TopologicalEntity})
- Add topology extraction: topology_type(::Type{<:TopologicalEntity})
- Add entity count helper: nentities(::Type{<:TopologicalEntity})
- Comprehensive documentation explaining entity philosophy
- Examples showing DOF system integration patterns
- Zero-allocation design: position in vector IS entity ID
2025-11-23 18:22:01 +02:00
Jukka Aho 3ab0ca3f2f refactor(topology): Modernize wedge topology implementation
- Apply Vec constructor broadcasting to both Wedge6 and Wedge15
- Convert edges() to return SVector of typed Edge{T} entities (9 edges)
- Convert faces() to return SVector of typed Face{T} entities (5 faces: 2 triangles + 3 quads)
- Add vertices() returning six Vertex{T} instances
- Add cells() returning single Cell{T} instance
- Add entity count methods: nvertices(), nedges(), nfaces()
- Clean syntax with consistent formatting
2025-11-23 18:21:05 +02:00
Jukka Aho b9a92bb364 refactor(topology): Modernize pyramid topology implementation
- Apply Vec constructor broadcasting to Pyr5
- Convert edges() to return SVector of typed Edge{T} entities (8 edges)
- Convert faces() to return SVector of typed Face{T} entities (5 faces: 1 quad base + 4 triangles)
- Add vertices() returning five Vertex{T} instances
- Add cells() returning single Cell{T} instance
- Add entity count methods: nvertices(), nedges(), nfaces()
- Clean syntax with consistent formatting
2025-11-23 18:20:47 +02:00
Jukka Aho 0e4ffb96d0 refactor(topology): Modernize hexahedron topology implementation
- Apply Vec constructor broadcasting to all 3 hexahedron types (Hex8, Hex20, Hex27)
- Convert edges() to return SVector of typed Edge{T} entities (12 edges)
- Convert faces() to return SVector of typed Face{T} entities (6 quad faces)
- Add vertices() returning eight Vertex{T} instances
- Add cells() returning single Cell{T} instance
- Add entity count methods: nvertices(), nedges(), nfaces()
- Cleaner formatting with consistent indentation
2025-11-23 18:20:26 +02:00
Jukka Aho 2f8612ee8e refactor(topology): Modernize tetrahedron topology implementation
- Apply Vec constructor broadcasting to both Tet4 and Tet10
- Convert edges() to return SVector of typed Edge{T} entities
- Convert faces() to return SVector of typed Face{T} entities
- Add vertices() returning four Vertex{T} instances
- Add cells() returning single Cell{T} instance
- Add entity count methods: nvertices(), nedges(), nfaces()
- Expand documentation with typed entity examples and DOF integration patterns
- Update all docstrings to explain typed entity system
2025-11-23 18:20:09 +02:00
Jukka Aho 3145ab1c9c refactor(topology): Modernize quadrilateral topology implementation
- Apply Vec constructor broadcasting to all 3 quadrilateral types (Quad4, Quad8, Quad9)
- Convert edges() to return SVector of typed Edge{T} entities
- Convert faces() to return SVector of typed Face{T} entity
- Add vertices() returning four Vertex{T} instances
- Add cells() returning single Cell{T} instance
- Add entity count methods: nvertices(), nedges(), nfaces()
- Consistent formatting with cleaner syntax
2025-11-23 18:19:44 +02:00