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 ...@@ -182,7 +182,8 @@ namespace HappyHeart
* *
* \todo #9 - #820 To complete! * \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). //! Compute the matrix with an updated T21 block (to use after the Newton converged).
......
...@@ -144,7 +144,8 @@ namespace HappyHeart ...@@ -144,7 +144,8 @@ namespace HappyHeart
template<class HyperelasticLawT> template<class HyperelasticLawT>
double VariationalFormulation<HyperelasticLawT> double VariationalFormulation<HyperelasticLawT>
::PerformDifferential(unsigned int iteration) ::PerformDifferential(unsigned int iteration,
const GlobalMatrix& monolithic_without_dirichlet)
{ {
SetIndexInnerLoop(iteration); SetIndexInnerLoop(iteration);
//decltype(auto) time_manager = parent::GetTimeManager(); //decltype(auto) time_manager = parent::GetTimeManager();
...@@ -211,7 +212,9 @@ namespace HappyHeart ...@@ -211,7 +212,9 @@ namespace HappyHeart
auto& dirichlet_load_state_correction = GetNonCstDirichletLoadStateCorrection(); 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, robin_vector,
dirichlet_load_state_correction, dirichlet_load_state_correction,
__FILE__, __LINE__); __FILE__, __LINE__);
......
...@@ -81,7 +81,8 @@ namespace HappyHeart ...@@ -81,7 +81,8 @@ namespace HappyHeart
} }
case differential::yes: case differential::yes:
{ {
current_norm = inner_varf.PerformDifferential(counter++); current_norm = inner_varf.PerformDifferential(counter++,
GetMonolithicMatrixAfterInnerLoopWithoutDirichlet());
break; 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