IFEM  90A354
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ForceBase Class Referenceabstract

Base class representing a system level boundary force quantity. More...

#include <IntegrandBase.h>

Inheritance diagram for ForceBase:
Inheritance graph
[legend]
Collaboration diagram for ForceBase:
Collaboration graph
[legend]

Public Member Functions

virtual ~ForceBase ()
 The destructor frees the internally allocated objects.
 
void initBuffer (size_t nel)
 Allocates internal element force buffers.
 
void assemble (RealArray &force) const
 Assembles the global forces.
 
virtual void initIntegration (size_t, size_t)
 Initializes the integrand with the number of integration points.
 
LocalIntegralgetLocalIntegral (size_t, size_t iEl, bool=false) const override
 Returns a local integral container for the element iEl.
 
bool initElement (const std::vector< int > &, LocalIntegral &) override
 Dummy implementation (only boundary integration is relevant).
 
bool initElement (const std::vector< int > &, const FiniteElement &, const Vec3 &, size_t, LocalIntegral &) override
 Dummy implementation (only boundary integration is relevant).
 
bool initElement (const std::vector< int > &, const std::vector< size_t > &, const std::vector< size_t > &, LocalIntegral &) override
 Dummy implementation (only boundary integration is relevant).
 
bool initElement (const std::vector< int > &, const MxFiniteElement &, const std::vector< size_t > &, const std::vector< size_t > &, LocalIntegral &) override
 Dummy implementation (only boundary integration is relevant).
 
bool initElementBou (const std::vector< int > &MNPC, LocalIntegral &elmInt) override
 Initializes current element for boundary integration.
 
bool initElementBou (const std::vector< int > &MNPC, const std::vector< size_t > &elem_sizes, const std::vector< size_t > &basis_sizes, LocalIntegral &elmInt) override
 Initializes current element for boundary integration (mixed).
 
virtual size_t getNoComps () const =0
 Returns the number of force components.
 
virtual bool hasInteriorTerms () const
 Returns whether this integrand has explicit interior contributions.
 
virtual bool hasBoundaryTerms () const
 Returns whether this integrand has explicit boundary contributions.
 
void setParam (const std::string &name, double value) override
 Assigns a parameter value to property functions of the integrand. More...
 
void setParam (const std::string &name, const Vec3 &value) override
 Assigns parameter values to property functions of the integrand. More...
 
SIM::SolutionMode getMode (bool) const override
 Returns current solution mode.
 
virtual LocalIntegralgetLocalIntegral (size_t nen, size_t iEl, bool neumann=false) const=0
 Returns a local integral contribution object for the given element. More...
 
virtual LocalIntegralgetLocalIntegral (const std::vector< size_t > &nen, size_t iEl, bool neumann=false) const
 Returns a local integral contribution object for the given element. More...
 
- Public Member Functions inherited from Integrand
virtual ~Integrand ()
 Empty destructor.
 
virtual void setNeumannOrder (char)
 Defines the Neumann order that is the subject of integration. More...
 
virtual void initPatch (size_t)
 Define the index of the patch being processed.
 
virtual LocalIntegralgetLocalIntegral (const std::vector< size_t > &nen, size_t iEl, bool neumann=false) const
 Returns a local integral contribution object for the given element. More...
 
virtual int getIntegrandType () const
 Defines which FE quantities are needed by the integrand.
 
virtual int getReducedIntegration (int) const
 Returns the number of reduced-order integration points.
 
virtual int getBouIntegrationPoints (int nGP) const
 Returns the number of boundary integration points.
 
virtual bool reducedInt (LocalIntegral &elmInt, const FiniteElement &fe, const Vec3 &X) const
 Evaluates reduced integration terms at an interior point. More...
 
virtual bool evalInt (LocalIntegral &elmInt, const FiniteElement &fe, const TimeDomain &time, const Vec3 &X) const
 Evaluates the integrand at an interior point. More...
 
virtual bool evalIntMx (LocalIntegral &elmInt, const MxFiniteElement &fe, const TimeDomain &time, const Vec3 &X) const
 Evaluates the integrand at an interior point. More...
 
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. More...
 
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. More...
 
virtual bool evalPoint (LocalIntegral &elmInt, const FiniteElement &fe, const Vec3 &pval)
 Evaluates the dirac-delta integrand at a specified point. More...
 
virtual bool finalizeElement (LocalIntegral &elmInt, const FiniteElement &fe, const TimeDomain &time, size_t iGP=0)
 Finalizes the element quantities after the numerical integration. More...
 
