Skip to content

Add edge and wedge quadrature with separate triangle and zeta orders - #118

Draft
abhiyanpaudel wants to merge 41 commits into
SCOREC:mainfrom
abhiyanpaudel:wedge-quadrature
Draft

abhiyanpaudel wants to merge 41 commits into
SCOREC:mainfrom
abhiyanpaudel:wedge-quadrature

Conversation

@abhiyanpaudel

Copy link
Copy Markdown

Adds quadrature for Wedge elements.

  • EdgeIntegration (N1–N6): Gauss-Legendre rules on [-1, 1] copied from SCOREC/core apfIntegrate.cc; also available as getIntegration<Edge>().
  • getWedgeIntegrationPoints(triOrder, zetaOrder): triangle rule × edge rule; exact for $\xi_0^a \xi_1^b \zeta^c$ with $a+b \le$ triOrder and $c \le$ zetaOrder. Weights sum to 1 (reference wedge volume).
  • getIntegrationPoints<topo>(order, zetaOrder): optional zeta order for wedges (defaults to order), so existing calls are unchanged.
  • New Integrator(triOrder, zetaOrder) constructor, used by process() for wedges; Integrator(order) is unchanged.
  • New test WedgeIntegrationTest: edge and wedge rule exactness up to (3, 11) (36 points), and Integrator::process volumes of a right prism and a tapered wedge.

Add Wedge to Mesh_Topology and numWedge to MeshInfo for wedge
(triangular prism) elements. Wedge is appended after Pyramid so no
existing enum value changes; Prism and numPrism are unchanged.
LinearWedgeShape is the linear wedge (triangular prism): the tensor
product of the linear triangle in (xi0, xi1) and the linear edge in
zeta in [-1, 1]. Nodes 0-2 are the triangle vertices at zeta = -1 and
nodes 3-5 those at zeta = +1, following Zienkiewicz, Taylor and Zhu,
Section 6.4, Fig. 6.16a.

test/testWedgeShape.cpp checks the Kronecker delta property at the
nodes and, at interior points, partition of unity, reproduction of
the bilinear functions spanned by the basis and their gradients, and
the analytic gradients against finite differences.

test/testWedgeElement.cpp builds a FieldElement from a coordinate
field, LinearWedgeShape and a small wedge-to-vertex map, and checks
MeshField::evaluate, getJacobians and getJacobianDeterminants on a
right prism and a skewed wedge against the geometric map written out
by hand.
@abhiyanpaudel
abhiyanpaudel marked this pull request as draft October 27, 2026 05:50

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant