![]() |
v0.13.0 |
#include <src/finite_elements/ForcesAndSourcesCore.hpp>
Public Types | |
enum | OpType { OPROW = 1 << 0 , OPCOL = 1 << 1 , OPROWCOL = 1 << 2 , OPSPACE = 1 << 3 } |
Controls loop over entities on element. More... | |
![]() | |
using | DoWorkLhsHookFunType = boost::function< MoFEMErrorCode(DataOperator *op_ptr, int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)> |
using | DoWorkRhsHookFunType = boost::function< MoFEMErrorCode(DataOperator *op_ptr, int side, EntityType type, EntitiesFieldData::EntData &data)> |
Public Member Functions | |
UserDataOperator (const FieldSpace space, const char type=OPSPACE, const bool symm=true) | |
UserDataOperator (const std::string &field_name, const char type, const bool symm=true) | |
UserDataOperator (const std::string &row_field_name, const std::string &col_field_name, const char type, const bool symm=true) | |
boost::shared_ptr< const NumeredEntFiniteElement > | getNumeredEntFiniteElementPtr () const |
Return raw pointer to NumeredEntFiniteElement. More... | |
EntityHandle | getFEEntityHandle () const |
Return finite element entity handle. More... | |
int | getFEDim () const |
Get dimension of finite element. More... | |
EntityType | getFEType () const |
Get dimension of finite element. More... | |
boost::weak_ptr< SideNumber > | getSideNumberPtr (const int side_number, const EntityType type) |
Get the side number pointer. More... | |
EntityHandle | getSideEntity (const int side_number, const EntityType type) |
Get the side entity. More... | |
int | getNumberOfNodesOnElement () const |
Get the number of nodes on finite element. More... | |
MoFEMErrorCode | getProblemRowIndices (const std::string filed_name, const EntityType type, const int side, VectorInt &indices) const |
Get row indices. More... | |
MoFEMErrorCode | getProblemColIndices (const std::string filed_name, const EntityType type, const int side, VectorInt &indices) const |
Get col indices. More... | |
const FEMethod * | getFEMethod () const |
Return raw pointer to Finite Element Method object. More... | |
int | getOpType () const |
Get operator types. More... | |
void | setOpType (const OpType type) |
Set operator type. More... | |
void | addOpType (const OpType type) |
Add operator type. More... | |
int | getNinTheLoop () const |
get number of finite element in the loop More... | |
int | getLoopSize () const |
get size of elements in the loop More... | |
const std::string & | getFEName () const |
Get name of the element. More... | |
Accessing KSP | |
const PetscData::Switches & | getDataCtx () const |
const KspMethod::KSPContext | getKSPCtx () const |
const SnesMethod::SNESContext | getSNESCtx () const |
const TSMethod::TSContext | getTSCtx () const |
Vec | getKSPf () const |
Mat | getKSPA () const |
Mat | getKSPB () const |
Accessing SNES | |
Vec | getSNESf () const |
Vec | getSNESx () const |
Mat | getSNESA () const |
Mat | getSNESB () const |
Accessing TS | |
Vec | getTSu () const |
Vec | getTSu_t () const |
Vec | getTSu_tt () const |
Vec | getTSf () const |
Mat | getTSA () const |
Mat | getTSB () const |
int | getTSstep () const |
double | getTStime () const |
double | getTSa () const |
double | getTSaa () const |
Base funtions and integration points | |
MatrixDouble & | getGaussPts () |
matrix of integration (Gauss) points for Volume Element More... | |
auto | getFTensor0IntegrationWeight () |
Get integration weights. More... | |
Coordinates and access to internal data | |
MatrixDouble & | getCoordsAtGaussPts () |
Gauss points and weight, matrix (nb. of points x 3) More... | |
auto | getFTensor1CoordsAtGaussPts () |
Get coordinates at integration points assuming linear geometry. More... | |
Measures (area, volume, length, etc.) | |
double | getMeasure () const |
get measure of element More... | |
double & | getMeasure () |
get measure of element More... | |
Loops | |
MoFEMErrorCode | loopSide (const string &fe_name, ForcesAndSourcesCore *side_fe, const size_t dim, const EntityHandle ent_for_side=0, const int verb=QUIET, const LogManager::SeverityLevel sev=Sev::noisy) |
User call this function to loop over elements on the side of face. This function calls finite element with is operator to do calculations. More... | |
MoFEMErrorCode | loopThis (const string &fe_name, ForcesAndSourcesCore *parent_fe, const int verb=QUIET, const LogManager::SeverityLevel sev=Sev::noisy) |
User call this function to loop over parent elements. This function calls finite element with is operator to do calculations. More... | |
MoFEMErrorCode | loopParent (const string &fe_name, ForcesAndSourcesCore *parent_fe, const int verb=QUIET, const LogManager::SeverityLevel sev=Sev::noisy) |
User call this function to loop over parent elements. This function calls finite element with is operator to do calculations. More... | |
MoFEMErrorCode | loopChildren (const string &fe_name, ForcesAndSourcesCore *child_fe, const int verb=QUIET, const LogManager::SeverityLevel sev=Sev::noisy) |
User call this function to loop over parent elements. This function calls finite element with is operator to do calculations. More... | |
![]() | |
DataOperator (const bool symm=true) | |
virtual | ~DataOperator ()=default |
virtual MoFEMErrorCode | doWork (int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data) |
Operator for bi-linear form, usually to calculate values on left hand side. More... | |
virtual MoFEMErrorCode | opLhs (EntitiesFieldData &row_data, EntitiesFieldData &col_data) |
virtual MoFEMErrorCode | doWork (int side, EntityType type, EntitiesFieldData::EntData &data) |
Operator for linear form, usually to calculate values on right hand side. More... | |
virtual MoFEMErrorCode | opRhs (EntitiesFieldData &data, const bool error_if_no_base=false) |
bool | getSymm () const |
Get if operator uses symmetry of DOFs or not. More... | |
void | setSymm () |
set if operator is executed taking in account symmetry More... | |
void | unSetSymm () |
unset if operator is executed for non symmetric problem More... | |
Public Attributes | |
char | opType |
std::string | rowFieldName |
std::string | colFieldName |
FieldSpace | sPace |
![]() | |
DoWorkLhsHookFunType | doWorkLhsHook |
DoWorkRhsHookFunType | doWorkRhsHook |
bool | sYmm |
If true assume that matrix is symmetric structure. More... | |
std::array< bool, MBMAXTYPE > | doEntities |
If true operator is executed for entity. More... | |
bool & | doVertices |
\deprectaed If false skip vertices More... | |
bool & | doEdges |
\deprectaed If false skip edges More... | |
bool & | doQuads |
\deprectaed More... | |
bool & | doTris |
\deprectaed More... | |
bool & | doTets |
\deprectaed More... | |
bool & | doPrisms |
\deprectaed More... | |
Static Public Attributes | |
static const char *const | OpTypeNames [] |
Protected Member Functions | |
virtual MoFEMErrorCode | setPtrFE (ForcesAndSourcesCore *ptr) |
ForcesAndSourcesCore * | getPtrFE () const |
ForcesAndSourcesCore * | getSidePtrFE () const |
ForcesAndSourcesCore * | getRefinePtrFE () const |
Protected Attributes | |
ForcesAndSourcesCore * | ptrFE |
Friends | |
class | ForcesAndSourcesCore |
class | EdgeElementForcesAndSourcesCoreBase |
class | FaceElementForcesAndSourcesCoreBase |
class | ContactPrismElementForcesAndSourcesCore |
Definition at line 553 of file ForcesAndSourcesCore.hpp.
enum MoFEM::ForcesAndSourcesCore::UserDataOperator::OpType |
Controls loop over entities on element.
For typical problem like Bubnov-Galerkin OPROW and OPCOL are the same. In more general case for example for non-square matrices columns and rows could have different numeration and/or different set of fields.
Enumerator | |
---|---|
OPROW | |
OPCOL | |
OPROWCOL | |
OPSPACE |
Definition at line 570 of file ForcesAndSourcesCore.hpp.
ForcesAndSourcesCore::UserDataOperator::UserDataOperator | ( | const FieldSpace | space, |
const char | type = OPSPACE , |
||
const bool | symm = true |
||
) |
This Constructor is used typically when some modification base shape functions on some approx. space is applied. Operator is run for all data on space.
User has no access to field data from this operator.
Definition at line 1835 of file ForcesAndSourcesCore.cpp.
ForcesAndSourcesCore::UserDataOperator::UserDataOperator | ( | const std::string & | field_name, |
const char | type, | ||
const bool | symm = true |
||
) |
Definition at line 1840 of file ForcesAndSourcesCore.cpp.
ForcesAndSourcesCore::UserDataOperator::UserDataOperator | ( | const std::string & | row_field_name, |
const std::string & | col_field_name, | ||
const char | type, | ||
const bool | symm = true |
||
) |
Definition at line 1845 of file ForcesAndSourcesCore.cpp.
Add operator type.
Definition at line 1066 of file ForcesAndSourcesCore.hpp.
MatrixDouble & ForcesAndSourcesCore::UserDataOperator::getCoordsAtGaussPts | ( | ) |
Gauss points and weight, matrix (nb. of points x 3)
Column 0-2 integration points coordinate x, y and z, respectively. At rows are integration points.
Definition at line 1271 of file ForcesAndSourcesCore.hpp.
const PetscData::Switches & ForcesAndSourcesCore::UserDataOperator::getDataCtx | ( | ) | const |
Definition at line 1083 of file ForcesAndSourcesCore.hpp.
int ForcesAndSourcesCore::UserDataOperator::getFEDim | ( | ) | const |
Get dimension of finite element.
Definition at line 1022 of file ForcesAndSourcesCore.hpp.
EntityHandle ForcesAndSourcesCore::UserDataOperator::getFEEntityHandle | ( | ) | const |
Return finite element entity handle.
Definition at line 1018 of file ForcesAndSourcesCore.hpp.
Return raw pointer to Finite Element Method object.
Definition at line 1056 of file ForcesAndSourcesCore.hpp.
const std::string & ForcesAndSourcesCore::UserDataOperator::getFEName | ( | ) | const |
EntityType ForcesAndSourcesCore::UserDataOperator::getFEType | ( | ) | const |
Get dimension of finite element.
Definition at line 1026 of file ForcesAndSourcesCore.hpp.
auto ForcesAndSourcesCore::UserDataOperator::getFTensor0IntegrationWeight | ( | ) |
Get integration weights.
Definition at line 1246 of file ForcesAndSourcesCore.hpp.
auto ForcesAndSourcesCore::UserDataOperator::getFTensor1CoordsAtGaussPts | ( | ) |
Get coordinates at integration points assuming linear geometry.
Definition at line 1275 of file ForcesAndSourcesCore.hpp.
MatrixDouble & ForcesAndSourcesCore::UserDataOperator::getGaussPts | ( | ) |
matrix of integration (Gauss) points for Volume Element
For triangle: columns 0,1 are x,y coordinates respectively and column 2 is a weight value for example getGaussPts()(1,13) returns y coordinate of 13th Gauss point on particular volume element
For tetrahedron: columns 0,1,2 are x,y,z coordinates respectively and column 3 is a weight value for example getGaussPts()(1,13) returns y coordinate of 13th Gauss point on particular volume element
Definition at line 1242 of file ForcesAndSourcesCore.hpp.
Mat ForcesAndSourcesCore::UserDataOperator::getKSPA | ( | ) | const |
Definition at line 1110 of file ForcesAndSourcesCore.hpp.
Mat ForcesAndSourcesCore::UserDataOperator::getKSPB | ( | ) | const |
Definition at line 1118 of file ForcesAndSourcesCore.hpp.
const KspMethod::KSPContext ForcesAndSourcesCore::UserDataOperator::getKSPCtx | ( | ) | const |
Definition at line 1088 of file ForcesAndSourcesCore.hpp.
Vec ForcesAndSourcesCore::UserDataOperator::getKSPf | ( | ) | const |
Definition at line 1102 of file ForcesAndSourcesCore.hpp.
int ForcesAndSourcesCore::UserDataOperator::getLoopSize | ( | ) | const |
get size of elements in the loop
Definition at line 1074 of file ForcesAndSourcesCore.hpp.
double & ForcesAndSourcesCore::UserDataOperator::getMeasure | ( | ) |
get measure of element
Definition at line 1285 of file ForcesAndSourcesCore.hpp.
double ForcesAndSourcesCore::UserDataOperator::getMeasure | ( | ) | const |
get measure of element
Definition at line 1281 of file ForcesAndSourcesCore.hpp.
int ForcesAndSourcesCore::UserDataOperator::getNinTheLoop | ( | ) | const |
get number of finite element in the loop
Definition at line 1070 of file ForcesAndSourcesCore.hpp.
int ForcesAndSourcesCore::UserDataOperator::getNumberOfNodesOnElement | ( | ) | const |
Get the number of nodes on finite element.
Definition at line 1052 of file ForcesAndSourcesCore.hpp.
boost::shared_ptr< const NumeredEntFiniteElement > ForcesAndSourcesCore::UserDataOperator::getNumeredEntFiniteElementPtr | ( | ) | const |
Return raw pointer to NumeredEntFiniteElement.
Definition at line 1014 of file ForcesAndSourcesCore.hpp.
int ForcesAndSourcesCore::UserDataOperator::getOpType | ( | ) | const |
Get operator types.
Definition at line 1060 of file ForcesAndSourcesCore.hpp.
MoFEMErrorCode ForcesAndSourcesCore::UserDataOperator::getProblemColIndices | ( | const std::string | filed_name, |
const EntityType | type, | ||
const int | side, | ||
VectorInt & | indices | ||
) | const |
Get col indices.
Field could be or not declared for this element but is declared for problem
field_name | |
type | entity type |
side | side number, any number if type is MBVERTEX |
NOTE: Using those indices to assemble matrix will result in error if new non-zero values need to be created.
Definition at line 1597 of file ForcesAndSourcesCore.cpp.
MoFEMErrorCode ForcesAndSourcesCore::UserDataOperator::getProblemRowIndices | ( | const std::string | filed_name, |
const EntityType | type, | ||
const int | side, | ||
VectorInt & | indices | ||
) | const |
Get row indices.
Field could be or not declared for this element but is declared for problem
field_name | |
type | entity type |
side | side number, any number if type is MBVERTEX |
NOTE: Using those indices to assemble matrix will result in error if new non-zero values need to be created.
Definition at line 1580 of file ForcesAndSourcesCore.cpp.
|
protected |
Definition at line 1257 of file ForcesAndSourcesCore.hpp.
|
protected |
Definition at line 1267 of file ForcesAndSourcesCore.hpp.
EntityHandle ForcesAndSourcesCore::UserDataOperator::getSideEntity | ( | const int | side_number, |
const EntityType | type | ||
) |
Get the side entity.
side_number | |
type |
Definition at line 1044 of file ForcesAndSourcesCore.hpp.
boost::weak_ptr< SideNumber > ForcesAndSourcesCore::UserDataOperator::getSideNumberPtr | ( | const int | side_number, |
const EntityType | type | ||
) |
Get the side number pointer.
side_number | |
type |
Definition at line 1031 of file ForcesAndSourcesCore.hpp.
|
protected |
Definition at line 1262 of file ForcesAndSourcesCore.hpp.
Mat ForcesAndSourcesCore::UserDataOperator::getSNESA | ( | ) | const |
Definition at line 1142 of file ForcesAndSourcesCore.hpp.
Mat ForcesAndSourcesCore::UserDataOperator::getSNESB | ( | ) | const |
Definition at line 1150 of file ForcesAndSourcesCore.hpp.
const SnesMethod::SNESContext ForcesAndSourcesCore::UserDataOperator::getSNESCtx | ( | ) | const |
Definition at line 1093 of file ForcesAndSourcesCore.hpp.
Vec ForcesAndSourcesCore::UserDataOperator::getSNESf | ( | ) | const |
Definition at line 1126 of file ForcesAndSourcesCore.hpp.
Vec ForcesAndSourcesCore::UserDataOperator::getSNESx | ( | ) | const |
Definition at line 1134 of file ForcesAndSourcesCore.hpp.
Mat ForcesAndSourcesCore::UserDataOperator::getTSA | ( | ) | const |
Definition at line 1190 of file ForcesAndSourcesCore.hpp.
double ForcesAndSourcesCore::UserDataOperator::getTSa | ( | ) | const |
Definition at line 1222 of file ForcesAndSourcesCore.hpp.
double ForcesAndSourcesCore::UserDataOperator::getTSaa | ( | ) | const |
Definition at line 1232 of file ForcesAndSourcesCore.hpp.
Mat ForcesAndSourcesCore::UserDataOperator::getTSB | ( | ) | const |
Definition at line 1198 of file ForcesAndSourcesCore.hpp.
const TSMethod::TSContext ForcesAndSourcesCore::UserDataOperator::getTSCtx | ( | ) | const |
Definition at line 1098 of file ForcesAndSourcesCore.hpp.
Vec ForcesAndSourcesCore::UserDataOperator::getTSf | ( | ) | const |
Definition at line 1182 of file ForcesAndSourcesCore.hpp.
int ForcesAndSourcesCore::UserDataOperator::getTSstep | ( | ) | const |
Definition at line 1206 of file ForcesAndSourcesCore.hpp.
double ForcesAndSourcesCore::UserDataOperator::getTStime | ( | ) | const |
Definition at line 1214 of file ForcesAndSourcesCore.hpp.
Vec ForcesAndSourcesCore::UserDataOperator::getTSu | ( | ) | const |
Definition at line 1158 of file ForcesAndSourcesCore.hpp.
Vec ForcesAndSourcesCore::UserDataOperator::getTSu_t | ( | ) | const |
Definition at line 1166 of file ForcesAndSourcesCore.hpp.
Vec ForcesAndSourcesCore::UserDataOperator::getTSu_tt | ( | ) | const |
Definition at line 1174 of file ForcesAndSourcesCore.hpp.
MoFEMErrorCode ForcesAndSourcesCore::UserDataOperator::loopChildren | ( | const string & | fe_name, |
ForcesAndSourcesCore * | child_fe, | ||
const int | verb = QUIET , |
||
const LogManager::SeverityLevel | sev = Sev::noisy |
||
) |
User call this function to loop over parent elements. This function calls finite element with is operator to do calculations.
fe_name | |
child_fe | |
verb | |
sev |
Definition at line 1745 of file ForcesAndSourcesCore.cpp.
MoFEMErrorCode ForcesAndSourcesCore::UserDataOperator::loopParent | ( | const string & | fe_name, |
ForcesAndSourcesCore * | parent_fe, | ||
const int | verb = QUIET , |
||
const LogManager::SeverityLevel | sev = Sev::noisy |
||
) |
User call this function to loop over parent elements. This function calls finite element with is operator to do calculations.
fe_name | |
parent_fe | |
verb | |
sev |
Definition at line 1705 of file ForcesAndSourcesCore.cpp.
MoFEMErrorCode ForcesAndSourcesCore::UserDataOperator::loopSide | ( | const string & | fe_name, |
ForcesAndSourcesCore * | side_fe, | ||
const size_t | dim, | ||
const EntityHandle | ent_for_side = 0 , |
||
const int | verb = QUIET , |
||
const LogManager::SeverityLevel | sev = Sev::noisy |
||
) |
User call this function to loop over elements on the side of face. This function calls finite element with is operator to do calculations.
fe_name | name of the side element |
side_fe | pointer to the side element instance |
dim | dimension the of side element |
ent_for_side | entity handle for which adjacent volume or face will be accessed |
verb | |
sev |
Definition at line 1628 of file ForcesAndSourcesCore.cpp.
MoFEMErrorCode ForcesAndSourcesCore::UserDataOperator::loopThis | ( | const string & | fe_name, |
ForcesAndSourcesCore * | parent_fe, | ||
const int | verb = QUIET , |
||
const LogManager::SeverityLevel | sev = Sev::noisy |
||
) |
User call this function to loop over parent elements. This function calls finite element with is operator to do calculations.
fe_name | |
parent_fe | |
verb | |
sev |
Definition at line 1674 of file ForcesAndSourcesCore.cpp.
Set operator type.
Operator | type |
Definition at line 1062 of file ForcesAndSourcesCore.hpp.
|
protectedvirtual |
Reimplemented in MoFEM::VolumeElementForcesAndSourcesCoreOnSideBase::UserDataOperator, MoFEM::VolumeElementForcesAndSourcesCoreBase::UserDataOperator, MoFEM::VertexElementForcesAndSourcesCore::UserDataOperator, MoFEM::FlatPrismElementForcesAndSourcesCore::UserDataOperator, MoFEM::FatPrismElementForcesAndSourcesCore::UserDataOperator, MoFEM::FaceElementForcesAndSourcesCoreOnSideBase::UserDataOperator, MoFEM::FaceElementForcesAndSourcesCoreBase::UserDataOperator, and MoFEM::EdgeElementForcesAndSourcesCoreBase::UserDataOperator.
Definition at line 1884 of file ForcesAndSourcesCore.cpp.
|
friend |
Definition at line 1007 of file ForcesAndSourcesCore.hpp.
|
friend |
Definition at line 1005 of file ForcesAndSourcesCore.hpp.
|
friend |
Definition at line 1006 of file ForcesAndSourcesCore.hpp.
|
friend |
Definition at line 1004 of file ForcesAndSourcesCore.hpp.
std::string MoFEM::ForcesAndSourcesCore::UserDataOperator::colFieldName |
Definition at line 581 of file ForcesAndSourcesCore.hpp.
char MoFEM::ForcesAndSourcesCore::UserDataOperator::opType |
Definition at line 579 of file ForcesAndSourcesCore.hpp.
Definition at line 577 of file ForcesAndSourcesCore.hpp.
|
protected |
Definition at line 993 of file ForcesAndSourcesCore.hpp.
std::string MoFEM::ForcesAndSourcesCore::UserDataOperator::rowFieldName |
Definition at line 580 of file ForcesAndSourcesCore.hpp.
FieldSpace MoFEM::ForcesAndSourcesCore::UserDataOperator::sPace |
Definition at line 582 of file ForcesAndSourcesCore.hpp.