Mentions légales du service

Skip to content
Snippets Groups Projects

Add solveAgainLaplacian() for multiple RHS solve with same matrix

Merged Laurent FACQ requested to merge solveAgainLaplacian into master
3 files
+ 20
4
Compare changes
  • Side-by-side
  • Inline
Files
3
@@ -37,8 +37,6 @@ void LaplacianPetsc::zeroMatrix()
@@ -37,8 +37,6 @@ void LaplacianPetsc::zeroMatrix()
double LaplacianPetsc::solveLaplacian()
double LaplacianPetsc::solveLaplacian()
{
{
PetscInt nbIteration;
PetscReal norm;
PetscBool assembled;
PetscBool assembled;
if (!MatAssembled(_LaplacianMatrix,&assembled)) {
if (!MatAssembled(_LaplacianMatrix,&assembled)) {
@@ -46,8 +44,6 @@ double LaplacianPetsc::solveLaplacian()
@@ -46,8 +44,6 @@ double LaplacianPetsc::solveLaplacian()
MatAssemblyEnd(_LaplacianMatrix, MAT_FINAL_ASSEMBLY);
MatAssemblyEnd(_LaplacianMatrix, MAT_FINAL_ASSEMBLY);
}
}
VecAssemblyBegin(_RHS);
VecAssemblyEnd(_RHS);
VecDuplicate(_RHS, &_dum);
VecDuplicate(_RHS, &_dum);
KSPSetOperators(_ksp, _LaplacianMatrix, _LaplacianMatrix);
KSPSetOperators(_ksp, _LaplacianMatrix, _LaplacianMatrix);
@@ -62,6 +58,18 @@ double LaplacianPetsc::solveLaplacian()
@@ -62,6 +58,18 @@ double LaplacianPetsc::solveLaplacian()
MatSetNullSpace(_LaplacianMatrix, _nullsp);
MatSetNullSpace(_LaplacianMatrix, _nullsp);
}
}
}
}
 
 
return LaplacianPetsc::solveAgainLaplacian();
 
}
 
 
double LaplacianPetsc::solveAgainLaplacian()
 
{
 
PetscInt nbIteration;
 
PetscReal norm;
 
 
VecAssemblyBegin(_RHS);
 
VecAssemblyEnd(_RHS);
 
KSPSolve(_ksp, _RHS, _dum);
KSPSolve(_ksp, _RHS, _dum);
KSPGetIterationNumber(_ksp, &nbIteration);
KSPGetIterationNumber(_ksp, &nbIteration);
KSPGetResidualNorm(_ksp, &norm);
KSPGetResidualNorm(_ksp, &norm);
Loading