OOFEM
2.4
OOFEM.org - Object Oriented Finite Element Solver
|
Class representing implementation of linear tetrahedra interpolation class. More...
#include <fei3dtetlin.h>
Public Member Functions | |
FEI3dTetLin () | |
virtual integrationDomain | giveIntegrationDomain () const |
Returns the integration domain of the interpolator. More... | |
virtual Element_Geometry_Type | giveGeometryType () const |
Returns the geometry type fo the interpolator. More... | |
virtual integrationDomain | giveBoundaryIntegrationDomain (int ib) const |
Returns boundary integration domain. More... | |
virtual integrationDomain | giveBoundarySurfaceIntegrationDomain (int isurf) const |
Returns boundary integration domain. More... | |
virtual integrationDomain | giveBoundaryEdgeIntegrationDomain (int iedge) const |
Returns boundary integration domain. More... | |
virtual void | evalN (FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates the array of interpolation functions (shape functions) at given point. More... | |
virtual double | evaldNdx (FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates the matrix of derivatives of interpolation functions (shape functions) at given point. More... | |
virtual void | local2global (FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates global coordinates from given local ones. More... | |
virtual int | global2local (FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates local coordinates from given global ones. More... | |
virtual double | giveTransformationJacobian (const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates the determinant of the transformation. More... | |
virtual int | giveNumberOfNodes () const |
Returns the number of geometric nodes of the receiver. More... | |
virtual void | edgeEvalN (FloatArray &answer, int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates the array of edge interpolation functions (shape functions) at given point. More... | |
virtual void | edgeEvaldNdx (FloatMatrix &answer, int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates the matrix of derivatives of edge interpolation functions (shape functions) at given point. More... | |
virtual void | edgeLocal2global (FloatArray &answer, int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates edge global coordinates from given local ones. More... | |
virtual double | edgeGiveTransformationJacobian (int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates the edge jacobian of transformation between local and global coordinates. More... | |
virtual void | computeLocalEdgeMapping (IntArray &edgeNodes, int iedge) |
virtual void | surfaceEvalN (FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates the array of edge interpolation functions (shape functions) at given point. More... | |
virtual void | surfaceEvaldNdx (FloatMatrix &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates the matrix of derivatives of edge interpolation functions (shape functions) at given point. More... | |
virtual double | surfaceEvalNormal (FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates the normal out of the surface at given point. More... | |
virtual void | surfaceLocal2global (FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates edge global coordinates from given local ones. More... | |
virtual double | surfaceGiveTransformationJacobian (int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates the edge jacobian of transformation between local and global coordinates. More... | |
virtual void | computeLocalSurfaceMapping (IntArray &edgeNodes, int iedge) |
virtual double | evalNXIntegral (int iEdge, const FEICellGeometry &cellgeo) |
Computes the integral . More... | |
virtual IntegrationRule * | giveIntegrationRule (int order) |
Sets up a suitable integration rule for numerical integrating over volume. More... | |
virtual IntegrationRule * | giveBoundaryIntegrationRule (int order, int boundary) |
Sets up a suitable integration rule for integrating over the requested boundary. More... | |
Public Member Functions inherited from oofem::FEInterpolation3d | |
FEInterpolation3d (int o) | |
virtual int | giveNsd () |
Returns number of spatial dimensions. More... | |
virtual double | giveVolume (const FEICellGeometry &cellgeo) const |
Computes the exact volume. More... | |
virtual void | boundaryEdgeGiveNodes (IntArray &answer, int boundary) |
Gives the boundary nodes for requested boundary number. More... | |
virtual void | boundaryEdgeEvalN (FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates the basis functions on the requested boundary. More... | |
virtual double | boundaryEdgeGiveTransformationJacobian (int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates the determinant of the transformation Jacobian on the requested boundary. More... | |
virtual void | boundaryEdgeLocal2Global (FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Maps the local boundary coordinates to global. More... | |
virtual void | boundarySurfaceEvalN (FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates the array of edge interpolation functions (shape functions) at given point. More... | |
virtual void | boundarySurfaceEvaldNdx (FloatMatrix &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates the matrix of derivatives of edge interpolation functions (shape functions) at given point. More... | |
virtual double | boundarySurfaceEvalNormal (FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates the normal out of the surface at given point. More... | |
virtual void | boundarySurfaceLocal2global (FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates edge global coordinates from given local ones. More... | |
virtual double | boundarySurfaceGiveTransformationJacobian (int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates the edge jacobian of transformation between local and global coordinates. More... | |
virtual void | boundaryGiveNodes (IntArray &answer, int boundary) |
Gives the boundary nodes for requested boundary number. More... | |
virtual void | boundaryEvalN (FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates the basis functions on the requested boundary. More... | |
virtual double | boundaryEvalNormal (FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates the normal on the requested boundary. More... | |
virtual double | boundaryGiveTransformationJacobian (int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates the determinant of the transformation Jacobian on the requested boundary. More... | |
virtual void | boundaryLocal2Global (FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Maps the local boundary coordinates to global. More... | |
virtual IntegrationRule * | giveBoundaryEdgeIntegrationRule (int order, int boundary) |
Sets up a suitable integration rule for integrating over the requested boundary. More... | |
virtual void | boundarySurfaceGiveNodes (IntArray &answer, int boundary) |
Gives the boundary nodes for requested boundary number. More... | |
virtual void | edgeEvaldNdxi (FloatArray &answer, int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates the matrix of derivatives of edge interpolation functions (shape functions) at given point. More... | |
void | computeEdgeMapping (IntArray &edgeNodes, IntArray &elemNodes, int iedge) |
void | computeSurfaceMapping (IntArray &surfNodes, IntArray &elemNodes, int isurf) |
Public Member Functions inherited from oofem::FEInterpolation | |
FEInterpolation (int o) | |
virtual | ~FEInterpolation () |
virtual IRResultType | initializeFrom (InputRecord *ir) |
Initializes receiver according to object description stored in input record. More... | |
std::string | errorInfo (const char *func) const |
int | giveInterpolationOrder () |
Returns the interpolation order. More... | |
virtual void | evald2Ndx2 (FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates the matrix of second derivatives of interpolation functions (shape functions) at given point. More... | |
virtual void | evaldNdxi (FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Evaluates the matrix of derivatives of interpolation functions (shape functions) at given point. More... | |
virtual void | giveLocalNodeCoords (FloatMatrix &answer) |
Returns a matrix containing the local coordinates for each node corresponding to the interpolation. More... | |
virtual void | giveJacobianMatrixAt (FloatMatrix &jacobianMatrix, const FloatArray &lcoords, const FEICellGeometry &cellgeo) |
Gives the jacobian matrix at the local coordinates. More... | |
virtual IntegrationRule * | giveBoundarySurfaceIntegrationRule (int order, int boundary) |
Sets up a suitable integration rule for integrating over the requested boundary. More... | |
virtual int | giveKnotSpanBasisFuncMask (const IntArray &knotSpan, IntArray &mask) |
Returns indices (zero based) of nonzero basis functions for given knot span. More... | |
virtual int | giveNumberOfKnotSpanBasisFunctions (const IntArray &knotSpan) |
Returns the number of nonzero basis functions at individual knot span,. More... | |
virtual bool | hasSubPatchFormulation () |
Returns true, if receiver is formulated on sub-patch basis. More... | |
virtual const double *const * | giveKnotVector () |
Returns the subdivision of patch parametric space. More... | |
virtual int | giveNumberOfKnotSpans (int dim) |
Returns the number of knot spans of the receiver. More... | |
virtual const FloatArray * | giveKnotValues (int dim) |
Returns the knot values of the receiver. More... | |
virtual const IntArray * | giveKnotMultiplicity (int dim) |
Returns the knot multiplicity of the receiver. More... | |
virtual int | giveNumberOfEdges () const |
Returns number of edges. More... | |
Protected Member Functions | |
double | edgeComputeLength (IntArray &edgeNodes, const FEICellGeometry &cellgeo) |
Additional Inherited Members | |
Protected Attributes inherited from oofem::FEInterpolation | |
int | order |
Class representing implementation of linear tetrahedra interpolation class.
Definition at line 44 of file fei3dtetlin.h.
|
inline |
Definition at line 47 of file fei3dtetlin.h.
|
virtual |
Implements oofem::FEInterpolation3d.
Definition at line 271 of file fei3dtetlin.C.
References oofem::IntArray::at(), OOFEM_ERROR, and oofem::IntArray::resize().
Referenced by edgeEvaldNdx(), edgeGiveTransformationJacobian(), and edgeLocal2global().
|
virtual |
Implements oofem::FEInterpolation3d.
Definition at line 388 of file fei3dtetlin.C.
References oofem::IntArray::at(), OOFEM_ERROR, and oofem::IntArray::resize().
Referenced by evalNXIntegral(), surfaceEvaldNdx(), surfaceEvalNormal(), and surfaceLocal2global().
|
protected |
Definition at line 303 of file fei3dtetlin.C.
References oofem::IntArray::at(), and oofem::FEICellGeometry::giveVertexCoordinates().
Referenced by edgeEvaldNdx(), and edgeGiveTransformationJacobian().
|
virtual |
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)
answer | Contains resulting matrix of derivatives, the member at i,j position contains value of dNj/dxi. |
iedge | Determines the edge number. |
lcoords | Array containing (local) coordinates. |
cellgeo | Underlying cell geometry. |
Implements oofem::FEInterpolation3d.
Definition at line 216 of file fei3dtetlin.C.
References oofem::IntArray::at(), oofem::FloatMatrix::at(), computeLocalEdgeMapping(), edgeComputeLength(), oofem::FEICellGeometry::giveVertexCoordinates(), and oofem::FloatMatrix::resize().
|
virtual |
Evaluates the array of edge interpolation functions (shape functions) at given point.
answer | Contains resulting array of evaluated interpolation functions. |
iedge | Edge number. |
lcoords | Array containing (local) coordinates. |
cellgeo | Underlying cell geometry. |
Implements oofem::FEInterpolation3d.
Definition at line 206 of file fei3dtetlin.C.
References oofem::FloatArray::at(), and oofem::FloatArray::resize().
Referenced by edgeLocal2global().
|
virtual |
Evaluates the edge jacobian of transformation between local and global coordinates.
iedge | Determines edge number. |
lcoords | Array containing (local) coordinates. |
cellgeo | Underlying cell geometry. |
Implements oofem::FEInterpolation3d.
Definition at line 262 of file fei3dtetlin.C.
References computeLocalEdgeMapping(), and edgeComputeLength().
Referenced by oofem::Tetrah1_ht::computeEdgeVolumeAround().
|
virtual |
Evaluates edge global coordinates from given local ones.
These derivatives are in global coordinate system (where the nodal coordinates are defined).
answer | Contains resulting global coordinates. |
iedge | Determines edge number. |
lcoords | Array containing (local) coordinates. |
cellgeo | Underlying cell geometry. |
Implements oofem::FEInterpolation3d.
Definition at line 243 of file fei3dtetlin.C.
References oofem::IntArray::at(), oofem::FloatArray::at(), computeLocalEdgeMapping(), edgeEvalN(), oofem::FEICellGeometry::giveVertexCoordinates(), and oofem::FloatArray::resize().
|
virtual |
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)
answer | Contains resulting matrix of derivatives, the member at i,j position contains value of dNi/dxj. |
lcoords | Array containing (local) coordinates. |
cellgeo | Underlying cell geometry. |
Implements oofem::FEInterpolation.
Definition at line 54 of file fei3dtetlin.C.
References oofem::FloatArray::at(), oofem::FloatMatrix::at(), oofem::FEICellGeometry::giveVertexCoordinates(), OOFEM_ERROR, oofem::FloatMatrix::resize(), and oofem::FloatMatrix::times().
Referenced by oofem::QTRSpaceGrad::computeBkappaMatrixAt(), oofem::Tet1_3D_SUPG::computeBMatrix(), oofem::Tet1_3D_SUPG::computeDivUMatrix(), oofem::Tet1_3D_SUPG::computeGradPMatrix(), oofem::Tet1_3D_SUPG::computeGradUMatrix(), oofem::Tet1BubbleStokes::computeInternalForcesVector(), oofem::Tet1BubbleStokes::computeStiffnessMatrix(), oofem::Tet1_3D_SUPG::computeUDotGradUMatrix(), oofem::Tet1_3D_SUPG::LS_PCS_computedN(), oofem::Tet1_3D_SUPG::LS_PCS_computeF(), and surfaceEvaldNdx().
|
virtual |
Evaluates the array of interpolation functions (shape functions) at given point.
answer | Contains resulting array of evaluated interpolation functions. |
lcoords | Array containing (local) coordinates. |
cellgeo | Underlying cell geometry. |
Implements oofem::FEInterpolation.
Definition at line 43 of file fei3dtetlin.C.
References oofem::FloatArray::at(), and oofem::FloatArray::resize().
Referenced by oofem::Tet1BubbleStokes::computeField(), oofem::Tet21Stokes::computeInternalForcesVector(), oofem::Tet1BubbleStokes::computeInternalForcesVector(), oofem::tet21ghostsolid::computeLoadVector(), oofem::Tet1BubbleStokes::computeLoadVector(), oofem::QTRSpaceGrad::computeNkappaMatrixAt(), oofem::Tet1_3D_SUPG::computeNpMatrix(), oofem::Tet1_3D_SUPG::computeNuMatrix(), oofem::tet21ghostsolid::computeStiffnessMatrix(), oofem::Tet21Stokes::computeStiffnessMatrix(), oofem::Tet1BubbleStokes::computeStiffnessMatrix(), oofem::tet21ghostsolid::EIPrimaryUnknownMI_computePrimaryUnknownVectorAtLocal(), oofem::Tet21Stokes::EIPrimaryUnknownMI_computePrimaryUnknownVectorAtLocal(), oofem::tet21ghostsolid::giveInternalForcesVectorGivenSolution(), oofem::tet21ghostsolid::giveInternalForcesVectorGivenSolutionDebug(), oofem::tet21ghostsolid::giveIPValue(), and local2global().
|
virtual |
Computes the integral .
boundary | Boundary number. |
cellgeo | Underlying cell geometry. |
Reimplemented from oofem::FEInterpolation.
Definition at line 419 of file fei3dtetlin.C.
References oofem::IntArray::at(), oofem::FloatArray::at(), computeLocalSurfaceMapping(), and oofem::FEICellGeometry::giveVertexCoordinates().
|
inlinevirtual |
Returns boundary integration domain.
Implements oofem::FEInterpolation.
Definition at line 53 of file fei3dtetlin.h.
References oofem::_Line.
|
inlinevirtual |
Returns boundary integration domain.
Implements oofem::FEInterpolation.
Definition at line 51 of file fei3dtetlin.h.
References oofem::_Triangle.
|
virtual |
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.
order | Polynomial order of the integrand (should NOT including determinant of jacobian). |
boundary | Boundary number. |
Reimplemented from oofem::FEInterpolation3d.
Definition at line 443 of file fei3dtetlin.C.
References oofem::_Triangle, oofem::IntegrationRule::getRequiredNumberOfIntegrationPoints(), and oofem::IntegrationRule::SetUpPointsOnTriangle().
|
inlinevirtual |
Returns boundary integration domain.
Implements oofem::FEInterpolation.
Definition at line 52 of file fei3dtetlin.h.
References oofem::_Triangle.
|
inlinevirtual |
Returns the geometry type fo the interpolator.
Implements oofem::FEInterpolation.
Definition at line 50 of file fei3dtetlin.h.
|
inlinevirtual |
Returns the integration domain of the interpolator.
Implements oofem::FEInterpolation.
Definition at line 49 of file fei3dtetlin.h.
References oofem::_Tetrahedra.
|
virtual |
Sets up a suitable integration rule for numerical integrating over volume.
The required polynomial order for the determinant of the jacobian is added automatically.
order | Polynomial order of integrand (should NOT including determinant of jacobian). |
Reimplemented from oofem::FEInterpolation.
Definition at line 434 of file fei3dtetlin.C.
References oofem::_Tetrahedra, oofem::IntegrationRule::getRequiredNumberOfIntegrationPoints(), and oofem::IntegrationRule::SetUpPointsOnTetrahedra().
|
inlinevirtual |
Returns the number of geometric nodes of the receiver.
Reimplemented from oofem::FEInterpolation.
Definition at line 61 of file fei3dtetlin.h.
|
virtual |
Evaluates the determinant of the transformation.
lcoords | Array containing (local) coordinates. |
cellgeo | Underlying cell geometry. |
Reimplemented from oofem::FEInterpolation.
Definition at line 178 of file fei3dtetlin.C.
References oofem::FloatArray::at(), and oofem::FEICellGeometry::giveVertexCoordinates().
Referenced by oofem::Tet1BubbleStokes::computeLoadVector(), oofem::Tetrah1_ht::computeVolumeAround(), oofem::Tet1_3D_SUPG::computeVolumeAround(), and oofem::Tet1BubbleStokes::computeVolumeAround().
|
virtual |
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.
answer | Contains evaluated local coordinates. |
gcoords | Array containing global coordinates. |
cellgeo | Underlying cell geometry. |
Implements oofem::FEInterpolation.
Definition at line 117 of file fei3dtetlin.C.
References oofem::FloatArray::at(), oofem::FEICellGeometry::giveVertexCoordinates(), POINT_TOL, and oofem::FloatArray::resize().
|
virtual |
Evaluates global coordinates from given local ones.
answer | Contains resulting global coordinates. |
lcoords | Array containing (local) coordinates. |
cellgeo | Underlying cell geometry. |
Implements oofem::FEInterpolation.
Definition at line 103 of file fei3dtetlin.C.
References oofem::FloatArray::add(), oofem::FloatArray::at(), oofem::FloatArray::clear(), evalN(), and oofem::FEICellGeometry::giveVertexCoordinates().
|
virtual |
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).
answer | Contains resulting matrix of derivatives, the member at i,j position contains value of dNj/dxi. |
isurf | Determines the surface number. |
lcoords | Array containing (local) coordinates. |
cellgeo | Underlying cell geometry. |
Reimplemented from oofem::FEInterpolation3d.
Definition at line 344 of file fei3dtetlin.C.
References oofem::IntArray::at(), oofem::FloatArray::at(), oofem::FloatMatrix::at(), computeLocalSurfaceMapping(), evaldNdx(), oofem::IntArray::giveSize(), and oofem::FloatMatrix::resize().
|
virtual |
Evaluates the array of edge interpolation functions (shape functions) at given point.
answer | Contains resulting array of evaluated interpolation functions. |
isurf | Surface number. |
lcoords | Array containing (local) coordinates. |
cellgeo | Underlying cell geometry. |
Implements oofem::FEInterpolation3d.
Definition at line 309 of file fei3dtetlin.C.
References oofem::FloatArray::at(), and oofem::FloatArray::resize().
Referenced by oofem::Tet1BubbleStokes::computeBoundarySurfaceLoadVector().
|
virtual |
Evaluates the normal out of the surface at given point.
answer | Contains resulting normal vector. |
isurf | Determines the surface number. |
lcoords | Array containing (local) coordinates. |
cellgeo | Underlying cell geometry. |
Reimplemented from oofem::FEInterpolation3d.
Definition at line 366 of file fei3dtetlin.C.
References oofem::IntArray::at(), oofem::FloatArray::beDifferenceOf(), oofem::FloatArray::beVectorProductOf(), computeLocalSurfaceMapping(), oofem::FEICellGeometry::giveVertexCoordinates(), and oofem::FloatArray::normalize().
Referenced by oofem::Tet1BubbleStokes::computeBoundarySurfaceLoadVector(), and surfaceGiveTransformationJacobian().
|
virtual |
Evaluates the edge jacobian of transformation between local and global coordinates.
isurf | Determines the surface number. |
lcoords | Array containing (local) coordinates. |
cellgeo | Underlying cell geometry. |
Implements oofem::FEInterpolation3d.
Definition at line 380 of file fei3dtetlin.C.
References surfaceEvalNormal().
Referenced by oofem::Tet1BubbleStokes::computeBoundarySurfaceLoadVector(), and oofem::Tetrah1_ht::computeSurfaceVolumeAround().
|
virtual |
Evaluates edge global coordinates from given local ones.
These derivatives are in global coordinate system (where the nodal coordinates are defined).
answer | Contains resulting global coordinates. |
isurf | Determines the surface number. |
lcoords | Array containing (local) coordinates. |
cellgeo | Underlying cell geometry. |
Implements oofem::FEInterpolation3d.
Definition at line 319 of file fei3dtetlin.C.
References oofem::IntArray::at(), oofem::FloatArray::at(), computeLocalSurfaceMapping(), oofem::FEICellGeometry::giveVertexCoordinates(), and oofem::FloatArray::resize().