IFEM 90A354
Classes | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
BasisFunctionCache< Dim > Class Template Referenceabstract

Base class for basis function caches. More...

#include <BasisFunctionCache.h>

Collaboration diagram for BasisFunctionCache< Dim >:
Collaboration graph
[legend]

Classes

struct  Quadrature
 Template struct holding information about a quadrature. More...
 

Public Member Functions

 BasisFunctionCache ()
 Default constructor.
 
 BasisFunctionCache (const BasisFunctionCache &rhs)
 Copy-constructor.
 
virtual ~BasisFunctionCache ()=default
 Empty destructor.
 
void clear ()
 Clears the basis function cache.
 
bool init (int nd)
 Initialize the basis function cache according to policy.
 
const BasisFunctionValsgetVals (size_t el, size_t gp, bool reduced=false)
 Obtain basis function values/derivatives in an integration point.
 
void setIntegrand (const Integrand *itg)
 Defines the integrand to be used.
 
const std::array< int, Dim > & nGauss (bool reduced=false)
 Returns number of integration points.
 
const std::array< const double *, Dim > & weight (bool reduced=false) const
 Return integration scheme weights.
 
const std::array< const double *, Dim > & coord (bool reduced=false) const
 Return integration scheme nodes.
 
bool hasReduced () const
 Returns whether or not a reduced quadrature is enabled.
 
virtual double getParam (int dir, size_t el, size_t gp, bool reduced=false) const
 Obtain a single integration point parameter.
 
void resizeThreadBuffers ()
 Called if application changes number of threads.
 

Public Attributes

int basis = 1
 Basis to use.
 

Protected Member Functions

virtual bool internalInit ()=0
 Class-specified initialization.
 
virtual BasisFunctionVals calculatePt (size_t el, size_t gp, bool reduced=false) const =0
 Calculates basis function info in a single integration point.
 
virtual void calculateAll ()=0
 Calculates basis function info in all integration points.
 
virtual size_t index (size_t el, size_t gp, bool reduced) const
 Obtain global integration point index.
 
std::array< size_t, Dim > gpIndex (size_t gp, bool reduced) const
 Obtain structured integration point indices.
 

Protected Attributes

std::vector< BasisFunctionValsvalues
 Cache for main quadrature.
 
std::vector< BasisFunctionValsvaluesRed
 Cache for reduced quadrature.
 
const Integrandintegrand = nullptr
 Integrand to use.
 
int nderiv = 0
 Number of derivatives.
 
std::shared_ptr< QuadraturemainQ
 Main quadrature information.
 
std::shared_ptr< QuadraturereducedQ
 Reduced quadrature information.
 
size_t nTotal = 0
 Total number of main integration points.
 
size_t nTotalRed = 0
 Total number of reduced integration points.
 

Detailed Description

template<size_t Dim>
class BasisFunctionCache< Dim >

Base class for basis function caches.

Constructor & Destructor Documentation

◆ ~BasisFunctionCache()

template<size_t Dim>
virtual BasisFunctionCache< Dim >::~BasisFunctionCache ( )
virtualdefault

Member Function Documentation

◆ calculateAll()

template<size_t Dim>
virtual void BasisFunctionCache< Dim >::calculateAll ( )
protectedpure virtual

◆ calculatePt()

template<size_t Dim>
virtual BasisFunctionVals BasisFunctionCache< Dim >::calculatePt ( size_t  el,
size_t  gp,
bool  reduced = false 
) const
protectedpure virtual

Calculates basis function info in a single integration point.

Parameters
elElement of integration point (0-indexed)
gpIntegratin point on element (0-indexed)
reducedIf true, returns values for reduced integration scheme

Implemented in ASMs2D::BasisFunctionCache, ASMs3D::BasisFunctionCache, ASMu2D::BasisFunctionCache, ASMu3D::BasisFunctionCache, ASMs2DLag::BasisFunctionCache, ASMs2DmxLag::BasisFunctionCache, ASMs3DLag::BasisFunctionCache, and ASMs3DmxLag::BasisFunctionCache.

◆ coord()

template<size_t Dim>
const std::array< const double *, Dim > & BasisFunctionCache< Dim >::coord ( bool  reduced = false) const
inline

◆ getParam()

template<size_t Dim>
double BasisFunctionCache< Dim >::getParam ( int  dir,
size_t  el,
size_t  gp,
bool  reduced = false 
) const
virtual

◆ getVals()

template<size_t Dim>
const BasisFunctionVals & BasisFunctionCache< Dim >::getVals ( size_t  el,
size_t  gp,
bool  reduced = false 
)

Obtain basis function values/derivatives in an integration point.

Parameters
elElement of integration point (0-indexed)
gpIntegratin point on element (0-indexed)
reducedIf true, returns values for reduced integration scheme

References ASM::cachePolicy, and ASM::NO_CACHE.

Referenced by ASMs2DLag::assembleL2matrices(), ASMs3DLag::assembleL2matrices(), ASMs2D::integrate(), ASMs3D::integrate(), ASMs3DLag::integrate(), ASMu2D::integrate(), ASMu3D::integrate(), and ASMs2DLag::integrateElm().

◆ gpIndex()

template<size_t Dim>
std::array< size_t, Dim > BasisFunctionCache< Dim >::gpIndex ( size_t  gp,
bool  reduced 
) const
protected

Obtain structured integration point indices.

Parameters
gpGlobal integration point
reducedIf true, returns values for reduced integration scheme

◆ index()

template<size_t Dim>
size_t BasisFunctionCache< Dim >::index ( size_t  el,
size_t  gp,
bool  reduced 
) const
protectedvirtual

Obtain global integration point index.

Parameters
elElement of integration point (0-indexed)
gpIntegration point on element (0-indexed)
reducedIf true return index for reduced integration scheme

Reimplemented in ASMs2D::BasisFunctionCache, ASMs3D::BasisFunctionCache, ASMs2DLag::BasisFunctionCache, and ASMs3DLag::BasisFunctionCache.

References BasisFunctionCache< Dim >::Quadrature::ng.

◆ init()

template<size_t Dim>
bool BasisFunctionCache< Dim >::init ( int  nd)

◆ internalInit()

template<size_t Dim>
virtual bool BasisFunctionCache< Dim >::internalInit ( )
protectedpure virtual

◆ nGauss()

template<size_t Dim>
const std::array< int, Dim > & BasisFunctionCache< Dim >::nGauss ( bool  reduced = false)
inline

◆ setIntegrand()

template<size_t Dim>
void BasisFunctionCache< Dim >::setIntegrand ( const Integrand itg)
inline

◆ weight()

template<size_t Dim>
const std::array< const double *, Dim > & BasisFunctionCache< Dim >::weight ( bool  reduced = false) const
inline

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