v0.14.0 |
Base class for LHS-operators for pressure element (material configuration) More...
#include <users_modules/basic_finite_elements/src/SpringElement.hpp>
Public Member Functions | |
virtual MoFEMErrorCode | doWork (int row_side, int col_side, EntityType row_type, EntityType col_type, EntData &row_data, EntData &col_data) |
Operator for bi-linear form, usually to calculate values on left hand side. More... | |
virtual MoFEMErrorCode | iNtegrate (EntData &row_data, EntData &col_data) |
MoFEMErrorCode | aSsemble (EntData &row_data, EntData &col_data) |
OpSpringALEMaterialLhs (const string field_name_1, const string field_name_2, boost::shared_ptr< DataAtIntegrationPtsSprings > data_at_spring_pts, boost::shared_ptr< VolumeElementForcesAndSourcesCoreOnSide > side_fe, std::string &side_fe_name) | |
Public Member Functions inherited from MoFEM::FaceElementForcesAndSourcesCore::UserDataOperator | |
double | getArea () |
get area of face More... | |
VectorDouble & | getNormal () |
get triangle normal More... | |
VectorDouble & | getTangent1 () |
get triangle tangent 1 More... | |
VectorDouble & | getTangent2 () |
get triangle tangent 2 More... | |
auto | getFTensor1Normal () |
get normal as tensor More... | |
auto | getFTensor1Tangent1 () |
get tangentOne as tensor More... | |
auto | getFTensor1Tangent2 () |
get tangentTwo as tensor More... | |
int | getNumNodes () |
get element number of nodes More... | |
const EntityHandle * | getConn () |
get element connectivity More... | |
VectorDouble & | getCoords () |
get triangle coordinates More... | |
auto | getFTensor1Coords () |
get get coords at gauss points More... | |
MatrixDouble & | getNormalsAtGaussPts () |
if higher order geometry return normals at Gauss pts. More... | |
ublas::matrix_row< MatrixDouble > | getNormalsAtGaussPts (const int gg) |
if higher order geometry return normals at Gauss pts. More... | |
MatrixDouble & | getTangent1AtGaussPts () |
if higher order geometry return tangent vector to triangle at Gauss pts. More... | |
MatrixDouble & | getTangent2AtGaussPts () |
if higher order geometry return tangent vector to triangle at Gauss pts. More... | |
auto | getFTensor1NormalsAtGaussPts () |
get normal at integration points More... | |
auto | getFTensor1Tangent1AtGaussPts () |
get tangent 1 at integration points More... | |
auto | getFTensor1Tangent2AtGaussPts () |
get tangent 2 at integration points More... | |
FaceElementForcesAndSourcesCore * | getFaceFE () |
return pointer to Generic Triangle Finite Element object More... | |
MoFEMErrorCode | loopSideVolumes (const string fe_name, VolumeElementForcesAndSourcesCoreOnSide &fe_method) |
Public Member Functions inherited from MoFEM::ForcesAndSourcesCore::UserDataOperator | |
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... | |
std::string | getFEName () const |
Get name of the element. More... | |
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 More... | |
auto | getFTensor0IntegrationWeight () |
Get integration weights. More... | |
MatrixDouble & | getCoordsAtGaussPts () |
Gauss points and weight, matrix (nb. of points x 3) More... | |
auto | getFTensor1CoordsAtGaussPts () |
Get coordinates at integration points assuming linear geometry. More... | |
double | getMeasure () const |
get measure of element More... | |
double & | getMeasure () |
get measure of element More... | |
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, 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. More... | |
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. More... | |
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. More... | |
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. More... | |
Public Member Functions inherited from MoFEM::DataOperator | |
DataOperator (const bool symm=true) | |
virtual | ~DataOperator ()=default |
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 | |
boost::shared_ptr< DataAtIntegrationPtsSprings > | dataAtSpringPts |
boost::shared_ptr< VolumeElementForcesAndSourcesCoreOnSide > | sideFe |
std::string | sideFeName |
MatrixDouble | NN |
VectorInt | rowIndices |
VectorInt | colIndices |
int | row_nb_dofs |
int | col_nb_dofs |
int | nb_gauss_pts |
int | nb_base_fun_row |
int | nb_base_fun_col |
bool | diagonal_block |
Public Attributes inherited from MoFEM::ForcesAndSourcesCore::UserDataOperator | |
char | opType |
std::string | rowFieldName |
std::string | colFieldName |
FieldSpace | sPace |
Public Attributes inherited from MoFEM::DataOperator | |
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... | |
Additional Inherited Members | |
Public Types inherited from MoFEM::ForcesAndSourcesCore::UserDataOperator | |
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 = std::map< EntityHandle, std::vector< boost::weak_ptr< NumeredEntFiniteElement > >> |
Public Types inherited from MoFEM::DataOperator | |
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)> |
Static Public Attributes inherited from MoFEM::ForcesAndSourcesCore::UserDataOperator | |
static const char *const | OpTypeNames [] |
Protected Attributes inherited from MoFEM::ForcesAndSourcesCore::UserDataOperator | |
ForcesAndSourcesCore * | ptrFE |
Base class for LHS-operators for pressure element (material configuration)
Linearisation of the material component with respect to spatial and material coordinates consists of three parts, computed by operators working on the face and on the side volume:
\[ \textrm{D} \delta W^\text{material}_p(\mathbf{x}, \mathbf{X}, \delta\mathbf{x}) [\Delta\mathbf{x}, \Delta\mathbf{X}] = \textrm{D} \delta W^\text{(face)}_p(\mathbf{x}, \mathbf{X}, \delta\mathbf{x}) [\Delta\mathbf{X}] + \textrm{D} \delta W^\text{(side volume)}_p(\mathbf{x}, \mathbf{X}, \delta\mathbf{x}) [\Delta\mathbf{x}] + \textrm{D} \delta W^\text{(side volume)}_p (\mathbf{x}, \mathbf{X}, \delta\mathbf{x}) [\Delta\mathbf{X}] \]
LHS-operator (material configuration) on for spring element on faces
This is base struct for integrating and assembling derivatives of virtual work of springs on material positions contributing to configurational changes
Definition at line 463 of file SpringElement.hpp.
|
inline |
Definition at line 496 of file SpringElement.hpp.
MoFEMErrorCode MetaSpringBC::OpSpringALEMaterialLhs::aSsemble | ( | EntData & | row_data, |
EntData & | col_data | ||
) |
Definition at line 543 of file SpringElement.cpp.
|
inlinevirtual |
Operator for bi-linear form, usually to calculate values on left hand side.
Reimplemented from MoFEM::DataOperator.
Reimplemented in MetaSpringBC::OpSpringALEMaterialLhs_dX_dX, and MetaSpringBC::OpSpringALEMaterialLhs_dX_dx.
Definition at line 482 of file SpringElement.hpp.
|
inlinevirtual |
Reimplemented in MetaSpringBC::OpSpringALEMaterialLhs_dX_dX.
Definition at line 489 of file SpringElement.hpp.
int MetaSpringBC::OpSpringALEMaterialLhs::col_nb_dofs |
Definition at line 474 of file SpringElement.hpp.
VectorInt MetaSpringBC::OpSpringALEMaterialLhs::colIndices |
Definition at line 471 of file SpringElement.hpp.
boost::shared_ptr<DataAtIntegrationPtsSprings> MetaSpringBC::OpSpringALEMaterialLhs::dataAtSpringPts |
Definition at line 465 of file SpringElement.hpp.
bool MetaSpringBC::OpSpringALEMaterialLhs::diagonal_block |
Definition at line 480 of file SpringElement.hpp.
int MetaSpringBC::OpSpringALEMaterialLhs::nb_base_fun_col |
Definition at line 478 of file SpringElement.hpp.
int MetaSpringBC::OpSpringALEMaterialLhs::nb_base_fun_row |
Definition at line 477 of file SpringElement.hpp.
int MetaSpringBC::OpSpringALEMaterialLhs::nb_gauss_pts |
Definition at line 475 of file SpringElement.hpp.
MatrixDouble MetaSpringBC::OpSpringALEMaterialLhs::NN |
Definition at line 469 of file SpringElement.hpp.
int MetaSpringBC::OpSpringALEMaterialLhs::row_nb_dofs |
Definition at line 473 of file SpringElement.hpp.
VectorInt MetaSpringBC::OpSpringALEMaterialLhs::rowIndices |
Definition at line 470 of file SpringElement.hpp.
boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnSide> MetaSpringBC::OpSpringALEMaterialLhs::sideFe |
Definition at line 466 of file SpringElement.hpp.
std::string MetaSpringBC::OpSpringALEMaterialLhs::sideFeName |
Definition at line 467 of file SpringElement.hpp.