57template <std::
size_t N, std::
size_t M>
class FloatMatrixF;
100 std :: string
errorInfo(
const char *func)
const {
return func; }
115 int giveNumberOfVertices()
const override;
118 return elem->giveNode(i)->giveCoordinates();
121 return elem->giveGeometryType();
141 int giveNumberOfVertices()
const override;
142 const FloatArray giveVertexCoordinates(
int i)
const override;
146 return elem->giveGeometryType();}
252 OOFEM_ERROR(
"FEInterpolation::giveLocalNodeCoords: not implemented");
292 virtual std::unique_ptr<IntegrationRule> giveIntegrationRule(
int order,
const Element_Geometry_Type)
const;
551 {
OOFEM_ERROR(
"FEInterpolation :: giveNumberOfEdges : Not overloaded."); }
558 {
OOFEM_ERROR(
"giveNumberOfNodes: Not overloaded."); }
564 std :: string
errorInfo(
const char *func)
const {
return func; }
IntArray boundaryGiveNodes(int boundary, const Element_Geometry_Type) const override
IntArray boundaryEdgeGiveNodes(int boundary, const Element_Geometry_Type, bool includeHierarchical=false) const override
double boundaryEvalNormal(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
double giveTransformationJacobian(const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
double evaldNdx(FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
double boundarySurfaceGiveTransformationJacobian(int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
double boundaryEdgeGiveTransformationJacobian(int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
integrationDomain giveBoundaryIntegrationDomain(int boundary, const Element_Geometry_Type) const override
Returns boundary integration domain.
double boundarySurfaceEvalNormal(FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
integrationDomain giveIntegrationDomain(const Element_Geometry_Type) const override
const Element_Geometry_Type giveGeometryType() const override
double evalNXIntegral(int boundary, const FEICellGeometry &cellgeo) const override
void evalN(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
void boundarySurfaceEvalN(FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
void boundaryEdgeLocal2Global(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
void boundaryEvalN(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
void boundaryLocal2Global(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
double boundaryEdgeEvalNormal(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
IntArray boundarySurfaceGiveNodes(int boundary, const Element_Geometry_Type, bool includeHierarchical=false) const override
void boundarySurfaceLocal2global(FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
int giveNsd(const Element_Geometry_Type) const override
integrationDomain giveBoundarySurfaceIntegrationDomain(int boundary, const Element_Geometry_Type) const override
Returns boundary integration domain.
void boundarySurfaceEvaldNdx(FloatMatrix &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
int giveNumberOfEdges(const Element_Geometry_Type) const override
int giveNumberOfNodes(const Element_Geometry_Type) const override
const Element_Geometry_Type giveBoundaryGeometryType(int boundary) const override
integrationDomain giveBoundaryEdgeIntegrationDomain(int boundary, const Element_Geometry_Type) const override
Returns boundary integration domain.
void local2global(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
void boundaryEdgeEvalN(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
double boundaryGiveTransformationJacobian(int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
int global2local(FloatArray &answer, const FloatArray &gcoords, const FEICellGeometry &cellgeo) const override
virtual int giveNumberOfVertices() const =0
virtual const FloatArray giveVertexCoordinates(int i) const =0
virtual const FEInterpolation * getGeometryInterpolation() const
virtual const Element_Geometry_Type giveGeometryType() const =0
virtual ~FEICellGeometry()
const Element_Geometry_Type giveGeometryType() const override
virtual ~FEIElementGeometryWrapper()
const FEInterpolation * getGeometryInterpolation() const override
const FloatArray giveVertexCoordinates(int i) const override
FEIElementGeometryWrapper(const Element *elem)
FEIVertexListGeometryWrapper(const std::vector< FloatArray > &coords, const Element_Geometry_Type gt)
virtual ~FEIVertexListGeometryWrapper()
const Element_Geometry_Type giveGeometryType() const override
const FloatArray giveVertexCoordinates(int i) const override
const std::vector< FloatArray > & coords
Element_Geometry_Type gtype
int giveNumberOfVertices() const override
virtual ~FEIVoidCellGeometry()
const FloatArray giveVertexCoordinates(int i) const override
const Element_Geometry_Type giveGeometryType() const override
int giveNumberOfVertices() const override
std::string errorInfo(const char *func) const
virtual std::unique_ptr< IntegrationRule > giveBoundaryIntegrationRule(int order, int boundary, const Element_Geometry_Type) const
virtual int giveNumberOfKnotSpans(int dim) const
virtual std::unique_ptr< IntegrationRule > giveBoundaryEdgeIntegrationRule(int order, int boundary, const Element_Geometry_Type) const
virtual const Element_Geometry_Type giveGeometryType() const =0
virtual integrationDomain giveBoundarySurfaceIntegrationDomain(int boundary, const Element_Geometry_Type) const =0
Returns boundary integration domain.
virtual void evald2Ndx2(FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const
virtual void boundarySurfaceEvaldNdx(FloatMatrix &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const =0
virtual IntArray boundaryEdgeGiveNodes(int boundary, const Element_Geometry_Type, bool includeHierarchical=false) const =0
virtual const Element_Geometry_Type giveBoundaryGeometryType(int boundary) const =0
virtual void boundaryEdgeLocal2Global(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const =0
virtual int giveKnotSpanBasisFuncMask(const IntArray &knotSpan, IntArray &mask) const
virtual IntArray boundaryGiveNodes(int boundary, const Element_Geometry_Type) const =0
virtual ~FEInterpolation()=default
virtual int giveNumberOfNodes(const Element_Geometry_Type) const
virtual void initializeCell(Element *e) const
std::string errorInfo(const char *func) const
virtual bool hasSubPatchFormulation() const
virtual double boundarySurfaceGiveTransformationJacobian(int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const =0
virtual int global2local(FloatArray &answer, const FloatArray &gcoords, const FEICellGeometry &cellgeo) const =0
virtual double boundaryGiveTransformationJacobian(int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const =0
virtual void postInitialize(ParameterManager &pm, int elnum)
virtual integrationDomain giveBoundaryIntegrationDomain(int boundary, const Element_Geometry_Type) const =0
Returns boundary integration domain.
virtual int giveNumberOfEdges(const Element_Geometry_Type) const
virtual double boundaryEdgeGiveTransformationJacobian(int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const =0
virtual void evalN(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const =0
virtual double giveTransformationJacobian(const FloatArray &lcoords, const FEICellGeometry &cellgeo) const
virtual void boundaryEdgeEvalN(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const =0
virtual void boundarySurfaceLocal2global(FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const =0
virtual void boundarySurfaceEvalN(FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const =0
virtual void evaldNdxi(FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const
virtual IntArray boundarySurfaceGiveNodes(int boundary, const Element_Geometry_Type, bool includeHierarchical=false) const =0
virtual int giveNumberOfKnotSpanBasisFunctions(const IntArray &knotSpan) const
virtual integrationDomain giveBoundaryEdgeIntegrationDomain(int boundary, const Element_Geometry_Type) const =0
Returns boundary integration domain.
virtual void giveJacobianMatrixAt(FloatMatrix &jacobianMatrix, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const
virtual void surfaceEvaldNdxi(FloatMatrix &answer, const FloatArray &lcoords) const
virtual void initializeFrom(InputRecord &ir, ParameterManager &pm, int elnum, int priority)
Initializes receiver according to object description stored in input record.
virtual integrationDomain giveIntegrationDomain(const Element_Geometry_Type) const =0
virtual void giveCellDofMans(IntArray &nodes, IntArray &internalDofMans, Element *elem) const
Returns list of element nodes (and list of internal dof managers) (including on edges and surfaces) d...
virtual std::unique_ptr< IntegrationRule > giveBoundarySurfaceIntegrationRule(int order, int boundary, const Element_Geometry_Type) const
virtual double boundaryEdgeEvalNormal(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const =0
virtual double evalNXIntegral(int boundary, const FEICellGeometry &cellgeo) const
virtual void surfaceEvald2Ndxi2(FloatMatrix &answer, const FloatArray &lcoords) const
int giveInterpolationOrder() const
virtual void boundaryLocal2Global(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const =0
virtual double evaldNdx(FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const =0
virtual double boundarySurfaceEvalNormal(FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const =0
virtual const FloatArray * giveKnotValues(int dim) const
virtual const FloatArray * giveKnotVector() const
virtual void giveLocalNodeCoords(FloatMatrix &answer, const Element_Geometry_Type) const
virtual double boundaryEvalNormal(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const =0
virtual const IntArray * giveKnotMultiplicity(int dim) const
virtual int giveNsd(const Element_Geometry_Type) const =0
virtual void boundaryEvalN(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const =0
virtual void local2global(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const =0
*Sets size of receiver to be an empty matrix It will have zero rows and zero columns size void clear()
@ _UnknownIntegrationDomain