#include <users_modules/fracture_mechanics/src/CrackFrontElement.hpp>
|
| OpAleLhsWithDensitySingularElement_dX_dX (const std::string row_field, const std::string col_field, boost::shared_ptr< HookeElement::DataAtIntegrationPts > &data_at_pts, boost::shared_ptr< VectorDouble > rho_at_gauss_pts, boost::shared_ptr< MatrixDouble > rho_grad_at_gauss_pts, const double rho_n, const double rho_0, boost::shared_ptr< MatrixDouble > singular_displacement) |
|
Definition at line 664 of file CrackFrontElement.hpp.
◆ OpAleLhsWithDensitySingularElement_dX_dX()
FractureMechanics::OpAleLhsWithDensitySingularElement_dX_dX::OpAleLhsWithDensitySingularElement_dX_dX |
( |
const std::string |
row_field, |
|
|
const std::string |
col_field, |
|
|
boost::shared_ptr< HookeElement::DataAtIntegrationPts > & |
data_at_pts, |
|
|
boost::shared_ptr< VectorDouble > |
rho_at_gauss_pts, |
|
|
boost::shared_ptr< MatrixDouble > |
rho_grad_at_gauss_pts, |
|
|
const double |
rho_n, |
|
|
const double |
rho_0, |
|
|
boost::shared_ptr< MatrixDouble > |
singular_displacement |
|
) |
| |
◆ aSsemble()
Definition at line 1309 of file CrackFrontElement.cpp.
1314 const int *row_indices = &*row_data.getIndices().data().begin();
1315 const int *col_indices = &*col_data.getIndices().data().begin();
1318 Mat B = getFEMethod()->ksp_B != PETSC_NULL ? getFEMethod()->ksp_B
1319 : getFEMethod()->snes_B;
1322 &*
K.data().begin(), ADD_VALUES);
1327 transK.resize(
K.size2(),
K.size1(),
false);
1330 &*
transK.data().begin(), ADD_VALUES);
◆ doWork()
Definition at line 1199 of file CrackFrontElement.cpp.
1205 nbRows = row_data.getIndices().size();
1209 nbCols = col_data.getIndices().size();
1217 if (row_side == col_side && row_type == col_type) {
◆ iNtegrate()
Definition at line 1229 of file CrackFrontElement.cpp.
1235 &
m(
r + 0,
c + 0), &
m(
r + 0,
c + 1), &
m(
r + 0,
c + 2), &
m(
r + 1,
c + 0),
1236 &
m(
r + 1,
c + 1), &
m(
r + 1,
c + 2), &
m(
r + 2,
c + 0), &
m(
r + 2,
c + 1),
1245 double vol = getVolume();
1247 auto t_w = getFTensor0IntegrationWeight();
1249 auto t_row_diff_base = row_data.getFTensor1DiffN<3>();
1250 const int row_nb_base_fun = row_data.getN().size2();
1255 auto t_eshelby_stress =
1256 getFTensor2FromMat<3, 3>(*
dataAtPts->eshelbyStressMat);
1257 auto t_invH = getFTensor2FromMat<3, 3>(*
dataAtPts->invHMat);
1260 auto t_initial_singular_displacement =
1265 double a = t_w * vol * det_H[gg];
1266 const double stress_dho_coef = (
rhoN /
rho);
1269 for (; rr !=
nbRows / 3; ++rr) {
1271 auto t_m = get_tensor2(
K, 3 * rr, 0);
1274 t_row_diff_base_pulled(
i) = t_row_diff_base(
j) * t_invH(
j,
i);
1277 t_row_stress(
i) =
a * t_row_diff_base_pulled(
j) * t_eshelby_stress(
i,
j);
1279 t_a(
i,
k) = t_row_stress(
i) * stress_dho_coef * t_grad_rho(
k);
1281 auto t_col_diff_base = col_data.getFTensor1DiffN<3>(gg, 0);
1282 auto t_col_base = col_data.getFTensor0N(gg, 0);
1283 for (
int cc = 0; cc !=
nbCols / 3; ++cc) {
1286 t_a(
i,
k) * t_col_diff_base(
l) * t_initial_singular_displacement(
l);
1295 for (; rr != row_nb_base_fun; ++rr)
1298 ++t_initial_singular_displacement;
◆ colIndices
VectorInt FractureMechanics::OpAleLhsWithDensitySingularElement_dX_dX::colIndices |
◆ dataAtPts
boost::shared_ptr<HookeElement::DataAtIntegrationPts> FractureMechanics::OpAleLhsWithDensitySingularElement_dX_dX::dataAtPts |
◆ isDiag
bool FractureMechanics::OpAleLhsWithDensitySingularElement_dX_dX::isDiag |
MatrixDouble FractureMechanics::OpAleLhsWithDensitySingularElement_dX_dX::K |
◆ nbCols
int FractureMechanics::OpAleLhsWithDensitySingularElement_dX_dX::nbCols |
◆ nbIntegrationPts
int FractureMechanics::OpAleLhsWithDensitySingularElement_dX_dX::nbIntegrationPts |
◆ nbRows
int FractureMechanics::OpAleLhsWithDensitySingularElement_dX_dX::nbRows |
◆ nF
VectorDouble FractureMechanics::OpAleLhsWithDensitySingularElement_dX_dX::nF |
◆ rHo0
const double FractureMechanics::OpAleLhsWithDensitySingularElement_dX_dX::rHo0 |
◆ rhoAtGaussPtsPtr
boost::shared_ptr<VectorDouble> FractureMechanics::OpAleLhsWithDensitySingularElement_dX_dX::rhoAtGaussPtsPtr |
◆ rhoGradAtGaussPtsPtr
boost::shared_ptr<MatrixDouble> FractureMechanics::OpAleLhsWithDensitySingularElement_dX_dX::rhoGradAtGaussPtsPtr |
◆ rhoN
const double FractureMechanics::OpAleLhsWithDensitySingularElement_dX_dX::rhoN |
◆ rowIndices
VectorInt FractureMechanics::OpAleLhsWithDensitySingularElement_dX_dX::rowIndices |
◆ singularDisplacement
boost::shared_ptr<MatrixDouble> FractureMechanics::OpAleLhsWithDensitySingularElement_dX_dX::singularDisplacement |
◆ transK
MatrixDouble FractureMechanics::OpAleLhsWithDensitySingularElement_dX_dX::transK |
The documentation for this struct was generated from the following files:
MoFEMErrorCode MatSetValues(Mat M, const EntitiesFieldData::EntData &row_data, const EntitiesFieldData::EntData &col_data, const double *ptr, InsertMode iora)
Assemble PETSc matrix.