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

#include <gaussintegrationrule.h>

Inheritance diagram for oofem::GaussIntegrationRule:
Collaboration diagram for oofem::GaussIntegrationRule:

Public Member Functions

 GaussIntegrationRule (int n, Element *e, int startIndx, int endIndx, bool dynamic=false)
 GaussIntegrationRule (int n, Element *e)
virtual ~GaussIntegrationRule ()
 Destructor.
const char * giveClassName () const override
IntegrationRuleType giveIntegrationRuleType () const override
void initializeFrom (InputRecord &ir) override
int getRequiredNumberOfIntegrationPoints (integrationDomain dType, int approxOrder) override
int SetUpPointsOnLine (int nPoints, MaterialMode mode) override
int SetUpPointsOnTriangle (int nPoints, MaterialMode mode) override
int SetUpPointsOnSquare (int nPoints, MaterialMode mode) override
int SetUpPointsOn3dDegShell (int nPointsXY, int nPointsZ, MaterialMode mode) override
int SetUpPointsOn3dDegShellLayers (int nPointsXY, int nPointsZ, MaterialMode mode, const FloatArray &layerThickness) override
int SetUpPointsOnCubeLayers (int nPoints1, int nPoints2, int nPointsDepth, MaterialMode mode, const FloatArray &layerThickness) override
int SetUpPointsOnCube (int nPoints, MaterialMode mode) override
int SetUpPointsOnTetrahedra (int nPoints, MaterialMode mode) override
int SetUpPointsOnWedge (int nPointsTri, int nPointsDepth, MaterialMode mode) override
int SetUpPointsOnWedgeLayers (int nPointsTri, int nPointsDepth, MaterialMode mode, const FloatArray &layerThickness) override
int SetUpPointsOn2DEmbeddedLine (int nPoints, MaterialMode mode, const FloatArray &coord0, const FloatArray &coord1) override
Public Member Functions inherited from oofem::IntegrationRule
std::vector< GaussPoint * >::iterator begin ()
std::vector< GaussPoint * >::iterator end ()
 IntegrationRule (int n, Element *e, int startIndx, int endIndx, bool dynamic)
 IntegrationRule (int n, Element *e)
virtual ~IntegrationRule ()
 Destructor.
int giveNumberOfIntegrationPoints () const
GaussPointgetIntegrationPoint (int n)
GaussPointfindIntegrationPointClosestTo (const FloatArray &lcoord)
int getStartIndexOfLocalStrainWhereApply ()
int getEndIndexOfLocalStrainWhereApply ()
int setUpIntegrationPoints (integrationDomain intdomain, int nPoints, MaterialMode matMode)
int setUpIntegrationPoints (integrationDomain intdomain, int nPointsXY, int nPointsZ, MaterialMode matMode)
int setUpEmbeddedIntegrationPoints (integrationDomain intdomain, int nPoints, MaterialMode matMode, const std ::vector< FloatArray > &coords)
virtual void printOutputAt (FILE *file, TimeStep *tStep)
void updateYourself (TimeStep *tStep)
ElementgiveElement ()
void setElement (Element *e)
int giveNumber ()
integrationDomain giveIntegrationDomain () const
virtual void saveContext (DataStream &stream, ContextMode mode)
virtual void restoreContext (DataStream &stream, ContextMode mode)
void clear ()
virtual const IntArraygiveKnotSpan ()
 Returns receiver sub patch indices (if apply).
std::string errorInfo (const char *func) const
 Error printing helper.
int SetUpPoint (MaterialMode mode)

Static Public Member Functions

static void giveTetCoordsAndWeights (int nPoints, FloatArray &coords_xi1, FloatArray &coords_xi2, FloatArray &coords_xi3, FloatArray &weights)
static void giveTriCoordsAndWeights (int nPoints, FloatArray &coords_xi1, FloatArray &coords_xi2, FloatArray &weights)
static void giveLineCoordsAndWeights (int nPoints, FloatArray &coords_xi, FloatArray &weights)

Additional Inherited Members

Protected Attributes inherited from oofem::IntegrationRule
int number
 Number.
Elementelem
 Element which integration rule is coupled to.
integrationDomain intdomain
 Integration domain.
std::vector< GaussPoint * > gaussPoints
 Array containing integration points.
int firstLocalStrainIndx
int lastLocalStrainIndx
bool isDynamic

