Replies: 2 comments 1 reply
-
Hi @Kuloss, First, I find it a bit strange that Second, just to make sure we are on the same page, the I hope this helps. Best, Socratis |
Beta Was this translation helpful? Give feedback.
-
Hi @Kuloss, Maybe I missing something, but while the HypreAMS object is a linear operator, you never want to represent it as a matrix. Such a matrix will be dense, and This is similar to an outer product matrix Hope this is helpful, |
Beta Was this translation helpful? Give feedback.
-
I have been using mfem for a year now, and while I find it cool, I still consider myself to be a new user. I have a question about Experiment 25p, where I would like to use
HypreGMRES
instead ofGMRESSolver
. I compared these two solvers in a real linear system at Experiment 31p, and I found thatHypreGMRES
(32s, iteration 19) is faster thanGMRESSolver
(40s, iteration 22) and requires fewer iterations. However, I am having difficulty dealing with preconditioning when trying to switch solvers in Experiment 25p.I have read the implementation method in
GMRESSolver
in Experiment 25p, and it seems that the method forms a block diagonal preconditionerBlockDB
for the complex system using two operators obtained from user-defined preconditioning operatorams00
. As written in this reference paper (https://www.research-collection.ethz.ch/bitstream/handle/20.500.11850/103394/geo2015-0013.1.pdf?sequence=2), the hidden matrix inBlockDB
is similar to an inverse matrix to PA.My question concerns the role of preconditioning in
gmres.Mult(B, X)
. To my understanding, what really matters is the hidden matrix inBlockDB
and theMult
method itself. However, I am having difficulty retrieving/accessing this hidden matrix directly as aHypreParMatrix
butams00.printmatlab
.In Experiment 25p, you defined
HypreAMS* ams00 = new HypreAMS(*PCOpAh.As(),fespace);
ams00
its initial method is associated with fespace, and the size of hidden Matrix and input Matrix*PCOpAh.As<HypreParMatrix>()
is limited.I would like to obtain a small
HypreParMartrix
fromams00
and combine the small Matrix to form a big Matrix usingHypreParMatrixFromBlocks
orComplexHypreParMatrix
. Ideally, I’d liketo use HypreParMatrix as precondion directly, intead of using BlockDP in GMRESSolver.I am not very familiar with the
Hypre lib.
, so I am wondering if there is something special that I should keep in mind when providing a preconditioner with fespace initial. Is it possible to provide a knownHypreParMatrix
as a preconditioner instead?Beta Was this translation helpful? Give feedback.
All reactions