OOFEM 3.0
Loading...
Searching...
No Matches
oofem::FEI3dTetQuad Class Reference

#include <fei3dtetquad.h>

Inheritance diagram for oofem::FEI3dTetQuad:
Collaboration diagram for oofem::FEI3dTetQuad:

Public Member Functions

 FEI3dTetQuad ()
integrationDomain giveIntegrationDomain (const Element_Geometry_Type) const override
const Element_Geometry_Type giveGeometryType () const override
const Element_Geometry_Type giveBoundaryGeometryType (int boundary) const override
integrationDomain giveBoundaryIntegrationDomain (int ib, const Element_Geometry_Type) const override
 Returns boundary integration domain.
integrationDomain giveBoundarySurfaceIntegrationDomain (int isurf, const Element_Geometry_Type) const override
 Returns boundary integration domain.
integrationDomain giveBoundaryEdgeIntegrationDomain (int iedge, const Element_Geometry_Type) const override
 Returns boundary integration domain.
double giveVolume (const FEICellGeometry &cellgeo) const override
void evalN (FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
double evaldNdx (FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
void evaldNdxi (FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
void giveJacobianMatrixAt (FloatMatrix &jacobianMatrix, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
void local2global (FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
int global2local (FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
int giveNumberOfNodes (const Element_Geometry_Type) const override
void giveCellDofMans (IntArray &nodes, IntArray &internalDofMans, Element *elem) const override
 Returns list of element nodes (and list of internal dof managers) (including on edges and surfaces) defining the approximation.
double giveCharacteristicLength (const FEICellGeometry &cellgeo) const
void edgeEvalN (FloatArray &answer, int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
void edgeEvaldNdx (FloatMatrix &answer, int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
void edgeLocal2global (FloatArray &answer, int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
double edgeGiveTransformationJacobian (int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
IntArray computeLocalEdgeMapping (int iedge) const override
void surfaceEvalN (FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
void surfaceEvaldNdx (FloatMatrix &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
double surfaceEvalNormal (FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
void surfaceLocal2global (FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
double surfaceGiveTransformationJacobian (int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
IntArray computeLocalSurfaceMapping (int iedge) const override
double evalNXIntegral (int iEdge, const FEICellGeometry &cellgeo) const override
std::unique_ptr< IntegrationRulegiveIntegrationRule (int order, const Element_Geometry_Type) const override
std::unique_ptr< IntegrationRulegiveBoundaryIntegrationRule (int order, int boundary, const Element_Geometry_Type) const override
Public Member Functions inherited from oofem::FEInterpolation3d
 FEInterpolation3d (int o)
int giveNsd (const Element_Geometry_Type) const override
IntArray boundaryEdgeGiveNodes (int boundary, const Element_Geometry_Type, bool includeHierarchical=false) const override
void boundaryEdgeEvalN (FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
double boundaryEdgeGiveTransformationJacobian (int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
void boundaryEdgeLocal2Global (FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
double boundaryEdgeEvalNormal (FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
void boundarySurfaceEvalN (FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
void boundarySurfaceEvaldNdx (FloatMatrix &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
double boundarySurfaceEvalNormal (FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
void boundarySurfaceLocal2global (FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
double boundarySurfaceGiveTransformationJacobian (int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
FloatMatrixF< 3, 3 > surfaceGiveJacobianMatrixAt (int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const
IntArray boundaryGiveNodes (int boundary, const Element_Geometry_Type) const override
void boundaryEvalN (FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
double boundaryEvalNormal (FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
double boundaryGiveTransformationJacobian (int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
void boundaryLocal2Global (FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
virtual double edgeEvalNormal (FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const
virtual void edgeEvaldNdxi (FloatArray &answer, int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const
IntArray computeEdgeMapping (const IntArray &elemNodes, int iedge) const
void surfaceEvaldNdxi (FloatMatrix &answer, const FloatArray &lcoords) const override
void surfaceEvald2Ndxi2 (FloatMatrix &answer, const FloatArray &lcoords) const override
virtual std::tuple< FloatArrayF< 3 >, FloatArrayF< 3 > > surfaceEvalBaseVectorsAt (int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const
virtual std::tuple< double, FloatArrayF< 3 > > surfaceEvalUnitNormal (int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const
IntArray computeSurfaceMapping (const IntArray &elemNodes, int isurf) const
std::unique_ptr< IntegrationRulegiveBoundaryEdgeIntegrationRule (int order, int boundary, const Element_Geometry_Type) const override
std::unique_ptr< IntegrationRulegiveBoundaryIntegrationRule (int _order, int boundary, const Element_Geometry_Type) const override
IntArray boundarySurfaceGiveNodes (int boundary, Element_Geometry_Type, bool includeHierarchical=false) const override
Public Member Functions inherited from oofem::FEInterpolation
 FEInterpolation (int o)
virtual ~FEInterpolation ()=default
virtual void initializeFrom (InputRecord &ir, ParameterManager &pm, int elnum, int priority)
 Initializes receiver according to object description stored in input record.
virtual void postInitialize (ParameterManager &pm, int elnum)
int giveInterpolationOrder () const
virtual void evald2Ndx2 (FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const
virtual void giveLocalNodeCoords (FloatMatrix &answer, const Element_Geometry_Type) const
virtual double giveTransformationJacobian (const FloatArray &lcoords, const FEICellGeometry &cellgeo) const
virtual std::unique_ptr< IntegrationRulegiveBoundarySurfaceIntegrationRule (int order, int boundary, const Element_Geometry_Type) const
virtual int giveKnotSpanBasisFuncMask (const IntArray &knotSpan, IntArray &mask) const
virtual int giveNumberOfKnotSpanBasisFunctions (const IntArray &knotSpan) const
virtual bool hasSubPatchFormulation () const
virtual const FloatArraygiveKnotVector () const
virtual int giveNumberOfKnotSpans (int dim) const
virtual const FloatArraygiveKnotValues (int dim) const
virtual const IntArraygiveKnotMultiplicity (int dim) const
virtual int giveNumberOfEdges (const Element_Geometry_Type) const
virtual void initializeCell (Element *e) const
std::string errorInfo (const char *func) const

Static Public Member Functions

static FloatArrayF< 10 > evalN (const FloatArrayF< 3 > &lcoords)
static std::pair< double, FloatMatrixF< 3, 10 > > evaldNdx (const FloatArrayF< 3 > &lcoords, const FEICellGeometry &cellgeo)
static FloatMatrixF< 3, 10 > evaldNdxi (const FloatArrayF< 3 > &lcoords)

Protected Member Functions

double edgeComputeLength (const IntArray &edgeNodes, const FEICellGeometry &cellgeo) const
double computeVolume (const FEICellGeometry &cellgeo) const

Additional Inherited Members

Protected Attributes inherited from oofem::FEInterpolation
int order = 0

Detailed Description

Class representing implementation of quadratic tetrahedra interpolation class.

Author
Mikael Öhman
Todo
This class is entirely unchecked.

Definition at line 46 of file fei3dtetquad.h.

Constructor & Destructor Documentation

◆ FEI3dTetQuad()

oofem::FEI3dTetQuad::FEI3dTetQuad ( )
inline

Definition at line 49 of file fei3dtetquad.h.

References oofem::FEInterpolation3d::FEInterpolation3d().

Member Function Documentation

◆ computeLocalEdgeMapping()

IntArray oofem::FEI3dTetQuad::computeLocalEdgeMapping ( int iedge) const
overridevirtual

Implements oofem::FEInterpolation3d.

Definition at line 445 of file fei3dtetquad.C.

Referenced by edgeLocal2global().

◆ computeLocalSurfaceMapping()

IntArray oofem::FEI3dTetQuad::computeLocalSurfaceMapping ( int iedge) const
overridevirtual

◆ computeVolume()

double oofem::FEI3dTetQuad::computeVolume ( const FEICellGeometry & cellgeo) const
protected

◆ edgeComputeLength()

double oofem::FEI3dTetQuad::edgeComputeLength ( const IntArray & edgeNodes,
const FEICellGeometry & cellgeo ) const
protected
Todo
Implement this

Definition at line 465 of file fei3dtetquad.C.

References OOFEM_ERROR.

◆ edgeEvaldNdx()

void oofem::FEI3dTetQuad::edgeEvaldNdx ( FloatMatrix & answer,
int iedge,
const FloatArray & lcoords,
const FEICellGeometry & cellgeo ) const
overridevirtual

Evaluates the matrix of derivatives of edge interpolation functions (shape functions) at given point. These derivatives are in global coordinate system (where the nodal coordinates are defined)

Parameters
answerContains resulting matrix of derivatives, the member at i,j position contains value of dNj/dxi.
iedgeDetermines the edge number.
lcoordsArray containing (local) coordinates.
cellgeoUnderlying cell geometry.
Todo
Implement this

Implements oofem::FEInterpolation3d.

Definition at line 411 of file fei3dtetquad.C.

References OOFEM_ERROR.

◆ edgeEvalN()

void oofem::FEI3dTetQuad::edgeEvalN ( FloatArray & answer,
int iedge,
const FloatArray & lcoords,
const FEICellGeometry & cellgeo ) const
overridevirtual

Evaluates the array of edge interpolation functions (shape functions) at given point.

Parameters
answerContains resulting array of evaluated interpolation functions.
iedgeEdge number.
lcoordsArray containing (local) coordinates.
cellgeoUnderlying cell geometry.

Implements oofem::FEInterpolation3d.

Definition at line 401 of file fei3dtetquad.C.

References oofem::FloatArray::resize().

Referenced by edgeLocal2global().

◆ edgeGiveTransformationJacobian()

double oofem::FEI3dTetQuad::edgeGiveTransformationJacobian ( int iedge,
const FloatArray & lcoords,
const FEICellGeometry & cellgeo ) const
overridevirtual

Evaluates the edge jacobian of transformation between local and global coordinates.

Parameters
iedgeDetermines edge number.
lcoordsArray containing (local) coordinates.
cellgeoUnderlying cell geometry.
Returns
Determinant of the transformation.
Todo
Implement this

Implements oofem::FEInterpolation3d.

Definition at line 435 of file fei3dtetquad.C.

References OOFEM_ERROR.

◆ edgeLocal2global()

void oofem::FEI3dTetQuad::edgeLocal2global ( FloatArray & answer,
int iedge,
const FloatArray & lcoords,
const FEICellGeometry & cellgeo ) const
overridevirtual

Evaluates edge global coordinates from given local ones. These derivatives are in global coordinate system (where the nodal coordinates are defined).

Parameters
answerContains resulting global coordinates.
iedgeDetermines edge number.
lcoordsArray containing (local) coordinates.
cellgeoUnderlying cell geometry.

Implements oofem::FEInterpolation3d.

Definition at line 420 of file fei3dtetquad.C.

References oofem::FloatArray::add(), oofem::FloatArray::clear(), computeLocalEdgeMapping(), edgeEvalN(), oofem::FEICellGeometry::giveVertexCoordinates(), and N.

◆ evaldNdx() [1/2]

std::pair< double, FloatMatrixF< 3, 10 > > oofem::FEI3dTetQuad::evaldNdx ( const FloatArrayF< 3 > & lcoords,
const FEICellGeometry & cellgeo )
static
Todo
cellgeo should give a FloatArrayF<3>, this will add a "costly" construction now:

Definition at line 176 of file fei3dtetquad.C.

References oofem::det(), oofem::dot(), oofem::dotT(), evaldNdxi(), oofem::FEICellGeometry::giveVertexCoordinates(), oofem::inv(), and oofem::FloatMatrixF< N, M >::setColumn().

Referenced by evaldNdx(), and surfaceEvaldNdx().

◆ evaldNdx() [2/2]

double oofem::FEI3dTetQuad::evaldNdx ( FloatMatrix & answer,
const FloatArray & lcoords,
const FEICellGeometry & cellgeo ) const
overridevirtual

Evaluates the matrix of derivatives of interpolation functions (shape functions) at given point. These derivatives are in global coordinate system (where the nodal coordinates are defined)

Parameters
answerContains resulting matrix of derivatives, the member at i,j position contains value of dNi/dxj.
lcoordsArray containing (local) coordinates.
cellgeoUnderlying cell geometry.
Returns
Determinant of the Jacobian.

Implements oofem::FEInterpolation.

Definition at line 189 of file fei3dtetquad.C.

References oofem::FloatMatrix::beProductOf(), evaldNdx(), evaldNdxi(), oofem::FloatMatrix::giveDeterminant(), oofem::FloatMatrix::giveNumberOfRows(), oofem::FEICellGeometry::giveVertexCoordinates(), oofem::inv(), oofem::FloatMatrix::resize(), and oofem::FloatMatrix::setColumn().

◆ evaldNdxi() [1/2]

FloatMatrixF< 3, 10 > oofem::FEI3dTetQuad::evaldNdxi ( const FloatArrayF< 3 > & lcoords)
static

Definition at line 211 of file fei3dtetquad.C.

Referenced by evaldNdx(), evaldNdx(), evaldNdxi(), and giveJacobianMatrixAt().

◆ evaldNdxi() [2/2]

void oofem::FEI3dTetQuad::evaldNdxi ( FloatMatrix & answer,
const FloatArray & lcoords,
const FEICellGeometry & cellgeo ) const
overridevirtual

Evaluates the matrix of derivatives of interpolation functions (shape functions) at given point. These derivatives are wrt local (parent) coordinate system

Parameters
answerContains resulting matrix of derivatives, the member at i,j position contains value of dNi/dxij.
lcoordsArray containing (local) coordinates.
cellgeoUnderlying cell geometry.

Reimplemented from oofem::FEInterpolation.

Definition at line 253 of file fei3dtetquad.C.

References evaldNdxi(), and oofem::FloatMatrix::resize().

◆ evalN() [1/2]

FloatArrayF< 10 > oofem::FEI3dTetQuad::evalN ( const FloatArrayF< 3 > & lcoords)
static

Definition at line 127 of file fei3dtetquad.C.

Referenced by evalN(), and local2global().

◆ evalN() [2/2]

void oofem::FEI3dTetQuad::evalN ( FloatArray & answer,
const FloatArray & lcoords,
const FEICellGeometry & cellgeo ) const
overridevirtual

Evaluates the array of interpolation functions (shape functions) at given point.

Parameters
answerContains resulting array of evaluated interpolation functions.
lcoordsArray containing (local) coordinates.
cellgeoUnderlying cell geometry.

Implements oofem::FEInterpolation.

Definition at line 150 of file fei3dtetquad.C.

References evalN(), and oofem::FloatArray::resize().

◆ evalNXIntegral()

double oofem::FEI3dTetQuad::evalNXIntegral ( int boundary,
const FEICellGeometry & cellgeo ) const
overridevirtual

Computes the integral \( \int_S n \cdot x \mathrm{d}s \).

Parameters
boundaryBoundary number.
cellgeoUnderlying cell geometry.
Returns
Evaluated integral.

Reimplemented from oofem::FEInterpolation.

Definition at line 612 of file fei3dtetquad.C.

References computeLocalSurfaceMapping(), and oofem::FEICellGeometry::giveVertexCoordinates().

◆ giveBoundaryEdgeIntegrationDomain()

integrationDomain oofem::FEI3dTetQuad::giveBoundaryEdgeIntegrationDomain ( int boundary,
const Element_Geometry_Type  ) const
inlineoverridevirtual

Returns boundary integration domain.

Implements oofem::FEInterpolation.

Definition at line 57 of file fei3dtetquad.h.

References oofem::_Line.

◆ giveBoundaryGeometryType()

const Element_Geometry_Type oofem::FEI3dTetQuad::giveBoundaryGeometryType ( int boundary) const
inlineoverridevirtual

Returns boundary geometry type

Implements oofem::FEInterpolation.

Definition at line 53 of file fei3dtetquad.h.

◆ giveBoundaryIntegrationDomain()

integrationDomain oofem::FEI3dTetQuad::giveBoundaryIntegrationDomain ( int boundary,
const Element_Geometry_Type  ) const
inlineoverridevirtual

Returns boundary integration domain.

Implements oofem::FEInterpolation.

Definition at line 55 of file fei3dtetquad.h.

References oofem::_Triangle.

◆ giveBoundaryIntegrationRule()

std::unique_ptr< IntegrationRule > oofem::FEI3dTetQuad::giveBoundaryIntegrationRule ( int order,
int boundary,
const Element_Geometry_Type egt ) const
overridevirtual

Sets up a suitable integration rule for integrating over the requested boundary. The required polynomial order for the determinant of the jacobian is added automatically.

Parameters
orderPolynomial order of the integrand (should NOT including determinant of jacobian).
boundaryBoundary number.

Reimplemented from oofem::FEInterpolation.

Definition at line 668 of file fei3dtetquad.C.

References oofem::_Triangle, and oofem::FEInterpolation::order.

◆ giveBoundarySurfaceIntegrationDomain()

integrationDomain oofem::FEI3dTetQuad::giveBoundarySurfaceIntegrationDomain ( int boundary,
const Element_Geometry_Type  ) const
inlineoverridevirtual

Returns boundary integration domain.

Implements oofem::FEInterpolation.

Definition at line 56 of file fei3dtetquad.h.

References oofem::_Triangle.

◆ giveCellDofMans()

void oofem::FEI3dTetQuad::giveCellDofMans ( IntArray & nodes,
IntArray & internalDofMans,
Element * elem ) const
inlineoverridevirtual

Returns list of element nodes (and list of internal dof managers) (including on edges and surfaces) defining the approximation.

Returns local element node numbers defining the approximation. Typically this corresponds to all element nodes. But for elements with mixed interpolation, we need to select subset of nodes (quadratic triangle with linear interpolation). This method can query element geometry type (from given element) and compile the nodal set.

Note
Required by mpm module

Reimplemented from oofem::FEInterpolation.

Definition at line 73 of file fei3dtetquad.h.

◆ giveCharacteristicLength()

double oofem::FEI3dTetQuad::giveCharacteristicLength ( const FEICellGeometry & cellgeo) const

Returns a characteristic length of the geometry, typically a diagonal or edge length.

Parameters
cellgeoUnderlying cell geometry.
Returns
Square root of area.

Definition at line 381 of file fei3dtetquad.C.

References oofem::distance(), and oofem::FEICellGeometry::giveVertexCoordinates().

Referenced by global2local().

◆ giveGeometryType()

const Element_Geometry_Type oofem::FEI3dTetQuad::giveGeometryType ( ) const
inlineoverridevirtual

Returns the geometry type fo the interpolator.

Implements oofem::FEInterpolation.

Definition at line 52 of file fei3dtetquad.h.

◆ giveIntegrationDomain()

integrationDomain oofem::FEI3dTetQuad::giveIntegrationDomain ( const Element_Geometry_Type ) const
inlineoverridevirtual

Returns the integration domain of the interpolator.

Implements oofem::FEInterpolation.

Definition at line 51 of file fei3dtetquad.h.

References oofem::_Tetrahedra.

◆ giveIntegrationRule()

std::unique_ptr< IntegrationRule > oofem::FEI3dTetQuad::giveIntegrationRule ( int order,
const Element_Geometry_Type egt ) const
overridevirtual

Sets up a suitable integration rule for numerical integrating over volume. The required polynomial order for the determinant of the jacobian is added automatically.

Parameters
orderPolynomial order of integrand (should NOT including determinant of jacobian).

Reimplemented from oofem::FEInterpolation.

Definition at line 659 of file fei3dtetquad.C.

References oofem::_Tetrahedra, and oofem::FEInterpolation::order.

◆ giveJacobianMatrixAt()

void oofem::FEI3dTetQuad::giveJacobianMatrixAt ( FloatMatrix & jacobianMatrix,
const FloatArray & lcoords,
const FEICellGeometry & cellgeo ) const
overridevirtual

Gives the jacobian matrix at the local coordinates.

Parameters
jacobianMatrixThe requested matrix.
lcoordsLocal coordinates.
cellgeoElement geometry.

Reimplemented from oofem::FEInterpolation.

Definition at line 388 of file fei3dtetquad.C.

References oofem::FloatMatrix::beProductOf(), evaldNdxi(), oofem::FloatMatrix::giveNumberOfRows(), oofem::FEICellGeometry::giveVertexCoordinates(), oofem::FloatMatrix::resize(), and oofem::FloatMatrix::setColumn().

Referenced by global2local().

◆ giveNumberOfNodes()

int oofem::FEI3dTetQuad::giveNumberOfNodes ( const Element_Geometry_Type ) const
inlineoverridevirtual

Returns the number of geometric nodes of the receiver.

Reimplemented from oofem::FEInterpolation.

Definition at line 72 of file fei3dtetquad.h.

◆ giveVolume()

double oofem::FEI3dTetQuad::giveVolume ( const FEICellGeometry & cellgeo) const
overridevirtual

Computes the exact volume.

Parameters
cellgeoCell geometry for the element.
Returns
Volume of geometry.

Reimplemented from oofem::FEInterpolation3d.

Definition at line 45 of file fei3dtetquad.C.

References oofem::FloatArray::at(), and oofem::FEICellGeometry::giveVertexCoordinates().

◆ global2local()

int oofem::FEI3dTetQuad::global2local ( FloatArray & answer,
const FloatArray & gcoords,
const FEICellGeometry & cellgeo ) const
overridevirtual

Evaluates local coordinates from given global ones. If local coordinates cannot be found (generate elements, or point far outside geometry, then the center coordinate will be used as a last resort, and the return value will be zero.

Parameters
answerContains evaluated local coordinates.
gcoordsArray containing global coordinates.
cellgeoUnderlying cell geometry.
Returns
Nonzero is returned if point is within the element geometry, zero otherwise.

Implements oofem::FEInterpolation.

Definition at line 318 of file fei3dtetquad.C.

References oofem::FloatArray::add(), oofem::FloatArray::beDifferenceOf(), oofem::FloatArray::computeNorm(), giveCharacteristicLength(), giveJacobianMatrixAt(), oofem::FloatArray::giveSize(), local2global(), POINT_TOL, oofem::FloatArray::resize(), oofem::FloatMatrix::solveForRhs(), and oofem::FloatArray::zero().

◆ local2global()

void oofem::FEI3dTetQuad::local2global ( FloatArray & answer,
const FloatArray & lcoords,
const FEICellGeometry & cellgeo ) const
overridevirtual

Evaluates global coordinates from given local ones.

Parameters
answerContains resulting global coordinates.
lcoordsArray containing (local) coordinates.
cellgeoUnderlying cell geometry.

Implements oofem::FEInterpolation.

Definition at line 305 of file fei3dtetquad.C.

References oofem::FloatArray::add(), oofem::FloatArray::clear(), evalN(), oofem::FEICellGeometry::giveVertexCoordinates(), and N.

Referenced by global2local().

◆ surfaceEvaldNdx()

void oofem::FEI3dTetQuad::surfaceEvaldNdx ( FloatMatrix & answer,
int isurf,
const FloatArray & lcoords,
const FEICellGeometry & cellgeo ) const
overridevirtual

Evaluates the matrix of derivatives of edge interpolation functions (shape functions) at given point. These derivatives are in global coordinate system (where the nodal coordinates are defined).

Parameters
answerContains resulting matrix of derivatives, the member at i,j position contains value of dNj/dxi.
isurfDetermines the surface number.
lcoordsArray containing (local) coordinates.
cellgeoUnderlying cell geometry.

Reimplemented from oofem::FEInterpolation3d.

Definition at line 503 of file fei3dtetquad.C.

References oofem::FloatArray::at(), oofem::FloatMatrix::at(), computeLocalSurfaceMapping(), evaldNdx(), and oofem::FloatMatrix::resize().

◆ surfaceEvalN()

void oofem::FEI3dTetQuad::surfaceEvalN ( FloatArray & answer,
int isurf,
const FloatArray & lcoords,
const FEICellGeometry & cellgeo ) const
overridevirtual

Evaluates the array of edge interpolation functions (shape functions) at given point.

Parameters
answerContains resulting array of evaluated interpolation functions.
isurfSurface number.
lcoordsArray containing (local) coordinates.
cellgeoUnderlying cell geometry.

Implements oofem::FEInterpolation3d.

Definition at line 472 of file fei3dtetquad.C.

References oofem::FloatArray::at(), and oofem::FloatArray::resize().

Referenced by surfaceLocal2global().

◆ surfaceEvalNormal()

double oofem::FEI3dTetQuad::surfaceEvalNormal ( FloatArray & answer,
int isurf,
const FloatArray & lcoords,
const FEICellGeometry & cellgeo ) const
overridevirtual

Evaluates the normal out of the surface at given point.

Parameters
answerContains resulting normal vector.
isurfDetermines the surface number.
lcoordsArray containing (local) coordinates.
cellgeoUnderlying cell geometry.
Returns
Surface mapping jacobian.

Reimplemented from oofem::FEInterpolation3d.

Definition at line 523 of file fei3dtetquad.C.

References oofem::FloatArray::add(), oofem::FloatArray::at(), oofem::FloatArray::beVectorProductOf(), computeLocalSurfaceMapping(), oofem::FEICellGeometry::giveVertexCoordinates(), and oofem::FloatArray::normalize_giveNorm().

Referenced by surfaceGiveTransformationJacobian().

◆ surfaceGiveTransformationJacobian()

double oofem::FEI3dTetQuad::surfaceGiveTransformationJacobian ( int isurf,
const FloatArray & lcoords,
const FEICellGeometry & cellgeo ) const
overridevirtual

Evaluates the edge jacobian of transformation between local and global coordinates.

Parameters
isurfDetermines the surface number.
lcoordsArray containing (local) coordinates.
cellgeoUnderlying cell geometry.
Returns
Determinant of the transformation.

Implements oofem::FEInterpolation3d.

Definition at line 558 of file fei3dtetquad.C.

References surfaceEvalNormal().

◆ surfaceLocal2global()

void oofem::FEI3dTetQuad::surfaceLocal2global ( FloatArray & answer,
int isurf,
const FloatArray & lcoords,
const FEICellGeometry & cellgeo ) const
overridevirtual

Evaluates edge global coordinates from given local ones. These derivatives are in global coordinate system (where the nodal coordinates are defined).

Parameters
answerContains resulting global coordinates.
isurfDetermines the surface number.
lcoordsArray containing (local) coordinates.
cellgeoUnderlying cell geometry.

Implements oofem::FEInterpolation3d.

Definition at line 489 of file fei3dtetquad.C.

References oofem::FloatArray::add(), oofem::FloatArray::clear(), computeLocalSurfaceMapping(), oofem::FEICellGeometry::giveVertexCoordinates(), N, and surfaceEvalN().


The documentation for this class was generated from the following files:

This page is part of the OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011