|
| v0.14.0
|
#include <users_modules/fracture_mechanics/src/GriffithForceElement.hpp>
|
| OpHeterogeneousGcLhs (int tag, BlockData &block_data, CommonData &common_data, const double beta_gc) |
|
MoFEMErrorCode | doWork (int row_side, int col_side, EntityType row_type, EntityType col_type, DataForcesAndSourcesCore::EntData &row_data, DataForcesAndSourcesCore::EntData &col_data) |
|
| AuxOp (int tag, BlockData &block_data, CommonData &common_data) |
|
MoFEMErrorCode | setIndices (DataForcesAndSourcesCore::EntData &data) |
|
MoFEMErrorCode | setVariables (FaceElementForcesAndSourcesCore::UserDataOperator *fe_ptr, DataForcesAndSourcesCore::EntData &data) |
|
MoFEMErrorCode | setLambdaNodes (FaceElementForcesAndSourcesCore::UserDataOperator *fe_ptr, const std::string &lambda_field_name) |
|
MoFEMErrorCode | setLambdaIndices (FaceElementForcesAndSourcesCore::UserDataOperator *fe_ptr, const std::string &lambda_field_name) |
|
Definition at line 718 of file GriffithForceElement.hpp.
◆ OpHeterogeneousGcLhs()
FractureMechanics::GriffithForceElement::OpHeterogeneousGcLhs::OpHeterogeneousGcLhs |
( |
int |
tag, |
|
|
BlockData & |
block_data, |
|
|
CommonData & |
common_data, |
|
|
const double |
beta_gc |
|
) |
| |
|
inline |
◆ doWork()
Definition at line 732 of file GriffithForceElement.hpp.
738 if (row_type != MBVERTEX) {
745 AuxFunctions<double> auxFun;
746 auxFun.currentCoords.resize(9,
false);
748 int nb_dofs = row_data.getFieldData().size();
749 for (
int dd = 0;
dd != nb_dofs;
dd++)
750 auxFun.currentCoords[
dd] = row_data.getFieldData()[
dd];
754 int nb_gauss_pts = row_data.getN().size1();
755 int nb_base_row = row_data.getFieldData().size() / 3;
756 int nb_base_col = col_data.getFieldData().size() / 3;
758 int row_nb_dofs = row_data.getIndices().size();
759 mat.resize(9, 9,
false);
764 auto get_ftensor_from_vec = [](
auto &
v) {
770 &
m(3 *
r + 0, 3 *
c + 0), &
m(3 *
r + 0, 3 *
c + 1),
771 &
m(3 *
r + 0, 3 *
c + 2), &
m(3 *
r + 1, 3 *
c + 0),
772 &
m(3 *
r + 1, 3 *
c + 1), &
m(3 *
r + 1, 3 *
c + 2),
773 &
m(3 *
r + 2, 3 *
c + 0), &
m(3 *
r + 2, 3 *
c + 1),
774 &
m(3 *
r + 2, 3 *
c + 2));
777 for (
int gg = 0; gg != nb_gauss_pts; gg++) {
779 double val = getGaussPts()(2, gg) * 0.5;
781 auxFun.calculateGriffithForce(1, 1, row_data.getDiffN(gg));
783 auto t_griffith = get_ftensor_from_vec(auxFun.griffithForce);
785 for (
int rrr = 0; rrr != nb_base_row; rrr++) {
789 k(
i,
j) = t_diff_rho(
j) * t_griffith(
i) *
a;
791 auto tt_mat = get_tensor2(
mat, rrr, rrr);
792 tt_mat(
i,
j) +=
k(
i,
j);
800 int col_nb_dofs = col_data.getIndices().size();
804 &*col_data.getIndices().data().begin(),
805 &*
mat.data().begin(), ADD_VALUES);
◆ betaGC
const double FractureMechanics::GriffithForceElement::OpHeterogeneousGcLhs::betaGC |
◆ mat
MatrixDouble FractureMechanics::GriffithForceElement::OpHeterogeneousGcLhs::mat |
The documentation for this struct was generated from the following file:
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
MoFEMErrorCode MatSetValues(Mat M, const EntitiesFieldData::EntData &row_data, const EntitiesFieldData::EntData &col_data, const double *ptr, InsertMode iora)
Assemble PETSc matrix.
AuxOp(int tag, BlockData &block_data, CommonData &common_data)
MoFEMErrorCode setIndices(DataForcesAndSourcesCore::EntData &data)
UBlasMatrix< double > MatrixDouble
@ OPROWCOL
operator doWork is executed on FE rows &columns
double gc
Griffith energy.
MoFEMErrorCode setVariables(FaceElementForcesAndSourcesCore::UserDataOperator *fe_ptr, DataForcesAndSourcesCore::EntData &data)
const double c
speed of light (cm/ns)
#define CHKERR
Inline error check.
static auto getFTensor0FromVec(ublas::vector< T, A > &data)
Get tensor rank 0 (scalar) form data vector.
FTensor::Index< 'i', SPACE_DIM > i
MatrixDouble diffRho
for lhs with heterogeneous gc
const double v
phase velocity of light in medium (cm/ns)
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)
VectorDouble densityRho
gc * rho^beta
ForcesAndSourcesCore::UserDataOperator UserDataOperator
FTensor::Index< 'j', 3 > j
ublas::vector< int > rowIndices
FTensor::Index< 'm', 3 > m
FTensor::Index< 'k', 3 > k
#define MoFEMFunctionReturn(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 ...