|
| v0.14.0
|
Go to the documentation of this file.
8 #ifndef __SURFACE_PERSSURE_HPP__
9 #define __SURFACE_PERSSURE_HPP__
38 "You need to implement this");
116 boost::ptr_vector<MethodForForceScaling> &methods_op,
117 bool ho_geometry =
false);
146 boost::ptr_vector<MethodForForceScaling> &methods_op,
147 boost::shared_ptr<MethodForAnalyticalForce> &analytical_force_op,
148 const bool ho_geometry =
false);
176 boost::ptr_vector<MethodForForceScaling> &methods_op,
177 bool ho_geometry =
false);
206 :
public boost::enable_shared_from_this<DataAtIntegrationPts> {
218 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
hMat);
222 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
HMat);
308 const string field_name_1,
const string field_name_2,
309 boost::shared_ptr<DataAtIntegrationPts> data_at_pts, Mat aij,
386 const string field_name_1,
const string field_name_2,
387 boost::shared_ptr<DataAtIntegrationPts> data_at_pts, Mat aij,
388 bCForce &data,
bool ho_geometry =
false)
410 boost::shared_ptr<DataAtIntegrationPts> data_at_pts,
411 bool ho_geometry =
false)
428 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnSide>
sideFe;
480 const string material_field,
481 boost::shared_ptr<DataAtIntegrationPts> data_at_pts,
482 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnSide> side_fe,
484 bool ho_geometry =
false)
499 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnSide>
sideFe;
556 const string material_field,
557 boost::shared_ptr<DataAtIntegrationPts> data_at_pts,
558 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnSide> side_fe,
560 bool ho_geometry =
false)
589 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnSide>
sideFe;
609 EntityType row_type, EntityType col_type,
624 const string field_name_1,
const string field_name_2,
625 boost::shared_ptr<DataAtIntegrationPts> data_at_pts,
626 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnSide> side_fe,
627 std::string &side_fe_name, Mat aij,
bCPressure &data,
628 bool ho_geometry =
false)
660 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnSide>
sideFe;
680 EntityType row_type, EntityType col_type,
695 const string field_name_1,
const string field_name_2,
696 boost::shared_ptr<DataAtIntegrationPts> data_at_pts,
697 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnSide> side_fe,
698 std::string &side_fe_name, Mat aij,
bCForce &data,
699 bool ho_geometry =
false)
753 const string field_name_1,
const string field_name_2,
754 boost::shared_ptr<DataAtIntegrationPts> data_at_pts,
755 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnSide> side_fe,
756 std::string &side_fe_name, Mat aij,
bCPressure &data,
757 bool ho_geometry =
false)
759 side_fe, side_fe_name, aij, data,
812 const string field_name_1,
const string field_name_2,
813 boost::shared_ptr<DataAtIntegrationPts> data_at_pts,
814 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnSide> side_fe,
815 std::string &side_fe_name, Mat aij,
bCForce &data,
816 bool ho_geometry =
false)
818 data_at_pts, side_fe, side_fe_name,
819 aij, data, ho_geometry) {
843 const string field_name_1,
const string field_name_2,
844 boost::shared_ptr<DataAtIntegrationPts> data_at_pts,
845 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnSide> side_fe,
846 std::string &side_fe_name, Mat aij,
bCPressure &data,
847 bool ho_geometry =
false)
849 side_fe, side_fe_name, aij, data,
874 const string field_name_1,
const string field_name_2,
875 boost::shared_ptr<DataAtIntegrationPts> data_at_pts,
876 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnSide> side_fe,
877 std::string &side_fe_name, Mat aij,
bCForce &data,
878 bool ho_geometry =
false)
880 data_at_pts, side_fe, side_fe_name,
881 aij, data, ho_geometry) {
923 const string field_name_1,
const string field_name_2,
924 boost::shared_ptr<DataAtIntegrationPts> data_at_pts, Mat aij,
971 const string field_name_1,
const string field_name_2,
972 boost::shared_ptr<DataAtIntegrationPts> data_at_pts, Mat aij,
973 bCForce &data,
bool ho_geometry =
false)
1012 const string field_name_1,
const string field_name_2,
1013 boost::shared_ptr<DataAtIntegrationPts> data_at_pts, Mat aij,
1016 field_name_1, field_name_2, data_at_pts, aij, data, ho_geometry) {
1051 const string field_name_1,
const string field_name_2,
1052 boost::shared_ptr<DataAtIntegrationPts> data_at_pts, Mat aij,
1053 bCForce &data,
bool ho_geometry =
false)
1055 field_name_1, field_name_2, data_at_pts, aij, data, ho_geometry) {
1091 const string field_name_1,
const string field_name_2,
1092 boost::shared_ptr<DataAtIntegrationPts> data_at_pts, Mat aij,
1095 field_name_1, field_name_2, data_at_pts, aij, data, ho_geometry) {
1131 const string field_name_1,
const string field_name_2,
1132 boost::shared_ptr<DataAtIntegrationPts> data_at_pts, Mat aij,
1133 bCForce &data,
bool ho_geometry =
false)
1135 field_name_1, field_name_2, data_at_pts, aij, data, ho_geometry) {
1149 boost::ptr_vector<MethodForForceScaling> &methods_op,
1169 bool ho_geometry =
false,
bool block_set =
false);
1187 addForceAle(
const std::string field_name_1,
const std::string field_name_2,
1188 boost::shared_ptr<DataAtIntegrationPts> data_at_pts,
1189 std::string side_fe_name,
Vec F, Mat aij,
int ms_id,
1190 bool ho_geometry =
false,
bool block_set =
false,
1191 bool ignore_material_force =
false);
1204 bool ho_geometry =
false,
bool block_set =
false);
1221 addPressureAle(
const std::string field_name_1,
const std::string field_name_2,
1222 boost::shared_ptr<DataAtIntegrationPts> data_at_pts,
1223 std::string side_fe_name,
Vec F, Mat aij,
int ms_id,
1224 bool ho_geometry =
false,
bool block_set =
false);
1237 int ms_id,
bool ho_geometry =
false);
1241 bool ho_geometry =
false);
1254 int ms_id,
bool ho_geometry =
false,
1255 bool block_set =
false);
1282 const std::string mesh_nodals_positions =
"MESH_NODE_POSITIONS",
1283 Range *intersect_ptr = NULL);
1298 boost::ptr_map<std::string, NeumannForcesSurface> &neumann_forces,
Vec F,
1300 const std::string mesh_nodals_positions =
"MESH_NODE_POSITIONS");
1304 const std::string mesh_nodals_positions =
"MESH_NODE_POSITIONS");
1308 boost::ptr_map<std::string, NeumannForcesSurface> &neumann_forces,
Vec F,
1310 const std::string mesh_nodals_positions =
"MESH_NODE_POSITIONS");
1323 #endif //__SURFACE_PERSSURE_HPP__
default operator for TET element
OpNeumannPressureMaterialLhs_dX_dX(const string field_name_1, const string field_name_2, boost::shared_ptr< DataAtIntegrationPts > data_at_pts, boost::shared_ptr< VolumeElementForcesAndSourcesCoreOnSide > side_fe, std::string &side_fe_name, Mat aij, bCPressure &data, bool ho_geometry=false)
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
Integrates over a face contribution from a side volume.
MoFEMErrorCode addFlux(const std::string field_name, Vec F, int ms_id, bool ho_geometry=false)
Add flux element operator (integration on face)
boost::shared_ptr< MatrixDouble > getHMatPtr()
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
Data on single entity (This is passed as argument to DataOperator::doWork)
virtual ~MethodForAnalyticalForce()=default
RHS-operator for pressure element (spatial configuration)
Base class for LHS-operators (material) on side volumes.
Base class for LHS-operators for pressure element (material configuration)
VectorBoundedArray< double, 3 > VectorDouble3
OpNeumannPressureMaterialVolOnSideLhs_dX_dX(const string field_name_1, const string field_name_2, boost::shared_ptr< DataAtIntegrationPts > data_at_pts, Mat aij, bCPressure &data, bool ho_geometry=false)
DEPRECATED typedef OpNeumannPressure OpNeumannPreassure
const VectorDouble3 linearConstants
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
DEPRECATED MoFEMErrorCode addPreassure(const std::string field_name, Vec F, int ms_id, bool ho_geometry=false, bool block_set=false)
boost::shared_ptr< DataAtIntegrationPts > dataAtIntegrationPts
MoFEMErrorCode aSsemble(EntData &row_data, EntData &col_data)
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
UBlasMatrix< double > MatrixDouble
Operator for force element.
OpNeumannSurfaceForceLhs_dx_dX(const string field_name_1, const string field_name_2, boost::shared_ptr< DataAtIntegrationPts > data_at_pts, Mat aij, bCForce &data, bool ho_geometry=false)
OpNeumannSurfaceForceMaterialVolOnSideLhs_dX_dx(const string field_name_1, const string field_name_2, boost::shared_ptr< DataAtIntegrationPts > data_at_pts, Mat aij, bCForce &data, bool ho_geometry=false)
boost::shared_ptr< VolumeElementForcesAndSourcesCoreOnSide > sideFe
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &row_data)
Integrate surface force in the material configuration.
boost::ptr_vector< MethodForAnalyticalForce > analyticalForceOp
boost::ptr_vector< MethodForForceScaling > & methodsOp
Operator for flux element.
MyTriangleFE & getLoopFeLhs()
@ OPROWCOL
operator doWork is executed on FE rows &columns
OpNeumannForce(const std::string field_name, Vec _F, bCForce &data, boost::ptr_vector< MethodForForceScaling > &methods_op, bool ho_geometry=false)
MoFEMErrorCode addPressure(const std::string field_name, Vec F, int ms_id, bool ho_geometry=false, bool block_set=false)
Add operator to calculate pressure on element.
boost::ptr_vector< MethodForForceScaling > & methodsOp
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
Compute part of the left-hand side.
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &data)
Integrate pressure.
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
Compute part of the left-hand side.
Deprecated interface functions.
virtual MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
OpNeumannSurfaceForceMaterialVolOnSideLhs(const string field_name_1, const string field_name_2, boost::shared_ptr< DataAtIntegrationPts > data_at_pts, Mat aij, bCForce &data, bool ho_geometry=false)
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
const double c
speed of light (cm/ns)
Range forcesOnlyOnEntitiesRow
boost::shared_ptr< MatrixDouble > getSmallhMatPtr()
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
Integrates over a face contribution from a side volume.
virtual MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
friend class UserDataOperator
boost::shared_ptr< VolumeElementForcesAndSourcesCoreOnSide > sideFe
MoFEMErrorCode aSsemble(EntData &row_data)
RHS-operator for the surface force element (material configuration)
const double pressureShift
MoFEMErrorCode aSsemble(EntData &row_data, EntData &col_data)
Operator for force element.
MoFEMErrorCode addLinearPressure(const std::string field_name, Vec F, int ms_id, bool ho_geometry=false)
Add operator to calculate pressure on element.
MoFEMErrorCode aSsemble(EntData &row_data, EntData &col_data)
boost::weak_ptr< DofEntity > arcLengthDof
default operator for TRI element
int nbIntegrationPts
number of integration points
@ OPCOL
operator doWork function is executed on FE columns
int nbRows
number of dofs on rows
int nbRows
number of dofs on rows
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &row_data)
Integrate pressure in the material configuration.
OpNeumannPressureMaterialLhs_dX_dx(const string field_name_1, const string field_name_2, boost::shared_ptr< DataAtIntegrationPts > data_at_pts, boost::shared_ptr< VolumeElementForcesAndSourcesCoreOnSide > side_fe, std::string &side_fe_name, Mat aij, bCPressure &data, bool ho_geometry=false)
friend class UserDataOperator
DEPRECATED typedef NeumannForcesSurface NeummanForcesSurface
OpNeumannSurfaceForceMaterialLhs(const string field_name_1, const string field_name_2, boost::shared_ptr< DataAtIntegrationPts > data_at_pts, boost::shared_ptr< VolumeElementForcesAndSourcesCoreOnSide > side_fe, std::string &side_fe_name, Mat aij, bCForce &data, bool ho_geometry=false)
MyTriangleFE & getLoopFe()
boost::ptr_vector< MethodForForceScaling > & methodsOp
Base class for LHS-operators (material) on side volumes.
LHS-operator (material configuration) on the side volume.
MoFEMErrorCode addForceAle(const std::string field_name_1, const std::string field_name_2, boost::shared_ptr< DataAtIntegrationPts > data_at_pts, std::string side_fe_name, Vec F, Mat aij, int ms_id, bool ho_geometry=false, bool block_set=false, bool ignore_material_force=false)
Add operator to calculate forces on element (in ALE)
boost::shared_ptr< MethodForAnalyticalForce > analyticalForceOp
MoFEMErrorCode addPressureAle(const std::string field_name_1, const std::string field_name_2, boost::shared_ptr< DataAtIntegrationPts > data_at_pts, std::string side_fe_name, Vec F, Mat aij, int ms_id, bool ho_geometry=false, bool block_set=false)
Add operator to calculate pressure on element (in ALE)
boost::shared_ptr< DataAtIntegrationPts > dataAtIntegrationPts
std::map< int, bCPressure > mapPressure
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
boost::ptr_vector< MethodForForceScaling > & methodsOp
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
Integrates over a face contribution from a side volume.
OpNeumannPressureMaterialLhs(const string field_name_1, const string field_name_2, boost::shared_ptr< DataAtIntegrationPts > data_at_pts, boost::shared_ptr< VolumeElementForcesAndSourcesCoreOnSide > side_fe, std::string &side_fe_name, Mat aij, bCPressure &data, bool ho_geometry=false)
OpNeumannSurfaceForceMaterialLhs_dX_dx(const string field_name_1, const string field_name_2, boost::shared_ptr< DataAtIntegrationPts > data_at_pts, boost::shared_ptr< VolumeElementForcesAndSourcesCoreOnSide > side_fe, std::string &side_fe_name, Mat aij, bCForce &data, bool ho_geometry=false)
MoFEMErrorCode iNtegrate(EntData &row_data)
LHS-operator for the pressure element (material configuration)
boost::shared_ptr< VolumeElementForcesAndSourcesCoreOnSide > sideFe
virtual MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
int nbIntegrationPts
number of integration points
RHS-operator for the pressure element (material configuration)
LHS-operator (material configuration) on the side volume.
OpGetTangent(const string field_name, boost::shared_ptr< DataAtIntegrationPts > dataAtIntegrationPts)
EntitiesFieldData::EntData EntData
constexpr auto field_name
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &data)
Integrate surface force (traction)
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
Compute left-hand side.
std::map< int, bCForce > mapForce
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
OpNeumannPressureLhs_dx_dX(const string field_name_1, const string field_name_2, boost::shared_ptr< DataAtIntegrationPts > data_at_pts, Mat aij, bCPressure &data, bool ho_geometry=false)
Base class for LHS-operators for pressure element (material configuration)
LinearVaringPresssure(const VectorDouble3 &p, const double c)
OpNeumannPressureMaterialVolOnSideLhs(const string field_name_1, const string field_name_2, boost::shared_ptr< DataAtIntegrationPts > data_at_pts, Mat aij, bCPressure &data, bool ho_geometry=false)
LHS-operator for the pressure element (material configuration)
std::array< bool, MBMAXTYPE > doEntities
If true operator is executed for entity.
MyTriangleFE(MoFEM::Interface &m_field)
MoFEM::Interface & mField
MyTriangleFE & getLoopFeMatRhs()
Operator for computing tangent vectors.
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
virtual MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
UBlasVector< int > VectorInt
MoFEMErrorCode iNtegrate(EntData &row_data)
NeumannForcesSurface(MoFEM::Interface &m_field)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
OpNeumannPressureMaterialVolOnSideLhs_dX_dx(const string field_name_1, const string field_name_2, boost::shared_ptr< DataAtIntegrationPts > data_at_pts, Mat aij, bCPressure &data, bool ho_geometry=false)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
const FTensor::Tensor2< T, Dim, Dim > Vec
virtual MoFEMErrorCode getForce(const EntityHandle ent, const VectorDouble3 &coords, const VectorDouble3 &normal, VectorDouble3 &force)
boost::shared_ptr< DataAtIntegrationPts > dataAtIntegrationPts
OpNeumannSurfaceForceMaterialLhs_dX_dX(const string field_name_1, const string field_name_2, boost::shared_ptr< DataAtIntegrationPts > data_at_pts, boost::shared_ptr< VolumeElementForcesAndSourcesCoreOnSide > side_fe, std::string &side_fe_name, Mat aij, bCForce &data, bool ho_geometry=false)
DEPRECATED typedef MetaNeumannForces MetaNeummanForces
MoFEMErrorCode addForce(const std::string field_name, Vec F, int ms_id, bool ho_geometry=false, bool block_set=false)
Add operator to calculate forces on element.
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
Compute left-hand side.
MyTriangleFE & getLoopFeMatLhs()
virtual MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
DEPRECATED typedef bCPressure bCPreassure
UBlasVector< double > VectorDouble
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &data)
MoFEMErrorCode aSsemble(EntData &row_data)
LHS-operator (material configuration) on the side volume.
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
LHS-operator for the surface force element (material configuration)
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
Integrates over a face contribution from a side volume.
OpNeumannSurfaceForceMaterialVolOnSideLhs_dX_dX(const string field_name_1, const string field_name_2, boost::shared_ptr< DataAtIntegrationPts > data_at_pts, Mat aij, bCForce &data, bool ho_geometry=false)
boost::shared_ptr< VolumeElementForcesAndSourcesCoreOnSide > sideFe
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
Finite element and operators to apply force/pressures applied to surfaces.
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)
bool sYmm
If true assume that matrix is symmetric structure.
MoFEMErrorCode aSsemble(EntData &row_data, EntData &col_data)
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &data)
OpNeumannForceAnalytical(const std::string field_name, Vec f, const Range tris, boost::ptr_vector< MethodForForceScaling > &methods_op, boost::shared_ptr< MethodForAnalyticalForce > &analytical_force_op, const bool ho_geometry=false)
virtual MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
DEPRECATED typedef MethodForAnalyticalForce MethodForAnaliticalForce
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &data)
LHS-operator for surface force element (spatial configuration)
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
LHS-operator (material configuration) on the side volume.
OpNeumannPressure(const std::string field_name, Vec _F, bCPressure &data, boost::ptr_vector< MethodForForceScaling > &methods_op, bool ho_geometry=false)
LHS-operator for the surface force element (material configuration)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
@ OPROW
operator doWork function is executed on FE rows
OpNeumannFlux(const std::string field_name, Vec _F, bCPressure &data, boost::ptr_vector< MethodForForceScaling > &methods_op, bool ho_geometry)
boost::ptr_vector< MethodForForceScaling > methodsOp
MoFEMErrorCode getForce(const EntityHandle ent, const VectorDouble3 &coords, const VectorDouble3 &normal, VectorDouble3 &force)
OpNeumannPressureMaterialRhs_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, bCPressure &data, bool ho_geometry=false)
LHS-operator for pressure element (spatial configuration)