35 NewArray<double>& values)
const = 0;
44 NewArray<Vector3>& grads)
const = 0;
53 NewArray<apf::Vector3>& values)
const = 0;
62 NewArray<apf::Vector3>& values)
const;
85 MeshEntity* elem, MeshEntity* shared,
int order[]);
125 void registerSelf(
const char* name);
201 apf::NewArray<apf::Vector3>& xis);
209 apf::NewArray<apf::Vector3>& xis);
219 MeshEntity* boundary,
Shape functions over this element.
virtual void getLocalGradients(Mesh *m, MeshEntity *e, Vector3 const &xi, NewArray< Vector3 > &grads) const =0
evaluate element shape function gradients
virtual void getVectorValues(Mesh *m, MeshEntity *e, Vector3 const &xi, NewArray< apf::Vector3 > &values) const =0
evaluate element vector shape functions
virtual void getValues(Mesh *m, MeshEntity *e, Vector3 const &xi, NewArray< double > &values) const =0
evaluate element shape functions
virtual void getLocalVectorCurls(Mesh *m, MeshEntity *e, Vector3 const &xi, NewArray< apf::Vector3 > &values) const
evaluate element vector curl shape functions
virtual int countNodes() const =0
return the number of nodes affecting this element
virtual void alignSharedNodes(Mesh *m, MeshEntity *elem, MeshEntity *shared, int order[])
convert from shared node order to local element order
Describes field distribution and shape functions.
virtual int getOrder()=0
Return the polynomial order of the shape functions.
virtual bool isVectorShape()
Returns true if the shape functions are vectors.
virtual void getNodeTangent(int type, int node, Vector3 &t)
Get the parent element tangent vector of an element node.
virtual bool hasNodesIn(int dimension)=0
Return true iff there are nodes on entities of this dimension.
virtual int countNodesOn(int type)=0
Return the number of nodes associated with an entity of this type.
virtual EntityShape * getEntityShape(int type)=0
Get the sub-descriptor for this entity type.
virtual void getNodeXi(int type, int node, Vector3 &xi)
Get the parent element coordinates of an element node.
virtual const char * getName() const =0
Get a unique string for this shape function scheme.
Interface to a mesh part.
convenience wrapper over apf::Vector<3>
All APF symbols are contained in this namespace.
void getElementNodeXis(FieldShape *s, int type, apf::NewArray< apf::Vector3 > &xis)
gets the xi coordinates for all the nodes
FieldShape * getVoronoiShape(int dimension, int order)
Get the Voronoi shape function.
FieldShape * getL2Shape(int order, int type)
Get the L2 shapes of a given order and entity type.
FieldShape * getHierarchic(int order)
Get the quadratic hierarchic shape function.
FieldShape * getIPShape(int dimension, int order)
Get the Integration Point distribution.
FieldShape * getIPFitShape(int dimension, int order)
Get the IP Fit shape function.
Vector3 boundaryToElementXi(Mesh *m, MeshEntity *boundary, MeshEntity *element, Vector3 const &xi)
Reparameterize from boundary entity to element.
void projectL2Field(Field *to, Field *from)
Project a L2 field.
FieldShape * getLagrange(int order)
Get the Lagrangian shape function of some polynomial order.
FieldShape * getNedelec(int order)
Get the Nedelec shape function of a given order.
void projectNedelecField(Field *to, Field *from)
Project a Nedelec field.
FieldShape * getConstant(int dimension)
Get the Constant shape function over some dimension.
void projectHierarchicField(Field *to, Field *from)
Project a hierarchic field.
int countElementNodes(FieldShape *s, int type)
count the number of nodes affecting an element type
FieldShape * getSerendipity()
Get the Serendipity shape functions of second order.
FieldShape * getH1Shape(int order)
Get the H1 shapes of a given order.
apf::Mesh2 Mesh
convenient mesh name