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
- Deleted: src/quadrature/FEMQuad.jl (48 lines, old module wrapper)
- Created: src/quadrature/api.jl (365 lines, comprehensive quadrature API)
Key improvements:
- AbstractQuadratureRule type hierarchy (GaussLegendre, GaussLobatto)
- QuadraturePoint{D,T} struct with Vec{D} coordinates and Float64 weight
- Zero-allocation get_quadrature_points() returning SVector
- Multi-level default_quadrature() dispatch (4 levels: order → topology+order → topology+basis → topology only)
- Comprehensive documentation with examples and performance notes
- Integration with Tensors.jl (Vec) and StaticArrays (SVector)
Replaced:
- Old Val{:symbol} dispatch → Modern type parameters
- Old integrate_1d/2d/3d functions → Removed (not used in codebase)
- Module wrapper → Direct include (quadrature rules now in separate files)
Net: +317 lines (FEMQuad was minimal wrapper, api.jl is complete interface)
- Added DEPRECATED header comment explaining migration to new API (api.jl)
- Added deprecation notices to AbstractIntegration and IntegrationPoint docstrings
- Added migration example showing old vs new syntax (IntegrationPoint → QuadraturePoint)
- Documented field name changes: ip.ξ → qp.coords
- Added Vec{D}(point) conversion before IntegrationPoint construction
- Converts tuple from quadrature rules to Vec for tensor operations
- Eliminates need for Vec{N}(ip.ξ) conversions throughout codebase
- Changed ξ field type from NTuple{D,Float64} to Vec{D,Float64}
- Updated docstring to reflect Vec type instead of tuple
- Updated example to show Vec construction
- Enables direct use in tensor operations without conversion