Hello everyone,
I am currently solving a stabilized version of the Navier-Stokes equation using dealii and everything is working well when I use a direct solver.
I would like (obviously?) to extend it to use a FGMRES iterative solver to be able to tackle very large systems. I have ported those aspects to use Trilinos.
The weak form is (for now we can neglect the temperature related term) :
Concretely, the additional term due to the stabilization affect the velocity block in a SUPG manner and the pressure block by adding an element-dependent stiffness matrix.
I have read that ILU and ILUT type of preconditioners are the best-suited for this type of systems, but I find myself unable to orient my choice of parameters.
When we look at the constructor for the AdditionalData of ILU and ILUT preconditioner there are the following parameters:
ILU :
AdditionalData(const unsigned int ilu_fill = 0,
const double ilu_atol = 0.,
const double ilu_rtol = 1.,
const unsigned int overlap = 0);
ILUT:
AdditionalData(const double ilut_drop = 0.,
const unsigned int ilut_fill = 0,
const double ilut_atol = 0.,
const double ilut_rtol = 1.,
const unsigned int overlap = 0);
The documentation suggest an atol between 1e-2 and 1e-5 and a rtol of the order of 1.01. However, what should my ilu_fill and ilut_drop be? I understand that increasing the fill will increase the memory consumption and that I should try to reach a compromise, but right now I find that it's mostly the speed of my iterative solve that is the problem. Are there any guidelines to orient my choice of parameters? Am I going with the right type of pre-conditioner or am I in the wrong here?
Thank you very much for your help.