OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
oofem::PatchIntegrationRule Class Reference

PatchIntegrationRule provides integration over a triangle patch. More...

#include <patchintegrationrule.h>

+ Inheritance diagram for oofem::PatchIntegrationRule:
+ Collaboration diagram for oofem::PatchIntegrationRule:

Public Member Functions

 PatchIntegrationRule (int n, Element *e, const std::vector< Triangle > &iTriangles)
 Constructor. More...
 
virtual ~PatchIntegrationRule ()
 Destructor. More...
 
virtual const char * giveClassName () const
 
virtual int SetUpPointsOnTriangle (int nPoints, MaterialMode mode)
 Sets up receiver's integration points on triangular (area coords) integration domain. More...
 
virtual int SetUpPointsOnWedge (int nPointsTri, int nPointsDepth, MaterialMode mode)
 Sets up receiver's integration points on a wedge integration domain. More...
 
virtual contextIOResultType saveContext (DataStream &stream, ContextMode mode, void *obj)
 Saves receiver's context to stream. More...
 
virtual contextIOResultType restoreContext (DataStream &stream, ContextMode mode, void *obj)
 Restores receiver's context to stream. More...
 
- Public Member Functions inherited from oofem::GaussIntegrationRule
 GaussIntegrationRule (int n, Element *e, int startIndx, int endIndx, bool dynamic=false)
 Constructor. More...
 
 GaussIntegrationRule (int n, Element *e)
 
virtual ~GaussIntegrationRule ()
 Destructor. More...
 
virtual IntegrationRuleType giveIntegrationRuleType () const
 
virtual IRResultType initializeFrom (InputRecord *ir)
 
virtual int getRequiredNumberOfIntegrationPoints (integrationDomain dType, int approxOrder)
 Abstract service. More...
 
virtual int SetUpPointsOnLine (int nPoints, MaterialMode mode)
 Sets up receiver's integration points on unit line integration domain. More...
 
virtual int SetUpPointsOnSquare (int nPoints, MaterialMode mode)
 Sets up receiver's integration points on unit square integration domain. More...
 
virtual int SetUpPointsOn3dDegShell (int nPointsXY, int nPointsZ, MaterialMode mode)
 Sets up receiver's integration points on shell integration domain. More...
 
virtual int SetUpPointsOn3dDegShellLayers (int nPointsXY, int nPointsZ, MaterialMode mode, const FloatArray &layerThickness)
 Sets up receiver's integration points on shell integration domain wih layers. More...
 
virtual int SetUpPointsOnCubeLayers (int nPoints1, int nPoints2, int nPointsDepth, MaterialMode mode, const FloatArray &layerThickness)
 Sets up receiver's integration points on unit cube integration domain divided into layers in the zeta-direction. More...
 
virtual int SetUpPointsOnCube (int nPoints, MaterialMode mode)
 Sets up receiver's integration points on unit cube integration domain. More...
 
virtual int SetUpPointsOnTetrahedra (int nPoints, MaterialMode mode)
 Sets up receiver's integration points on tetrahedra (volume coords) integration domain. More...
 
virtual int SetUpPointsOnWedgeLayers (int nPointsTri, int nPointsDepth, MaterialMode mode, const FloatArray &layerThickness)
 Sets up receiver's integration points on a wedge integration domain divided into layers in the zeta-direction. More...
 
virtual int SetUpPointsOn2DEmbeddedLine (int nPoints, MaterialMode mode, const FloatArray &coord0, const FloatArray &coord1)
 Sets up integration points on 2D embedded line inside 2D volume (the list of local coordinates should be provided). More...
 
- 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)
 Constructor. More...
 
 IntegrationRule (int n, Element *e)
 Constructor. More...
 
virtual ~IntegrationRule ()
 Destructor. More...
 
int giveNumberOfIntegrationPoints () const
 Returns number of integration points of receiver. More...
 
GaussPointgetIntegrationPoint (int n)
 Access particular integration point of receiver. More...
 
GaussPointfindIntegrationPointClosestTo (const FloatArray &lcoord)
 Scans through the integration points and finds the one closest to the given (local) coordinate. More...
 
int getStartIndexOfLocalStrainWhereApply ()
 Returns starting component index, for which receiver applies. More...
 
int getEndIndexOfLocalStrainWhereApply ()
 Returns last component index, for which receiver applies. More...
 
int setUpIntegrationPoints (integrationDomain intdomain, int nPoints, MaterialMode matMode)
 Initializes the receiver. More...
 
int setUpIntegrationPoints (integrationDomain intdomain, int nPointsXY, int nPointsZ, MaterialMode matMode)
 Initializes the receiver. More...
 
int setUpEmbeddedIntegrationPoints (integrationDomain intdomain, int nPoints, MaterialMode matMode, const std::vector< FloatArray > &coords)
 Initializes the receiver. More...
 
virtual void printOutputAt (FILE *file, TimeStep *tStep)
 Prints receiver's output to given stream. More...
 
void updateYourself (TimeStep *tStep)
 Updates receiver state. More...
 
ElementgiveElement ()
 Returns reference to element containing receiver. More...
 
int giveNumber ()
 Returns receiver number. More...
 
integrationDomain giveIntegrationDomain () const
 Returns the domain for the receiver. More...
 
void clear ()
 Clears the receiver, ie deallocates all integration points. More...
 
virtual const IntArraygiveKnotSpan ()
 Returns receiver sub patch indices (if apply). More...
 
std::string errorInfo (const char *func) const
 Error printing helper. More...
 
int SetUpPoint (MaterialMode mode)
 Trivial implementation, only creates a single point. More...
 

Protected Attributes

std::vector< TrianglemTriangles
 
- Protected Attributes inherited from oofem::IntegrationRule
int number
 Number. More...
 
