You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
What is should be the strategy with implementing precs ?
The pattern I like is:
struct ILUZero_ILU0 endfunction (::ILUZero_ILU0)(A, p=nothing)
(ilu0(sparse(A)),I)
end
so we can have a solver like KrylovJL_CG(precs=ILUZero_ILU0()) etc.
Where this implementation should live ?
a) Due to the fact that this implementation does not depend on LinearSolve, it could become part of the respectve preconditioning packages. So should we go and make PRs there ?
b) Or do you plan to have Package extensions for LinearSolve ?
I find a) quite intriguing...
The text was updated successfully, but these errors were encountered:
I think for now, it belongs in the preconditioner package, but they could also belong as package extensions. Both approaches seem to work to me, and I don't think either has a hidden downside.
Just wanted to follow up here, now that the code has settled. I intend to do a couple of PRs to ILUZero, AlgebraicMultigrid and the like (i.e. those that I "like"). As for a consistent pattern, I would choose something like ILUZero.ILU0Precs, AlgebraicMultigrid.AlgebraicMultigridPrecs etc., i.e. introduce the pattern XXXPrecs, so people would write KrylovJL_CG(precs=ILU0Precs). Other naming like XXXPreconditioners might be an alternative at this point in time.
Question❓
What is should be the strategy with implementing
precs
?The pattern I like is:
so we can have a solver like
KrylovJL_CG(precs=ILUZero_ILU0())
etc.Where this implementation should live ?
a) Due to the fact that this implementation does not depend on LinearSolve, it could become part of the respectve preconditioning packages. So should we go and make PRs there ?
b) Or do you plan to have Package extensions for LinearSolve ?
I find a) quite intriguing...
The text was updated successfully, but these errors were encountered: