8#ifndef __SURFACE_PERSSURE_HPP__
9#define __SURFACE_PERSSURE_HPP__
33 const VectorDouble3 &coords,
34 const VectorDouble3 &normal,
35 VectorDouble3 &force) {
38 "You need to implement this");
49 const VectorDouble3 &normal, VectorDouble3 &force);
116 boost::ptr_vector<MethodForForceScaling> &methods_op,
117 bool ho_geometry =
false);
138 EntitiesFieldData::EntData &data);
146 boost::ptr_vector<MethodForForceScaling> &methods_op,
147 boost::shared_ptr<MethodForAnalyticalForce> &analytical_force_op,
148 const bool ho_geometry =
false);
153 EntitiesFieldData::EntData &data);
176 boost::ptr_vector<MethodForForceScaling> &methods_op,
177 bool ho_geometry =
false);
202 EntitiesFieldData::EntData &data);
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);
249 EntitiesFieldData::EntData &data);
304 EntitiesFieldData::EntData &row_data,
305 EntitiesFieldData::EntData &col_data);
308 const string field_name_1,
const string field_name_2,
309 boost::shared_ptr<DataAtIntegrationPts> data_at_pts, Mat aij,
382 EntitiesFieldData::EntData &row_data,
383 EntitiesFieldData::EntData &col_data);
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)
407 EntitiesFieldData::EntData &data);
410 boost::shared_ptr<DataAtIntegrationPts> data_at_pts,
411 bool ho_geometry =
false)
428 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnSide>
sideFe;
475 EntitiesFieldData::EntData &row_data);
480 const string material_field,
481 boost::shared_ptr<DataAtIntegrationPts> data_at_pts,
482 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnSide> side_fe,
483 std::string &side_fe_name, Vec f,
bCPressure &data,
484 bool ho_geometry =
false)
499 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnSide>
sideFe;
551 EntitiesFieldData::EntData &row_data);
556 const string material_field,
557 boost::shared_ptr<DataAtIntegrationPts> data_at_pts,
558 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnSide> side_fe,
559 std::string &side_fe_name, Vec f,
bCForce &data,
560 bool ho_geometry =
false)
589 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnSide>
sideFe;
608 virtual MoFEMErrorCode
doWork(
int row_side,
int col_side,
610 EntitiesFieldData::EntData &row_data,
611 EntitiesFieldData::EntData &col_data) {
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;
679 virtual MoFEMErrorCode
doWork(
int row_side,
int col_side,
681 EntitiesFieldData::EntData &row_data,
682 EntitiesFieldData::EntData &col_data) {
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)
726 EntitiesFieldData::EntData &row_data,
727 EntitiesFieldData::EntData &col_data);
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,
783 EntitiesFieldData::EntData &row_data,
784 EntitiesFieldData::EntData &col_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) {
839 EntitiesFieldData::EntData &row_data,
840 EntitiesFieldData::EntData &col_data);
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,
870 EntitiesFieldData::EntData &row_data,
871 EntitiesFieldData::EntData &col_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) {
914 EntitiesFieldData::EntData &row_data,
915 EntitiesFieldData::EntData &col_data);
923 const string field_name_1,
const string field_name_2,
924 boost::shared_ptr<DataAtIntegrationPts> data_at_pts, Mat aij,
962 EntitiesFieldData::EntData &row_data,
963 EntitiesFieldData::EntData &col_data);
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,
1155 EntitiesFieldData::EntData &data);
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");
DEPRECATED typedef MetaNeumannForces MetaNeummanForces
DEPRECATED typedef NeumannForcesSurface NeummanForcesSurface
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
const double c
speed of light (cm/ns)
constexpr auto field_name
std::array< bool, MBMAXTYPE > doEntities
If true operator is executed for entity.
bool sYmm
If true assume that matrix is symmetric structure.
Deprecated interface functions.
Data on single entity (This is passed as argument to DataOperator::doWork)
default operator for TRI element
@ OPCOL
operator doWork function is executed on FE columns
@ OPROW
operator doWork function is executed on FE rows
@ OPROWCOL
operator doWork is executed on FE rows &columns
default operator for TET element
boost::shared_ptr< MatrixDouble > getHMatPtr()
boost::shared_ptr< MatrixDouble > getSmallhMatPtr()
Range forcesOnlyOnEntitiesRow
boost::weak_ptr< DofEntity > arcLengthDof
MoFEMErrorCode getForce(const EntityHandle ent, const VectorDouble3 &coords, const VectorDouble3 &normal, VectorDouble3 &force)
LinearVaringPresssure(const VectorDouble3 &p, const double c)
const double pressureShift
const VectorDouble3 linearConstants
virtual MoFEMErrorCode getForce(const EntityHandle ent, const VectorDouble3 &coords, const VectorDouble3 &normal, VectorDouble3 &force)
virtual ~MethodForAnalyticalForce()=default
Operator for computing tangent vectors.
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &data)
boost::shared_ptr< DataAtIntegrationPts > dataAtIntegrationPts
OpGetTangent(const string field_name, boost::shared_ptr< DataAtIntegrationPts > dataAtIntegrationPts)
Operator for flux element.
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &data)
boost::ptr_vector< MethodForForceScaling > & methodsOp
Operator for force element.
boost::ptr_vector< MethodForForceScaling > & methodsOp
boost::shared_ptr< MethodForAnalyticalForce > analyticalForceOp
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &data)
Operator for force element.
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &data)
Integrate surface force (traction)
boost::ptr_vector< MethodForForceScaling > & methodsOp
RHS-operator for pressure element (spatial configuration)
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &data)
Integrate pressure.
boost::ptr_vector< MethodForForceScaling > & methodsOp
LHS-operator for pressure element (spatial configuration)
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.
boost::shared_ptr< DataAtIntegrationPts > dataAtIntegrationPts
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)
LHS-operator for the pressure element (material configuration)
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
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)
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
Compute part of the left-hand side.
LHS-operator for the pressure element (material configuration)
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
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)
Base class for LHS-operators for pressure element (material configuration)
MoFEMErrorCode aSsemble(EntData &row_data, 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)
boost::shared_ptr< VolumeElementForcesAndSourcesCoreOnSide > sideFe
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)
virtual MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
RHS-operator for the pressure element (material configuration)
int nbIntegrationPts
number of integration points
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)
boost::shared_ptr< VolumeElementForcesAndSourcesCoreOnSide > sideFe
MoFEMErrorCode iNtegrate(EntData &row_data)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
int nbRows
number of dofs on rows
MoFEMErrorCode aSsemble(EntData &row_data)
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &row_data)
Integrate pressure in the material configuration.
LHS-operator (material configuration) on the side volume.
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)
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
Integrates over a face contribution from a side volume.
LHS-operator (material configuration) on the side volume.
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)
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
Integrates over a face contribution from a side volume.
Base class for LHS-operators (material) on side volumes.
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
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)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
MoFEMErrorCode aSsemble(EntData &row_data, EntData &col_data)
virtual MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
LHS-operator for surface force element (spatial configuration)
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.
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)
boost::shared_ptr< DataAtIntegrationPts > dataAtIntegrationPts
LHS-operator for the surface force element (material configuration)
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
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, EntData &col_data)
Compute part of the left-hand side.
LHS-operator for the surface force element (material configuration)
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
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)
Base class for LHS-operators for pressure element (material configuration)
virtual MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
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)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
MoFEMErrorCode aSsemble(EntData &row_data, EntData &col_data)
virtual MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
boost::shared_ptr< VolumeElementForcesAndSourcesCoreOnSide > sideFe
RHS-operator for the surface force element (material configuration)
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)
int nbIntegrationPts
number of integration points
boost::shared_ptr< VolumeElementForcesAndSourcesCoreOnSide > sideFe
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &row_data)
Integrate surface force in the material configuration.
int nbRows
number of dofs on rows
MoFEMErrorCode iNtegrate(EntData &row_data)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
LHS-operator (material configuration) on the 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)
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
Integrates over a face contribution from a side volume.
LHS-operator (material configuration) on the 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)
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
Integrates over a face contribution from a side volume.
Base class for LHS-operators (material) on side volumes.
MoFEMErrorCode aSsemble(EntData &row_data, EntData &col_data)
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::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)
virtual MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
Finite element and operators to apply force/pressures applied to surfaces.
DEPRECATED typedef bCPressure bCPreassure
MyTriangleFE & getLoopFe()
std::map< int, bCPressure > mapPressure
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)
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)
std::map< int, bCForce > mapForce
MyTriangleFE & getLoopFeMatRhs()
MyTriangleFE & getLoopFeMatLhs()
DEPRECATED typedef MethodForAnalyticalForce MethodForAnaliticalForce
DEPRECATED typedef OpNeumannPressure OpNeumannPreassure
MoFEMErrorCode addFlux(const std::string field_name, Vec F, int ms_id, bool ho_geometry=false)
Add flux element operator (integration on face)
MyTriangleFE & getLoopFeLhs()
boost::ptr_vector< MethodForForceScaling > methodsOp
DEPRECATED MoFEMErrorCode addPreassure(const std::string field_name, Vec F, int ms_id, bool ho_geometry=false, bool block_set=false)
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.
NeumannForcesSurface(MoFEM::Interface &m_field)
MoFEMErrorCode addLinearPressure(const std::string field_name, Vec F, int ms_id, bool ho_geometry=false)
Add operator to calculate pressure on element.
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< MethodForAnalyticalForce > analyticalForceOp
MoFEM::Interface & mField