On Mon, 7 Aug 2017, Renato Poli wrote:

I am getting started in libmesh - I've been using it for a month now.
I used libmesh introductory example 3 (libmesh_ex3) as a reference for my

I assume you mean introduction_ex3?

The idea is to replace the mesh by one of my one and start from there.

I noticed that libmesh_ex3 uses TRI6 or QUAD elements.
In my application I was using TRI3 and it did not work.
I realized that the example does not work with TRI3 either.

I assume you're using higher than first order elements in your
application, like we do in the example?

Is there a reason for that? Should I use TRI6 instead?

Yes, and yes.

libMesh stores degree of freedom (DoF) indices on element nodes and
element interiors, and it requires those indices to be properly
located topologically.  Shape functions whose support is on the patch
of elements surrounding a node need to have corresponding DoF indices
located on that node, shape functions which live on only one element
need to have indices located on that element or on a node internal to
that element...

And most critically in your case:, shape functions whose support is on
the two triangles sharing an edge need to have indices located on that
edge.  Since libMesh doesn't *have* edge objects, we use edge nodes to
store such indices.  If you have a TRI3, then you don't have any edge
nodes, and so you can't use any finite element types which have edge
dofs.  That means you're restricted to combinations of discontinuous
finite elements (XYZ and MONOMIAL, which live within a single element)
and first-order finite elements (which have only vertex dofs).

Any advice?

In 2D, if you want to use 2nd order through 11th order basis
functions, then use 2nd order geometric elements and you're fine.
(roundoff error blows up at higher polynomial degrees, so we currently
cap p refinement at 11).  Likewise for 3D on hexes.

If you want to use 3rd order or higher bases on a mesh with tets,
prisms, and/or pyramids, then my advice is to warn us *way* in
advance.  We don't currently have any elements whose triangular faces
have face nodes, so all our elements with triangular faces support a
max of p=2.  Fixing that has been on my todo list for a decade, but
probably won't get *off* my todo list for years to come unless there's
a user chomping at the bit for it.

Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
Libmesh-users mailing list

Reply via email to