Series: Finite Element Method › Shape Functions on Reference Elements
The Quad9 Element
The Quad9 element is a 9-node biquadratic quadrilateral. It
lives on the same reference square as Quad4 but
adds a node at the midpoint of each edge and one at the center, giving four
corner nodes, four edge-midpoint nodes, and one interior node:
x^0=(0,0),x^1=(1,0),x^2=(1,1),x^3=(0,1),
x^4=(21,0),x^5=(1,21),x^6=(21,1),x^7=(0,21),x^8=(21,21).
In the library, it is implemented in elements/quad9.py
by the class Quad9.

The shape functions are built as tensor products of the 1D quadratic Lagrange
basis polynomials on
[0,1] introduced in the Line3 post:
ℓ0(t)=(1−t)(1−2t),ℓ1(t)=t(2t−1),ℓ2(t)=4t(1−t).
Each Quad9 shape function is Ni(x^,y^)=ℓa(x^)ℓb(y^) for the index pair (a,b) that places
node i at (x^a,y^b):
| Node |
(x^,y^) |
Ni |
| 0 |
(0,0) |
ℓ0(x^)ℓ0(y^) |
| 1 |
(1,0) |
ℓ1(x^)ℓ0(y^) |
| 2 |
(1,1) |
ℓ1(x^)ℓ1(y^) |
| 3 |
(0,1) |
ℓ0(x^)ℓ1(y^) |
| 4 |
(21,0) |
ℓ2(x^)ℓ0(y^) |
| 5 |
(1,21) |
ℓ1(x^)ℓ2(y^) |
| 6 |
(21,1) |
ℓ2(x^)ℓ1(y^) |
| 7 |
(0,21) |
ℓ0(x^)ℓ2(y^) |
| 8 |
(21,21) |
ℓ2(x^)ℓ2(y^) |
The gradients follow directly from the product rule. For any node with
Ni=ℓa(x^)ℓb(y^):
∂x^∂Ni=ℓa′(x^)ℓb(y^),∂y^∂Ni=ℓa(x^)ℓb′(y^),
where ℓ0′(t)=4t−3, ℓ1′(t)=4t−1, ℓ2′(t)=4−8t
are the derivatives from Line3.
The nine functions form a partition of unity and span the full biquadratic
space Q2=span{1,x^,y^,x^2,x^y^,y^2,x^2y^,x^y^2,x^2y^2}, so Quad9 can represent any biquadratic function
exactly and achieves second-order accuracy. The face element is
Line3, since each edge carries three nodes (two
corners plus the edge midpoint) that together form a quadratic 1D element.