72 bool neumann =
false)
const = 0;
84 bool neumann =
false)
const
104 const Vec3& X0,
size_t nPt,
125 const std::vector<size_t>& elem_sizes,
126 const std::vector<size_t>& basis_sizes,
136 const std::vector<size_t>& elem_sizes,
137 const std::vector<size_t>& basis_sizes,
151 const std::vector<size_t>& elem_sizes,
152 const std::vector<size_t>& basis_sizes,
212 return this->
evalInt(elmInt,fe,X);
241 const Vec3& X,
const Vec3& normal)
const
243 return this->
evalInt(elmInt,fe,X,normal);
257 const Vec3& X,
const Vec3& normal)
const
259 return this->
evalIntMx(elmInt,fe,X,normal);
270 const Vec3& pval) {
return false; }
323 const Vec3& X,
const Vec3& normal)
const
325 return this->
evalBou(elmInt,fe,X,normal);
340 const Vec3& X,
const Vec3& normal)
const
342 return this->
evalBouMx(elmInt,fe,X,normal);
348 const Vec3&)
const {
return false; }
351 const Vec3&)
const {
return false; }
354 const Vec3&,
const Vec3&)
const {
return false; }
357 const Vec3&,
const Vec3&)
const {
return false; }
361 const Vec3&,
const Vec3&)
const {
return false; }
364 const Vec3&,
const Vec3&)
const {
return false; }
382 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:255
virtual bool finalizeElement(LocalIntegral &)
Finalizes the element quantities after the numerical integration.
Definition: Integrand.h:378
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:321
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:209
virtual bool evalInt(LocalIntegral &, const FiniteElement &fe, const Vec3 &, const Vec3 &) const
Evaluates the integrand at interface points, stationary problems.
Definition: Integrand.h:353
virtual bool evalInt(LocalIntegral &, const FiniteElement &fe, const Vec3 &) const
Evaluates the integrand at interior points for stationary problems.
Definition: Integrand.h:347
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:371
virtual bool finalizeElementBou(LocalIntegral &elmInt, const FiniteElement &fe, const TimeDomain &time)
Finalizes the element quantities after boundary integration.
Definition: Integrand.h:305
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:288
virtual bool reducedInt(LocalIntegral &elmInt, const FiniteElement &fe, const Vec3 &X) const
Evaluates reduced integration terms at an interior point.
Definition: Integrand.h:195
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:82
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:224
virtual int getReducedIntegration(int) const
Returns the number of reduced-order integration points.
Definition: Integrand.h:183
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 void setParam(const std::string &, double)
Assigns a parameter value to property functions of the integrand.
Definition: Integrand.h:382
virtual void setParam(const std::string &, const Vec3 &)
Assigns parameter values to property functions of the integrand.
Definition: Integrand.h:384
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:350
virtual bool evalIntMx(LocalIntegral &, const MxFiniteElement &fe, const Vec3 &, const Vec3 &) const
Evaluates the integrand at interface points, stationary problems.
Definition: Integrand.h:356
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:185
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:269
virtual bool evalBouMx(LocalIntegral &, const MxFiniteElement &, const Vec3 &, const Vec3 &) const
Evaluates the integrand at boundary points for stationary problems.
Definition: Integrand.h:363
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:338
virtual bool evalBou(LocalIntegral &, const FiniteElement &, const Vec3 &, const Vec3 &) const
Evaluates the integrand at boundary points for stationary problems.
Definition: Integrand.h:360
virtual int getIntegrandType() const
Defines which FE quantities are needed by the integrand.
Definition: Integrand.h:181
virtual ~Integrand()
Empty destructor.
Definition: Integrand.h:51
virtual void initPatch(size_t)
Define the index of the patch being processed.
Definition: Integrand.h:61
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:239
Traits
Enum defining the additional terms that an Integrand may require.
Definition: Integrand.h:160
@ AVERAGE
Integrand wants basis function averages.
Definition: Integrand.h:165
@ G_MATRIX
Integrand wants the G matrix.
Definition: Integrand.h:168
@ PIOLA_MAPPING
Integrand wants Piola mapping.
Definition: Integrand.h:174
@ THIRD_DERIVATIVES
Integrand wants third derivatives.
Definition: Integrand.h:164
@ XO_ELEMENTS
Integrand uses extraordinary elements.
Definition: Integrand.h:170
@ STANDARD
Default integrand type (first derivatives only)
Definition: Integrand.h:161
@ UPDATED_NODES
Integrand wants updated nodal coordinates.
Definition: Integrand.h:173
@ POINT_DEFORMATION
Integrand wants point-wise deformation.
Definition: Integrand.h:175
@ ELEMENT_CORNERS
Integrand wants element corner coordinates.
Definition: Integrand.h:166
@ NORMAL_DERIVS
Integrand uses p-order normal derivatives.
Definition: Integrand.h:172
@ SECOND_DERIVATIVES
Integrand wants second derivatives.
Definition: Integrand.h:163
@ ELEMENT_CENTER
Integrand wants element center coordinates.
Definition: Integrand.h:167
@ NODAL_ROTATIONS
Integrand wants nodal rotation tensors.
Definition: Integrand.h:169
@ INTERFACE_TERMS
Integrand has element interface terms.
Definition: Integrand.h:171
@ NO_DERIVATIVES
Integrand don't want any derivatives.
Definition: Integrand.h:162
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