# Shape function for quarter point element from degenerate quadrilateral

I want an element as the one shown following.

Nodes 6 and 8 are in the quarter position.

Whether eight node quadrilateral element or six node triangle function can be used directly？

If not, how to build a new shape function？

You could find the shape functions proposing a quadratic function of the form

$$N_i = a_0 + a_1 r + a_2 s + a_3 rs + a_4 r^2 + a_5 s^2\, ,$$

and enforcing the following condition

$$N_i(r_j, s_j) = \delta_{ij}\, ,$$

that is, 1 for each node and 0 for the others.

I am using as reference element a triangle with vertices $$(0, 0), (0, 1), (1, 0)$$, and assuming that the quarter-position nodes are on the vertical and horizontal edges. Thus, you end up with the following list of points (in "order")

$$(0, 0), (1, 0), (0, 1), (1/4, 0), (1/2, 1/2), (0, 1/4)\, .$$

You then solve the 6 systems of equations to find the coefficients and get the following

\begin{align} &N_{0}{\left(r,s \right)} = 4 r^{2} + 8 r s - 5 r + 4 s^{2} - 5 s + 1\, ,\\ &N_{1}{\left(r,s \right)} = \frac{4 r^{2}}{3} - \frac{2 r s}{3} - \frac{r}{3}\, ,\\ &N_{2}{\left(r,s \right)} = - \frac{2 r s}{3} + \frac{4 s^{2}}{3} - \frac{s}{3}\, ,\\ &N_{3}{\left(r,s \right)} = - \frac{16 r^{2}}{3} - \frac{16 r s}{3} + \frac{16 r}{3}\, ,\\ &N_{4}{\left(r,s \right)} = 4 r s\, ,\\ &N_{5}{\left(r,s \right)} = - \frac{16 r s}{3} - \frac{16 s^{2}}{3} + \frac{16 s}{3}\, . \end{align}

All these calculations are easier done with a CAS. In my case, I used Sympy. The following code solves the problem

import sympy as sym

# sym.init_printing()

a0, a1, a2, a3, a4, a5 = sym.symbols("a0:6")
r, s = sym.symbols("r s")

N = a0 + a1*r + a2*s + a3*r*s + a4*r**2 + a5*s**2

pts = [[0, 0], [1, 0] , [0, 1], [sym.S(1)/4, 0],
[sym.S(1)/2, sym.S(1)/2], [0, sym.S(1)/4]]

shape_funs = []
for j in range(6):
eqs = []
for k in range(6):
if j == k:
rhs = 1
else:
rhs = 0
eq = N.subs({r: pts[k][0], s: pts[k][1]})
eqs.append(sym.Eq(eq, rhs))
sol = sym.solve(eqs, [a0, a1, a2, a3, a4, a5])
shape_funs.append(N.subs(sol))
$$$$
`
• I use this shape function in Mathematica to compare with the result in ABAQUS and find it is not accurate Apr 11 at 2:19
• @sgzslg, that's not the question that you asked. Apr 11 at 2:57