![]() |
v0.15.0 |
structure to get information form mofem into EntitiesFieldData More...
#include "src/finite_elements/ForcesAndSourcesCore.hpp"
Classes | |
struct | UserDataOperator |
Public Types | |
typedef boost::function< int(int order_row, int order_col, int order_data)> | RuleHookFun |
typedef boost::function< MoFEMErrorCode(ForcesAndSourcesCore *fe_raw_ptr, int order_row, int order_col, int order_data)> | GaussHookFun |
![]() | |
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_DX = 1 << 4 , CTX_SET_X_T = 1 << 5 , 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 } |
![]() | |
enum | TAOContext { CTX_TAO_OBJECTIVE , CTX_TAO_GRADIENT , CTX_TAO_HESSIAN , CTX_TAO_NONE } |
Public Member Functions | |
ForcesAndSourcesCore (Interface &m_field) | |
boost::ptr_deque< UserDataOperator > & | getOpPtrVector () |
Use to push back operator for row operator. | |
auto & | getElementPolynomialBase () |
Get the Entity Polynomial Base object. | |
auto & | getUserPolynomialBase () |
Get the User Polynomial Base object. | |
virtual MoFEMErrorCode | preProcess () |
function is run at the beginning of loop | |
virtual MoFEMErrorCode | operator() () |
function is run for every finite element | |
virtual MoFEMErrorCode | postProcess () |
function is run at the end of loop | |
int | getMaxDataOrder () const |
Get max order of approximation for data fields. | |
int | getMaxRowOrder () const |
Get max order of approximation for field in rows. | |
int | getMaxColOrder () const |
Get max order of approximation for field in columns. | |
auto & | getEntData (const FieldSpace space, const EntityType type, const int side) |
Get the entity data. | |
auto & | getDataOnElementBySpaceArray () |
Get data on entities and space. | |
auto & | getDerivedDataOnElementBySpaceArray () |
Get derived data on entities and space. | |
![]() | |
MoFEMErrorCode | query_interface (boost::typeindex::type_index type_index, UnknownInterface **iface) const |
FEMethod ()=default | |
auto | getFEName () const |
get finite element name | |
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 |
auto | getNumberOfNodes () const |
EntityHandle | getFEEntityHandle () const |
MoFEMErrorCode | getNodeData (const std::string field_name, VectorDouble &data, const bool reset_dofs=true) |
![]() | |
BasicMethod () | |
virtual | ~BasicMethod ()=default |
int | getNinTheLoop () const |
get number of evaluated element in the loop | |
int | getLoopSize () const |
get loop size | |
auto | getLoHiFERank () const |
Get lo and hi processor rank of iterated entities. | |
auto | getLoFERank () const |
Get upper rank in loop for iterating elements. | |
auto | getHiFERank () const |
Get upper rank in loop for iterating elements. | |
unsigned int | getFieldBitNumber (std::string field_name) const |
MoFEMErrorCode | copyBasicMethod (const BasicMethod &basic) |
Copy data from other base method to this base method. | |
boost::weak_ptr< CacheTuple > | getCacheWeakPtr () const |
Get the cache weak ptr object. | |
![]() | |
MoFEMErrorCode | query_interface (boost::typeindex::type_index type_index, UnknownInterface **iface) const |
KspMethod () | |
virtual | ~KspMethod ()=default |
MoFEMErrorCode | copyKsp (const KspMethod &ksp) |
copy data form another method | |
![]() | |
PetscData () | |
virtual | ~PetscData ()=default |
MoFEMErrorCode | copyPetscData (const PetscData &petsc_data) |
![]() | |
template<class IFACE > | |
MoFEMErrorCode | registerInterface (bool error_if_registration_failed=true) |
Register interface. | |
template<class IFACE > | |
MoFEMErrorCode | getInterface (IFACE *&iface) const |
Get interface reference to pointer of interface. | |
template<class IFACE > | |
MoFEMErrorCode | getInterface (IFACE **const iface) const |
Get interface pointer to pointer of interface. | |
template<class IFACE , typename boost::enable_if< boost::is_pointer< IFACE >, int >::type = 0> | |
IFACE | getInterface () const |
Get interface pointer to pointer of interface. | |
template<class IFACE , typename boost::enable_if< boost::is_reference< IFACE >, int >::type = 0> | |
IFACE | getInterface () const |
Get reference to interface. | |
template<class IFACE > | |
IFACE * | getInterface () const |
Function returning pointer to interface. | |
virtual | ~UnknownInterface ()=default |
![]() | |
MoFEMErrorCode | query_interface (boost::typeindex::type_index type_index, UnknownInterface **iface) const |
SnesMethod () | |
virtual | ~SnesMethod ()=default |
MoFEMErrorCode | copySnes (const SnesMethod &snes) |
Copy snes data. | |
![]() | |
MoFEMErrorCode | query_interface (boost::typeindex::type_index type_index, UnknownInterface **iface) const |
TSMethod () | |
virtual | ~TSMethod ()=default |
MoFEMErrorCode | copyTs (const TSMethod &ts) |
Copy TS solver data. | |
![]() | |
MoFEMErrorCode | query_interface (boost::typeindex::type_index type_index, UnknownInterface **iface) const |
TaoMethod () | |
virtual | ~TaoMethod ()=default |
MoFEMErrorCode | copyTao (const TaoMethod &tao) |
Copy TAO data. | |
Public Attributes | |
Interface & | mField |
RuleHookFun | getRuleHook |
Hook to get rule. | |
GaussHookFun | setRuleHook |
Set function to calculate integration rule. | |
MatrixDouble | gaussPts |
Matrix of integration points. | |
![]() | |
std::string | feName |
Name of finite element. | |
boost::shared_ptr< const NumeredEntFiniteElement > | numeredEntFiniteElementPtr |
boost::function< bool(FEMethod *fe_method_ptr)> | exeTestHook |
Tet if element to skip element. | |
![]() | |
int | nInTheLoop |
number currently of processed method | |
int | loopSize |
local number oe methods to process | |
std::pair< int, int > | loHiFERank |
Llo and hi processor rank of iterated entities. | |
int | rAnk |
processor rank | |
int | sIze |
number of processors in communicator | |
const RefEntity_multiIndex * | refinedEntitiesPtr |
container of mofem dof entities | |
const RefElement_multiIndex * | refinedFiniteElementsPtr |
container of mofem finite element entities | |
const Problem * | problemPtr |
raw pointer to problem | |
const Field_multiIndex * | fieldsPtr |
raw pointer to fields container | |
const FieldEntity_multiIndex * | entitiesPtr |
raw pointer to container of field entities | |
const DofEntity_multiIndex * | dofsPtr |
raw pointer container of dofs | |
const FiniteElement_multiIndex * | finiteElementsPtr |
raw pointer to container finite elements | |
const EntFiniteElement_multiIndex * | finiteElementsEntitiesPtr |
const FieldEntityEntFiniteElementAdjacencyMap_multiIndex * | adjacenciesPtr |
boost::function< MoFEMErrorCode()> | preProcessHook |
Hook function for pre-processing. | |
boost::function< MoFEMErrorCode()> | postProcessHook |
Hook function for post-processing. | |
boost::function< MoFEMErrorCode()> | operatorHook |
Hook function for operator. | |
boost::movelib::unique_ptr< bool > | vecAssembleSwitch |
boost::movelib::unique_ptr< bool > | matAssembleSwitch |
boost::weak_ptr< CacheTuple > | cacheWeakPtr |
![]() | |
KSPContext | ksp_ctx |
Context. | |
KSP | ksp |
KSP solver. | |
Vec & | ksp_f |
Mat & | ksp_A |
Mat & | ksp_B |
![]() | |
Switches | data_ctx |
Vec | f |
Mat | A |
Mat | B |
Vec | x |
Vec | dx |
Vec | x_t |
Vec | x_tt |
![]() | |
SNESContext | snes_ctx |
SNES | snes |
snes solver | |
Vec & | snes_x |
state vector | |
Vec & | snes_dx |
solution update | |
Vec & | snes_f |
residual | |
Mat & | snes_A |
jacobian matrix | |
Mat & | snes_B |
preconditioner of jacobian matrix | |
![]() | |
TS | ts |
time solver | |
TSContext | ts_ctx |
PetscInt | ts_step |
time step number | |
PetscReal | ts_a |
shift for U_t (see PETSc Time Solver) | |
PetscReal | ts_aa |
shift for U_tt shift for U_tt | |
PetscReal | ts_t |
time | |
PetscReal | ts_dt |
time step size | |
Vec & | ts_u |
state vector | |
Vec & | ts_u_t |
time derivative of state vector | |
Vec & | ts_u_tt |
second time derivative of state vector | |
Vec & | ts_F |
residual vector | |
Mat & | ts_A |
Mat & | ts_B |
Preconditioner for ts_A. | |
![]() | |
TAOContext | tao_ctx |
Tao | tao |
tao solver | |
Vec & | tao_x |
Vec & | tao_f |
state vector | |
Mat & | tao_A |
gradient vector | |
Mat & | tao_B |
hessian matrix | |
Protected Member Functions | |
MoFEMErrorCode | getEntitySense (const EntityType type, boost::ptr_vector< EntitiesFieldData::EntData > &data) const |
get sense (orientation) of entity | |
MoFEMErrorCode | getEntityDataOrder (const EntityType type, const FieldSpace space, boost::ptr_vector< EntitiesFieldData::EntData > &data) const |
Get the entity data order. | |
template<EntityType type> | |
MoFEMErrorCode | getEntitySense (EntitiesFieldData &data) const |
Get the entity sense (orientation) | |
template<EntityType type> | |
MoFEMErrorCode | getEntityDataOrder (EntitiesFieldData &data, const FieldSpace space) const |
Get the entity data order for given space. | |
MoFEMErrorCode | getFaceNodes (EntitiesFieldData &data) const |
Get nodes on faces. | |
MoFEMErrorCode | getSpacesAndBaseOnEntities (EntitiesFieldData &data) const |
Get field approximation space and base on entities. | |
virtual int | getRule (int order_row, int order_col, int order_data) |
another variant of getRule | |
virtual MoFEMErrorCode | setGaussPts (int order_row, int order_col, int order_data) |
set user specific integration rule | |
MoFEMErrorCode | calHierarchicalBaseFunctionsOnElement (const FieldApproximationBase b) |
Calculate base functions. | |
MoFEMErrorCode | calHierarchicalBaseFunctionsOnElement () |
Calculate base functions. | |
MoFEMErrorCode | calBernsteinBezierBaseFunctionsOnElement () |
Calculate Bernstein-Bezier base. | |
MoFEMErrorCode | createDataOnElement (EntityType type) |
Create a entity data on element object. | |
MoFEMErrorCode | loopOverOperators () |
Iterate user data operators. | |
Indices | |
template<typename EXTRACTOR > | |
MoFEMErrorCode | getNodesIndices (const int bit_number, FieldEntity_vector_view &ents_field, VectorInt &nodes_indices, VectorInt &local_nodes_indices, EXTRACTOR &&extractor) const |
get node indices | |
MoFEMErrorCode | getRowNodesIndices (EntitiesFieldData &data, const int bit_number) const |
get row node indices from FENumeredDofEntity_multiIndex | |
MoFEMErrorCode | getColNodesIndices (EntitiesFieldData &data, const int bit_number) const |
get col node indices from FENumeredDofEntity_multiIndex | |
template<typename EXTRACTOR > | |
MoFEMErrorCode | getEntityIndices (EntitiesFieldData &data, const int bit_number, FieldEntity_vector_view &ents_field, const EntityType type_lo, const EntityType type_hi, EXTRACTOR &&extractor) const |
MoFEMErrorCode | getEntityRowIndices (EntitiesFieldData &data, const int bit_number, const EntityType type_lo=MBVERTEX, const EntityType type_hi=MBPOLYHEDRON) const |
MoFEMErrorCode | getEntityColIndices (EntitiesFieldData &data, const int bit_number, const EntityType type_lo=MBVERTEX, const EntityType type_hi=MBPOLYHEDRON) const |
MoFEMErrorCode | getNoFieldIndices (const int bit_number, boost::shared_ptr< FENumeredDofEntity_multiIndex > dofs, VectorInt &nodes_indices) const |
get NoField indices | |
MoFEMErrorCode | getNoFieldRowIndices (EntitiesFieldData &data, const int bit_number) const |
get col NoField indices | |
MoFEMErrorCode | getNoFieldColIndices (EntitiesFieldData &data, const int bit_number) const |
get col NoField indices | |
Data | |
MoFEMErrorCode | getBitRefLevelOnData () |
MoFEMErrorCode | getNoFieldFieldData (const int bit_number, VectorDouble &ent_field_data, VectorDofs &ent_field_dofs, VectorFieldEntities &ent_field) const |
Get field data on nodes. | |
MoFEMErrorCode | getNoFieldFieldData (EntitiesFieldData &data, const int bit_number) const |
MoFEMErrorCode | getNodesFieldData (EntitiesFieldData &data, const int bit_number) const |
Get data on nodes. | |
MoFEMErrorCode | getEntityFieldData (EntitiesFieldData &data, const int bit_number, const EntityType type_lo=MBVERTEX, const EntityType type_hi=MBPOLYHEDRON) const |
Data form NumeredDofEntity_multiIndex | |
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 | |
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 | |
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 |
Deprecated (do not use) | |
virtual int | getRule (int order) |
virtual MoFEMErrorCode | setGaussPts (int order) |
Protected Attributes | |
const std::array< boost::shared_ptr< EntitiesFieldData >, LASTSPACE > | dataOnElement |
Entity data on element entity rows fields. | |
const std::array< boost::shared_ptr< EntitiesFieldData >, LASTSPACE > | derivedDataOnElement |
Entity data on element entity columns fields. | |
EntitiesFieldData & | dataNoField |
EntitiesFieldData & | dataH1 |
EntitiesFieldData & | dataHcurl |
EntitiesFieldData & | dataHdiv |
EntitiesFieldData & | dataL2 |
boost::ptr_deque< UserDataOperator > | opPtrVector |
Vector of finite element users data operators. | |
EntityType | lastEvaluatedElementEntityType |
Last evaluated type of element entity. | |
MatrixDouble | coordsAtGaussPts |
coordinated at gauss points | |
double | elementMeasure |
Private Member Functions | |
MoFEMErrorCode | setSideFEPtr (const ForcesAndSourcesCore *side_fe_ptr) |
Set the pointer to face element on the side. | |
MoFEMErrorCode | setRefineFEPtr (const ForcesAndSourcesCore *refine_fe_ptr) |
Set the pointer to face element refined. | |
Private Attributes | |
boost::shared_ptr< BaseFunction > | elementPolynomialBasePtr |
Pointer to entity polynomial base. | |
boost::shared_ptr< BaseFunction > | userPolynomialBasePtr |
Pointer to user polynomial base. | |
ForcesAndSourcesCore * | sidePtrFE |
Element to integrate on the sides. | |
ForcesAndSourcesCore * | refinePtrFE |
Element to integrate parent or child. | |
Friends | |
class | UserDataOperator |
class | VolumeElementForcesAndSourcesCoreOnSide |
class | FaceElementForcesAndSourcesCoreOnSide |
class | FaceElementForcesAndSourcesCoreOnChildParent |
class | EdgeElementForcesAndSourcesCoreOnChildParent |
class | VolumeElementForcesAndSourcesCoreOnContactPrismSide |
template<int DIM> | |
struct | OpCopyGeomDataToE |
template<typename E > | |
struct | OpBrokenLoopSide |
Additional Inherited Members | |
![]() | |
static MoFEMErrorCode | getLibVersion (Version &version) |
Get library version. | |
static MoFEMErrorCode | getFileVersion (moab::Interface &moab, Version &version) |
Get database major version. | |
static MoFEMErrorCode | setFileVersion (moab::Interface &moab, Version version=Version(MoFEM_VERSION_MAJOR, MoFEM_VERSION_MINOR, MoFEM_VERSION_BUILD)) |
Get database major version. | |
static MoFEMErrorCode | getInterfaceVersion (Version &version) |
Get database major version. | |
![]() | |
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 | CtxSetDX = PetscData::Switches(CTX_SET_DX) |
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) |
structure to get information form mofem into EntitiesFieldData
Definition at line 22 of file ForcesAndSourcesCore.hpp.
boost::function<MoFEMErrorCode(ForcesAndSourcesCore *fe_raw_ptr, int order_row, int order_col, int order_data)> MoFEM::ForcesAndSourcesCore::GaussHookFun |
Definition at line 33 of file ForcesAndSourcesCore.hpp.
boost::function<int(int order_row, int order_col, int order_data)> MoFEM::ForcesAndSourcesCore::RuleHookFun |
Definition at line 28 of file ForcesAndSourcesCore.hpp.
MoFEM::ForcesAndSourcesCore::ForcesAndSourcesCore | ( | Interface & | m_field | ) |
Definition at line 40 of file ForcesAndSourcesCore.cpp.
|
protected |
Calculate Bernstein-Bezier base.
Definition at line 1132 of file ForcesAndSourcesCore.cpp.
|
protected |
Calculate base functions.
Use the some node base. Node base is usually used for construction other bases.
Definition at line 1112 of file ForcesAndSourcesCore.cpp.
|
protected |
Calculate base functions.
Definition at line 1049 of file ForcesAndSourcesCore.cpp.
|
protected |
Create a entity data on element object.
Definition at line 1337 of file ForcesAndSourcesCore.cpp.
|
protected |
Get bit ref level in entities, and set it to data
Definition at line 595 of file ForcesAndSourcesCore.cpp.
|
protected |
get col node indices from FENumeredDofEntity_multiIndex
Definition at line 328 of file ForcesAndSourcesCore.cpp.
|
inline |
Get data on entities and space.
Entities data are stored by space, by entity type, and entity side.
Definition at line 156 of file ForcesAndSourcesCore.hpp.
|
inline |
Get derived data on entities and space.
Entities data are stored by space, by entity type, and entity side. Derived data is used to store data on columns, so it shares information about shape functions wih rows.
Definition at line 167 of file ForcesAndSourcesCore.hpp.
|
inline |
Get the Entity Polynomial Base object.
Definition at line 90 of file ForcesAndSourcesCore.hpp.
|
inline |
Get the entity data.
space | |
type | |
side |
Definition at line 144 of file ForcesAndSourcesCore.hpp.
|
protected |
Definition at line 427 of file ForcesAndSourcesCore.cpp.
|
protected |
Get the entity data order.
type | |
space | |
data |
Definition at line 139 of file ForcesAndSourcesCore.cpp.
|
inlineprotected |
Get the entity data order for given space.
type |
data | |
space |
Definition at line 213 of file ForcesAndSourcesCore.hpp.
|
protected |
Definition at line 770 of file ForcesAndSourcesCore.cpp.
|
protected |
Definition at line 345 of file ForcesAndSourcesCore.cpp.
|
protected |
Definition at line 412 of file ForcesAndSourcesCore.cpp.
|
protected |
get sense (orientation) of entity
type | type of entity |
data | entity data |
Definition at line 84 of file ForcesAndSourcesCore.cpp.
|
inlineprotected |
Get the entity sense (orientation)
type |
data |
Definition at line 200 of file ForcesAndSourcesCore.hpp.
|
protected |
Get nodes on faces.
Definition at line 921 of file ForcesAndSourcesCore.cpp.
int MoFEM::ForcesAndSourcesCore::getMaxColOrder | ( | ) | const |
Get max order of approximation for field in columns.
Definition at line 135 of file ForcesAndSourcesCore.cpp.
int MoFEM::ForcesAndSourcesCore::getMaxDataOrder | ( | ) | const |
Get max order of approximation for data fields.
getMeasure getMaxDataOrder () return maximal order on entities, for all data on the element. So for example if finite element is triangle, and triangle base function have order 4 and on edges base function have order 2, this function return 4.
If finite element has for example 2 or more approximated fields, for example Pressure (order 3) and displacement field (order 5), this function returns 5.
Definition at line 120 of file ForcesAndSourcesCore.cpp.
int MoFEM::ForcesAndSourcesCore::getMaxRowOrder | ( | ) | const |
Get max order of approximation for field in rows.
Definition at line 131 of file ForcesAndSourcesCore.cpp.
|
protected |
Get data on nodes.
data | Data structure |
field_name | Field name |
Definition at line 642 of file ForcesAndSourcesCore.cpp.
|
protected |
get node indices
Definition at line 219 of file ForcesAndSourcesCore.cpp.
|
protected |
get col NoField indices
Definition at line 474 of file ForcesAndSourcesCore.cpp.
|
protected |
Get field data on nodes.
Definition at line 855 of file ForcesAndSourcesCore.cpp.
|
protected |
Definition at line 904 of file ForcesAndSourcesCore.cpp.
|
protected |
get NoField indices
Definition at line 442 of file ForcesAndSourcesCore.cpp.
|
protected |
get col NoField indices
Definition at line 459 of file ForcesAndSourcesCore.cpp.
|
inline |
Use to push back operator for row operator.
It can be used to calculate nodal forces or other quantities on the mesh.
Definition at line 83 of file ForcesAndSourcesCore.hpp.
|
protected |
Definition at line 579 of file ForcesAndSourcesCore.cpp.
|
protected |
get indices of nodal indices which are declared for problem but not this particular element
Definition at line 490 of file ForcesAndSourcesCore.cpp.
|
protected |
Definition at line 565 of file ForcesAndSourcesCore.cpp.
|
protected |
Definition at line 586 of file ForcesAndSourcesCore.cpp.
|
protected |
get indices by type (generic function) which are declared for problem but not this particular element
Definition at line 531 of file ForcesAndSourcesCore.cpp.
|
protected |
Definition at line 572 of file ForcesAndSourcesCore.cpp.
|
protected |
get row node indices from FENumeredDofEntity_multiIndex
Definition at line 311 of file ForcesAndSourcesCore.cpp.
|
protectedvirtual |
Reimplemented in AnalyticalDirichletBC::ApproxField::MyTriFE, BodyForceConstantField::MyVolumeFE, BoneRemodeling::DensityMapFe, BoneRemodeling::Remodeling::Fe, CohesiveElement::CohesiveInterfaceElement::MyPrism, ConvectiveMassElement::MyVolumeFE, EdgeForce::MyFE, EdgeSlidingConstrains::MyEdgeFE, EdgeSlidingConstrains::MyEdgeFE, FluidPressure::MyTriangleFE, KelvinVoigtDamper::DamperFE, MagneticElement::TriFE, MagneticElement::VolumeFE, MixTransport::MixTransportElement::MyTriFE, MixTransport::MixTransportElement::MyVolumeFE, MoFEM::EdgeElementForcesAndSourcesCoreOnChildParent, MoFEM::FaceElementForcesAndSourcesCoreOnChildParent, MoFEM::FaceElementForcesAndSourcesCoreOnSide, MoFEM::PostProcBrokenMeshInMoabBase< EdgeElementForcesAndSourcesCore >, MoFEM::PostProcBrokenMeshInMoabBase< FaceElementForcesAndSourcesCore >, MoFEM::PostProcBrokenMeshInMoabBase< VolumeElementForcesAndSourcesCore >, MoFEM::VolumeElementForcesAndSourcesCoreOnContactPrismSide, MoFEM::VolumeElementForcesAndSourcesCoreOnSide, NeumannForcesSurface::MyTriangleFE, NeumannForcesSurfaceComplexForLazy::MyTriangleSpatialFE, NonlinearElasticElement::MyVolumeFE, PostProcEdgeOnRefinedMesh, PostProcFaceOnRefinedMesh, PostProcTemplateVolumeOnRefinedMesh< MoFEM::VolumeElementForcesAndSourcesCore >, SurfaceSlidingConstrains::MyTriangleFE, SurfaceSlidingConstrains::MyTriangleFE, ThermalElement::MyTriFE, ThermalElement::MyVolumeFE, and ThermalStressElement::MyVolumeFE.
Definition at line 2100 of file ForcesAndSourcesCore.cpp.
|
protectedvirtual |
another variant of getRule
order_row | order of base function on row |
order_col | order of base function on columns |
order_data | order of base function approximating data |
This function is overloaded by the user. The integration rule is set such that specific operator implemented by the user is integrated accurately. For example if user implement bilinear operator
\[ b(u,v) = \int_\mathcal{T} \frac{\partial u_i}{\partial x_j}\frac{\partial v_i}{\partial x_j} \textrm{d}\mathcal{T} \]
then if \(u\) and \(v\) are polynomial of given order, then exact integral would be
The integration points and weights are set appropriately for given entity type and integration rule from quad.c
Method ForcesAndSourcesCore::getRule takes at argument takes maximal polynomial order set on the element on all fields defined on the element. If a user likes to have more control, another variant of this function can be called which distinguishing between field orders on rows, columns and data, the i.e. first argument of a bilinear form, the second argument of bilinear form and field coefficients on the element.
Reimplemented in EdgeFE, QuadFE, and TriFE.
Definition at line 2088 of file ForcesAndSourcesCore.cpp.
|
protected |
Get field approximation space and base on entities.
Definition at line 990 of file ForcesAndSourcesCore.cpp.
|
inline |
Get the User Polynomial Base object.
Definition at line 97 of file ForcesAndSourcesCore.hpp.
|
protected |
Iterate user data operators.
Definition at line 1390 of file ForcesAndSourcesCore.cpp.
|
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::BasicMethod.
Reimplemented in MoFEM::ContactPrismElementForcesAndSourcesCore, MoFEM::EdgeElementForcesAndSourcesCore, MoFEM::FaceElementForcesAndSourcesCore, MoFEM::FatPrismElementForcesAndSourcesCore, MoFEM::FlatPrismElementForcesAndSourcesCore, MoFEM::PipelineManager::MeshsetFE, MoFEM::VertexElementForcesAndSourcesCore, MoFEM::VolumeElementForcesAndSourcesCore, MoFEM::VolumeElementForcesAndSourcesCoreOnSide, and NeumannForcesSurfaceComplexForLazy::MyTriangleSpatialFE.
Definition at line 2134 of file ForcesAndSourcesCore.cpp.
|
virtual |
function is run at the end of loop
It is used to assembly matrices and vectors, calculating global variables, f.e. total internal energy, ect.
Iterating over dofs: Example1 iterating over dofs in row by name of the field for(IT_GET_FEROW_BY_NAME_DOFS_FOR_LOOP(this,"DISPLACEMENT",it)) { ... }
Reimplemented from MoFEM::BasicMethod.
Reimplemented in ConvectiveMassElement::MyVolumeFE, KelvinVoigtDamper::DamperFE, MoFEM::PipelineManager::MeshsetFE, MoFEM::PostProcBrokenMeshInMoabBase< EdgeElementForcesAndSourcesCore >, MoFEM::PostProcBrokenMeshInMoabBase< FaceElementForcesAndSourcesCore >, MoFEM::PostProcBrokenMeshInMoabBase< VolumeElementForcesAndSourcesCore >, NonlinearElasticElement::MyVolumeFE, PostProcEdgeOnRefinedMesh, PostProcFaceOnRefinedMesh, PostProcFatPrismOnRefinedMesh, PostProcTemplateVolumeOnRefinedMesh< MoFEM::VolumeElementForcesAndSourcesCore >, Smoother::MyVolumeFE, and Smoother::MyVolumeFE.
Definition at line 2149 of file ForcesAndSourcesCore.cpp.
|
virtual |
function is run at the beginning of loop
It is used to zeroing matrices and vectors, calculation of shape functions on reference element, preprocessing boundary conditions, etc.
Reimplemented from MoFEM::BasicMethod.
Reimplemented in ConvectiveMassElement::MyVolumeFE, EdgeSlidingConstrains::MyEdgeFE, EdgeSlidingConstrains::MyEdgeFE, FluidPressure::MyTriangleFE, KelvinVoigtDamper::DamperFE, MoFEM::PipelineManager::MeshsetFE, MoFEM::PostProcBrokenMeshInMoabBase< EdgeElementForcesAndSourcesCore >, MoFEM::PostProcBrokenMeshInMoabBase< FaceElementForcesAndSourcesCore >, MoFEM::PostProcBrokenMeshInMoabBase< VolumeElementForcesAndSourcesCore >, NeumannForcesSurfaceComplexForLazy::MyTriangleSpatialFE, NonlinearElasticElement::MyVolumeFE, PostProcEdgeOnRefinedMesh, PostProcFaceOnRefinedMesh, PostProcFatPrismOnRefinedMesh, PostProcTemplateVolumeOnRefinedMesh< MoFEM::VolumeElementForcesAndSourcesCore >, Smoother::MyVolumeFE, Smoother::MyVolumeFE, SurfaceSlidingConstrains::MyTriangleFE, and SurfaceSlidingConstrains::MyTriangleFE.
Definition at line 2126 of file ForcesAndSourcesCore.cpp.
|
protectedvirtual |
Reimplemented in MoFEM::EdgeElementForcesAndSourcesCoreOnChildParent, MoFEM::FaceElementForcesAndSourcesCoreOnChildParent, MoFEM::FaceElementForcesAndSourcesCoreOnSide, MoFEM::PostProcBrokenMeshInMoabBase< EdgeElementForcesAndSourcesCore >, MoFEM::PostProcBrokenMeshInMoabBase< FaceElementForcesAndSourcesCore >, MoFEM::PostProcBrokenMeshInMoabBase< VolumeElementForcesAndSourcesCore >, MoFEM::VolumeElementForcesAndSourcesCoreOnContactPrismSide, MoFEM::VolumeElementForcesAndSourcesCoreOnSide, PostProcEdgeOnRefinedMesh, PostProcFaceOnRefinedMesh, and PostProcTemplateVolumeOnRefinedMesh< MoFEM::VolumeElementForcesAndSourcesCore >.
Definition at line 2104 of file ForcesAndSourcesCore.cpp.
|
protectedvirtual |
set user specific integration rule
This function allows for user defined integration rule. The key is to called matrix gaussPts, which is used by other MoFEM procedures. Matrix has number of rows equal to problem dimension plus one, where last index is used to store weight values. Number of columns is equal to number of integration points.
User sets
where
number rows represents local coordinates of integration points in reference element, where last index in row is for integration weight.
Reimplemented in EdgeFE, QuadFE, and TriFE.
Definition at line 2094 of file ForcesAndSourcesCore.cpp.
|
private |
Set the pointer to face element refined.
refine_fe_ptr |
Definition at line 1710 of file ForcesAndSourcesCore.cpp.
|
private |
Set the pointer to face element on the side.
side_fe_ptr |
Definition at line 1704 of file ForcesAndSourcesCore.cpp.
|
friend |
Definition at line 537 of file ForcesAndSourcesCore.hpp.
|
friend |
Definition at line 536 of file ForcesAndSourcesCore.hpp.
|
friend |
Definition at line 535 of file ForcesAndSourcesCore.hpp.
|
friend |
Definition at line 541 of file ForcesAndSourcesCore.hpp.
|
friend |
Definition at line 540 of file ForcesAndSourcesCore.hpp.
|
friend |
Definition at line 482 of file ForcesAndSourcesCore.hpp.
|
friend |
Definition at line 538 of file ForcesAndSourcesCore.hpp.
|
friend |
Definition at line 534 of file ForcesAndSourcesCore.hpp.
|
protected |
coordinated at gauss points
Definition at line 544 of file ForcesAndSourcesCore.hpp.
|
protected |
Definition at line 471 of file ForcesAndSourcesCore.hpp.
|
protected |
Definition at line 472 of file ForcesAndSourcesCore.hpp.
|
protected |
Definition at line 473 of file ForcesAndSourcesCore.hpp.
|
protected |
Definition at line 474 of file ForcesAndSourcesCore.hpp.
|
protected |
Definition at line 470 of file ForcesAndSourcesCore.hpp.
|
protected |
Entity data on element entity rows fields.
Definition at line 461 of file ForcesAndSourcesCore.hpp.
|
protected |
Entity data on element entity columns fields.
Definition at line 468 of file ForcesAndSourcesCore.hpp.
|
protected |
Depending on dimension of elements, stores length, area or volume of element.
Definition at line 545 of file ForcesAndSourcesCore.hpp.
|
private |
Pointer to entity polynomial base.
Definition at line 496 of file ForcesAndSourcesCore.hpp.
MatrixDouble MoFEM::ForcesAndSourcesCore::gaussPts |
Matrix of integration points.
Columns is equal to number of integration points, numver of rows depends on dimension of finite element entity, for example for tetrahedron rows are x,y,z,weight. Last row is integration weight.
FIXME: that should be moved to private class data and acessed only by member function
Definition at line 109 of file ForcesAndSourcesCore.hpp.
RuleHookFun MoFEM::ForcesAndSourcesCore::getRuleHook |
Hook to get rule.
Definition at line 42 of file ForcesAndSourcesCore.hpp.
|
protected |
Last evaluated type of element entity.
Definition at line 489 of file ForcesAndSourcesCore.hpp.
Interface& MoFEM::ForcesAndSourcesCore::mField |
Definition at line 24 of file ForcesAndSourcesCore.hpp.
|
protected |
Vector of finite element users data operators.
Definition at line 480 of file ForcesAndSourcesCore.hpp.
|
private |
GaussHookFun MoFEM::ForcesAndSourcesCore::setRuleHook |
Set function to calculate integration rule.
Definition at line 48 of file ForcesAndSourcesCore.hpp.
|
private |
Element to integrate on the sides.
Definition at line 507 of file ForcesAndSourcesCore.hpp.
|
private |
Pointer to user polynomial base.
Definition at line 501 of file ForcesAndSourcesCore.hpp.