![]() |
v0.10.0 |
Volume finite element with switches. More...
#include <src/finite_elements/VolumeElementForcesAndSourcesCore.hpp>
Public Types | |
using | UserDataOperator = VolumeElementForcesAndSourcesCoreBase::UserDataOperator |
![]() | |
enum | Switches { NO_HO_GEOMETRY = 1 << 0 | 1 << 2 , NO_TRANSFORM = 1 << 1 | 1 << 2 , NO_HO_TRANSFORM = 1 << 2 } |
![]() | |
typedef boost::function< int(int order_row, int order_col, int order_data)> | RuleHookFun |
![]() | |
enum | KSPContext { CTX_SETFUNCTION , CTX_OPERATORS , CTX_KSPNONE } |
pass information about context of KSP/DM for with finite element is computed More... | |
![]() | |
enum | DataContext { CTX_SET_NONE = 0 , CTX_SET_F = 1 << 0 , CTX_SET_A = 1 << 1 , CTX_SET_B = 1 << 2 , CTX_SET_X = 1 << 3 , CTX_SET_X_T = 1 << 4 , CTX_SET_X_TT = 1 << 6 , CTX_SET_TIME = 1 << 7 } |
using | Switches = std::bitset< 8 > |
![]() | |
enum | SNESContext { CTX_SNESSETFUNCTION , CTX_SNESSETJACOBIAN , CTX_SNESNONE } |
![]() | |
enum | TSContext { CTX_TSSETRHSFUNCTION , CTX_TSSETRHSJACOBIAN , CTX_TSSETIFUNCTION , CTX_TSSETIJACOBIAN , CTX_TSTSMONITORSET , CTX_TSNONE } |
Public Member Functions | |
VolumeElementForcesAndSourcesCoreSwitch (Interface &m_field, const EntityType type=MBTET) | |
MoFEMErrorCode | operator() () |
function is run for every finite element More... | |
![]() | |
template<int SWITCH> | |
MoFEMErrorCode | OpSwitch () |
![]() | |
ForcesAndSourcesCore (Interface &m_field) | |
boost::ptr_vector< UserDataOperator > & | getOpPtrVector () |
Use to push back operator for row operator. More... | |
auto & | getElementPolynomialBase () |
Get the Entity Polynomial Base object. More... | |
auto & | getUserPolynomialBase () |
Get the User Polynomial Base object. More... | |
virtual MoFEMErrorCode | preProcess () |
function is run at the beginning of loop More... | |
virtual MoFEMErrorCode | postProcess () |
function is run at the end of loop More... | |
int | getMaxDataOrder () const |
Get max order of approximation for data fields. More... | |
int | getMaxRowOrder () const |
Get max order of approximation for field in rows. More... | |
int | getMaxColOrder () const |
Get max order of approximation for field in columns. More... | |
const DataForcesAndSourcesCore::EntData & | getEntData (const FieldSpace space, const EntityType type, const int side) const |
Get the entity data. More... | |
DataForcesAndSourcesCore::EntData & | getEntData (const FieldSpace space, const EntityType type, const int side) |
Get the entity data. More... | |
![]() | |
MoFEMErrorCode | query_interface (const MOFEMuuid &uuid, UnknownInterface **iface) const |
FEMethod () | |
auto | getDataDofsPtr () const |
auto | getDataVectorDofsPtr () const |
const FieldEntity_vector_view & | getDataFieldEnts () const |
boost::shared_ptr< FieldEntity_vector_view > & | getDataFieldEntsPtr () const |
auto & | getRowFieldEnts () const |
auto & | getRowFieldEntsPtr () const |
auto & | getColFieldEnts () const |
auto & | getColFieldEntsPtr () const |
auto | getRowDofsPtr () const |
auto | getColDofsPtr () const |
MoFEMErrorCode | getNumberOfNodes (int &num_nodes) const |
Get number of DOFs on element. More... | |
EntityHandle | getFEEntityHandle () const |
MoFEMErrorCode | getNodeData (const std::string field_name, VectorDouble &data, const bool reset_dofs=true) |
template<class MULTIINDEX > | |
MULTIINDEX::iterator | get_begin (const MULTIINDEX &index, const std::string &field_name, const EntityType type) const |
template<class MULTIINDEX > | |
MULTIINDEX::iterator | get_end (const MULTIINDEX &index, const std::string &field_name, const EntityType type) const |
template<class MULTIINDEX > | |
MULTIINDEX::iterator | get_begin (const MULTIINDEX &index, const std::string &field_name) const |
template<class MULTIINDEX > | |
MULTIINDEX::iterator | get_end (const MULTIINDEX &index, const std::string &field_name) const |
![]() | |
BasicMethod () | |
virtual | ~BasicMethod ()=default |
int | getNinTheLoop () const |
get number of evaluated element in the loop More... | |
int | getLoopSize () const |
get loop size More... | |
unsigned int | getFieldBitNumber (std::string field_name) const |
MoFEMErrorCode | copyBasicMethod (const BasicMethod &basic) |
Copy data from other base method to this base method. More... | |
![]() | |
KspMethod () | |
virtual | ~KspMethod ()=default |
MoFEMErrorCode | copyKsp (const KspMethod &ksp) |
copy data form another method More... | |
![]() | |
PetscData () | |
virtual | ~PetscData ()=default |
![]() | |
template<class IFACE > | |
MoFEMErrorCode | registerInterface (const MOFEMuuid &uuid, bool error_if_registration_failed=true) |
Register interface. More... | |
template<class IFACE , bool VERIFY = false> | |
MoFEMErrorCode | getInterface (const MOFEMuuid &uuid, IFACE *&iface) const |
Get interface by uuid and return reference to pointer of interface. More... | |
template<class IFACE > | |
MoFEMErrorCode | getInterface (IFACE *&iface) const |
Get interface refernce to pointer of interface. More... | |
template<class IFACE > | |
MoFEMErrorCode | getInterface (IFACE **const iface) const |
Get interface pointer to pointer of interface. More... | |
template<class IFACE , typename boost::enable_if< boost::is_pointer< IFACE >, int >::type = 0> | |
IFACE | getInterface () const |
Get interface pointer to pointer of interface. More... | |
template<class IFACE , typename boost::enable_if< boost::is_reference< IFACE >, int >::type = 0> | |
IFACE | getInterface () const |
Get reference to interface. More... | |
template<class IFACE > | |
IFACE * | getInterface () const |
Function returning pointer to interface. More... | |
virtual | ~UnknownInterface ()=default |
virtual MoFEMErrorCode | getLibVersion (Version &version) const |
Get library version. More... | |
virtual const MoFEMErrorCode | getFileVersion (moab::Interface &moab, Version &version) const |
Get database major version. More... | |
virtual MoFEMErrorCode | getInterfaceVersion (Version &version) const |
Get database major version. More... | |
template<> | |
MoFEMErrorCode | getInterface (const MOFEMuuid &uuid, UnknownInterface *&iface) const |
![]() | |
SnesMethod () | |
virtual | ~SnesMethod ()=default |
MoFEMErrorCode | copySnes (const SnesMethod &snes) |
Copy snes data. More... | |
DEPRECATED MoFEMErrorCode | setSnesCtx (SNESContext ctx) |
![]() | |
TSMethod () | |
virtual | ~TSMethod ()=default |
MoFEMErrorCode | copyTs (const TSMethod &ts) |
Copy TS solver data. More... | |
DEPRECATED MoFEMErrorCode | setTsCtx (TSContext ctx) |
Additional Inherited Members | |
![]() | |
std::string | meshPositionsFieldName |
![]() | |
Interface & | mField |
RuleHookFun | getRuleHook |
Hook to get rule. More... | |
RuleHookFun | setRuleHook |
Set function to calculate integration rule. More... | |
MatrixDouble | gaussPts |
Matrix of integration points. More... | |
![]() | |
std::string | feName |
Name of finite element. More... | |
boost::shared_ptr< const NumeredEntFiniteElement > | numeredEntFiniteElementPtr |
![]() | |
int | nInTheLoop |
number currently of processed method More... | |
int | loopSize |
local number oe methods to process More... | |
int | rAnk |
processor rank More... | |
int | sIze |
number of processors in communicator More... | |
const RefEntity_multiIndex * | refinedEntitiesPtr |
container of mofem dof entities More... | |
const RefElement_multiIndex * | refinedFiniteElementsPtr |
container of mofem finite element entities More... | |
const Problem * | problemPtr |
raw pointer to problem More... | |
const Field_multiIndex * | fieldsPtr |
raw pointer to fields container More... | |
const FieldEntity_multiIndex * | entitiesPtr |
raw pointer to container of field entities More... | |
const DofEntity_multiIndex * | dofsPtr |
raw pointer container of dofs More... | |
const FiniteElement_multiIndex * | finiteElementsPtr |
raw pointer to container finite elements More... | |
const EntFiniteElement_multiIndex * | finiteElementsEntitiesPtr |
const FieldEntityEntFiniteElementAdjacencyMap_multiIndex * | adjacenciesPtr |
boost::function< MoFEMErrorCode()> | preProcessHook |
Hook function for pre-processing. More... | |
boost::function< MoFEMErrorCode()> | postProcessHook |
Hook function for post-processing. More... | |
boost::function< MoFEMErrorCode()> | operatorHook |
Hook function for operator. More... | |
boost::movelib::unique_ptr< bool > | vecAssembleSwitch |
boost::movelib::unique_ptr< bool > | matAssembleSwitch |
![]() | |
KSPContext | ksp_ctx |
Context. More... | |
KSP | ksp |
KSP solver. More... | |
Vec & | ksp_f |
Mat & | ksp_A |
Mat & | ksp_B |
![]() | |
Switches | data_ctx |
Vec | f |
Mat | A |
Mat | B |
Vec | x |
Vec | x_t |
Vec | x_tt |
![]() | |
SNESContext | snes_ctx |
SNES | snes |
snes solver More... | |
Vec & | snes_x |
state vector More... | |
Vec & | snes_f |
residual More... | |
Mat & | snes_A |
jacobian matrix More... | |
Mat & | snes_B |
preconditioner of jacobian matrix More... | |
![]() | |
TS | ts |
time solver More... | |
TSContext | ts_ctx |
PetscInt | ts_step |
time step More... | |
PetscReal | ts_a |
shift for U_t (see PETSc Time Solver) More... | |
PetscReal | ts_aa |
shift for U_tt shift for U_tt More... | |
PetscReal | ts_t |
time More... | |
Vec & | ts_u |
state vector More... | |
Vec & | ts_u_t |
time derivative of state vector More... | |
Vec & | ts_u_tt |
second time derivative of state vector More... | |
Vec & | ts_F |
residual vector More... | |
Mat & | ts_A |
Mat & | ts_B |
Preconditioner for ts_A. More... | |
![]() | |
static constexpr Switches | CtxSetNone = PetscData::Switches(CTX_SET_NONE) |
static constexpr Switches | CtxSetF = PetscData::Switches(CTX_SET_F) |
static constexpr Switches | CtxSetA = PetscData::Switches(CTX_SET_A) |
static constexpr Switches | CtxSetB = PetscData::Switches(CTX_SET_B) |
static constexpr Switches | CtxSetX = PetscData::Switches(CTX_SET_X) |
static constexpr Switches | CtxSetX_T = PetscData::Switches(CTX_SET_X_T) |
static constexpr Switches | CtxSetX_TT = PetscData::Switches(CTX_SET_X_TT) |
static constexpr Switches | CtxSetTime = PetscData::Switches(CTX_SET_TIME) |
![]() | |
VolumeElementForcesAndSourcesCoreBase (Interface &m_field, const EntityType type=MBTET) | |
virtual MoFEMErrorCode | setIntegrationPts () |
Set integration points. More... | |
virtual MoFEMErrorCode | calculateVolumeAndJacobian () |
Calculate element volume and Jacobian. More... | |
virtual MoFEMErrorCode | calculateCoordinatesAtGaussPts () |
Calculate coordinate at integration points. More... | |
virtual MoFEMErrorCode | getSpaceBaseAndOrderOnElement () |
Determine approximation space and order of base functions. More... | |
virtual MoFEMErrorCode | transformBaseFunctions () |
Transform base functions based on geometric element Jacobian. More... | |
virtual MoFEMErrorCode | calculateHoJacobian () |
Calculate Jacobian for HO geometry. More... | |
virtual MoFEMErrorCode | transformHoBaseFunctions () |
Transform base functions based on ho-geometry element Jacobian. More... | |
![]() | |
MoFEMErrorCode | getEntitySense (const EntityType type, boost::ptr_vector< DataForcesAndSourcesCore::EntData > &data) const |
get sense (orientation) of entity More... | |
MoFEMErrorCode | getEntityDataOrder (const EntityType type, const FieldSpace space, boost::ptr_vector< DataForcesAndSourcesCore::EntData > &data) const |
Get the entity data order. More... | |
template<EntityType type> | |
MoFEMErrorCode | getEntitySense (DataForcesAndSourcesCore &data) const |
Get the entity sense (orientation) More... | |
template<EntityType type> | |
MoFEMErrorCode | getEntityDataOrder (DataForcesAndSourcesCore &data, const FieldSpace space) const |
Get the entity data order for given space. More... | |
MoFEMErrorCode | getFaceTriNodes (DataForcesAndSourcesCore &data) const |
Get nodes on triangles. More... | |
MoFEMErrorCode | getSpacesAndBaseOnEntities (DataForcesAndSourcesCore &data) const |
Get field approximation space and base on entities. More... | |
virtual int | getRule (int order_row, int order_col, int order_data) |
another variant of getRule More... | |
virtual MoFEMErrorCode | setGaussPts (int order_row, int order_col, int order_data) |
set user specific integration rule More... | |
MoFEMErrorCode | calHierarchicalBaseFunctionsOnElement (const FieldApproximationBase b) |
Calculate base functions. More... | |
MoFEMErrorCode | calHierarchicalBaseFunctionsOnElement () |
Calculate base functions. More... | |
MoFEMErrorCode | calBernsteinBezierBaseFunctionsOnElement () |
Calculate Bernstein-Bezier base. More... | |
MoFEMErrorCode | createDataOnElement () |
Create a entity data on element object. More... | |
MoFEMErrorCode | loopOverOperators () |
Iterate user data operators. More... | |
template<typename EXTRACTOR > | |
MoFEMErrorCode | getNodesIndices (const std::string &field_name, FieldEntity_vector_view &ents_field, VectorInt &nodes_indices, VectorInt &local_nodes_indices, EXTRACTOR &&extractor) const |
get node indices More... | |
MoFEMErrorCode | getRowNodesIndices (DataForcesAndSourcesCore &data, const std::string &field_name) const |
get row node indices from FENumeredDofEntity_multiIndex More... | |
MoFEMErrorCode | getColNodesIndices (DataForcesAndSourcesCore &data, const std::string &field_name) const |
get col node indices from FENumeredDofEntity_multiIndex More... | |
template<typename EXTRACTOR > | |
MoFEMErrorCode | getEntityIndices (DataForcesAndSourcesCore &data, const std::string &field_name, FieldEntity_vector_view &ents_field, const EntityType type_lo, const EntityType type_hi, EXTRACTOR &&extractor) const |
MoFEMErrorCode | getEntityRowIndices (DataForcesAndSourcesCore &data, const std::string &field_name, const EntityType type_lo=MBVERTEX, const EntityType type_hi=MBPOLYHEDRON) const |
MoFEMErrorCode | getEntityColIndices (DataForcesAndSourcesCore &data, const std::string &field_name, const EntityType type_lo=MBVERTEX, const EntityType type_hi=MBPOLYHEDRON) const |
MoFEMErrorCode | getNoFieldIndices (const std::string &field_name, boost::shared_ptr< FENumeredDofEntity_multiIndex > dofs, VectorInt &nodes_indices) const |
get NoField indices More... | |
MoFEMErrorCode | getNoFieldRowIndices (DataForcesAndSourcesCore &data, const std::string &field_name) const |
get col NoField indices More... | |
MoFEMErrorCode | getNoFieldColIndices (DataForcesAndSourcesCore &data, const std::string &field_name) const |
get col NoField indices More... | |
MoFEMErrorCode | getNoFieldFieldData (const std::string field_name, VectorDouble &ent_field_data, VectorDofs &ent_field_dofs, VectorFieldEntities &ent_field) const |
Get field data on nodes. More... | |
MoFEMErrorCode | getNoFieldFieldData (DataForcesAndSourcesCore &data, const std::string field_name) const |
MoFEMErrorCode | getNodesFieldData (DataForcesAndSourcesCore &data, const std::string &field_name) const |
Get data on nodes. More... | |
MoFEMErrorCode | getEntityFieldData (DataForcesAndSourcesCore &data, const std::string &field_name, const EntityType type_lo=MBVERTEX, const EntityType type_hi=MBPOLYHEDRON) const |
MoFEMErrorCode | getProblemNodesIndices (const std::string &field_name, const NumeredDofEntity_multiIndex &dofs, VectorInt &nodes_indices) const |
get indices of nodal indices which are declared for problem but not this particular element More... | |
MoFEMErrorCode | getProblemTypeIndices (const std::string &field_name, const NumeredDofEntity_multiIndex &dofs, EntityType type, int side_number, VectorInt &indices) const |
get indices by type (generic function) which are declared for problem but not this particular element More... | |
MoFEMErrorCode | getProblemNodesRowIndices (const std::string &field_name, VectorInt &nodes_indices) const |
MoFEMErrorCode | getProblemTypeRowIndices (const std::string &field_name, EntityType type, int side_number, VectorInt &indices) const |
MoFEMErrorCode | getProblemNodesColIndices (const std::string &field_name, VectorInt &nodes_indices) const |
MoFEMErrorCode | getProblemTypeColIndices (const std::string &field_name, EntityType type, int side_number, VectorInt &indices) const |
virtual int | getRule (int order) |
virtual MoFEMErrorCode | setGaussPts (int order) |
![]() | |
boost::typeindex::type_index | getClassIdx (const MOFEMuuid &uid) const |
Get type name for interface Id. More... | |
MOFEMuuid | getUId (const boost::typeindex::type_index &class_idx) const |
Get interface Id for class name. More... | |
![]() | |
VectorDouble | coords |
MatrixDouble3by3 | jAc |
MatrixDouble3by3 | invJac |
OpSetInvJacH1 | opSetInvJacH1 |
OpSetContravariantPiolaTransform | opContravariantPiolaTransform |
OpSetCovariantPiolaTransform | opCovariantPiolaTransform |
OpSetInvJacHdivAndHcurl | opSetInvJacHdivAndHcurl |
MatrixDouble | hoCoordsAtGaussPts |
MatrixDouble | hoGaussPtsJac |
MatrixDouble | hoGaussPtsInvJac |
VectorDouble | hoGaussPtsDetJac |
OpGetDataAndGradient< 3, 3 > | opHOatGaussPoints |
higher order geometry data at Gauss pts More... | |
OpSetHoInvJacH1 | opSetHoInvJacH1 |
OpSetHoContravariantPiolaTransform | opHoContravariantTransform |
OpSetHoCovariantPiolaTransform | opHoCovariantTransform |
OpSetHoInvJacHdivAndHcurl | opSetHoInvJacHdivAndHcurl |
double | vOlume |
int | num_nodes |
const EntityHandle * | conn |
FTensor::Tensor2< double *, 3, 3 > | tJac |
FTensor::Tensor2< double *, 3, 3 > | tInvJac |
MatrixDouble | coordsAtGaussPts |
![]() | |
const std::array< boost::shared_ptr< DataForcesAndSourcesCore >, LASTSPACE > | dataOnElement |
Entity data on element entity rows fields. More... | |
const std::array< boost::shared_ptr< DataForcesAndSourcesCore >, LASTSPACE > | derivedDataOnElement |
Entity data on element entity columns fields. More... | |
DataForcesAndSourcesCore & | dataNoField |
DataForcesAndSourcesCore & | dataH1 |
DataForcesAndSourcesCore & | dataHcurl |
DataForcesAndSourcesCore & | dataHdiv |
DataForcesAndSourcesCore & | dataL2 |
boost::ptr_vector< UserDataOperator > | opPtrVector |
Vector of finite element users data operators. More... | |
EntityType | lastEvaluatedElementEntityType |
Last evaluated type of element entity. More... | |
Volume finite element with switches.
Using SWITCH to off functions
SWITCH |
Definition at line 338 of file VolumeElementForcesAndSourcesCore.hpp.
using MoFEM::VolumeElementForcesAndSourcesCoreSwitch< SWITCH >::UserDataOperator = VolumeElementForcesAndSourcesCoreBase::UserDataOperator |
Definition at line 343 of file VolumeElementForcesAndSourcesCore.hpp.
MoFEM::VolumeElementForcesAndSourcesCoreSwitch< SWITCH >::VolumeElementForcesAndSourcesCoreSwitch | ( | Interface & | m_field, |
const EntityType | type = MBTET |
||
) |
Definition at line 341 of file VolumeElementForcesAndSourcesCore.hpp.
|
virtual |
function is run for every finite element
It is used to calculate element local matrices and assembly. It can be used for post-processing.
Reimplemented from MoFEM::ForcesAndSourcesCore.
Reimplemented in MoFEM::VolumeElementForcesAndSourcesCoreOnSideSwitch< SWITCH >, and MoFEM::VolumeElementForcesAndSourcesCoreOnContactPrismSideSwitch< SWITCH >.
Definition at line 389 of file VolumeElementForcesAndSourcesCore.hpp.