![]() |
v0.15.0 |
RHS-operator for the spring boundary condition element for ALE formulation. More...
#include "users_modules/basic_finite_elements/src/SpringElement.hpp"
Public Member Functions | |
MoFEMErrorCode | doWork (int side, EntityType type, EntData &row_data) |
Operator for linear form, usually to calculate values on right hand side. | |
MoFEMErrorCode | iNtegrate (EntData &row_data) |
Integrates and assembles to global RHS vector virtual work of springs on material positions for configurational changes for ALE formulation. | |
MoFEMErrorCode | aSsemble (EntData &row_data) |
OpSpringFsMaterial (const string material_field, boost::shared_ptr< MetaSpringBC::DataAtIntegrationPtsSprings > data_at_pts, boost::shared_ptr< VolumeElementForcesAndSourcesCoreOnSide > side_fe, std::string &side_fe_name, MetaSpringBC::BlockOptionDataSprings &data) | |
![]() | |
double | getArea () |
get area of face | |
VectorDouble & | getNormal () |
get triangle normal | |
VectorDouble & | getTangent1 () |
get triangle tangent 1 | |
VectorDouble & | getTangent2 () |
get triangle tangent 2 | |
auto | getFTensor1Normal () |
get normal as tensor | |
auto | getFTensor1Tangent1 () |
get tangentOne as tensor | |
auto | getFTensor1Tangent2 () |
get tangentTwo as tensor | |
int | getNumNodes () |
get element number of nodes | |
const EntityHandle * | getConn () |
get element connectivity | |
VectorDouble & | getCoords () |
get triangle coordinates | |
auto | getFTensor1Coords () |
get get coords at gauss points | |
MatrixDouble & | getNormalsAtGaussPts () |
if higher order geometry return normals at Gauss pts. | |
ublas::matrix_row< MatrixDouble > | getNormalsAtGaussPts (const int gg) |
if higher order geometry return normals at Gauss pts. | |
MatrixDouble & | getTangent1AtGaussPts () |
if higher order geometry return tangent vector to triangle at Gauss pts. | |
MatrixDouble & | getTangent2AtGaussPts () |
if higher order geometry return tangent vector to triangle at Gauss pts. | |
auto | getFTensor1NormalsAtGaussPts () |
get normal at integration points | |
auto | getFTensor1Tangent1AtGaussPts () |
get tangent 1 at integration points | |
auto | getFTensor1Tangent2AtGaussPts () |
get tangent 2 at integration points | |
FaceElementForcesAndSourcesCore * | getFaceFE () |
return pointer to Generic Triangle Finite Element object | |
MoFEMErrorCode | loopSideVolumes (const string fe_name, VolumeElementForcesAndSourcesCoreOnSide &fe_method) |
![]() | |
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 | |
Public Attributes | |
boost::shared_ptr< MetaSpringBC::DataAtIntegrationPtsSprings > | dataAtPts |
boost::shared_ptr< VolumeElementForcesAndSourcesCoreOnSide > | sideFe |
std::string | sideFeName |
Vec | F |
MetaSpringBC::BlockOptionDataSprings & | dAta |
bool | hoGeometry |
VectorDouble | nF |
VectorInt | rowIndices |
int | nbRows |
number of dofs on rows | |
int | nbIntegrationPts |
number of integration points | |
![]() | |
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 | |
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 |
![]() | |
static const char *const | OpTypeNames [] |
![]() | |
![]() | |
ForcesAndSourcesCore * | ptrFE |
RHS-operator for the spring boundary condition element for ALE formulation.
Integrates virtual work of springs on material positions involved in configurational changes and assembles components to RHS global vector.
Definition at line 714 of file SpringElement.hpp.
|
inline |
material_field | String of field name for material positions for rows |
data_at_pts | Pointer to the common data for spring element |
side_fe | Pointer to the volume finite elements adjacent to the spring face element |
side_fe_name | String of 3D element adjacent to the present springs elements |
data | Variable containing data for normal and tangential stiffnesses of springs attached to the current element |
Definition at line 787 of file SpringElement.hpp.
MoFEMErrorCode MetaSpringBC::OpSpringFsMaterial::aSsemble | ( | EntData & | row_data | ) |
Definition at line 1009 of file SpringElement.cpp.
|
virtual |
Operator for linear form, usually to calculate values on right hand side.
Reimplemented from MoFEM::DataOperator.
Definition at line 887 of file SpringElement.cpp.
MoFEMErrorCode MetaSpringBC::OpSpringFsMaterial::iNtegrate | ( | EntData & | row_data | ) |
Integrates and assembles to global RHS vector virtual work of springs on material positions for configurational changes for ALE formulation.
Computes virtual work of springs on material positions for configurational changes:
\[ f_s ({\mathbf x}, {\mathbf X}, \delta \mathbf{X}) = -\int\limits_{\partial \Omega }^{} {{\delta \mathbf{X}^T} \cdot {\mathbf{F}^{\intercal}} \left[ k_{\rm n} \left( {\mathbf N} \otimes {\mathbf N} \right) + k_{\rm t} \left( {\mathbf I} - {\mathbf N} \otimes {\mathbf N} \right) \right] \left( {\mathbf x} - {\mathbf X} \right) \partial \Omega } \]
where \( \delta \mathbf{X} \) is material position variation, \( k_{\rm n} \) is the stiffness of the springs normal to the surface, \( k_{\rm t} \) is the stiffness of the springs tangential to the surface, \( {\mathbf N} \) is the normal to the surface vector based on material positions, \( {\mathbf x} \) is the vector of spatial positions or displacements of the surface with springs, \( {\mathbf X} \) is the vector of material positions and finally \(\mathbf{F}\) is the deformation gradient
\[ \mathbf{F} = \mathbf{h}(\mathbf{x})\,\mathbf{H}(\mathbf{X})^{-1} = \frac{\partial\mathbf{x}}{\partial\boldsymbol{\chi}} \frac{\partial\boldsymbol{\chi}}{\partial\mathbf{X}} \]
where \(\mathbf{h}\) and \(\mathbf{H}\) are the gradients of the spatial and material maps, respectively, and \(\boldsymbol{\chi}\) are the reference coordinates.
Definition at line 919 of file SpringElement.cpp.
MetaSpringBC::BlockOptionDataSprings& MetaSpringBC::OpSpringFsMaterial::dAta |
Definition at line 721 of file SpringElement.hpp.
boost::shared_ptr<MetaSpringBC::DataAtIntegrationPtsSprings> MetaSpringBC::OpSpringFsMaterial::dataAtPts |
Definition at line 717 of file SpringElement.hpp.
Vec MetaSpringBC::OpSpringFsMaterial::F |
Definition at line 720 of file SpringElement.hpp.
bool MetaSpringBC::OpSpringFsMaterial::hoGeometry |
Definition at line 722 of file SpringElement.hpp.
int MetaSpringBC::OpSpringFsMaterial::nbIntegrationPts |
number of integration points
Definition at line 729 of file SpringElement.hpp.
int MetaSpringBC::OpSpringFsMaterial::nbRows |
number of dofs on rows
Definition at line 728 of file SpringElement.hpp.
VectorDouble MetaSpringBC::OpSpringFsMaterial::nF |
Definition at line 724 of file SpringElement.hpp.
VectorInt MetaSpringBC::OpSpringFsMaterial::rowIndices |
Definition at line 726 of file SpringElement.hpp.
boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnSide> MetaSpringBC::OpSpringFsMaterial::sideFe |
Definition at line 718 of file SpringElement.hpp.
std::string MetaSpringBC::OpSpringFsMaterial::sideFeName |
Definition at line 719 of file SpringElement.hpp.