Commit d85479ab authored by GILLES Sebastien's avatar GILLES Sebastien
Browse files

#820 Fix a bug introduced yesterday: the matrix used in dH was not the right...

#820 Fix a bug introduced yesterday: the matrix used in dH was not the right one (Dirichlet contribution was still there; it didn't appear on numerical results of first iteration but could have been tricky to find in later ones).
parent 9d5b43a2
......@@ -182,7 +182,8 @@ namespace HappyHeart
*
* \todo #9 - #820 To complete!
*/
double PerformDifferential(unsigned int iteration);
double PerformDifferential(unsigned int iteration,
const GlobalMatrix& monolithic_without_dirichlet);
//! Compute the matrix with an updated T21 block (to use after the Newton converged).
......
......@@ -144,7 +144,8 @@ namespace HappyHeart
template<class HyperelasticLawT>
double VariationalFormulation<HyperelasticLawT>
::PerformDifferential(unsigned int iteration)
::PerformDifferential(unsigned int iteration,
const GlobalMatrix& monolithic_without_dirichlet)
{
SetIndexInnerLoop(iteration);
//decltype(auto) time_manager = parent::GetTimeManager();
......@@ -211,7 +212,9 @@ namespace HappyHeart
auto& dirichlet_load_state_correction = GetNonCstDirichletLoadStateCorrection();
Wrappers::Petsc::MatMult(parent::GetSystemMatrix(numbering_subset, numbering_subset),
// Matrix here is the one computed after the Newton loop was done, without the Dirichlet condition
// inside for T33 term.
Wrappers::Petsc::MatMult(monolithic_without_dirichlet,
robin_vector,
dirichlet_load_state_correction,
__FILE__, __LINE__);
......
......@@ -81,7 +81,8 @@ namespace HappyHeart
}
case differential::yes:
{
current_norm = inner_varf.PerformDifferential(counter++);
current_norm = inner_varf.PerformDifferential(counter++,
GetMonolithicMatrixAfterInnerLoopWithoutDirichlet());
break;
}
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment