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. More...
 
const BasisFunctionValsgetVals (size_t el, size_t gp, bool reduced=false)
 Obtain basis function values/derivatives in an integration point. More...
 
void setIntegrand (const Integrand *itg)
 Defines the integrand to be used. More...
 
const std::array< int, Dim > & nGauss (bool reduced=false)
 Returns number of integration points. More...
 
const std::array< const double *, Dim > & weight (bool reduced=false) const
 Return integration scheme weights. More...
 
const std::array< const double *, Dim > & coord (bool reduced=false) const
 Return integration scheme nodes. More...
 
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. More...
 
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. More...
 
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. More...
 
std::array< size_t, Dim > gpIndex (size_t gp, bool reduced) const
 Obtain structured integration point indices. More...
 

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.

Member Function Documentation

◆ 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 ASMs3DmxLag::BasisFunctionCache, ASMs3DLag::BasisFunctionCache, ASMs2DmxLag::BasisFunctionCache, ASMs2DLag::BasisFunctionCache, ASMu3D::BasisFunctionCache, ASMu2D::BasisFunctionCache, ASMs3D::BasisFunctionCache, and ASMs2D::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

Obtain a single integration point parameter.

Parameters
dirDirection of for integration point
elElement number in given direction
gpIntegration point in given direction
reducedTrue to return parameter for reduced quadrature

Reimplemented in ASMu2DLag::BasisFunctionCache, ASMs3DLag::BasisFunctionCache, and ASMs2DLag::BasisFunctionCache.

References BasisFunctionCache< Dim >::Quadrature::gpar, and BasisFunctionCache< Dim >::Quadrature::ng.

Referenced by ASMs2DLag::assembleL2matrices(), ASMs2D::integrate(), ASMs2Dmx::integrate(), ASMs2DmxLag::integrate(), ASMs3D::integrate(), ASMs3DLag::integrate(), ASMs3Dmx::integrate(), ASMs3DmxLag::integrate(), ASMu2D::integrate(), ASMu2Dmx::integrate(), ASMu3D::integrate(), ASMu3Dmx::integrate(), and ASMs2DLag::integrateElm().

◆ 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 ASMs3DLag::BasisFunctionCache, ASMs2DLag::BasisFunctionCache, ASMs3D::BasisFunctionCache, and ASMs2D::BasisFunctionCache.

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

◆ init()

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

◆ 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: