|
IFEM
90A354
|
Base class for spline-based mixed finite element assembly drivers. More...
#include <ASMmxBase.h>


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. | |
Base class for spline-based mixed finite element assembly drivers.
| enum ASMmxBase::MixedType |
Enum defining available mixed formulation types.
|
inlineexplicitprotected |
The constructor sets the number of field variables.
| [in] | n_f | Number of nodal variables in each field |
|
staticprotected |
Establish mixed bases in 2D.
| [in] | surf | The base basis to use |
| [in] | type | The type of bases to establish |
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.
Referenced by ASMs2Dmx::generateFEMTopology(), ASMs3Dmx::generateFEMTopology(), ASMu2Dmx::generateFEMTopology(), and ASMu3Dmx::generateFEMTopology().
|
staticprotected |
Establish mixed bases in 3D.
| [in] | svol | The base basis to use |
| [in] | type | The type of bases to establish |
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.
|
protected |
Extracts nodal results for this patch from the global vector.
| [in] | glbVec | Global solution vector in DOF-order |
| [out] | nodVec | Nodal result vector for this patch |
| [in] | basis | Which 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().
|
protected |
Extracts the primary solution field at the specified nodes.
| [out] | sField | Solution field |
| [in] | locSol | Solution vector local to current patch |
| [in] | nodes | 1-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().
|
protected |
Initializes the patch level MADOF array.
| [in] | MLGN | Matrix of local-to-global node numbers |
| [out] | sysMadof | System-level matrix of accumulated DOFs |
References MADOF.
Referenced by ASMs2Dmx::initMADOF(), ASMs2DmxLag::initMADOF(), ASMs3Dmx::initMADOF(), ASMs3DmxLag::initMADOF(), ASMu2Dmx::initMADOF(), and ASMu3Dmx::initMADOF().
|
protected |
Injects nodal results for this patch into a global vector.
| [out] | glbVec | Global solution vector in DOF-order |
| [in] | nodVec | Nodal result vector for this patch |
| [in] | basis | Which basis to inject the nodal values for |
References MADOF, nb, and nfx.
Referenced by ASMs2Dmx::injectNodeVec(), ASMs3Dmx::injectNodeVec(), ASMu2Dmx::injectNodeVec(), and ASMu3Dmx::injectNodeVec().