16 OpJacobian(
const int tag,
const bool eval_rhs,
const bool eval_lhs,
17 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
18 boost::shared_ptr<PhysicalEquations> physics_ptr)
25 MoFEMErrorCode
doWork(
int side, EntityType type,
EntData &data);
34 boost::shared_ptr<DataAtIntegrationPts>
36 boost::shared_ptr<PhysicalEquations>
45 boost::shared_ptr<DataAtIntegrationPts>
49 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
54 std::string row_field, std::string col_field,
55 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
const char type,
56 const bool assemble_symmetry,
ScaleOff scale_off = []() {
return 1; })
57 : T(row_field, col_field, type, false),
dataAtPts(data_ptr),
72 virtual MoFEMErrorCode
integrate(
int row_side, EntityType row_type,
81 double *vec_ptr = &*
nF.begin();
84 CHKERR VecSetValues(this->getTSf(), nb_dofs, ind_ptr, vec_ptr, ADD_VALUES);
88 virtual MoFEMErrorCode
assemble(
int row_side, EntityType row_type,
101 virtual MoFEMErrorCode
assemble(
int row_side,
int col_side,
102 EntityType row_type, EntityType col_type,
107 const auto row_nb_dofs = row_data.
getIndices().size();
108 const auto col_nb_dofs = col_data.
getIndices().size();
109 transposeK.resize(col_nb_dofs, row_nb_dofs,
false);
114 CHKERR MatSetValues<AssemblyTypeSelector<A>>(this->getTSB(), row_data,
115 col_data,
K, ADD_VALUES);
117 CHKERR MatSetValues<AssemblyTypeSelector<A>>(
118 this->getTSB(), col_data, row_data,
transposeK, ADD_VALUES);
135 MoFEMErrorCode
doWork(
int row_side,
int col_side, EntityType row_type,
136 EntityType col_type,
EntData &row_data,
146 CHKERR assemble(row_side, col_side, row_type, col_type, row_data, col_data);
160 using OpAssembleVolume::OpAssembleVolume;
164 "OpAssembleVolumePositiveDefine not implemented");
168 MoFEMErrorCode
doWork(
int row_side,
int col_side, EntityType row_type,
169 EntityType col_type,
EntData &row_data,
180 auto symmetrize = [](MatrixDouble &&mat) {
181 return (mat + trans(mat)) / 2.0;
183 auto check_positive_definite = [](MatrixDouble &&mat) {
187 auto frobenius_norm = [](MatrixDouble &mat) {
189 for (std::size_t
i = 0;
i < mat.size1(); ++
i)
190 for (std::size_t
j = 0;
j < mat.size2(); ++
j)
191 sum += mat(
i,
j) * mat(
i,
j);
192 return std::sqrt(sum);
195 auto higham_method_one_pass = [&](MatrixDouble &mat) {
198 const int size = (
n + 2) *
n;
200 double *work =
new double[size];
202 VectorDouble eig(
n, 0.0);
203 MatrixDouble eigen_vec = prod(mat, trans(mat));
205 eig.data().data(), work, lwork) > 0)
207 "The algorithm failed to compute eigenvalues.");
210 double max_e = std::abs(eig[0]);
212 max_e = std::max(std::abs(e), max_e);
214 constexpr auto eps = std::numeric_limits<float>::epsilon();
215 auto min_e = std::sqrt(max_e) *
eps;
216 for (
auto &e : eig) {
217 e = std::sqrt(std::abs(e));
218 e = std::max(e, min_e);
219 e = std::min(e,
static_cast<double>(std::numeric_limits<float>::max()));
222 auto diagonal_matrix =
223 ublas::diagonal_matrix<
double, ublas::row_major,
224 VecAllocator<double>>(
n, eig.data());
225 MatrixDouble symm_mat;
226 symm_mat = prod(trans(eigen_vec), diagonal_matrix);
227 symm_mat = prod(symm_mat, eigen_vec);
229 MatrixDouble hat_m = (mat + symm_mat) / 2.0;
234 auto hat_k = higham_method_one_pass(
K);
244 CHKERR assemble(row_side, col_side, row_type, col_type, row_data, col_data);
254 :
public ForcesAndSourcesCore::UserDataOperator {
261 boost::shared_ptr<DataAtIntegrationPts>
268 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
double alpha_omega = 0)
271 MoFEMErrorCode
doWork(
int side, EntityType type,
EntData &data);
274 boost::shared_ptr<DataAtIntegrationPts>
281 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
283 std::fill(&doEntities[MBVERTEX], &doEntities[MBMAXTYPE],
false);
284 for (
auto t = moab::CN::TypeDimensionMap[
SPACE_DIM].first;
285 t <= moab::CN::TypeDimensionMap[
SPACE_DIM].second; ++
t)
286 doEntities[
t] =
true;
289 MoFEMErrorCode
doWork(
int side, EntityType type,
EntData &data);
292 boost::shared_ptr<DataAtIntegrationPts>
298 std::string block_name,
Range block_entities,
299 std::array<double, 6> &reaction_vec)
303 MoFEMErrorCode
doWork(
int side, EntityType type,
EntData &data);
306 boost::shared_ptr<DataAtIntegrationPts>
315 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
316 const double alpha,
const double rho)
329 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
341 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
350 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
359 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
364template <
int INTERP_ORDER>
367 std::string tag_name =
"")
369 std::fill(&doEntities[MBVERTEX], &doEntities[MBMAXTYPE],
false);
370 doEntities[MBVERTEX] =
true;
383 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
393 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
394 boost::shared_ptr<ExternalStrainVec> &external_strain_vec_ptr,
395 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv,
396 boost::shared_ptr<Range> ents_ptr =
nullptr)
411template <AssemblyType A>
413 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<A>
::OpBrokenBase {
415 using OP =
typename FormsIntegrators<FaceUserDataOperator>::Assembly<
419 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_base_side_data,
420 boost::shared_ptr<BcDispVec> &bc_disp_ptr,
421 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv,
422 boost::shared_ptr<Range> ents_ptr =
nullptr)
423 :
OP(broken_base_side_data, ents_ptr), bcDispPtr(bc_disp_ptr),
424 scalingMethodsMap(smv) {}
434 using OP::OpDispBcImpl;
442template <AssemblyType A>
444 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<A>
::OpBrokenBase {
446 using OP =
typename FormsIntegrators<FaceUserDataOperator>::Assembly<
450 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_base_side_data,
451 boost::shared_ptr<BcRotVec> &bc_rot_ptr,
452 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv,
453 boost::shared_ptr<Range> ents_ptr =
nullptr)
454 :
OP(broken_base_side_data, ents_ptr), bcRotPtr(bc_rot_ptr),
455 scalingMethodsMap(smv) {}
475 using OP::OpRotationBcImpl;
482 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<PETSC>
::OpBase {
484 const std::string row_field, boost::shared_ptr<TractionBcVec> bc_data,
485 boost::shared_ptr<double> piola_scale_ptr,
486 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv)
487 : FormsIntegrators<FaceUserDataOperator>::Assembly<PETSC>::
OpBase(
488 row_field, row_field, FaceUserDataOperator::OPROW),
500 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<PETSC>
::OpBase {
502 const std::string row_field, boost::shared_ptr<PressureBcVec> bc_data,
503 boost::shared_ptr<double> piola_scale_ptr,
504 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv)
505 : FormsIntegrators<FaceUserDataOperator>::Assembly<PETSC>::
OpBase(
506 row_field, row_field, FaceUserDataOperator::OPROW),
518 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<PETSC>
::OpBase {
520 const std::string row_field, boost::shared_ptr<AnalyticalTractionBcVec> bc_data,
521 boost::shared_ptr<double> piola_scale_ptr,
522 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv)
523 : FormsIntegrators<FaceUserDataOperator>::Assembly<PETSC>::
OpBase(
524 row_field, row_field, FaceUserDataOperator::OPROW),
530 boost::shared_ptr<AnalyticalTractionBcVec>
bcData;
539template <AssemblyType A>
541 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<PETSC>
::OpBase {
544 typename FormsIntegrators<FaceUserDataOperator>::Assembly<PETSC>
::OpBase;
547 std::string row_field, boost::shared_ptr<MatrixDouble> hybrid_disp_ptr,
548 boost::shared_ptr<MatrixDouble> piola_stress_ptr,
549 boost::shared_ptr<NormalDisplacementBcVec> &bc_disp_ptr,
550 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv,
551 boost::shared_ptr<Range> ents_ptr =
nullptr)
552 : FormsIntegrators<FaceUserDataOperator>::Assembly<PETSC>::
OpBase(
553 row_field, row_field,
OP::OPROW),
554 hybridDispPtr(hybrid_disp_ptr), piolaStressPtr(piola_stress_ptr),
555 bcDispPtr(bc_disp_ptr), scalingMethodsMap(smv) {}
565template <AssemblyType A>
567 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<A>
::OpBase {
570 typename FormsIntegrators<FaceUserDataOperator>::Assembly<
A>
::OpBase;
573 std::string row_field,
574 boost::shared_ptr<NormalDisplacementBcVec> &bc_disp_ptr,
575 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv,
576 boost::shared_ptr<Range> ents_ptr =
nullptr)
577 :
OP(row_field, row_field,
OP::OPROWCOL), bcDispPtr(bc_disp_ptr),
578 scalingMethodsMap(smv) {}
586template <AssemblyType A>
588 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<A>
::OpBrokenBase {
590 using OP =
typename FormsIntegrators<FaceUserDataOperator>::Assembly<
594 std::string row_field,
595 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_base_side_data,
596 boost::shared_ptr<NormalDisplacementBcVec> &bc_disp_ptr,
597 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv,
598 boost::shared_ptr<Range> ents_ptr =
nullptr)
599 :
OP(row_field, broken_base_side_data, false, false, ents_ptr),
600 bcDispPtr(bc_disp_ptr), scalingMethodsMap(smv) {}
610 using OP::OpNormalDispBcRhsImpl;
634template <AssemblyType A>
636 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<A>
::OpBrokenBase {
638 using OP =
typename FormsIntegrators<FaceUserDataOperator>::Assembly<
642 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_base_side_data,
643 boost::shared_ptr<AnalyticalDisplacementBcVec> &bc_disp_ptr,
644 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv,
645 boost::shared_ptr<Range> ents_ptr =
nullptr)
646 :
OP(broken_base_side_data, ents_ptr), bcDispPtr(bc_disp_ptr),
647 scalingMethodsMap(smv) {}
651 boost::shared_ptr<AnalyticalDisplacementBcVec>
bcDispPtr;
657 using OP::OpAnalyticalDispBcImpl;
665 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
666 const bool assemble_off =
false)
678 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
679 const double alpha,
const double rho)
689 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
690 const bool assemble_off =
false)
701 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
702 const bool assemble_off =
false)
712 using OpAssembleVolume::OpAssembleVolume;
714 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
715 const bool assemble_off)
725 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
736 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
737 const bool assemble_off)
747 std::string row_field, std::string col_field,
748 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
const bool assemble_off)
759 std::string row_field, std::string col_field,
760 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
double alpha_omega)
773 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
786 std::string row_field, std::string col_field,
787 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
800 std::string row_field, std::string col_field,
801 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
814 std::string row_field, std::string col_field,
815 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
const bool assemble_off)
827 std::string row_field, std::string col_field,
828 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
const bool assemble_off)
839 :
public VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator {
841 using OP = VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator;
848 std::vector<EntityHandle> &map_gauss_pts,
849 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
854 MoFEMErrorCode
doWork(
int side, EntityType type,
EntData &data);
862 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
869 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
879 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
887 :
public VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator {
890 using OP = VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator;
895 MoFEMErrorCode
doWork(
int side, EntityType type,
EntData &data);
898 boost::shared_ptr<DataAtIntegrationPts>
903 :
public FaceElementForcesAndSourcesCore::UserDataOperator {
906 using OP = FaceElementForcesAndSourcesCore::UserDataOperator;
911 MoFEMErrorCode
doWork(
int side, EntityType type,
EntData &data);
914 boost::shared_ptr<DataAtIntegrationPts>
918template <
int FE_DIM,
int PROBLEM_DIM,
int SPACE_DIM>
struct AddHOOps;
922 static MoFEMErrorCode
923 add(boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
924 std::vector<FieldSpace> space, std::string geom_field_name,
925 boost::shared_ptr<Range> crack_front_edges_ptr);
930 static MoFEMErrorCode
931 add(boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
932 std::vector<FieldSpace> space, std::string geom_field_name,
933 boost::shared_ptr<Range> crack_front_edges_ptr);
938 static MoFEMErrorCode
939 add(boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
940 std::vector<FieldSpace> space, std::string geom_field_name,
941 boost::shared_ptr<Range> crack_front_edges_ptr);
ForcesAndSourcesCore::UserDataOperator UserDataOperator
#define CHK_THROW_MESSAGE(err, msg)
Check and throw MoFEM exception.
#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 CHKERR
Inline error check.
FTensor::Index< 'i', SPACE_DIM > i
const double n
refractive index of diffusive medium
static __CLPK_integer lapack_dpotrf(char uplo, __CLPK_integer n, __CLPK_doublereal *a, __CLPK_integer lda)
static __CLPK_integer lapack_dsyev(char jobz, char uplo, __CLPK_integer n, __CLPK_doublereal *a, __CLPK_integer lda, __CLPK_doublereal *w, __CLPK_doublereal *work, __CLPK_integer lwork)
FTensor::Index< 'j', 3 > j
constexpr double t
plate stiffness
constexpr auto field_name
OpBaseImpl< PETSC, EdgeEleOp > OpBase
static MoFEMErrorCode add(boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, std::vector< FieldSpace > space, std::string geom_field_name, boost::shared_ptr< Range > crack_front_edges_ptr)
static MoFEMErrorCode add(boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, std::vector< FieldSpace > space, std::string geom_field_name, boost::shared_ptr< Range > crack_front_edges_ptr)
static MoFEMErrorCode add(boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, std::vector< FieldSpace > space, std::string geom_field_name, boost::shared_ptr< Range > crack_front_edges_ptr)
bool sYmm
If true assume that matrix is symmetric structure.
Data on single entity (This is passed as argument to DataOperator::doWork)
const VectorInt & getIndices() const
Get global indices of dofs on entity.
friend class ForcesAndSourcesCore
@ OPROW
operator doWork function is executed on FE rows
@ OPROWCOL
operator doWork is executed on FE rows &columns
@ OPSPACE
operator do Work is execute on space data
boost::shared_ptr< AnalyticalDisplacementBcVec > bcDispPtr
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
MoFEMErrorCode iNtegrate(EntData &data)
OpAnalyticalDispBcImpl(boost::shared_ptr< std::vector< BrokenBaseSideData > > broken_base_side_data, boost::shared_ptr< AnalyticalDisplacementBcVec > &bc_disp_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv, boost::shared_ptr< Range > ents_ptr=nullptr)
MoFEMErrorCode iNtegrate(EntData &data)
MatrixDouble K
local tangent matrix
virtual MoFEMErrorCode integrate(int row_side, EntityType row_type, EntData &data)
VectorDouble nF
local right hand side vector
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntData &row_data, EntData &col_data)
virtual MoFEMErrorCode assemble(int row_side, int col_side, EntityType row_type, EntityType col_type, EntData &row_data, EntData &col_data)
virtual MoFEMErrorCode integrate(EntData &data)
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
virtual MoFEMErrorCode assemble(EntData &data)
OpAssembleBasic(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type)
virtual MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
const bool assembleSymmetry
boost::function< double()> ScaleOff
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
virtual MoFEMErrorCode assemble(int row_side, EntityType row_type, EntData &data)
OpAssembleBasic(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type, const bool assemble_symmetry, ScaleOff scale_off=[]() { return 1;})
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
Operator for linear form, usually to calculate values on right hand side.
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.
boost::shared_ptr< AnalyticalTractionBcVec > bcData
OpBrokenAnalyticalTractionBc(const std::string row_field, boost::shared_ptr< AnalyticalTractionBcVec > bc_data, boost::shared_ptr< double > piola_scale_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv)
boost::shared_ptr< double > piolaScalePtr
MoFEMErrorCode iNtegrate(EntData &data)
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
OpBrokenPressureBc(const std::string row_field, boost::shared_ptr< PressureBcVec > bc_data, boost::shared_ptr< double > piola_scale_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv)
boost::shared_ptr< double > piolaScalePtr
MoFEMErrorCode iNtegrate(EntData &data)
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
boost::shared_ptr< PressureBcVec > bcData
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
OpBrokenTractionBc(const std::string row_field, boost::shared_ptr< TractionBcVec > bc_data, boost::shared_ptr< double > piola_scale_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv)
boost::shared_ptr< double > piolaScalePtr
boost::shared_ptr< TractionBcVec > bcData
MoFEMErrorCode iNtegrate(EntData &data)
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
Operator for linear form, usually to calculate values on right hand side.
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
OpCalculateEshelbyStress(boost::shared_ptr< DataAtIntegrationPts > data_ptr)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
std::array< double, 6 > & reactionVec
OpCalculateReactionForces(boost::shared_ptr< DataAtIntegrationPts > data_ptr, std::string block_name, Range block_entities, std::array< double, 6 > &reaction_vec)
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
Operator for linear form, usually to calculate values on right hand side.
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
OpCalculateRotationAndSpatialGradient(boost::shared_ptr< DataAtIntegrationPts > data_ptr, double alpha_omega=0)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
OpCalculateTractionFromSideEl(boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
OpDispBcImpl(boost::shared_ptr< std::vector< BrokenBaseSideData > > broken_base_side_data, boost::shared_ptr< BcDispVec > &bc_disp_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv, boost::shared_ptr< Range > ents_ptr=nullptr)
MoFEMErrorCode iNtegrate(EntData &data)
boost::shared_ptr< BcDispVec > bcDispPtr
MoFEMErrorCode iNtegrate(EntData &data)
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
FaceElementForcesAndSourcesCore::UserDataOperator OP
OpFaceMaterialForce(boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
OpFaceSideMaterialForce(boost::shared_ptr< DataAtIntegrationPts > data_ptr)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator OP
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
OpGetInternalStress(boost::shared_ptr< DataAtIntegrationPts > data_ptr, std::string tag_name="")
virtual MoFEMErrorCode evaluateLhs(EntData &data)=0
boost::shared_ptr< PhysicalEquations > physicsPtr
material physical equations
virtual MoFEMErrorCode evaluateRhs(EntData &data)=0
OpJacobian(const int tag, const bool eval_rhs, const bool eval_lhs, boost::shared_ptr< DataAtIntegrationPts > data_ptr, boost::shared_ptr< PhysicalEquations > physics_ptr)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
boost::shared_ptr< NormalDisplacementBcVec > bcDispPtr
OpNormalDispBcLhsImpl_dP(std::string row_field, boost::shared_ptr< std::vector< BrokenBaseSideData > > broken_base_side_data, boost::shared_ptr< NormalDisplacementBcVec > &bc_disp_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv, boost::shared_ptr< Range > ents_ptr=nullptr)
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
OpNormalDispBcLhsImpl_dU(std::string row_field, boost::shared_ptr< NormalDisplacementBcVec > &bc_disp_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv, boost::shared_ptr< Range > ents_ptr=nullptr)
boost::shared_ptr< NormalDisplacementBcVec > bcDispPtr
boost::shared_ptr< MatrixDouble > hybridDispPtr
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
MoFEMErrorCode iNtegrate(EntData &data)
boost::shared_ptr< NormalDisplacementBcVec > bcDispPtr
boost::shared_ptr< MatrixDouble > piolaStressPtr
OpNormalDispBcRhsImpl(std::string row_field, boost::shared_ptr< MatrixDouble > hybrid_disp_ptr, boost::shared_ptr< MatrixDouble > piola_stress_ptr, boost::shared_ptr< NormalDisplacementBcVec > &bc_disp_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv, boost::shared_ptr< Range > ents_ptr=nullptr)
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode iNtegrate(EntData &data)
std::vector< EntityHandle > & mapGaussPts
OpPostProcDataStructure(moab::Interface &post_proc_mesh, std::vector< EntityHandle > &map_gauss_pts, boost::shared_ptr< DataAtIntegrationPts > data_ptr, int sense)
moab::Interface & postProcMesh
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator OP
OpRotationBcImpl(boost::shared_ptr< std::vector< BrokenBaseSideData > > broken_base_side_data, boost::shared_ptr< BcRotVec > &bc_rot_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv, boost::shared_ptr< Range > ents_ptr=nullptr)
MoFEMErrorCode iNtegrate(EntData &data)
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
boost::shared_ptr< BcRotVec > bcRotPtr
Apply rotation boundary condition.
MoFEMErrorCode iNtegrate(EntData &data)
MoFEMErrorCode integrate(EntData &data)
OpSpatialConsistencyBubble(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MoFEMErrorCode integrate(EntData &data)
OpSpatialConsistencyDivTerm(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MoFEMErrorCode integrate(EntData &data)
OpSpatialConsistencyP(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialConsistency_dBubble_dBubble(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MoFEMErrorCode integrateImpl(EntData &row_data, EntData &col_data)
OpSpatialConsistency_dBubble_dP(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MoFEMErrorCode integrateImpl(EntData &row_data, EntData &col_data)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialConsistency_dBubble_domega(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode integrateImpl(EntData &row_data, EntData &col_data)
OpSpatialConsistency_dP_dP(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialConsistency_dP_domega(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off)
OpSpatialEquilibrium_dw_dP(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off=false)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialEquilibrium_dw_dw(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const double alpha, const double rho)
MoFEMErrorCode integrate(EntData &data)
OpSpatialEquilibrium(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const double alpha, const double rho)
boost::shared_ptr< ExternalStrainVec > externalStrainVecPtr
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
OpSpatialPhysicalExternalStrain(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr, boost::shared_ptr< ExternalStrainVec > &external_strain_vec_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv, boost::shared_ptr< Range > ents_ptr=nullptr)
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
MoFEMErrorCode integrate(EntData &row_data)
MoFEMErrorCode integrate(EntData &row_data)
OpSpatialPhysicalInternalStress(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
OpSpatialPhysical_du_dBubble(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off=false)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialPhysical_du_dP(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off=false)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialPhysical_du_domega(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off)
OpSpatialPrj_dx_dw(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialPrj_dx_dx(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
OpSpatialPrj(std::string row_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MoFEMErrorCode integrate(EntData &row_data)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialRotation_domega_dBubble(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off)
OpSpatialRotation_domega_dP(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialRotation_domega_domega(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, double alpha_omega)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialRotation_domega_du(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, double alpha_omega)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialRotation(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr, double alpha_omega)
MoFEMErrorCode integrate(EntData &data)