MoReFEM
Loading...
Searching...
No Matches
Namespaces | Data Structures | Typedefs | Enumerations | Functions
MoReFEM::GlobalVariationalOperatorNS Namespace Reference

Namespace that enclose global variational operator instances (and few helper functions). More...

Namespaces

namespace  SecondPiolaKirchhoffStressTensorNS
 Placeholder namespace description needed for it to appear in Doxygen namespace list.
 
namespace  TyingPointsNS
 Placeholder namespace description needed for it to appear in Doxygen namespace list.
 

Data Structures

class  Ale
 Operator description. More...
 
class  Bidomain
 Operator description. More...
 
class  DifferentCauchyGreenMixedSolidIncompressibility
 DifferentCauchyGreenMixedSolidIncompressibility description. More...
 
class  FollowingPressure
 FollowingPressure operator. More...
 
class  GradOnGradientBasedElasticityTensor
 Instantiation of the Operator related to elastic matrix. More...
 
class  GradPhiGradPhi
 Implementation of global grad-grad operator. More...
 
class  GradPhiTauOrthoTauGradPhi
 Operator description. More...
 
class  GradPhiTauTauGradPhi
 Operator description. More...
 
class  Mass
 Implementation of global mass operator. More...
 
class  NonlinearMembrane
 Operator description. More...
 
class  NonlinearShell
 NonLinearShell operator. More...
 
class  NonLinearSource
 Implementation of a non-linear source f(u,w), u the solution of the EDP and w a parameter. f is the reaction law. w depends of a reaction law dw/dt = g(u,w), g is the gate law. u is the potential and w is the gate. More...
 
class  QuasiIncompressibleSecondPiolaKirchhoffStressTensor
 Quasi-incompressible second Piola-Kirchhoff stress tensor operator. More...
 
class  SameCauchyGreenMixedSolidIncompressibility
 SameCauchyGreenMixedSolidIncompressibility description. More...
 
class  ScalarDivVectorial
 Implementation of global Stokes operator. More...
 
class  SecondPiolaKirchhoffStressTensor
 Instantiation of the SecondPiolaKirchhoffStressTensor related to hyperelastic matrix. More...
 
class  Stokes
 Operator description. More...
 
class  SurfacicBidomain
 Operator description. More...
 
class  TransientSource
 Implementation of global TransientSource operator. More...
 
class  VariableMass
 Implementation of global mass operator for poromechanics. More...
 

Typedefs

template<class DerivedT , Advanced::OperatorNS::Nature NatureT, class LocalVariationalOperatorT >
using SameForAllRefGeomElt
 Most common base class for a GlobalVariationalOperator.
 
template<class DerivedT , Advanced::OperatorNS::Nature NatureT, class LocalVariationalOperatorTupleT >
using DependsOnRefGeomElt
 Advanced base class for a GlobalVariationalOperator, when a specific implementation is required for each RefGeomElt.
 

Enumerations

enum class  elementary_mode { full = 0 , just_init = 1 }
 Convenient alias to perform only part of the elementary computation.
 

Functions

void ExtractLocalDofValues (const LocalFEltSpace &local_felt_space, const ExtendedUnknown &unknown, const GlobalVector &vector, std::vector< double > &result)
 Extract from a global vector the values required at a local level.
 

Detailed Description

Namespace that enclose global variational operator instances (and few helper functions).

Typedef Documentation

◆ SameForAllRefGeomElt

template<class DerivedT , Advanced::OperatorNS::Nature NatureT, class LocalVariationalOperatorT >
using MoReFEM::GlobalVariationalOperatorNS::SameForAllRefGeomElt
Initial value:
Advanced::GlobalVariationalOperatorNS::GlobalVariationalOperator
<
DerivedT,
NatureT,
std::tuple
<
MOREFEM_GVO_LOCAL_TUPLE_ITEM_SAME(Advanced::GeometricEltEnum::Point1),
MOREFEM_GVO_LOCAL_TUPLE_ITEM_SAME(Advanced::GeometricEltEnum::Segment2),
MOREFEM_GVO_LOCAL_TUPLE_ITEM_SAME(Advanced::GeometricEltEnum::Segment3),
MOREFEM_GVO_LOCAL_TUPLE_ITEM_SAME(Advanced::GeometricEltEnum::Triangle3),
MOREFEM_GVO_LOCAL_TUPLE_ITEM_SAME(Advanced::GeometricEltEnum::Triangle6),
MOREFEM_GVO_LOCAL_TUPLE_ITEM_SAME(Advanced::GeometricEltEnum::Quadrangle4),
MOREFEM_GVO_LOCAL_TUPLE_ITEM_SAME(Advanced::GeometricEltEnum::Quadrangle8),
MOREFEM_GVO_LOCAL_TUPLE_ITEM_SAME(Advanced::GeometricEltEnum::Quadrangle9),
MOREFEM_GVO_LOCAL_TUPLE_ITEM_SAME(Advanced::GeometricEltEnum::Tetrahedron4),
MOREFEM_GVO_LOCAL_TUPLE_ITEM_SAME(Advanced::GeometricEltEnum::Tetrahedron10),
MOREFEM_GVO_LOCAL_TUPLE_ITEM_SAME(Advanced::GeometricEltEnum::Hexahedron8),
MOREFEM_GVO_LOCAL_TUPLE_ITEM_SAME(Advanced::GeometricEltEnum::Hexahedron20),
>
>
#define MOREFEM_GVO_LOCAL_TUPLE_ITEM_SAME(ref_geom_elt_enum)
Convenient macro to simplify reading of tuple in SameForAllRefGeomElt.
Definition GlobalVariationalOperator.hpp:38

