|
OOFEM 3.0
|
#include <fei2dquadquad.h>
Public Member Functions | |
| FEI2dQuadQuad (int ind1, int ind2) | |
| 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 | giveArea (const FEICellGeometry &cellgeo) const override |
| std::pair< double, FloatMatrixF< 2, 8 > > | evaldNdx (const FloatArrayF< 2 > &lcoords, const FEICellGeometry &cellgeo) const |
| 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 | local2global (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 override |
| bool | inside (const FloatArray &lcoords) const override |
| IntArray | computeLocalEdgeMapping (int iedge) const override |
| void | edgeEvalN (FloatArray &answer, int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override |
| void | edgeEvaldNds (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 | edgeEvalNormal (FloatArray &normal, int iedge, 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 |
| Public Member Functions inherited from oofem::FEInterpolation2d | |
| FEInterpolation2d (int o, int ind1, int ind2) | |
| int | giveNsd (const Element_Geometry_Type) const override |
| int | global2local (FloatArray &answer, const FloatArray &gcoords, const FEICellGeometry &cellgeo) const override |
| void | giveJacobianMatrixAt (FloatMatrix &jacobianMatrix, const FloatArray &lcoords, const FEICellGeometry &cellgeo) 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 | boundaryEdgeEvalNormal (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 |
| 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 |
| 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 |
| IntArray | boundarySurfaceGiveNodes (int boundary, const Element_Geometry_Type, bool includeHierarchical=false) const override |
| virtual FloatArrayF< 2 > | surfaceEvalBaseVectorsAt (int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const |
| virtual void | surfaceEvaldNdxi (FloatMatrix &answer, const FloatArray &lcoords) const override |
| virtual void | surfaceEvald2Ndxi2 (FloatMatrix &answer, const FloatArray &lcoords) const override |
| IntArray | computeEdgeMapping (const IntArray &elemNodes, int iedge) const |
| virtual double | edgeGiveTransformationJacobian (int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const |
| 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 > | giveBoundaryEdgeIntegrationRule (int order, int boundary, const Element_Geometry_Type) const |
| virtual std::unique_ptr< IntegrationRule > | giveBoundarySurfaceIntegrationRule (int order, int boundary, const Element_Geometry_Type) const |
| virtual std::unique_ptr< IntegrationRule > | giveBoundaryIntegrationRule (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< 2 > &lcoords) |
| static FloatMatrixF< 2, 8 > | evaldNdxi (const FloatArrayF< 2 > &lcoords) |
Additional Inherited Members | |
| Protected Attributes inherited from oofem::FEInterpolation2d | |
| int | xind |
| int | yind |
| Protected Attributes inherited from oofem::FEInterpolation | |
| int | order = 0 |
Class representing a 2d quadrilateral with quadratic interpolation based on isoparametric coordinates. Local Node Numbering (4)–(7)–(3) | | | | (8) (6) | | | | (1)–(5)–(2)
Definition at line 52 of file fei2dquadquad.h.
|
inline |
Definition at line 55 of file fei2dquadquad.h.
References oofem::FEInterpolation2d::FEInterpolation2d().
Referenced by oofem::FEI2dQuadBiQuad::FEI2dQuadBiQuad(), and oofem::FEI2dQuadQuadAxi::FEI2dQuadQuadAxi().
|
overridevirtual |
Implements oofem::FEInterpolation2d.
Definition at line 309 of file fei2dquadquad.C.
Referenced by edgeEvalNormal(), oofem::FEI2dQuadQuadAxi::edgeGiveTransformationJacobian(), edgeLocal2global(), and evalNXIntegral().
|
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 array of derivatives, the member at i position contains value of \( \frac{\mathrm{d}N_i}{\mathrm{d}s} \). |
| iedge | Determines the edge number. |
| lcoords | Array containing (local) coordinates. |
| cellgeo | Underlying cell geometry. |
Implements oofem::FEInterpolation2d.
Definition at line 283 of file fei2dquadquad.C.
References oofem::FloatArray::at(), and oofem::Vec3().
|
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::FEInterpolation2d.
Definition at line 272 of file fei2dquadquad.C.
References oofem::FloatArray::at(), and oofem::Vec3().
Referenced by oofem::FEI2dQuadQuadAxi::edgeGiveTransformationJacobian(), and edgeLocal2global().
|
overridevirtual |
Evaluates the normal on the given edge.
| answer | Contains the evaluated normal. |
| iedge | Determines the edge number. |
| lcoords | Array containing (local) coordinates. |
| cellgeo | Underlying cell geometry. |
Implements oofem::FEInterpolation2d.
Definition at line 325 of file fei2dquadquad.C.
References oofem::FloatArray::at(), computeLocalEdgeMapping(), oofem::FEICellGeometry::giveVertexCoordinates(), oofem::FloatArray::normalize_giveNorm(), oofem::FloatArray::resize(), oofem::FEInterpolation2d::xind, and oofem::FEInterpolation2d::yind.
|
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::FEInterpolation2d.
Definition at line 291 of file fei2dquadquad.C.
References oofem::FloatArray::at(), computeLocalEdgeMapping(), edgeEvalN(), oofem::FEICellGeometry::giveVertexCoordinates(), oofem::FloatArray::resize(), oofem::FEInterpolation2d::xind, and oofem::FEInterpolation2d::yind.
| std::pair< double, FloatMatrixF< 2, 8 > > oofem::FEI2dQuadQuad::evaldNdx | ( | const FloatArrayF< 2 > & | lcoords, |
| const FEICellGeometry & | cellgeo ) const |
Definition at line 182 of file fei2dquadquad.C.
References oofem::FloatArray::at(), oofem::FloatMatrixF< N, M >::at(), oofem::det(), oofem::dot(), evaldNdxi(), oofem::FEICellGeometry::giveVertexCoordinates(), oofem::inv(), oofem::FEInterpolation2d::xind, and oofem::FEInterpolation2d::yind.
Referenced by evaldNdx().
|
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 203 of file fei2dquadquad.C.
References oofem::FloatArray::at(), oofem::FloatMatrix::at(), oofem::FloatMatrix::beProductOf(), evaldNdx(), evaldNdxi(), oofem::FEICellGeometry::getGeometryInterpolation(), oofem::FEInterpolation::giveJacobianMatrixAt(), oofem::FloatMatrix::giveNumberOfRows(), oofem::FEICellGeometry::giveVertexCoordinates(), oofem::inv(), oofem::FEInterpolation2d::xind, and oofem::FEInterpolation2d::yind.
|
static |
Definition at line 124 of file fei2dquadquad.C.
References oofem::FloatArrayF< N >::at().
Referenced by evaldNdx(), and evaldNdx().
|
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 150 of file fei2dquadquad.C.
References oofem::FloatArray::at(), oofem::FloatMatrix::at(), and oofem::FloatMatrix::resize().
|
static |
Definition at line 87 of file fei2dquadquad.C.
Referenced by oofem::FEI2dQuadQuadAxi::giveTransformationJacobian(), 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 105 of file fei2dquadquad.C.
References oofem::FloatArray::at(), 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 348 of file fei2dquadquad.C.
References oofem::FloatArray::at(), computeLocalEdgeMapping(), oofem::FEICellGeometry::giveVertexCoordinates(), oofem::FEInterpolation2d::xind, and oofem::FEInterpolation2d::yind.
|
overridevirtual |
Computes the exact area.
| cellgeo | Cell geometry for the element. |
Reimplemented from oofem::FEInterpolation2d.
Definition at line 45 of file fei2dquadquad.C.
References oofem::FloatArray::at(), oofem::FEICellGeometry::giveVertexCoordinates(), oofem::FEInterpolation2d::xind, and oofem::FEInterpolation2d::yind.
|
inlineoverridevirtual |
Returns boundary integration domain.
Implements oofem::FEInterpolation.
Definition at line 63 of file fei2dquadquad.h.
References oofem::_Line.
|
inlineoverridevirtual |
Returns boundary geometry type
Implements oofem::FEInterpolation.
Definition at line 59 of file fei2dquadquad.h.
|
inlineoverridevirtual |
Returns boundary integration domain.
Implements oofem::FEInterpolation.
Definition at line 61 of file fei2dquadquad.h.
References oofem::_Line.
|
inlineoverridevirtual |
Returns boundary integration domain.
Implements oofem::FEInterpolation.
Definition at line 62 of file fei2dquadquad.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 77 of file fei2dquadquad.h.
|
overridevirtual |
Returns a characteristic length of the geometry, typically a diagonal or edge length.
| cellgeo | Underlying cell geometry. |
Reimplemented from oofem::FEInterpolation2d.
Definition at line 248 of file fei2dquadquad.C.
References oofem::distance(), and oofem::FEICellGeometry::giveVertexCoordinates().
|
inlineoverridevirtual |
Returns the geometry type fo the interpolator.
Implements oofem::FEInterpolation.
Definition at line 58 of file fei2dquadquad.h.
|
inlineoverridevirtual |
Returns the integration domain of the interpolator.
Implements oofem::FEInterpolation.
Definition at line 57 of file fei2dquadquad.h.
References oofem::_Square.
|
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 369 of file fei2dquadquad.C.
References oofem::_Square, and oofem::FEInterpolation::order.
|
inlineoverridevirtual |
Returns the number of geometric nodes of the receiver.
Reimplemented from oofem::FEInterpolation.
Definition at line 76 of file fei2dquadquad.h.
|
overridevirtual |
Reimplemented from oofem::FEInterpolation2d.
Definition at line 255 of file fei2dquadquad.C.
References oofem::FloatArray::at(), and inside().
Referenced by inside().
|
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 234 of file fei2dquadquad.C.
References oofem::FloatArray::at(), evalN(), oofem::FloatArray::giveSize(), oofem::FEICellGeometry::giveVertexCoordinates(), oofem::FloatArray::resize(), oofem::FEInterpolation2d::xind, oofem::FEInterpolation2d::yind, and oofem::FloatArray::zero().