69 bool neumann =
false)
const = 0;
81 bool neumann =
false)
const
101 const Vec3& X0,
size_t nPt,
122 const std::vector<size_t>& elem_sizes,
123 const std::vector<size_t>& basis_sizes,
133 const std::vector<size_t>& elem_sizes,
134 const std::vector<size_t>& basis_sizes,
148 const std::vector<size_t>& elem_sizes,
149 const std::vector<size_t>& basis_sizes,
209 return this->
evalInt(elmInt,fe,X);
238 const Vec3& X,
const Vec3& normal)
const
240 return this->
evalInt(elmInt,fe,X,normal);
254 const Vec3& X,
const Vec3& normal)
const
256 return this->
evalIntMx(elmInt,fe,X,normal);
267 const Vec3& pval) {
return false; }
320 const Vec3& X,
const Vec3& normal)
const
322 return this->
evalBou(elmInt,fe,X,normal);
337 const Vec3& X,
const Vec3& normal)
const
339 return this->
evalBouMx(elmInt,fe,X,normal);
345 const Vec3&)
const {
return false; }
348 const Vec3&)
const {
return false; }
351 const Vec3&,
const Vec3&)
const {
return false; }
354 const Vec3&,
const Vec3&)
const {
return false; }
358 const Vec3&,
const Vec3&)
const {
return false; }
361 const Vec3&,
const Vec3&)
const {
return false; }
379 virtual void setParam(
const std::string&,
double) {}
Class representing a finite element.
Definition FiniteElement.h:29
Abstract base class representing a system level integrated quantity.
Definition Integrand.h:44
virtual bool initElement(const std::vector< int > &MNPC, const MxFiniteElement &fe, const std::vector< size_t > &elem_sizes, const std::vector< size_t > &basis_sizes, LocalIntegral &elmInt)=0
Initializes current element for numerical integration (mixed).
virtual bool evalIntMx(LocalIntegral &elmInt, const MxFiniteElement &fe, const TimeDomain &time, const Vec3 &X, const Vec3 &normal) const
Evaluates the integrand at an element interface point.
Definition Integrand.h:252
virtual bool finalizeElement(LocalIntegral &)
Finalizes the element quantities after the numerical integration.
Definition Integrand.h:375
virtual LocalIntegral * getLocalIntegral(size_t nen, size_t iEl, bool neumann=false) const =0
Returns a local integral contribution object for the given element.
virtual bool evalBou(LocalIntegral &elmInt, const FiniteElement &fe, const TimeDomain &time, const Vec3 &X, const Vec3 &normal) const
Evaluates the integrand at a boundary point.
Definition Integrand.h:318
virtual bool evalInt(LocalIntegral &elmInt, const FiniteElement &fe, const TimeDomain &time, const Vec3 &X) const
Evaluates the integrand at an interior point.
Definition Integrand.h:206
virtual bool evalInt(LocalIntegral &, const FiniteElement &fe, const Vec3 &, const Vec3 &) const
Evaluates the integrand at interface points, stationary problems.
Definition Integrand.h:350
virtual bool evalInt(LocalIntegral &, const FiniteElement &fe, const Vec3 &) const
Evaluates the integrand at interior points for stationary problems.
Definition Integrand.h:344
virtual void setNeumannOrder(char)
Defines the Neumann order that is the subject of integration.
Definition Integrand.h:58
virtual bool finalizeElement(LocalIntegral &elmInt, const TimeDomain &, size_t)
Finalizes the element quantities after the numerical integration.
Definition Integrand.h:368
virtual bool finalizeElementBou(LocalIntegral &elmInt, const FiniteElement &fe, const TimeDomain &time)
Finalizes the element quantities after boundary integration.
Definition Integrand.h:302
virtual bool initElementBou(const std::vector< int > &MNPC, const std::vector< size_t > &elem_sizes, const std::vector< size_t > &basis_sizes, LocalIntegral &elmInt)=0
Initializes current element for boundary integration (mixed).
virtual bool finalizeElement(LocalIntegral &elmInt, const FiniteElement &fe, const TimeDomain &time, size_t iGP=0)
Finalizes the element quantities after the numerical integration.
Definition Integrand.h:285
virtual bool reducedInt(LocalIntegral &elmInt, const FiniteElement &fe, const Vec3 &X) const
Evaluates reduced integration terms at an interior point.
Definition Integrand.h:192
virtual bool evalIntMx(LocalIntegral &elmInt, const MxFiniteElement &fe, const TimeDomain &time, const Vec3 &X) const
Evaluates the integrand at an interior point.
Definition Integrand.h:221
virtual int getReducedIntegration(int) const
Returns the number of reduced-order integration points.
Definition Integrand.h:180
virtual bool initElementBou(const std::vector< int > &MNPC, LocalIntegral &elmInt)=0
Initializes current element for boundary integration.
virtual SIM::SolutionMode getMode(bool=false) const =0
Returns current solution mode.
virtual LocalIntegral * getLocalIntegral(const std::vector< size_t > &nen, size_t iEl, bool neumann=false) const
Returns a local integral contribution object for the given element.
Definition Integrand.h:79
virtual void setParam(const std::string &, double)
Assigns a parameter value to property functions of the integrand.
Definition Integrand.h:379
virtual void setParam(const std::string &, const Vec3 &)
Assigns parameter values to property functions of the integrand.
Definition Integrand.h:381
virtual bool initElement(const std::vector< int > &MNPC, const FiniteElement &fe, const Vec3 &X0, size_t nPt, LocalIntegral &elmInt)=0
Initializes current element for numerical integration.
virtual bool evalIntMx(LocalIntegral &, const MxFiniteElement &fe, const Vec3 &) const
Evaluates the integrand at interior points for stationary problems.
Definition Integrand.h:347
virtual bool evalIntMx(LocalIntegral &, const MxFiniteElement &fe, const Vec3 &, const Vec3 &) const
Evaluates the integrand at interface points, stationary problems.
Definition Integrand.h:353
virtual bool initElement(const std::vector< int > &MNPC, LocalIntegral &elmInt)=0
Initializes current element for numerical integration.
virtual int getBouIntegrationPoints(int nGP) const
Returns the number of boundary integration points.
Definition Integrand.h:182
Integrand()
The default constructor is protected to allow sub-classes only.
Definition Integrand.h:47
virtual bool evalPoint(LocalIntegral &elmInt, const FiniteElement &fe, const Vec3 &pval)
Evaluates the dirac-delta integrand at a specified point.
Definition Integrand.h:266
virtual bool evalBouMx(LocalIntegral &, const MxFiniteElement &, const Vec3 &, const Vec3 &) const
Evaluates the integrand at boundary points for stationary problems.
Definition Integrand.h:360
virtual bool evalBouMx(LocalIntegral &elmInt, const MxFiniteElement &fe, const TimeDomain &time, const Vec3 &X, const Vec3 &normal) const
Evaluates the integrand at a boundary point.
Definition Integrand.h:335
virtual bool evalBou(LocalIntegral &, const FiniteElement &, const Vec3 &, const Vec3 &) const
Evaluates the integrand at boundary points for stationary problems.
Definition Integrand.h:357
virtual int getIntegrandType() const
Defines which FE quantities are needed by the integrand.
Definition Integrand.h:178
virtual ~Integrand()
Empty destructor.
Definition Integrand.h:51
virtual bool evalInt(LocalIntegral &elmInt, const FiniteElement &fe, const TimeDomain &time, const Vec3 &X, const Vec3 &normal) const
Evaluates the integrand at an element interface point.
Definition Integrand.h:236
Traits
Enum defining the additional terms that an Integrand may require.
Definition Integrand.h:157
@ AVERAGE
Integrand wants basis function averages.
Definition Integrand.h:162
@ G_MATRIX
Integrand wants the G matrix.
Definition Integrand.h:165
@ PIOLA_MAPPING
Integrand wants Piola mapping.
Definition Integrand.h:171
@ THIRD_DERIVATIVES
Integrand wants third derivatives.
Definition Integrand.h:161
@ XO_ELEMENTS
Integrand uses extraordinary elements.
Definition Integrand.h:167
@ STANDARD
Default integrand type (first derivatives only)
Definition Integrand.h:158
@ UPDATED_NODES
Integrand wants updated nodal coordinates.
Definition Integrand.h:170
@ POINT_DEFORMATION
Integrand wants point-wise deformation.
Definition Integrand.h:172
@ ELEMENT_CORNERS
Integrand wants element corner coordinates.
Definition Integrand.h:163
@ NORMAL_DERIVS
Integrand uses p-order normal derivatives.
Definition Integrand.h:169
@ SECOND_DERIVATIVES
Integrand wants second derivatives.
Definition Integrand.h:160
@ ELEMENT_CENTER
Integrand wants element center coordinates.
Definition Integrand.h:164
@ NODAL_ROTATIONS
Integrand wants nodal rotation tensors.
Definition Integrand.h:166
@ INTERFACE_TERMS
Integrand has element interface terms.
Definition Integrand.h:168
@ NO_DERIVATIVES
Integrand don't want any derivatives.
Definition Integrand.h:159
virtual bool initElement(const std::vector< int > &MNPC, const std::vector< size_t > &elem_sizes, const std::vector< size_t > &basis_sizes, LocalIntegral &elmInt)=0
Initializes current element for numerical integration (mixed).
Abstract base class representing an element level integrated quantity.
Definition LocalIntegral.h:25
Class representing a mixed finite element.
Definition FiniteElement.h:115
Simple class for representing a point in 3D space.
Definition Vec3.h:27
SolutionMode
Enum defining the various solution modes that may occur.
Definition SIMenums.h:31
Struct representing the time domain.
Definition TimeDomain.h:23