Detailed Description

Class representing Gaussian-quadrature integration rule. The number of integration points and their coordinates and integration weights depends on integration rule type (rule for integration in 1d, 2d, 3d) and required accuracy. The positions and weights are determined by the minimum required of points to integrate a polynomial exactly (while the points are strictly within the domain)

Tasks:

  • Returning number of integration points used
  • Returning requested integration point
  • Updating itself
  • Saving and restoring context
See also
GaussPoint

Definition at line 59 of file gaussintegrationrule.h.

Constructor & Destructor Documentation

◆ GaussIntegrationRule() [1/2]

oofem::GaussIntegrationRule::GaussIntegrationRule ( int n,
Element * e,
int startIndx,
int endIndx,
bool dynamic = false )

Constructor.

Parameters
nNumber associated with receiver.
eElement associated with receiver.
startIndxFirst component, for which rule applies.
endIndxLast component, for which rule applies.
dynamicFlag indicating that receiver can change.

Definition at line 44 of file gaussintegrationrule.C.

References oofem::IntegrationRule::IntegrationRule().

Referenced by oofem::DiscontinuousSegmentIntegrationRule::DiscontinuousSegmentIntegrationRule(), oofem::IGAIntegrationElement::IGAIntegrationElement(), and oofem::PatchIntegrationRule::PatchIntegrationRule().

◆ GaussIntegrationRule() [2/2]

oofem::GaussIntegrationRule::GaussIntegrationRule ( int n,
Element * e )

Definition at line 48 of file gaussintegrationrule.C.

References oofem::IntegrationRule::IntegrationRule().

◆ ~GaussIntegrationRule()

oofem::GaussIntegrationRule::~GaussIntegrationRule ( )
virtual

Destructor.

Definition at line 51 of file gaussintegrationrule.C.

Member Function Documentation

◆ getRequiredNumberOfIntegrationPoints()

int oofem::GaussIntegrationRule::getRequiredNumberOfIntegrationPoints ( integrationDomain dType,
int approxOrder )
overridevirtual

Abstract service. Returns required number of integration points to exactly integrate polynomial of order approxOrder on given domain. When approxOrder is too large and is not supported by implementation method returns -1. Must be overloaded by derived classes.

Todo
Assuming same approximation order for triangle as line. Not totally sure about these /JB

Reimplemented from oofem::IntegrationRule.

Definition at line 339 of file gaussintegrationrule.C.

References oofem::_Cube, oofem::_Line, oofem::_Square, oofem::_Tetrahedra, oofem::_Triangle, oofem::_Wedge, oofem::max(), and OOFEM_ERROR.

Referenced by oofem::MPMSymbolicTerm::giveElementIntegrationRule(), and oofem::MPMSymbolicTerm::initializeCell().

◆ giveClassName()

const char * oofem::GaussIntegrationRule::giveClassName ( ) const
inlineoverridevirtual

Reimplemented from oofem::IntegrationRule.

Reimplemented in oofem::PatchIntegrationRule.

Definition at line 75 of file gaussintegrationrule.h.

◆ giveIntegrationRuleType()

IntegrationRuleType oofem::GaussIntegrationRule::giveIntegrationRuleType ( ) const
inlineoverridevirtual

Reimplemented from oofem::IntegrationRule.

Definition at line 76 of file gaussintegrationrule.h.

References oofem::IRT_Gauss.

◆ giveLineCoordsAndWeights()

◆ giveTetCoordsAndWeights()

void oofem::GaussIntegrationRule::giveTetCoordsAndWeights ( int nPoints,
FloatArray & coords_xi1,
FloatArray & coords_xi2,
FloatArray & coords_xi3,
FloatArray & weights )
static

Definition at line 492 of file gaussintegrationrule.C.

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

Referenced by SetUpPointsOnTetrahedra().

◆ giveTriCoordsAndWeights()

◆ initializeFrom()

void oofem::GaussIntegrationRule::initializeFrom ( InputRecord & ir)
inlineoverridevirtual

Reimplemented from oofem::IntegrationRule.

Definition at line 77 of file gaussintegrationrule.h.

◆ SetUpPointsOn2DEmbeddedLine()

int oofem::GaussIntegrationRule::SetUpPointsOn2DEmbeddedLine ( int nPoints,
MaterialMode mode,
const FloatArray & coord0,
const FloatArray & coord1 )
overridevirtual

