![]() |
v0.15.0 |
Operator for fat prism element updating integration weights in the volume. More...
#include "src/finite_elements/UserDataOperators.hpp"
Public Member Functions | |
OpMultiplyDeterminantOfJacobianAndWeightsForFatPrisms () | |
MoFEMErrorCode | doWork (int side, EntityType type, EntitiesFieldData::EntData &data) |
Operator for linear form, usually to calculate values on right hand side. | |
![]() | |
double | getArea (const int dd) |
get face aRea | |
double | getAreaF3 () |
double | getAreaF4 () |
VectorDouble & | getNormal () |
get triangle normal | |
VectorAdaptor | getNormalF3 () |
VectorAdaptor | getNormalF4 () |
MatrixDouble & | getGaussPts () |
get Gauss pts. in the prism | |
MatrixDouble & | getGaussPtsTrianglesOnly () |
get Gauss pts. on triangles | |
MatrixDouble & | getGaussPtsThroughThickness () |
get Gauss pts. through thickness | |
MatrixDouble & | getCoordsAtGaussPts () |
get coordinates at Gauss pts. | |
MatrixDouble & | getCoordsAtGaussPtsTrianglesOnly () |
get coordinates at Gauss pts. | |
MatrixDouble & | getHOCoordsAtGaussPtsF3 () |
coordinate at Gauss points on face 3 (if hierarchical approximation of element geometry) | |
MatrixDouble & | getHOCoordsAtGaussPtsF4 () |
coordinate at Gauss points on face 4 (if hierarchical approximation of element geometry) | |
MatrixDouble & | getNormalsAtGaussPtsF3 () |
if higher order geometry return normals at face F3 at Gauss pts. | |
MatrixDouble & | getNormalsAtGaussPtsF4 () |
if higher order geometry return normals at face F4 at Gauss pts. | |
ublas::matrix_row< MatrixDouble > | getNormalsAtGaussPtsF3 (const int gg) |
if higher order geometry return normals at Gauss pts. | |
ublas::matrix_row< MatrixDouble > | getNormalsAtGaussPtsF4 (const int gg) |
if higher order geometry return normals at Gauss pts. | |
MatrixDouble & | getTangent1AtGaussPtF3 () |
if higher order geometry return tangent vector to triangle at Gauss pts. | |
MatrixDouble & | getTangent2AtGaussPtF3 () |
if higher order geometry return tangent vector to triangle at Gauss pts. | |
MatrixDouble & | getTangent1AtGaussPtF4 () |
if higher order geometry return tangent vector to triangle at Gauss pts. | |
MatrixDouble & | getTangent2AtGaussPtF4 () |
if higher order geometry return tangent vector to triangle at Gauss pts. | |
EntitiesFieldData & | getTrianglesOnlyDataStructure () |
EntitiesFieldData & | getTroughThicknessDataStructure () |
const FatPrismElementForcesAndSourcesCore * | getPrismFE () |
return pointer to fat prism finite element | |
![]() | |
int | getNumNodes () |
get element number of nodes | |
const EntityHandle * | getConn () |
get element connectivity | |
double | getVolume () const |
element volume (linear geometry) | |
double & | getVolume () |
element volume (linear geometry) | |
FTensor::Tensor2< double *, 3, 3 > & | getJac () |
get element Jacobian | |
FTensor::Tensor2< double *, 3, 3 > & | getInvJac () |
get element inverse Jacobian | |
VectorDouble & | getCoords () |
nodal coordinates | |
VolumeElementForcesAndSourcesCore * | getVolumeFE () const |
return pointer to Generic Volume Finite Element object | |
![]() | |
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. | |
EntityHandle | getFEEntityHandle () const |
Return finite element entity handle. | |
int | getFEDim () const |
Get dimension of finite element. | |
EntityType | getFEType () const |
Get dimension of finite element. | |
boost::weak_ptr< SideNumber > | getSideNumberPtr (const int side_number, const EntityType type) |
Get the side number pointer. | |
EntityHandle | getSideEntity (const int side_number, const EntityType type) |
Get the side entity. | |
int | getNumberOfNodesOnElement () const |
Get the number of nodes on finite element. | |
MoFEMErrorCode | getProblemRowIndices (const std::string filed_name, const EntityType type, const int side, VectorInt &indices) const |
Get row indices. | |
MoFEMErrorCode | getProblemColIndices (const std::string filed_name, const EntityType type, const int side, VectorInt &indices) const |
Get col indices. | |
const FEMethod * | getFEMethod () const |
Return raw pointer to Finite Element Method object. | |
int | getOpType () const |
Get operator types. | |
void | setOpType (const OpType type) |
Set operator type. | |
void | addOpType (const OpType type) |
Add operator type. | |
int | getNinTheLoop () const |
get number of finite element in the loop | |
int | getLoopSize () const |
get size of elements in the loop | |
std::string | getFEName () const |
Get name of the element. | |
ForcesAndSourcesCore * | getPtrFE () const |
ForcesAndSourcesCore * | getSidePtrFE () const |
ForcesAndSourcesCore * | getRefinePtrFE () const |
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 |
Vec | getSNESf () const |
Vec | getSNESx () const |
Mat | getSNESA () const |
Mat | getSNESB () const |
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 | getTStimeStep () const |
double | getTSa () const |
double | getTSaa () const |
MatrixDouble & | getGaussPts () |
matrix of integration (Gauss) points for Volume Element | |
auto | getFTensor0IntegrationWeight () |
Get integration weights. | |
MatrixDouble & | getCoordsAtGaussPts () |
Gauss points and weight, matrix (nb. of points x 3) | |
auto | getFTensor1CoordsAtGaussPts () |
Get coordinates at integration points assuming linear geometry. | |
double | getMeasure () const |
get measure of element | |
double & | getMeasure () |
get measure of element | |
MoFEMErrorCode | loopSide (const string &fe_name, ForcesAndSourcesCore *side_fe, const size_t dim, const EntityHandle ent_for_side=0, boost::shared_ptr< Range > fe_range=nullptr, const int verb=QUIET, const LogManager::SeverityLevel sev=Sev::noisy, AdjCache *adj_cache=nullptr) |
User calls this function to loop over elements on the side of face. This function calls finite element with its operator to do calculations. | |
MoFEMErrorCode | loopThis (const string &fe_name, ForcesAndSourcesCore *this_fe, const int verb=QUIET, const LogManager::SeverityLevel sev=Sev::noisy) |
User calls this function to loop over the same element using a different set of integration points. This function calls finite element with its operator to do calculations. | |
MoFEMErrorCode | loopParent (const string &fe_name, ForcesAndSourcesCore *parent_fe, const int verb=QUIET, const LogManager::SeverityLevel sev=Sev::noisy) |
User calls this function to loop over parent elements. This function calls finite element with its operator to do calculations. | |
MoFEMErrorCode | loopChildren (const string &fe_name, ForcesAndSourcesCore *child_fe, const int verb=QUIET, const LogManager::SeverityLevel sev=Sev::noisy) |
User calls this function to loop over parent elements. This function calls finite element with its operator to do calculations. | |
MoFEMErrorCode | loopRange (const string &fe_name, ForcesAndSourcesCore *range_fe, boost::shared_ptr< Range > fe_range, const int verb=QUIET, const LogManager::SeverityLevel sev=Sev::noisy) |
Iterate over range of elements. | |
![]() | |
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. | |
virtual MoFEMErrorCode | opLhs (EntitiesFieldData &row_data, EntitiesFieldData &col_data) |
virtual MoFEMErrorCode | opRhs (EntitiesFieldData &data, const bool error_if_no_base=false) |
bool | getSymm () const |
Get if operator uses symmetry of DOFs or not. | |
void | setSymm () |
set if operator is executed taking in account symmetry | |
void | unSetSymm () |
unset if operator is executed for non symmetric problem | |
Additional Inherited Members | |
![]() | |
enum | OpType { OPROW = 1 << 0 , OPCOL = 1 << 1 , OPROWCOL = 1 << 2 , OPSPACE = 1 << 3 , OPLAST = 1 << 3 } |
Controls loop over entities on element. More... | |
using | AdjCache |
![]() | |
using | DoWorkLhsHookFunType |
using | DoWorkRhsHookFunType |
![]() | |
char | opType |
std::string | rowFieldName |
std::string | colFieldName |
FieldSpace | sPace |
![]() | |
DoWorkLhsHookFunType | doWorkLhsHook |
DoWorkRhsHookFunType | doWorkRhsHook |
bool | sYmm |
If true assume that matrix is symmetric structure. | |
std::array< bool, MBMAXTYPE > | doEntities |
If true operator is executed for entity. | |
bool & | doVertices |
\deprectaed If false skip vertices | |
bool & | doEdges |
\deprectaed If false skip edges | |
bool & | doQuads |
\deprectaed | |
bool & | doTris |
\deprectaed | |
bool & | doTets |
\deprectaed | |
bool & | doPrisms |
\deprectaed | |
![]() | |
static const char *const | OpTypeNames [] |
![]() | |
MoFEMErrorCode | setPtrFE (ForcesAndSourcesCore *ptr) |
![]() | |
MoFEMErrorCode | setPtrFE (ForcesAndSourcesCore *ptr) |
![]() | |
![]() | |
ForcesAndSourcesCore * | ptrFE |
Operator for fat prism element updating integration weights in the volume.
Jacobian on the distorted element is nonconstant. This operator updates integration weight on prism to take into account nonconstat jacobian.
\[ W_i = w_i \left( \frac{1}{2V} \left\| \frac{\partial \mathbf{x}}{\partial \pmb\xi} \right\| \right) \]
where \(w_i\) is integration weight at integration point \(i\), \(\mathbf{x}\) is physical coordinate, and \(\pmb\xi\) is reference element coordinate.
Definition at line 3599 of file UserDataOperators.hpp.
|
inline |
Definition at line 3602 of file UserDataOperators.hpp.
|
virtual |
Operator for linear form, usually to calculate values on right hand side.
Reimplemented from MoFEM::DataOperator.
Definition at line 583 of file UserDataOperators.cpp.