|  | v0.15.0 | 
LHS-operator (material configuration) on the side volume for spring element. More...
#include "users_modules/basic_finite_elements/src/SpringElement.hpp"
| Public Member Functions | |
| MoFEMErrorCode | iNtegrate (EntData &row_data, EntData &col_data) | 
| Integrates over a face contribution from a side volume. | |
| SpringALEMaterialVolOnSideLhs_dX_dx (const string field_name_1, const string field_name_2, boost::shared_ptr< DataAtIntegrationPtsSprings > data_at_spring_pts) | |
|  Public Member Functions inherited from MetaSpringBC::SpringALEMaterialVolOnSideLhs | |
| 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. | |
| MoFEMErrorCode | aSsemble (EntData &row_data, EntData &col_data) | 
| SpringALEMaterialVolOnSideLhs (const string field_name_1, const string field_name_2, boost::shared_ptr< DataAtIntegrationPtsSprings > data_at_spring_pts) | |
|  Public Member Functions inherited from MoFEM::VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator | |
| VolumeElementForcesAndSourcesCoreOnSide * | getVolumeFE () const | 
| Access the owning volume finite element. | |
| FaceElementForcesAndSourcesCore * | getFaceFE () const | 
| Access the face finite element Face element, execute side element, that is volume, on which the volume side operators are executed. | |
| DEPRECATED int | getFaceSense () const | 
| Get face sense with respect to the volume. | |
| int | getSkeletonSense () const | 
| Get the skeleton sense. | |
| int | getFaceSideNumber () const | 
| Get face side number with respect to the volume. | |
| bool | getEdgeFace (const int ee) const | 
| Query if an edge belongs to the current face. | |
| VectorDouble & | getNormal () | 
| Get the face normal for this side element. | |
| VectorDouble & | getTangent1 () | 
| Get first triangle tangent. | |
| VectorDouble & | getTangent2 () | 
| Get second triangle tangent. | |
| auto | getFTensor1Normal () | 
| Get normal as tensor. | |
| auto | getFTensor1Tangent1 () | 
| Get tangent one as tensor. | |
| auto | getFTensor1Tangent2 () | 
| Get tangent two as tensor. | |
| MatrixDouble & | getNormalsAtGaussPts () | 
| If higher-order geometry is available, return normals at Gauss points. | |
| ublas::matrix_row< MatrixDouble > | getNormalsAtGaussPts (const int gg) | 
| If higher-order geometry is available, return normals at Gauss points. | |
| auto | getFTensor1NormalsAtGaussPts () | 
| Get normal at integration points. | |
| MatrixDouble & | getFaceCoordsAtGaussPts () | 
| Get face coordinates at Gauss points. | |
|  Public Member Functions inherited from MoFEM::VolumeElementForcesAndSourcesCore::UserDataOperator | |
| 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 | |
|  Public Member Functions inherited from MoFEM::ForcesAndSourcesCore::UserDataOperator | |
| UserDataOperator (const FieldSpace space, const char type=OPSPACE, const bool symm=true) | |
| Constructor for operators working on finite element spaces. | |
| UserDataOperator (const std::string field_name, const char type, const bool symm=true) | |
| Constructor for operators working on a single field. | |
| UserDataOperator (const std::string row_field_name, const std::string col_field_name, const char type, const bool symm=true) | |
| Constructor for operators working on two fields (bilinear forms) | |
| 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. | |
|  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. | |
| 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 | |
|  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)> | 
|  Public Attributes inherited from MetaSpringBC::SpringALEMaterialVolOnSideLhs | |
| MatrixDouble | NN | 
| boost::shared_ptr< DataAtIntegrationPtsSprings > | dataAtSpringPts | 
| 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. | |
| 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 Public Attributes inherited from MoFEM::ForcesAndSourcesCore::UserDataOperator | |
| static const char *const | OpTypeNames [] | 
|  Protected Member Functions inherited from MoFEM::VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator | |
| MoFEMErrorCode | setPtrFE (ForcesAndSourcesCore *ptr) | 
| Assign base class pointer for the operator. | |
|  Protected Attributes inherited from MoFEM::ForcesAndSourcesCore::UserDataOperator | |
| ForcesAndSourcesCore * | ptrFE | 
LHS-operator (material configuration) on the side volume for spring element.
Computes the linearisation of the material component with respect to a variation of spatial coordinates on the side volume.
Definition at line 387 of file SpringElement.hpp.
| 
 | inline | 
Definition at line 425 of file SpringElement.hpp.
| 
 | virtual | 
Integrates over a face contribution from a side volume.
Computes linearisation of the material component with respect to a variation of spatial coordinates:
\[ \textrm{D} f_s(\mathbf{x}, \mathbf{X}, \delta\mathbf{X}) [\Delta\mathbf{x}] = \int\limits_{\partial \Omega }^{} \mathbf{F}^{\intercal}\cdot \left( -{{\delta \mathbf{x}^T} \cdot \left[ k_{\rm n} \left( {\mathbf N} \otimes {\mathbf N} \right) + k_{\rm t} \left( {\mathbf I} - {\mathbf N} \otimes {\mathbf N} \right) \right]\right ) \Delta {\mathbf x} \partial \Omega } -\int\limits_{\mathcal{T}_{\xi}} \left\{\left[ \frac{\partial\Delta\mathbf{x}}{\partial\boldsymbol{\chi}}\,\mathbf{H}^{-1} \right]^{\intercal}\cdot \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)\right\} \cdot \delta\mathbf{X}\, \textrm{d}\xi\textrm{d}\eta \]
where \( \delta \mathbf{X} \) is variation of material positions, \( 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, \(\boldsymbol{\chi}\) are reference coordinated, \(\mathbf{H}\) is the gradient of the material map.
Reimplemented from MetaSpringBC::SpringALEMaterialVolOnSideLhs.
Definition at line 450 of file SpringElement.cpp.