Sets up integration points on 2D embedded line inside 2D volume (the list of local coordinates should be provided).

Parameters
nPointsNumber of points along line.

Reimplemented from oofem::IntegrationRule.

Definition at line 72 of file gaussintegrationrule.C.

References oofem::_Embedded2dLine, oofem::FloatArray::at(), oofem::IntegrationRule::gaussPoints, oofem::IntegrationRule::giveElement(), giveLineCoordsAndWeights(), oofem::IntegrationRule::giveNumberOfIntegrationPoints(), oofem::IntegrationRule::intdomain, oofem::Vec1(), and oofem::Vec2().

◆ SetUpPointsOn3dDegShell()

int oofem::GaussIntegrationRule::SetUpPointsOn3dDegShell ( int nPointsXY,
int nPointsZ,
MaterialMode mode )
overridevirtual

Sets up receiver's integration points on shell integration domain. Default implementation does not sets up any integration points and returns 0. Must be overloaded by derived classes.

Parameters
nPointsXYNumber of integration points in the "xi-eta"-plane.
nPointsZNumber of integration points in the "zeta"-direction
Returns
Number of integration points.

Reimplemented from oofem::IntegrationRule.

Definition at line 125 of file gaussintegrationrule.C.

References oofem::_3dDegShell, oofem::FloatArray::at(), oofem::IntegrationRule::gaussPoints, giveLineCoordsAndWeights(), oofem::IntegrationRule::giveNumberOfIntegrationPoints(), oofem::IntegrationRule::intdomain, and oofem::Vec3().

◆ SetUpPointsOn3dDegShellLayers()

int oofem::GaussIntegrationRule::SetUpPointsOn3dDegShellLayers ( int nPointsXY,
int nPointsZ,
MaterialMode mode,
const FloatArray & layerThickness )
overridevirtual

Sets up receiver's integration points on shell integration domain wih layers. Default implementation does not sets up any integration points and returns 0. Must be overloaded by derived classes.

Parameters
nPointsXYNumber of integration points in the "xi-eta"-plane.
nPointsZNumber of integration points in the "zeta"-direction
layerThicknessArray of thicknesses of individual layers
Returns
Number of integration points.

Reimplemented from oofem::IntegrationRule.

Definition at line 153 of file gaussintegrationrule.C.

References oofem::_3dDegShell, oofem::FloatArray::at(), oofem::IntegrationRule::gaussPoints, giveLineCoordsAndWeights(), oofem::IntegrationRule::giveNumberOfIntegrationPoints(), oofem::FloatArray::giveSize(), oofem::IntegrationRule::intdomain, oofem::FloatArray::sum(), and oofem::Vec3().

◆ SetUpPointsOnCube()

int oofem::GaussIntegrationRule::SetUpPointsOnCube ( int ,
MaterialMode mode )
overridevirtual

Sets up receiver's integration points on unit cube integration domain. Default implementation does not sets up any integration points and returns 0. Must be overloaded by derived classes.

Returns
Number of integration points.

Reimplemented from oofem::IntegrationRule.

Definition at line 190 of file gaussintegrationrule.C.

References oofem::_Cube, oofem::FloatArray::at(), oofem::cbrt(), oofem::IntegrationRule::gaussPoints, giveLineCoordsAndWeights(), oofem::IntegrationRule::giveNumberOfIntegrationPoints(), oofem::IntegrationRule::intdomain, and oofem::Vec3().

◆ SetUpPointsOnCubeLayers()

int oofem::GaussIntegrationRule::SetUpPointsOnCubeLayers ( int nPoints1,
int nPoints2,
int nPointsDepth,
MaterialMode mode,
const FloatArray & layerThickness )
overridevirtual

Sets up receiver's integration points on unit cube integration domain divided into layers in the zeta-direction. Default implementation does not sets up any integration points and returns 0. Must be overloaded by derived classes.

Parameters
nPoints1Number of integration points in the "xi"-direction.
nPoints2Number of integration points in the "eta"-direction.
nPointsDepthNumber of integration points in the "zeta"-direction
layerThicknessArray of thicknesses of individual layers
Returns
Number of integration points.

Reimplemented from oofem::IntegrationRule.

Definition at line 217 of file gaussintegrationrule.C.