Most common base class for a GlobalVariationalOperator.

This base class is used when a unique LocalVariationalOperator implementation may be used to cover all the RefGeomElt cases. This is by far the most common case; currently there are two cases not covered by this scheme:

  • MITC operator, which requires wildly different implementation for Triangle3, Triangle6, Quadrangle4 and Quadrangle9. Writing all of them in the same LocalVariationalOperator would be possible but very tedious and difficult to udnerstand.
  • Incompressible operators.
Template Parameters
DerivedTName of the actual GlobalVariationalOperator implemented (current template class is a curiously recurrent template pattern (CRTP)).
Template Parameters
NatureTWhether an operator is bilinear, linear or non linear (in the latter case, it might be assembled into a matrix and a vector).
LocalVariationalOperatorTType of the LocalVariationalOperator used for all kinds of RefGeomElt.

◆ DependsOnRefGeomElt

template<class DerivedT , Advanced::OperatorNS::Nature NatureT, class LocalVariationalOperatorTupleT >
MoReFEM::GlobalVariationalOperatorNS::DependsOnRefGeomElt
Initial value:
Advanced::GlobalVariationalOperatorNS::
GlobalVariationalOperator<DerivedT, NatureT, LocalVariationalOperatorTupleT>

Advanced base class for a GlobalVariationalOperator, when a specific implementation is required for each RefGeomElt.

Currently there are two cases to be covered by this scheme:

  • MITC operator, which requires wildly different implementation for Triangle3, Triangle6, Quadrangle4 and Quadrangle9. Writing all of them in the same LocalVariationalOperator would be possible but very tedious and difficult to udnerstand.
  • Incompressible operators.

One might add the case of operators such as GradOnGradientBasedElasticityTensor which provides a single implementation but is irrelevant for some of the RefGeomElt such as Point1 or Segment2. In this case, set the second item of MOREFEM_GVO_LOCAL_TUPLE_ITEM_SAME for this RefGeomElt as std::nullptr_t.

Template Parameters
DerivedTName of the actual GlobalVariationalOperator implemented (current template class is a curiously recurrent template pattern (CRTP)).
Template Parameters
NatureTWhether an operator is bilinear, linear or non linear (in the latter case, it might be assembled into a matrix and a vector).
Template Parameters
LocalOperatorTupleTTuple which includes a LocalOperatorForRefGeomElt for each RefGeomElt defined in MoReFEM. The content of this tuple is very constrained (and checked at compile time): the RefGeomElt must be sort in exactly the same way they are in Advanced::GeometricEltEnum enum.

Function Documentation

◆ ExtractLocalDofValues()

void MoReFEM::GlobalVariationalOperatorNS::ExtractLocalDofValues ( const LocalFEltSpace & local_felt_space,
const ExtendedUnknown & unknown,
const GlobalVector & vector,
std::vector< double > & result )

Extract from a global vector the values required at a local level.

Parameters
[in]local_felt_spaceThe pendant of GeometricElt for finite element analysis, which includes all finite elements related to the given geometric element.
[in]unknownUnknown to consider, that must belong to the local_felt_space. Processor-wise local to global array must have been computed for this unknown.
[in]vectorGlobal vector from which we seek to extract relevant local values.
[out]resultVector into which result of the function is written. This vector is assumed to be properly allocated before the call to this function. This vector follows the ordering convention of local vectors (i.e. dofs are grouped by component: vx1 vx2 vx3 vy1 vy2 vy3...)