|
OOFEM 3.0
|
#include <fei3dhexalin.h>
Public Member Functions | |
| FEI3dHexaLin () | |
| 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. | |
| 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 &dN, 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. | |
| 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 | edgeEvaldNdxi (FloatArray &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 |
| void | surfaceEvaldNdxi (FloatMatrix &answer, const FloatArray &lcoords) const override |
| void | surfaceLocal2global (FloatArray &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 |
| double | surfaceGiveTransformationJacobian (int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override |
| IntArray | computeLocalSurfaceMapping (int iedge) const override |
| void | giveJacobianMatrixAt (FloatMatrix &jacobianMatrix, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override |
| double | evalNXIntegral (int iEdge, const FEICellGeometry &cellgeo) const override |
| std::unique_ptr< IntegrationRule > | giveIntegrationRule (int order, const Element_Geometry_Type) const override |
| std::unique_ptr< IntegrationRule > | giveBoundaryIntegrationRule (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 |
| virtual double | giveVolume (const FEICellGeometry &cellgeo) const |
| 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 |
| 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< IntegrationRule > | giveBoundaryEdgeIntegrationRule (int order, int boundary, const Element_Geometry_Type) const override |
| std::unique_ptr< IntegrationRule > | giveBoundaryIntegrationRule (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< IntegrationRule > | giveBoundarySurfaceIntegrationRule (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 FloatArray * | giveKnotVector () const |
| virtual int | giveNumberOfKnotSpans (int dim) const |
| virtual const FloatArray * | giveKnotValues (int dim) const |
| virtual const IntArray * | giveKnotMultiplicity (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< 8 > | evalN (const FloatArrayF< 3 > &lcoords) |
| static std::pair< double, FloatMatrixF< 3, 8 > > | evaldNdx (const FloatArrayF< 3 > &lcoords, const FEICellGeometry &cellgeo) |
| static FloatMatrixF< 3, 8 > | evaldNdxi (const FloatArrayF< 3 > &lcoords) |
Protected Member Functions | |
| double | edgeComputeLength (const IntArray &edgeNodes, const FEICellGeometry &cellgeo) const |
Additional Inherited Members | |
| Protected Attributes inherited from oofem::FEInterpolation | |
| int | order = 0 |
Class representing implementation of linear hexahedra interpolation class.
Definition at line 45 of file fei3dhexalin.h.
|
inline |
Definition at line 48 of file fei3dhexalin.h.
References oofem::FEInterpolation3d::FEInterpolation3d().
|
overridevirtual |
Implements oofem::FEInterpolation3d.
Definition at line 408 of file fei3dhexalin.C.
Referenced by edgeEvaldNdx(), edgeGiveTransformationJacobian(), and edgeLocal2global().
|
overridevirtual |
Implements oofem::FEInterpolation3d.
Definition at line 594 of file fei3dhexalin.C.
Referenced by evalNXIntegral(), surfaceEvaldNdx(), surfaceEvalNormal(), and surfaceLocal2global().
|
protected |
Definition at line 441 of file fei3dhexalin.C.
References oofem::IntArray::at(), oofem::distance(), and oofem::FEICellGeometry::giveVertexCoordinates().
Referenced by edgeEvaldNdx(), and edgeGiveTransformationJacobian().
|
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)
| 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 360 of file fei3dhexalin.C.
References oofem::FloatMatrix::at(), computeLocalEdgeMapping(), edgeComputeLength(), and oofem::FloatMatrix::resize().
|
overridevirtual |
Evaluates the matrix of derivatives of edge interpolation functions (shape functions) at given point. These derivatives are in local (parent) coordinate system
| answer | Contains resulting matrix of derivatives, the member at i,j position contains value of dN_j/dxi_i. |
| iedge | Determines the edge number. |
| lcoords | Array containing (local) coordinates. |
| cellgeo | Underlying cell geometry. |
Reimplemented from oofem::FEInterpolation3d.
Definition at line 373 of file fei3dhexalin.C.
References oofem::FloatArray::resize().
|
overridevirtual |
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 350 of file fei3dhexalin.C.
References oofem::FloatArray::at(), and oofem::FloatArray::resize().
Referenced by edgeLocal2global().
|
overridevirtual |
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 400 of file fei3dhexalin.C.
References computeLocalEdgeMapping(), and edgeComputeLength().
|
overridevirtual |
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 382 of file fei3dhexalin.C.
References oofem::FloatArray::at(), computeLocalEdgeMapping(), edgeEvalN(), oofem::FEICellGeometry::giveVertexCoordinates(), and oofem::FloatArray::resize().
|
static |
Definition at line 170 of file fei3dhexalin.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().
|
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)
| 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 184 of file fei3dhexalin.C.
References oofem::FloatMatrix::beProductOf(), evaldNdx(), evaldNdxi(), oofem::FloatMatrix::giveDeterminant(), oofem::FEICellGeometry::giveVertexCoordinates(), oofem::inv(), oofem::FloatMatrix::resize(), and oofem::FloatMatrix::setColumn().
|
static |
Definition at line 91 of file fei3dhexalin.C.
References oofem::FloatArrayF< N >::at().
Referenced by evaldNdx(), evaldNdx(), evaldNdxi(), and giveJacobianMatrixAt().
|
overridevirtual |
Evaluates the matrix of derivatives of interpolation functions (shape functions) at given point. These derivatives are wrt local (parent) coordinate system
| answer | Contains resulting matrix of derivatives, the member at i,j position contains value of dNi/dxij. |
| lcoords | Array containing (local) coordinates. |
| cellgeo | Underlying cell geometry. |
Reimplemented from oofem::FEInterpolation.
Definition at line 127 of file fei3dhexalin.C.
References oofem::FloatArray::at(), oofem::FloatMatrix::at(), evaldNdxi(), and oofem::FloatMatrix::resize().
|
static |
auto [x, y, z] = lcoords; // structured bindings C++17 would be nice.
Definition at line 46 of file fei3dhexalin.C.
Referenced by evalN(), and local2global().
|
overridevirtual |
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 67 of file fei3dhexalin.C.
References evalN(), and oofem::Vec8().
|
overridevirtual |
Computes the integral \( \int_S n \cdot x \mathrm{d}s \).
| boundary | Boundary number. |
| cellgeo | Underlying cell geometry. |
Reimplemented from oofem::FEInterpolation.
Definition at line 628 of file fei3dhexalin.C.
References computeLocalSurfaceMapping(), and oofem::FEICellGeometry::giveVertexCoordinates().
|
inlineoverridevirtual |
Returns boundary integration domain.
Implements oofem::FEInterpolation.
Definition at line 56 of file fei3dhexalin.h.
References oofem::_Line.
|
inlineoverridevirtual |
Returns boundary geometry type
Implements oofem::FEInterpolation.
Definition at line 52 of file fei3dhexalin.h.
|
inlineoverridevirtual |
Returns boundary integration domain.
Implements oofem::FEInterpolation.
Definition at line 54 of file fei3dhexalin.h.
References oofem::_Square.
|
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.
| order | Polynomial order of the integrand (should NOT including determinant of jacobian). |
| boundary | Boundary number. |
Reimplemented from oofem::FEInterpolation.
Definition at line 654 of file fei3dhexalin.C.
References oofem::_Square, and oofem::FEInterpolation::order.
|
inlineoverridevirtual |
Returns boundary integration domain.
Implements oofem::FEInterpolation.
Definition at line 55 of file fei3dhexalin.h.
References oofem::_Square.
|
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.
Reimplemented from oofem::FEInterpolation.
Definition at line 69 of file fei3dhexalin.h.
|
inlineoverridevirtual |
Returns the geometry type fo the interpolator.
Implements oofem::FEInterpolation.
Definition at line 51 of file fei3dhexalin.h.
|
inlineoverridevirtual |
Returns the integration domain of the interpolator.
Implements oofem::FEInterpolation.
Definition at line 50 of file fei3dhexalin.h.
References oofem::_Cube.
|
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.
| order | Polynomial order of integrand (should NOT including determinant of jacobian). |
Reimplemented from oofem::FEInterpolation.
Definition at line 645 of file fei3dhexalin.C.
References oofem::_Cube, and oofem::FEInterpolation::order.
|
overridevirtual |
Gives the jacobian matrix at the local coordinates.
| jacobianMatrix | The requested matrix. |
| lcoords | Local coordinates. |
| cellgeo | Element geometry. |
Reimplemented from oofem::FEInterpolation.
Definition at line 614 of file fei3dhexalin.C.
References evaldNdxi(), oofem::FloatMatrix::resize(), and oofem::FloatMatrix::setColumn().
|
inlineoverridevirtual |
Returns the number of geometric nodes of the receiver.
Reimplemented from oofem::FEInterpolation.
Definition at line 68 of file fei3dhexalin.h.
|
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.
| answer | Contains evaluated local coordinates. |
| gcoords | Array containing global coordinates. |
| cellgeo | Underlying cell geometry. |
Implements oofem::FEInterpolation.
Definition at line 222 of file fei3dhexalin.C.
References oofem::FloatArray::at(), oofem::FloatMatrix::at(), oofem::FEICellGeometry::giveVertexCoordinates(), POINT_TOL, oofem::FloatArray::resize(), oofem::FloatMatrix::solveForRhs(), oofem::FloatArray::subtract(), and oofem::FloatArray::zero().
|
overridevirtual |
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 208 of file fei3dhexalin.C.
References oofem::FloatArray::add(), oofem::FloatArray::at(), oofem::FloatArray::clear(), evalN(), and oofem::FEICellGeometry::giveVertexCoordinates().
|
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).
| 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 460 of file fei3dhexalin.C.
References oofem::FloatArray::at(), oofem::FloatMatrix::at(), computeLocalSurfaceMapping(), evaldNdx(), OOFEM_ERROR, oofem::FloatMatrix::resize(), and oofem::Vec3().
|
overridevirtual |
Evaluates the matrix of derivatives of surface interpolation functions (shape functions) wrt parametric coordinates at given point.
| answer | Contains resulting matrix of derivatives, the member at i,j position contains value of dNj/dxi. |
| lcoords | Array containing (local) coordinates. |
Reimplemented from oofem::FEInterpolation.
Definition at line 569 of file fei3dhexalin.C.
References oofem::FloatArray::at(), oofem::FloatMatrix::at(), and oofem::FloatMatrix::resize().
|
overridevirtual |
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 447 of file fei3dhexalin.C.
References oofem::FloatArray::at(), and oofem::FloatArray::resize().
Referenced by surfaceLocal2global().
|
overridevirtual |
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 532 of file fei3dhexalin.C.
References oofem::FloatArray::add(), oofem::FloatArray::at(), oofem::FloatArray::beVectorProductOf(), computeLocalSurfaceMapping(), oofem::FEICellGeometry::giveVertexCoordinates(), and oofem::FloatArray::normalize_giveNorm().
Referenced by surfaceGiveTransformationJacobian().
|
overridevirtual |
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 561 of file fei3dhexalin.C.
References surfaceEvalNormal().
|
overridevirtual |
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 514 of file fei3dhexalin.C.
References oofem::FloatArray::at(), computeLocalSurfaceMapping(), oofem::FEICellGeometry::giveVertexCoordinates(), oofem::FloatArray::resize(), and surfaceEvalN().