References oofem::_Cube, oofem::FloatArray::at(), oofem::IntegrationRule::gaussPoints, giveLineCoordsAndWeights(), oofem::IntegrationRule::giveNumberOfIntegrationPoints(), oofem::FloatArray::giveSize(), oofem::IntegrationRule::intdomain, oofem::FloatArray::sum(), and oofem::Vec3().

◆ SetUpPointsOnLine()

int oofem::GaussIntegrationRule::SetUpPointsOnLine ( int ,
MaterialMode mode )
overridevirtual

◆ SetUpPointsOnSquare()

int oofem::GaussIntegrationRule::SetUpPointsOnSquare ( int ,
MaterialMode mode )
overridevirtual

Sets up receiver's integration points on unit square integration domain. Default implementation does not sets up any integration points and returns 0. Must be overloaded by derived classes.

Returns
Number of integration points.

Reimplemented from oofem::IntegrationRule.

Definition at line 102 of file gaussintegrationrule.C.

References oofem::_Square, oofem::FloatArray::at(), oofem::IntegrationRule::gaussPoints, giveLineCoordsAndWeights(), oofem::IntegrationRule::giveNumberOfIntegrationPoints(), oofem::IntegrationRule::intdomain, and oofem::Vec2().

◆ SetUpPointsOnTetrahedra()

int oofem::GaussIntegrationRule::SetUpPointsOnTetrahedra ( int ,
MaterialMode mode )
overridevirtual

Sets up receiver's integration points on tetrahedra (volume coords) integration domain. Default implementation does not sets up any integration points and returns 0. Must be overloaded by derived classes.

Returns
Number of integration points.

Reimplemented from oofem::IntegrationRule.

Definition at line 269 of file gaussintegrationrule.C.

References oofem::_Tetrahedra, oofem::FloatArray::at(), oofem::IntegrationRule::gaussPoints, oofem::IntegrationRule::giveNumberOfIntegrationPoints(), giveTetCoordsAndWeights(), oofem::IntegrationRule::intdomain, and oofem::Vec3().

◆ SetUpPointsOnTriangle()

◆ SetUpPointsOnWedge()

int oofem::GaussIntegrationRule::SetUpPointsOnWedge ( int nPointsTri,
int nPointsDepth,
MaterialMode mode )
overridevirtual

Sets up receiver's integration points on a wedge integration domain. Default implementation does not sets up any integration points and returns 0. Must be overloaded by derived classes.

Parameters
nPointsTriNumber of points over the triangle cross-section.
nPointsDepthNumber of points over the depth.
Returns
Number of integration points.

Reimplemented from oofem::IntegrationRule.

Reimplemented in oofem::PatchIntegrationRule.

Definition at line 286 of file gaussintegrationrule.C.

References oofem::_Wedge, oofem::FloatArray::at(), oofem::IntegrationRule::gaussPoints, giveLineCoordsAndWeights(), oofem::IntegrationRule::giveNumberOfIntegrationPoints(), giveTriCoordsAndWeights(), oofem::IntegrationRule::intdomain, and oofem::Vec3().

Referenced by oofem::Shell7Base::computeConvectiveMassForce(), oofem::Shell7Base::computeMassMatrix(), and oofem::Shell7Base::computePressureTangentMatrix().

◆ SetUpPointsOnWedgeLayers()

int oofem::GaussIntegrationRule::SetUpPointsOnWedgeLayers ( int nPointsTri,
int nPointsDepth,
MaterialMode mode,
const FloatArray & layerThickness )
overridevirtual

Sets up receiver's integration points on a wedge integration domain divided into layers in the zeta-direction. Default implementation does not sets up any integration points and returns 0. Must be overloaded by derived classes.

Parameters
nPointsTriNumber of points over the triangle cross-section.
nPointsDepthNumber of points over the depth.
layerThicknessArray of thicknesses of individual layers
Returns
Number of integration points.

Reimplemented from oofem::IntegrationRule.

Definition at line 307 of file gaussintegrationrule.C.

References oofem::_Wedge, oofem::FloatArray::at(), oofem::IntegrationRule::gaussPoints, giveLineCoordsAndWeights(), oofem::IntegrationRule::giveNumberOfIntegrationPoints(), oofem::FloatArray::giveSize(), giveTriCoordsAndWeights(), oofem::IntegrationRule::intdomain, oofem::FloatArray::sum(), and oofem::Vec3().


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