v0.14.0 |
RHS-operator for the surface force element (material configuration) More...
#include <users_modules/basic_finite_elements/src/SurfacePressure.hpp>
Public Member Functions | |
MoFEMErrorCode | doWork (int side, EntityType type, EntitiesFieldData::EntData &row_data) |
Integrate surface force in the material configuration. More... | |
MoFEMErrorCode | iNtegrate (EntData &row_data) |
MoFEMErrorCode | aSsemble (EntData &row_data) |
OpNeumannSurfaceForceMaterialRhs_dX (const string material_field, boost::shared_ptr< DataAtIntegrationPts > data_at_pts, boost::shared_ptr< VolumeElementForcesAndSourcesCoreOnSide > side_fe, std::string &side_fe_name, Vec f, bCForce &data, bool ho_geometry=false) | |
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 | 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 | |
boost::shared_ptr< DataAtIntegrationPts > | dataAtPts |
boost::shared_ptr< VolumeElementForcesAndSourcesCoreOnSide > | sideFe |
std::string | sideFeName |
Vec | F |
bCForce & | dAta |
bool | hoGeometry |
VectorDouble | nF |
VectorInt | rowIndices |
int | nbRows |
number of dofs on rows More... | |
int | nbIntegrationPts |
number of integration points More... | |
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 |
RHS-operator for the surface force element (material configuration)
Integrates surface force in the material configuration.
Definition at line 496 of file SurfacePressure.hpp.
|
inline |
Definition at line 555 of file SurfacePressure.hpp.
MoFEMErrorCode NeumannForcesSurface::OpNeumannSurfaceForceMaterialRhs_dX::aSsemble | ( | EntData & | row_data | ) |
Definition at line 709 of file SurfacePressure.cpp.
MoFEMErrorCode NeumannForcesSurface::OpNeumannSurfaceForceMaterialRhs_dX::doWork | ( | int | side, |
EntityType | type, | ||
EntitiesFieldData::EntData & | row_data | ||
) |
Integrate surface force in the material configuration.
Virtual work of the surface force corresponding to a test function of the material configuration \((\delta\mathbf{X})\):
\[ \delta W^\text{material}_{\mathbf{t}}(\mathbf{x}, \mathbf{X}, \delta\mathbf{X}) = -\int\limits_\mathcal{T} \left\{\mathbf{F}^{\intercal}\cdot \mathbf{t} \right\} \cdot \delta\mathbf{X}\, \textrm{d}\mathcal{T} = -\int\limits_{\mathcal{T}_{\xi}} \left\{\mathbf{F}^{\intercal}\cdot \mathbf{t} \right\} \cdot \delta\mathbf{X}\, \left\|\frac{\partial\mathbf{X}}{\partial\xi}\times\frac{\partial \mathbf{X}} {\partial\eta}\right\| \textrm{d}\xi\textrm{d}\eta = -\int\limits_{\mathcal{T}_{\xi}} \left\{\mathbf{F}^{\intercal}\cdot \mathbf{t} \right\} \cdot \delta\mathbf{X}\, \left\|\mathbf{N}\right\| \textrm{d}\xi\textrm{d}\eta \]
where \(\mathbf t\) is surface force, \(\mathbf{N}\) is a normal to the face in the material configuration, \(\xi, \eta\) are coordinates in the parent space \((\mathcal{T}_\xi)\) and \(\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 625 of file SurfacePressure.cpp.
MoFEMErrorCode NeumannForcesSurface::OpNeumannSurfaceForceMaterialRhs_dX::iNtegrate | ( | EntData & | row_data | ) |
Definition at line 657 of file SurfacePressure.cpp.
bCForce& NeumannForcesSurface::OpNeumannSurfaceForceMaterialRhs_dX::dAta |
Definition at line 502 of file SurfacePressure.hpp.
boost::shared_ptr<DataAtIntegrationPts> NeumannForcesSurface::OpNeumannSurfaceForceMaterialRhs_dX::dataAtPts |
Definition at line 498 of file SurfacePressure.hpp.
Vec NeumannForcesSurface::OpNeumannSurfaceForceMaterialRhs_dX::F |
Definition at line 501 of file SurfacePressure.hpp.
bool NeumannForcesSurface::OpNeumannSurfaceForceMaterialRhs_dX::hoGeometry |
Definition at line 503 of file SurfacePressure.hpp.
int NeumannForcesSurface::OpNeumannSurfaceForceMaterialRhs_dX::nbIntegrationPts |
number of integration points
Definition at line 510 of file SurfacePressure.hpp.
int NeumannForcesSurface::OpNeumannSurfaceForceMaterialRhs_dX::nbRows |
number of dofs on rows
Definition at line 509 of file SurfacePressure.hpp.
VectorDouble NeumannForcesSurface::OpNeumannSurfaceForceMaterialRhs_dX::nF |
Definition at line 505 of file SurfacePressure.hpp.
VectorInt NeumannForcesSurface::OpNeumannSurfaceForceMaterialRhs_dX::rowIndices |
Definition at line 507 of file SurfacePressure.hpp.
boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnSide> NeumannForcesSurface::OpNeumannSurfaceForceMaterialRhs_dX::sideFe |
Definition at line 499 of file SurfacePressure.hpp.
std::string NeumannForcesSurface::OpNeumannSurfaceForceMaterialRhs_dX::sideFeName |
Definition at line 500 of file SurfacePressure.hpp.