53 class IntegrationRule;
67 virtual int giveNumberOfVertices()
const = 0;
68 virtual const FloatArray *giveVertexCoordinates(
int i)
const = 0;
89 std :: string
errorInfo(
const char *func)
const {
return func; }
104 int giveNumberOfVertices()
const;
200 OOFEM_ERROR(
"FEInterpolation::giveLocalNodeCoords: not implemented");
267 virtual double boundaryEdgeGiveTransformationJacobian(
int boundary,
const FloatArray &lcoords,
const FEICellGeometry &cellgeo)=0;
278 virtual integrationDomain giveBoundaryEdgeIntegrationDomain(
int boundary)
const = 0;
285 virtual IntegrationRule *giveBoundaryEdgeIntegrationRule(
int order,
int boundary);
291 virtual void boundaryEdgeGiveNodes(
IntArray &answer,
int boundary)=0;
314 virtual void boundarySurfaceEvaldNdx(
FloatMatrix &answer,
int isurf,
324 virtual double boundarySurfaceEvalNormal(
FloatArray &answer,
int isurf,
const FloatArray &lcoords,
335 virtual void boundarySurfaceLocal2global(
FloatArray &answer,
int isurf,
344 virtual double boundarySurfaceGiveTransformationJacobian(
int isurf,
const FloatArray &lcoords,
347 virtual integrationDomain giveBoundarySurfaceIntegrationDomain(
int boundary)
const = 0;
354 virtual IntegrationRule *giveBoundarySurfaceIntegrationRule(
int order,
int boundary);
360 virtual void boundarySurfaceGiveNodes(
IntArray &answer,
int boundary)=0;
376 virtual void boundaryGiveNodes(
IntArray &answer,
int boundary) = 0;
404 virtual double boundaryGiveTransformationJacobian(
int boundary,
const FloatArray &lcoords,
const FEICellGeometry &cellgeo) = 0;
432 virtual IntegrationRule *giveBoundaryIntegrationRule(
int order,
int boundary) ;
475 virtual int giveNsd() = 0;
480 {
OOFEM_ERROR(
"FEInterpolation :: giveNumberOfEdges : Not overloaded.");
return -1;}
487 {
OOFEM_ERROR(
"giveNumberOfNodes: Not overloaded.");
return -1;}
490 std :: string
errorInfo(
const char *func)
const {
return func; }
493 #endif // feinterpol_h virtual const FloatArray * giveKnotValues(int dim)
Returns the knot values of the receiver.
virtual void giveLocalNodeCoords(FloatMatrix &answer)
Returns a matrix containing the local coordinates for each node corresponding to the interpolation...
integrationDomain
Used by integrator class to supply integration points for proper domain to be integrated (Area...
virtual void evaldNdxi(FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the matrix of derivatives of interpolation functions (shape functions) at given point...
virtual void evald2Ndx2(FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the matrix of second derivatives of interpolation functions (shape functions) at given poin...
Element_Geometry_Type
Enumerative type used to classify element geometry Possible values are: EGT_point - point in space EG...
virtual const IntArray * giveKnotMultiplicity(int dim)
Returns the knot multiplicity of the receiver.
Wrapper around cell with vertex coordinates stored in FloatArray**.
Class representing a general abstraction for cell geometry.
virtual int giveNumberOfKnotSpans(int dim)
Returns the number of knot spans of the receiver.
int giveInterpolationOrder()
Returns the interpolation order.
Abstract base class for all finite elements.
std::string errorInfo(const char *func) const
virtual double evalNXIntegral(int boundary, const FEICellGeometry &cellgeo)
Computes the integral .
virtual int giveKnotSpanBasisFuncMask(const IntArray &knotSpan, IntArray &mask)
Returns indices (zero based) of nonzero basis functions for given knot span.
virtual int giveNumberOfKnotSpanBasisFunctions(const IntArray &knotSpan)
Returns the number of nonzero basis functions at individual knot span,.
Class implementing an array of integers.
virtual int giveNumberOfNodes() const
Returns the number of geometric nodes of the receiver.
virtual ~FEInterpolation()
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Abstract base class representing integration rule.
FEIElementGeometryWrapper(const Element *elem)
Class representing a general abstraction for finite element interpolation class.
Wrapper around element definition to provide FEICellGeometry interface.
virtual ~FEICellGeometry()
virtual bool hasSubPatchFormulation()
Returns true, if receiver is formulated on sub-patch basis.
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
int giveNumberOfVertices() const
IRResultType
Type defining the return values of InputRecord reading operations.
const FloatArray & giveNodeCoordinates() const
As giveCoordinates, but non-virtual and therefore faster (because it can be inlined).
virtual void giveJacobianMatrixAt(FloatMatrix &jacobianMatrix, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Gives the jacobian matrix at the local coordinates.
virtual const double *const * giveKnotVector()
Returns the subdivision of patch parametric space.
Void cell geometry wrapper.
const FloatArray * giveVertexCoordinates(int i) const
int giveNumberOfVertices() const
virtual int giveNumberOfEdges() const
Returns number of edges.
const std::vector< FloatArray > & coords
virtual ~FEIVoidCellGeometry()
const FloatArray * giveVertexCoordinates(int i) const
FEIVertexListGeometryWrapper(const std::vector< FloatArray > &coords)
the oofem namespace is to define a context or scope in which all oofem names are defined.
Node * giveNode(int i) const
Returns reference to the i-th node of element.
std::string errorInfo(const char *func) const
const FloatArray * giveVertexCoordinates(int i) const
virtual ~FEIElementGeometryWrapper()
virtual ~FEIVertexListGeometryWrapper()