Files
JuliaFEM.jl/src/basis
Jukka Aho 95aac8a2d5 refactor(basis): Add Serendipity support to basis generator
Three-stage modification to support both Lagrange and Serendipity basis types:

1. Added basis_type parameter (default :Lagrange) to all create_basis() functions
   - Propagated through all three overloads with keyword argument
   - Used in code generation for method signatures

2. Updated ELEMENT_TO_LAGRANGE mapping:
   - Quad8: Changed to tuple (:Serendipity, :Quadrilateral) for 8-node serendipity
   - Quad9: Remains :Quadrilateral for 9-node full Lagrange
   - Added documentation explaining tuple format for serendipity elements

3. Enhanced generation loop to handle three topology cases:
   - Simple symbols (e.g., :Triangle) → Lagrange{Triangle, P}
   - Parametric functions (N -> Hexahedron{N}) → Lagrange{Hexahedron{N}, P}
   - Serendipity tuples (:Serendipity, :Topology) → Serendipity{Topology, P}

Removed 3 duplicate function stub declarations (defined in basis_api.jl):
- get_reference_element_coordinates
- eval_basis!
- eval_dbasis!

This enables clean separation of Quad8 (Serendipity, 8 nodes) from Quad9 (Lagrange, 9 nodes).
2025-11-20 18:22:20 +02:00
..