IFEM  90A354
Public Types | Public Attributes | Static Public Attributes | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Attributes | List of all members
ASMmxBase Class Reference

Base class for spline-based mixed finite element assembly drivers. More...

#include <ASMmxBase.h>

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

Public Types

enum  MixedType {
  NONE = 0 , FULL_CONT_RAISE_BASIS1 , REDUCED_CONT_RAISE_BASIS1 , FULL_CONT_RAISE_BASIS2 ,
  REDUCED_CONT_RAISE_BASIS2 , DIV_COMPATIBLE , SUBGRID
}
 Enum defining available mixed formulation types. More...
 

Public Attributes

bool piola = false
 True if last used integrand was Piola mapped.
 

Static Public Attributes

static MixedType Type = ASMmxBase::FULL_CONT_RAISE_BASIS1
 Type of mixed formulation used.
 
static char itgBasis = 2
 1-based index of basis representing the integration elements
 
static bool includeExtra = false
 True to include extra basis (geometry/projection) as FE basis.
 

Protected Types

typedef std::vector< std::shared_ptr< Go::SplineSurface > > SurfaceVec
 Convenience type.
 
typedef std::vector< std::shared_ptr< Go::SplineVolume > > VolumeVec
 Convenience type.
 

Protected Member Functions

 ASMmxBase (const std::vector< unsigned char > &n_f)
 The constructor sets the number of field variables. More...
 
void initMx (const std::vector< int > &MLGN, const int *sysMadof)
 Initializes the patch level MADOF array. More...
 
void extractNodeVecMx (const RealArray &glbVec, RealArray &nodVec, int basis) const
 Extracts nodal results for this patch from the global vector. More...
 
void injectNodeVecMx (RealArray &glbVec, const RealArray &nodVec, int basis) const
 Injects nodal results for this patch into a global vector. More...
 
bool getSolutionMx (Matrix &sField, const Vector &locSol, const std::vector< int > &nodes) const
 Extracts the primary solution field at the specified nodes. More...
 

Static Protected Member Functions

static SurfaceVec establishBases (Go::SplineSurface *surf, MixedType type)
 Establish mixed bases in 2D. More...
 
static VolumeVec establishBases (Go::SplineVolume *svol, MixedType type)
 Establish mixed bases in 3D. More...
 
static Go::SplineSurface * adjustBasis (const Go::SplineSurface &surf, const std::array< SplineUtils::AdjustOp, 2 > &ops)
 Returns a C^p-1 basis of one degree higher than *surf.
 
static Go::SplineVolume * adjustBasis (const Go::SplineVolume &svol, const std::array< SplineUtils::AdjustOp, 3 > &ops)
 Returns a C^p-1 basis of one degree higher than *svol.
 

Protected Attributes

std::vector< size_t > elem_size
 Number of basis functions per element in each basis.
 
std::vector< size_t > nb
 Total number of basis functions in each basis.
 
std::vector< unsigned char > nfx
 Number of fields on each basis.
 

Private Attributes

std::vector< int > MADOF
 Matrix of accumulated DOFs for this patch.
 

Detailed Description

Base class for spline-based mixed finite element assembly drivers.

Member Enumeration Documentation

◆ MixedType

Enum defining available mixed formulation types.

Enumerator
NONE 

No Mixed formulation.

FULL_CONT_RAISE_BASIS1 

Full continuity, raise order and use as basis 1.

REDUCED_CONT_RAISE_BASIS1 

Reduced continuity, raise order and use as basis 1.

FULL_CONT_RAISE_BASIS2 

Full continuity, raise order and use as basis 2.

REDUCED_CONT_RAISE_BASIS2 

Reduced continuity, raise order and use as basis 2.

DIV_COMPATIBLE 

Div-compatible space for incompressible problems.

SUBGRID 

Sub-grid spaces.

Constructor & Destructor Documentation

◆ ASMmxBase()

ASMmxBase::ASMmxBase ( const std::vector< unsigned char > &  n_f)
inlineexplicitprotected

The constructor sets the number of field variables.

Parameters
[in]n_fNumber of nodal variables in each field

Member Function Documentation

◆ establishBases() [1/2]

ASMmxBase::SurfaceVec ASMmxBase::establishBases ( Go::SplineSurface *  surf,
MixedType  type 
)
staticprotected

◆ establishBases() [2/2]

ASMmxBase::VolumeVec ASMmxBase::establishBases ( Go::SplineVolume *  svol,
MixedType  type 
)
staticprotected

Establish mixed bases in 3D.

Parameters
[in]svolThe base basis to use
[in]typeThe type of bases to establish
Returns
Vector with bases

References adjustBasis(), DIV_COMPATIBLE, FULL_CONT_RAISE_BASIS1, FULL_CONT_RAISE_BASIS2, itgBasis, SplineUtils::Lower, SplineUtils::Original, SplineUtils::Raise, REDUCED_CONT_RAISE_BASIS1, REDUCED_CONT_RAISE_BASIS2, SUBGRID, and Type.

◆ extractNodeVecMx()

void ASMmxBase::extractNodeVecMx ( const RealArray glbVec,
RealArray nodVec,
int  basis 
) const
protected

Extracts nodal results for this patch from the global vector.

Parameters
[in]glbVecGlobal solution vector in DOF-order
[out]nodVecNodal result vector for this patch
[in]basisWhich basis to extract the nodal values for

References MADOF, nb, and nfx.

Referenced by ASMs2Dmx::extractNodeVec(), ASMs2DmxLag::extractNodeVec(), ASMs3Dmx::extractNodeVec(), ASMs3DmxLag::extractNodeVec(), ASMu2Dmx::extractNodeVec(), and ASMu3Dmx::extractNodeVec().

◆ getSolutionMx()

bool ASMmxBase::getSolutionMx ( Matrix sField,
const Vector locSol,
const std::vector< int > &  nodes 
) const
protected

Extracts the primary solution field at the specified nodes.

Parameters
[out]sFieldSolution field
[in]locSolSolution vector local to current patch
[in]nodes1-based local node numbers to extract solution for

References nb, nfx, and utl::matrix< T >::resize().

Referenced by ASMs2Dmx::getSolution(), ASMs2DmxLag::getSolution(), ASMs3Dmx::getSolution(), ASMs3DmxLag::getSolution(), ASMu2Dmx::getSolution(), and ASMu3Dmx::getSolution().

◆ initMx()

void ASMmxBase::initMx ( const std::vector< int > &  MLGN,
const int *  sysMadof 
)
protected

Initializes the patch level MADOF array.

Parameters
[in]MLGNMatrix of local-to-global node numbers
[out]sysMadofSystem-level matrix of accumulated DOFs

References MADOF.

Referenced by ASMs2Dmx::initMADOF(), ASMs2DmxLag::initMADOF(), ASMs3Dmx::initMADOF(), ASMs3DmxLag::initMADOF(), ASMu2Dmx::initMADOF(), and ASMu3Dmx::initMADOF().

◆ injectNodeVecMx()

void ASMmxBase::injectNodeVecMx ( RealArray glbVec,
const RealArray nodVec,
int  basis 
) const
protected

Injects nodal results for this patch into a global vector.

Parameters
[out]glbVecGlobal solution vector in DOF-order
[in]nodVecNodal result vector for this patch
[in]basisWhich basis to inject the nodal values for

References MADOF, nb, and nfx.

Referenced by ASMs2Dmx::injectNodeVec(), ASMs3Dmx::injectNodeVec(), ASMu2Dmx::injectNodeVec(), and ASMu3Dmx::injectNodeVec().


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