#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 710 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 1458 of file CrackFrontElement.cpp.
1463 const int *row_indices = &*row_data.getIndices().data().begin();
1464 const int *col_indices = &*col_data.getIndices().data().begin();
1467 Mat B = getFEMethod()->ksp_B != PETSC_NULL ? getFEMethod()->ksp_B
1468 : getFEMethod()->snes_B;
1471 &*
K.data().begin(), ADD_VALUES);
1476 transK.resize(
K.size2(),
K.size1(),
false);
1479 &*
transK.data().begin(), ADD_VALUES);
◆ doWork()
Definition at line 1348 of file CrackFrontElement.cpp.
1354 nbRows = row_data.getIndices().size();
1358 nbCols = col_data.getIndices().size();
1366 if (row_side == col_side && row_type == col_type) {
◆ iNtegrate()
Definition at line 1378 of file CrackFrontElement.cpp.
1384 &
m(
r + 0,
c + 0), &
m(
r + 0,
c + 1), &
m(
r + 0,
c + 2), &
m(
r + 1,
c + 0),
1385 &
m(
r + 1,
c + 1), &
m(
r + 1,
c + 2), &
m(
r + 2,
c + 0), &
m(
r + 2,
c + 1),
1394 double vol = getVolume();
1396 auto t_w = getFTensor0IntegrationWeight();
1398 auto t_row_diff_base = row_data.getFTensor1DiffN<3>();
1399 const int row_nb_base_fun = row_data.getN().size2();
1404 auto t_cauchy_stress =
1405 getFTensor2SymmetricFromMat<3>(*(
dataAtPts->cauchyStressMat));
1406 auto t_invH = getFTensor2FromMat<3, 3>(*
dataAtPts->invHMat);
1409 auto t_initial_singular_displacement =
1414 double a = t_w * vol * det_H[gg];
1415 const double stress_dho_coef = (
rhoN /
rho);
1418 for (; rr !=
nbRows / 3; ++rr) {
1420 auto t_m = get_tensor2(
K, 3 * rr, 0);
1423 t_row_diff_base_pulled(
i) = t_row_diff_base(
j) * t_invH(
j,
i);
1426 t_row_stress(
i) =
a * t_row_diff_base_pulled(
j) * t_cauchy_stress(
i,
j);
1428 t_a(
i,
k) = t_row_stress(
i) * stress_dho_coef * t_grad_rho(
k);
1430 auto t_col_diff_base = col_data.getFTensor1DiffN<3>(gg, 0);
1431 auto t_col_base = col_data.getFTensor0N(gg, 0);
1432 for (
int cc = 0; cc !=
nbCols / 3; ++cc) {
1435 t_a(
i,
k) * t_col_diff_base(
l) * t_initial_singular_displacement(
l);
1444 for (; rr != row_nb_base_fun; ++rr)
1447 ++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.