874 {
876 if (type != MBVERTEX) {
878 }
879
881
883
885 for (
int dd = 0;
dd != 9; ++
dd)
887
889 data.getDiffN(0));
890
891
892 double delta[] = {0, 0, 0};
893 for (int nn = 0; nn != 3; ++nn) {
898 "Element has no nodes at crack front");
899 }
900 continue;
901 }
902 for (
int dd = 0;
dd != 3; ++
dd) {
903 int idx = 3 * nn +
dd;
905 (data.getFieldData()[idx] - getCoords()[idx]);
906 }
907 }
908
910
912 }
#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 ...
@ MOFEM_DATA_INCONSISTENCY
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define CHKERR
Inline error check.
const Tensor2_symmetric_Expr< const ddTensor0< T, Dim, i, j >, typename promote< T, double >::V, Dim, i, j > dd(const Tensor0< T * > &a, const Index< i, Dim > index1, const Index< j, Dim > index2, const Tensor1< int, Dim > &d_ijk, const Tensor1< double, Dim > &d_xyz)
MoFEMErrorCode VecSetValues(Vec V, const EntitiesFieldData::EntData &data, const double *ptr, InsertMode iora)
Assemble PETSc vector.
static constexpr double delta
ublas::vector< TYPE > currentCoords
MoFEMErrorCode calculateGriffithForce(const double gc, const double beta, const MatrixDouble &diff_n)
ublas::vector< TYPE > griffithForce
ublas::vector< int > rowIndices
MoFEMErrorCode setLambdaIndices(FaceElementForcesAndSourcesCore::UserDataOperator *fe_ptr, const std::string &lambda_field_name)
VectorInt3 rowLambdaIndices
MoFEMErrorCode setIndices(DataForcesAndSourcesCore::EntData &data)
AuxFunctions< double > auxFun