Series: Finite Element MethodShape 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),\hat{x}_0 = (0,0), \quad \hat{x}_1 = (1,0), \quad \hat{x}_2 = (1,1), \quad \hat{x}_3 = (0,1),

x^4=(12,0),x^5=(1,12),x^6=(12,1),x^7=(0,12),x^8=(12,12).\hat{x}_4 = \bigl(\tfrac{1}{2},0\bigr), \quad \hat{x}_5 = \bigl(1,\tfrac{1}{2}\bigr), \quad \hat{x}_6 = \bigl(\tfrac{1}{2},1\bigr), \quad \hat{x}_7 = \bigl(0,\tfrac{1}{2}\bigr), \quad \hat{x}_8 = \bigl(\tfrac{1}{2},\tfrac{1}{2}\bigr).

In the library, it is implemented in elements/quad9.py by the class Quad9.

Nodes of the Quad9 element

The shape functions are built as tensor products of the 1D quadratic Lagrange basis polynomials on [0,1][0,1] introduced in the Line3 post:

0(t)=(1t)(12t),1(t)=t(2t1),2(t)=4t(1t).\ell_0(t) = (1-t)(1-2t), \qquad \ell_1(t) = t(2t-1), \qquad \ell_2(t) = 4t(1-t).

Each Quad9 shape function is Ni(x^,y^)=a(x^)b(y^)N_i(\hat{x},\hat{y}) = \ell_a(\hat{x})\,\ell_b(\hat{y}) for the index pair (a,b)(a,b) that places node ii at (x^a,y^b)(\hat{x}_a, \hat{y}_b):

Node (x^,y^)(\hat{x},\hat{y}) NiN_i
0 (0,0)(0,0) 0(x^)0(y^)\ell_0(\hat{x})\,\ell_0(\hat{y})
1 (1,0)(1,0) 1(x^)0(y^)\ell_1(\hat{x})\,\ell_0(\hat{y})
2 (1,1)(1,1) 1(x^)1(y^)\ell_1(\hat{x})\,\ell_1(\hat{y})
3 (0,1)(0,1) 0(x^)1(y^)\ell_0(\hat{x})\,\ell_1(\hat{y})
4 (12,0)(\tfrac{1}{2},0) 2(x^)0(y^)\ell_2(\hat{x})\,\ell_0(\hat{y})
5 (1,12)(1,\tfrac{1}{2}) 1(x^)2(y^)\ell_1(\hat{x})\,\ell_2(\hat{y})
6 (12,1)(\tfrac{1}{2},1) 2(x^)1(y^)\ell_2(\hat{x})\,\ell_1(\hat{y})
7 (0,12)(0,\tfrac{1}{2}) 0(x^)2(y^)\ell_0(\hat{x})\,\ell_2(\hat{y})
8 (12,12)(\tfrac{1}{2},\tfrac{1}{2}) 2(x^)2(y^)\ell_2(\hat{x})\,\ell_2(\hat{y})

The gradients follow directly from the product rule. For any node with Ni=a(x^)b(y^)N_i = \ell_a(\hat{x})\,\ell_b(\hat{y}):

Nix^=a(x^)b(y^),Niy^=a(x^)b(y^),\frac{\partial N_i}{\partial \hat{x}} = \ell_a'(\hat{x})\,\ell_b(\hat{y}), \qquad \frac{\partial N_i}{\partial \hat{y}} = \ell_a(\hat{x})\,\ell_b'(\hat{y}),

where 0(t)=4t3\ell_0'(t) = 4t - 3, 1(t)=4t1\ell_1'(t) = 4t - 1, 2(t)=48t\ell_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}\mathbb{Q}_2 = \mathrm{span}\{1, \hat{x}, \hat{y}, \hat{x}^2, \hat{x}\hat{y}, \hat{y}^2, \hat{x}^2\hat{y}, \hat{x}\hat{y}^2, \hat{x}^2\hat{y}^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.