Isoparametric Elements

3.4. Isoparametric Elements#

It is well known that for iso-parametric mapping (mapping order = Ansatz order), or sub-parametric mapping (mapping order < Ansatz order), the physical space contains linear polynomials, and thus linearized rigid body deformations:

\[ P^1 \circ \Phi_{mapping} \subset V_{T^{ref}} \]

Super-parametric mapping does not.

from ngsolve import *
from netgen.occ import *
from ngsolve.solvers import *
from ngsolve.webgui import Draw
mesh = Circle((0,0), 1).Face().GenerateMesh(maxh=0.5, dim=2).Curve(5)
Draw (mesh);

Open problem: can we fix the kernel by interpolating into Regge elements?

fes = VectorH1(mesh, order=2)
fesReg = HCurlCurl(mesh, order=1)
u,v = fes.TnT()
if False:
    bfa = BilinearForm(InnerProduct (Interpolate(Sym(Grad(u)), fesReg, bonus_intorder=0), 
                                     Interpolate(Sym(Grad(v)), fesReg, bonus_intorder=0))*dx).Assemble()
else:
    bfa = BilinearForm(InnerProduct (Sym(Grad(u)), Sym(Grad(v)))*dx).Assemble()
bfm = BilinearForm(u*v*dx).Assemble()
pre = (bfa.mat+bfm.mat).CreateSparseMatrix().Inverse(inverse="sparsecholesky")

eval, evec = LOBPCG(bfa.mat, bfm.mat, pre=pre, num=5, printrates=False)
print ("Eigenvalues:", list(eval))
Eigenvalues: [-2.9517161727929885e-17, 2.1319263233467725e-14, 0.00017004176275780606, 2.7283934445484834, 2.729480532472135]