virtual bool finalizeElementBou (LocalIntegral &elmInt, const FiniteElement &fe, const TimeDomain &time)
 Finalizes the element quantities after boundary integration. More...
 
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. More...
 
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. More...
 

Protected Member Functions

 ForceBase (IntegrandBase &p)
 The constructor is protected to allow sub-classes only.
 
void clearBuffer ()
 Clears out internal buffers.
 
- Protected Member Functions inherited from Integrand
 Integrand ()
 The default constructor is protected to allow sub-classes only.
 
virtual bool evalInt (LocalIntegral &, const FiniteElement &fe, const Vec3 &) const
 Evaluates the integrand at interior points for stationary problems.
 
virtual bool evalIntMx (LocalIntegral &, const MxFiniteElement &fe, const Vec3 &) const
 Evaluates the integrand at interior points for stationary problems.
 
virtual bool evalInt (LocalIntegral &, const FiniteElement &fe, const Vec3 &, const Vec3 &) const
 Evaluates the integrand at interface points, stationary problems.
 
virtual bool evalIntMx (LocalIntegral &, const MxFiniteElement &fe, const Vec3 &, const Vec3 &) const
 Evaluates the integrand at interface points, stationary problems.
 
virtual bool evalBou (LocalIntegral &, const FiniteElement &, const Vec3 &, const Vec3 &) const
 Evaluates the integrand at boundary points for stationary problems.
 
virtual bool evalBouMx (LocalIntegral &, const MxFiniteElement &, const Vec3 &, const Vec3 &) const
 Evaluates the integrand at boundary points for stationary problems.
 
virtual bool finalizeElement (LocalIntegral &elmInt, const TimeDomain &, size_t)
 Finalizes the element quantities after the numerical integration. More...
 
virtual bool finalizeElement (LocalIntegral &)
 Finalizes the element quantities after the numerical integration. More...
 

Protected Attributes

IntegrandBasemyProblem
 The problem-specific data.
 
LintegralVec eForce
 Local integrals used during force integration.
 
double * eBuffer
 Element force buffer used during integration.
 

Additional Inherited Members

- Public Types inherited from Integrand
enum  Traits {
  STANDARD = 0 , NO_DERIVATIVES = 1 , SECOND_DERIVATIVES = 1<< 1 , THIRD_DERIVATIVES = 1<< 2 ,
  AVERAGE = 1<< 3 , ELEMENT_CORNERS = 1<< 4 , ELEMENT_CENTER = 1<< 5 , G_MATRIX = 1<< 6 ,
  NODAL_ROTATIONS = 1<< 7 , XO_ELEMENTS = 1<< 8 , INTERFACE_TERMS = 1<< 9 , NORMAL_DERIVS = 1<<10 ,
  UPDATED_NODES = 1<<11 , PIOLA_MAPPING = 1<<12 , POINT_DEFORMATION = 1<<13
}
 Enum defining the additional terms that an Integrand may require. More...
 

Detailed Description

Base class representing a system level boundary force quantity.

Member Function Documentation

◆ getLocalIntegral() [1/2]

virtual LocalIntegral* Integrand::getLocalIntegral
inline

Returns a local integral contribution object for the given element.

Parameters
[in]nenNumber of nodes on each basis
[in]iElGlobal element number (1-based)
[in]neumannWhether or not we are assembling Neumann BCs

This form is used for mixed formulations only. The default implementation just forwards to the single-basis version. Reimplement this method if your mixed formulation requires specialized local integral objects.

◆ getLocalIntegral() [2/2]

virtual LocalIntegral* Integrand::getLocalIntegral

Returns a local integral contribution object for the given element.

Parameters
[in]nenNumber of nodes on element
[in]iElGlobal element number (1-based)
[in]neumannWhether or not we are assembling Neumann BCs

◆ setParam() [1/2]

void ForceBase::setParam ( const std::string &  name,
const Vec3 value 
)
inlineoverridevirtual

Assigns parameter values to property functions of the integrand.

Parameters
[in]nameParameter name
[in]valueParameter value

Reimplemented from Integrand.

References myProblem, and Integrand::setParam().

◆ setParam() [2/2]

void ForceBase::setParam ( const std::string &  name,
double  value 
)
inlineoverridevirtual

Assigns a parameter value to property functions of the integrand.

Parameters
[in]nameParameter name
[in]valueParameter value

Reimplemented from Integrand.

References myProblem, and Integrand::setParam().


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