<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div dir="ltr">
<div dir="ltr">Thibaut :<br>
</div>
<div>How large is your A_m? Write/Read to/from the disc is non-scalable. It would be the last resort when matrix factor is too large for the memory. PETSc/mumps interface does not support this feature.</div>
<div><br>
</div>
<div>If A_m is not huge, you can create one KSP, with matrix </div>
<div>A = diag(A_m).</div>
<div>Keep LU factor of A = diag( LU factor of A_m), then solve A x = b repeatedly with changing b.</div>
<div>You can use '-pc_type bjacobi -pc_bjacobi_blocks M -sub_pc_type lu'</div>
<div>Hong</div>
<div><br>
</div>
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Dear PETSc users,<br>
<br>
I need to solve several linear systems successively, with LU <br>
factorization, as part of an iterative process in my Fortran application <br>
code.<br>
<br>
The process would solve M systems (A_m)(x_m,i) = (b_m,i) for m=1,M at <br>
each iteration i, but computing the LU factorization of A_m only once.<br>
The RHSs (b_m,i+1) are computed from all the different (x_m,i) and all <br>
depend upon each other.<br>
<br>
The way I envisage to perform that is to use MUMPS to compute, <br>
successively, each of the LU factorizations (m) in parallel and store <br>
the factors on disk, creating/assembling/destroying the matrices A_m on <br>
the go.<br>
Then whenever needed, read the factors in parallel to solve the systems. <br>
Since version 5.2, MUMPS has a save/restore feature that allows that, <br>
see <a href="http://mumps.enseeiht.fr/doc/userguide_5.2.1.pdf" rel="noreferrer" target="_blank">
http://mumps.enseeiht.fr/doc/userguide_5.2.1.pdf</a> p.20, 24 and 58.<br>
<br>
In its current state, the PETSc/MUMPS interface does not incorporate <br>
that feature. I'm an advanced Fortran programmer but not in C so I don't <br>
think I would do an amazing job having a go inside <br>
src/mat/impls/aij/mpi/mumps/mumps.c.<br>
<br>
I was picturing something like creating as many KSP objects as linear <br>
systems to be solved, with some sort of flag to force the storage of LU <br>
factors on disk after the first call to KSPSolve. Then keep calling <br>
KSPSolve as many times as needed.<br>
<br>
Would you support such a feature?<br>
<br>
Thanks for your support,<br>
<br>
Thibaut<br>
</blockquote>
</div>
</div>
</body>
</html>