v0.14.0 |
Public Member Functions | |
QuadFE (MoFEM::Interface &m_field, std::array< Range, 3 > &edges_blocks, EntityHandle prims) | |
int | getRule (int order_row, int order_col, int order_data) |
another variant of getRule More... | |
MoFEMErrorCode | setGaussPts (int order_row, int order_col, int order_data) |
set user specific integration rule More... | |
Public Member Functions inherited from MoFEM::FaceElementForcesAndSourcesCore | |
MoFEMErrorCode | operator() () |
function is run for every finite element More... | |
FaceElementForcesAndSourcesCore (Interface &m_field) | |
Public Member Functions inherited from MoFEM::ForcesAndSourcesCore | |
ForcesAndSourcesCore (Interface &m_field) | |
boost::ptr_deque< 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... | |
auto & | getEntData (const FieldSpace space, const EntityType type, const int side) |
Get the entity data. More... | |
auto & | getDataOnElementBySpaceArray () |
Get data on entities and space. More... | |
auto & | getDerivedDataOnElementBySpaceArray () |
Get derived data on entities and space. More... | |
Public Member Functions inherited from MoFEM::FEMethod | |
MoFEMErrorCode | query_interface (boost::typeindex::type_index type_index, UnknownInterface **iface) const |
FEMethod ()=default | |
auto | getFEName () const |
get finite element name More... | |
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) |
Public Member Functions inherited from MoFEM::BasicMethod | |
BasicMethod () | |
virtual | ~BasicMethod ()=default |
int | getNinTheLoop () const |
get number of evaluated element in the loop More... | |
int | getLoopSize () const |
get loop size More... | |
auto | getLoHiFERank () const |
Get lo and hi processor rank of iterated entities. More... | |
auto | getLoFERank () const |
Get upper rank in loop for iterating elements. More... | |
auto | getHiFERank () const |
Get upper rank in loop for iterating elements. 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... | |
boost::weak_ptr< CacheTuple > | getCacheWeakPtr () const |
Get the cache weak ptr object. More... | |
Public Member Functions inherited from MoFEM::KspMethod | |
KspMethod () | |
virtual | ~KspMethod ()=default |
MoFEMErrorCode | copyKsp (const KspMethod &ksp) |
copy data form another method More... | |
Public Member Functions inherited from MoFEM::PetscData | |
PetscData () | |
virtual | ~PetscData ()=default |
MoFEMErrorCode | copyPetscData (const PetscData &petsc_data) |
Public Member Functions inherited from MoFEM::UnknownInterface | |
template<class IFACE > | |
MoFEMErrorCode | registerInterface (bool error_if_registration_failed=true) |
Register interface. More... | |
template<class IFACE > | |
MoFEMErrorCode | getInterface (IFACE *&iface) const |
Get interface reference 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 |
Public Member Functions inherited from MoFEM::SnesMethod | |
SnesMethod () | |
virtual | ~SnesMethod ()=default |
MoFEMErrorCode | copySnes (const SnesMethod &snes) |
Copy snes data. More... | |
Public Member Functions inherited from MoFEM::TSMethod | |
TSMethod () | |
virtual | ~TSMethod ()=default |
MoFEMErrorCode | copyTs (const TSMethod &ts) |
Copy TS solver data. More... | |
Private Attributes | |
std::array< Range, 3 > & | edgeBlocks |
EntityHandle | prism |
Additional Inherited Members | |
Public Types inherited from MoFEM::ForcesAndSourcesCore | |
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 |
Public Types inherited from MoFEM::KspMethod | |
enum | KSPContext { CTX_SETFUNCTION, CTX_OPERATORS, CTX_KSPNONE } |
pass information about context of KSP/DM for with finite element is computed More... | |
Public Types inherited from MoFEM::PetscData | |
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 > |
Public Types inherited from MoFEM::SnesMethod | |
enum | SNESContext { CTX_SNESSETFUNCTION, CTX_SNESSETJACOBIAN, CTX_SNESNONE } |
Public Types inherited from MoFEM::TSMethod | |
enum | TSContext { CTX_TSSETRHSFUNCTION, CTX_TSSETRHSJACOBIAN, CTX_TSSETIFUNCTION, CTX_TSSETIJACOBIAN, CTX_TSTSMONITORSET, CTX_TSNONE } |
Static Public Member Functions inherited from MoFEM::UnknownInterface | |
static MoFEMErrorCode | getLibVersion (Version &version) |
Get library version. More... | |
static MoFEMErrorCode | getFileVersion (moab::Interface &moab, Version &version) |
Get database major version. More... | |
static MoFEMErrorCode | setFileVersion (moab::Interface &moab, Version version=Version(MoFEM_VERSION_MAJOR, MoFEM_VERSION_MINOR, MoFEM_VERSION_BUILD)) |
Get database major version. More... | |
static MoFEMErrorCode | getInterfaceVersion (Version &version) |
Get database major version. More... | |
Public Attributes inherited from MoFEM::FaceElementForcesAndSourcesCore | |
std::string | meshPositionsFieldName |
Public Attributes inherited from MoFEM::ForcesAndSourcesCore | |
Interface & | mField |
RuleHookFun | getRuleHook |
Hook to get rule. More... | |
GaussHookFun | setRuleHook |
Set function to calculate integration rule. More... | |
MatrixDouble | gaussPts |
Matrix of integration points. More... | |
Public Attributes inherited from MoFEM::FEMethod | |
std::string | feName |
Name of finite element. More... | |
boost::shared_ptr< const NumeredEntFiniteElement > | numeredEntFiniteElementPtr |
boost::function< bool(FEMethod *fe_method_ptr)> | exeTestHook |
Tet if element to skip element. More... | |
Public Attributes inherited from MoFEM::BasicMethod | |
int | nInTheLoop |
number currently of processed method More... | |
int | loopSize |
local number oe methods to process More... | |
std::pair< int, int > | loHiFERank |
Llo and hi processor rank of iterated entities. 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 |
boost::weak_ptr< CacheTuple > | cacheWeakPtr |
Public Attributes inherited from MoFEM::KspMethod | |
KSPContext | ksp_ctx |
Context. More... | |
KSP | ksp |
KSP solver. More... | |
Vec & | ksp_f |
Mat & | ksp_A |
Mat & | ksp_B |
Public Attributes inherited from MoFEM::PetscData | |
Switches | data_ctx |
Vec | f |
Mat | A |
Mat | B |
Vec | x |
Vec | x_t |
Vec | x_tt |
Public Attributes inherited from MoFEM::SnesMethod | |
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... | |
Public Attributes inherited from MoFEM::TSMethod | |
TS | ts |
time solver More... | |
TSContext | ts_ctx |
PetscInt | ts_step |
time step number 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... | |
PetscReal | ts_dt |
time step size 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 Public Attributes inherited from MoFEM::PetscData | |
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) |
Protected Member Functions inherited from MoFEM::FaceElementForcesAndSourcesCore | |
virtual MoFEMErrorCode | calculateAreaAndNormalAtIntegrationPts () |
Calculate element area and normal of the face at integration points. More... | |
virtual MoFEMErrorCode | calculateAreaAndNormal () |
Calculate element area and normal of the face. More... | |
virtual MoFEMErrorCode | setIntegrationPts () |
Set integration points. More... | |
virtual MoFEMErrorCode | getSpaceBaseAndOrderOnElement () |
Determine approximation space and order of base functions. More... | |
virtual MoFEMErrorCode | calculateCoordinatesAtGaussPts () |
Calculate coordinate at integration points. More... | |
Protected Member Functions inherited from MoFEM::ForcesAndSourcesCore | |
MoFEMErrorCode | getEntitySense (const EntityType type, boost::ptr_vector< EntitiesFieldData::EntData > &data) const |
get sense (orientation) of entity More... | |
MoFEMErrorCode | getEntityDataOrder (const EntityType type, const FieldSpace space, boost::ptr_vector< EntitiesFieldData::EntData > &data) const |
Get the entity data order. More... | |
template<EntityType type> | |
MoFEMErrorCode | getEntitySense (EntitiesFieldData &data) const |
Get the entity sense (orientation) More... | |
template<EntityType type> | |
MoFEMErrorCode | getEntityDataOrder (EntitiesFieldData &data, const FieldSpace space) const |
Get the entity data order for given space. More... | |
MoFEMErrorCode | getFaceNodes (EntitiesFieldData &data) const |
Get nodes on faces. More... | |
MoFEMErrorCode | getSpacesAndBaseOnEntities (EntitiesFieldData &data) const |
Get field approximation space and base on entities. 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 (EntityType type) |
Create a entity data on element object. More... | |
MoFEMErrorCode | loopOverOperators () |
Iterate user data operators. More... | |
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 More... | |
MoFEMErrorCode | getRowNodesIndices (EntitiesFieldData &data, const int bit_number) const |
get row node indices from FENumeredDofEntity_multiIndex More... | |
MoFEMErrorCode | getColNodesIndices (EntitiesFieldData &data, const int bit_number) const |
get col node indices from FENumeredDofEntity_multiIndex More... | |
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 More... | |
MoFEMErrorCode | getNoFieldRowIndices (EntitiesFieldData &data, const int bit_number) const |
get col NoField indices More... | |
MoFEMErrorCode | getNoFieldColIndices (EntitiesFieldData &data, const int bit_number) const |
get col NoField indices More... | |
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. More... | |
MoFEMErrorCode | getNoFieldFieldData (EntitiesFieldData &data, const int bit_number) const |
MoFEMErrorCode | getNodesFieldData (EntitiesFieldData &data, const int bit_number) const |
Get data on nodes. More... | |
MoFEMErrorCode | getEntityFieldData (EntitiesFieldData &data, const int bit_number, 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) |
Protected Attributes inherited from MoFEM::FaceElementForcesAndSourcesCore | |
double & | aRea |
int | num_nodes |
const EntityHandle * | conn |
VectorDouble | nOrmal |
VectorDouble | tangentOne |
VectorDouble | tangentTwo |
VectorDouble | coords |
MatrixDouble | normalsAtGaussPts |
MatrixDouble | tangentOneAtGaussPts |
MatrixDouble | tangentTwoAtGaussPts |
Protected Attributes inherited from MoFEM::ForcesAndSourcesCore | |
const std::array< boost::shared_ptr< EntitiesFieldData >, LASTSPACE > | dataOnElement |
Entity data on element entity rows fields. More... | |
const std::array< boost::shared_ptr< EntitiesFieldData >, LASTSPACE > | derivedDataOnElement |
Entity data on element entity columns fields. More... | |
EntitiesFieldData & | dataNoField |
EntitiesFieldData & | dataH1 |
EntitiesFieldData & | dataHcurl |
EntitiesFieldData & | dataHdiv |
EntitiesFieldData & | dataL2 |
boost::ptr_deque< UserDataOperator > | opPtrVector |
Vector of finite element users data operators. More... | |
EntityType | lastEvaluatedElementEntityType |
Last evaluated type of element entity. More... | |
MatrixDouble | coordsAtGaussPts |
coordinated at gauss points More... | |
double | elementMeasure |
Definition at line 105 of file prism_elements_from_surface.cpp.
QuadFE::QuadFE | ( | MoFEM::Interface & | m_field, |
std::array< Range, 3 > & | edges_blocks, | ||
EntityHandle | prims | ||
) |
Definition at line 486 of file prism_elements_from_surface.cpp.
|
virtual |
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 from MoFEM::ForcesAndSourcesCore.
Definition at line 491 of file prism_elements_from_surface.cpp.
|
virtual |
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 from MoFEM::ForcesAndSourcesCore.
Definition at line 493 of file prism_elements_from_surface.cpp.
|
private |
Definition at line 115 of file prism_elements_from_surface.cpp.
|
private |
Definition at line 116 of file prism_elements_from_surface.cpp.