Elementelem
 Element which integration rule is coupled to. More...
 
integrationDomain intdomain
 Integration domain. More...
 
std::vector< GaussPoint * > gaussPoints
 Array containing integration points. More...
 
int firstLocalStrainIndx
 firstLocalStrainIndx and lastLocalStrainIndx indexes describe range of components (strains for example) for which receiver integration points apply. More...
 
int lastLocalStrainIndx
 
bool isDynamic
 Flag indicating that rule is dynamic, ie, its gauss points (their number, coordinates, weights) can change during computation. More...
 

Static Protected Attributes

static FEI2dTrLin mTriInterp
 
static FEI3dTrQuad mTriInterpQuad
 

Additional Inherited Members

- Static Public Member Functions inherited from oofem::GaussIntegrationRule
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)
 

Detailed Description

PatchIntegrationRule provides integration over a triangle patch.

Input to the constructor is: -int n: number of quadrature points per triangle. -Element *e: parent element pointer -iTriangles: array of triangles describing the subdivision of the element.

Author
Erik Svenning (Major modifications)

Definition at line 55 of file patchintegrationrule.h.

Constructor & Destructor Documentation

oofem::PatchIntegrationRule::PatchIntegrationRule ( int  n,
Element e,
const std::vector< Triangle > &  iTriangles 
)

Constructor.

Definition at line 53 of file patchintegrationrule.C.

oofem::PatchIntegrationRule::~PatchIntegrationRule ( )
virtual

Destructor.

Definition at line 58 of file patchintegrationrule.C.

References mTriInterp, and mTriInterpQuad.

Member Function Documentation

virtual const char* oofem::PatchIntegrationRule::giveClassName ( ) const
inlinevirtual

Reimplemented from oofem::GaussIntegrationRule.

Definition at line 72 of file patchintegrationrule.h.

contextIOResultType oofem::PatchIntegrationRule::restoreContext ( DataStream stream,
ContextMode  mode,
void *  obj 
)
virtual

Restores receiver's context to stream.

Calls restoreContext service for all receiver's integration points. Note: does not call the FEMComponent::restoreContext service, in order not to write class id info for each integration rule.

Parameters
streamInput stream.
modeDetermines amount of info available in stream (state, definition, ...).
objShould be a pointer to invoking element, ie., to which the receiver will belong to.
Exceptions
ContextIOERRIf error encountered.

Reimplemented from oofem::IntegrationRule.

Definition at line 342 of file patchintegrationrule.C.

References oofem::CIO_IOERR, oofem::CIO_OK, oofem::DataStream::read(), oofem::IntegrationRule::restoreContext(), and THROW_CIOERR.

contextIOResultType oofem::PatchIntegrationRule::saveContext ( DataStream stream,
ContextMode  mode,
void *  obj 
)
virtual

Saves receiver's context to stream.

Calls saveContext service for all receiver's integration points. Note: does not call the FEMComponent::saveContext service, in order not to write class id info for each integration rule.

Parameters
streamOutput stream.
modeDetermines amount of info required in stream (state, definition, ...).
objSpecial parameter.
Exceptions
ContextIOERRIf error encountered.

Reimplemented from oofem::IntegrationRule.

Definition at line 308 of file patchintegrationrule.C.

References oofem::CIO_OK, oofem::IntegrationRule::saveContext(), and THROW_CIOERR.

int oofem::PatchIntegrationRule::SetUpPointsOnWedge ( int  nPointsTri,
int  nPointsDepth,
MaterialMode  mode 
)
virtual

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::GaussIntegrationRule.

Definition at line 192 of file patchintegrationrule.C.

References oofem::FloatArray::at(), oofem::Element::computeArea(), oofem::Element::computeGlobalCoordinates(), oofem::Element::computeLocalCoordinates(), oofem::IntegrationRule::elem, oofem::IntegrationRule::firstLocalStrainIndx, oofem::IntegrationRule::gaussPoints, oofem::Triangle::getArea(), oofem::EngngModel::giveCurrentStep(), oofem::FEMComponent::giveDomain(), oofem::Domain::giveEngngModel(), oofem::Element::giveGlobalNumber(), oofem::GaussIntegrationRule::giveLineCoordsAndWeights(), oofem::GaussPoint::giveNaturalCoordinates(), oofem::BasicGeometry::giveNrVertices(), oofem::IntegrationRule::giveNumberOfIntegrationPoints(), oofem::TimeStep::giveTargetTime(), oofem::GaussIntegrationRule::giveTriCoordsAndWeights(), oofem::BasicGeometry::giveVertex(), oofem::XfemManager::giveVtkDebug(), oofem::Domain::giveXfemManager(), oofem::IntegrationRule::lastLocalStrainIndx, oofem::FEI2dTrLin::local2global(), mTriangles, mTriInterp, oofem::GaussPoint::setGlobalCoordinates(), oofem::GaussPoint::setNaturalCoordinates(), oofem::GaussPoint::setSubPatchCoordinates(), and oofem::XFEMDebugTools::WritePointsToVTK().

Member Data Documentation

std :: vector< Triangle > oofem::PatchIntegrationRule::mTriangles
protected

Definition at line 58 of file patchintegrationrule.h.

Referenced by SetUpPointsOnTriangle(), and SetUpPointsOnWedge().

FEI2dTrLin oofem::PatchIntegrationRule::mTriInterp
staticprotected
FEI3dTrQuad oofem::PatchIntegrationRule::mTriInterpQuad
staticprotected

Definition at line 63 of file patchintegrationrule.h.

Referenced by ~PatchIntegrationRule().


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

This page is part of the OOFEM documentation. Copyright (c) 2011 Borek Patzak
Project e-mail: info@oofem.org
Generated at Tue Jan 2 2018 20:07:39 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011