Anisotropic order elements

Hi everyone,

Is there a way to have a different order in different spatial directions? The TensorProductFESpace space appears to come close, but it only works until I try to create an Integrator (though, the - somewhat dated - example files I found on github suggest otherwise, but some essential implementation is apparently missing). I understand that SpaceTime routines in the xfem extension provide similar functionality. I’d like to try out some higher-order structural theories, however, which do not exactly fit into the SpaceTime concept. So I wonder if there is an alternative way that I have missed so far, or if there’s some neat workaround. H1 would be totally sufficient for a start.

best
alex

1 Like

Hi Alex,

I assume you want a tensor-product mesh (with thin hexes or prisms), and specify a different order into the (locally) vertical direction.
That’s available in NGSolve for a long time, but (as far as I know) was not wrapped to Python.

With the update from tomorrow the following code works. The anisotropic order is stored with the mesh, and the space uses that order plus an increment (relorder).

Joachim

from ngsolve import *
from netgen.occ import *
from ngsolve.webgui import Draw


box = Box ((0,0,0), (1,1,0.1))
box.faces.Max(Z).Identify(box.faces.Min(Z), name="thin", type=IdentificationType.CLOSESURFACES)
mesh = box.GenerateMesh(maxh=0.3)
Draw (mesh);

for el in mesh.Elements(VOL):
    mesh.SetElementOrders(el, (3,3,1))

fes = H1(mesh, relorder=0)
print ("ndof = ", fes.ndof)

Dear Joachim,

That’s exactly what I was looking for. Thank you for your great support!

Best
alex