<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Mon, Aug 27, 2018 at 4:12 AM Ali Reza Khaz'ali <<a href="mailto:arkhazali@cc.iut.ac.ir">arkhazali@cc.iut.ac.ir</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> > Okay, interesting.  I take it you either are not running in parallel <br>
or need to have several subdomains (of varying size) per process.<br>
 > One approach would be to use PCASM (with zero overlap, it is <br>
equivalent to Block Jacobi) and then use -mat_partitioning_type to <br>
select a partitioner (could be a general graph partitioner or could by a <br>
custom implementation that you provide).  I don't know if this would <br>
feel overly clumsy or ultimately be a cleaner and more generic approach.<br>
<br>
Thanks for the answer. I'm still running a serial code. I plan to <br>
parallelized it after finding a suitable solver. Unfortunately, I do not <br>
know how to use PCASM, and therefore, I'm going to learn it. In <br>
addition, I found another possible solution with MATNEST. However, I do <br>
not know if MATNEST is suitable for my application or if it can be used <br>
with SNES. I'd be grateful if you could kindly guide me about it.<br></blockquote><div><br></div><div>MATNEST is only a storage optimization after everything works right. It does</div><div>not have to do with solving.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 > Lets discuss this point a bit further. I assume your system is <br>
sparse. Sparse direct solvers can solve systems fairly efficiently for <br>
hundreds of thousands of unknowns. How big do you want? Also, do you <br>
plan on having more than 500K unknowns per process? If not, why not just <br>
use sparse direct solvers on each process?<br>
<br>
Thanks for the answer. My system is sparse, and also a variable sized <br>
block matrix. For example, for a small size simulation, I have about 7K <br>
unknowns. For ONE TIME STEP, Intel MKL PARDISO took about 30 minutes to <br>
solve my system, while occupying about 2.5GB out of my 4GB RAM. Since I <br>
have to simulate at least 10000 time steps, the runtime (and the <br>
required RAM) would be unacceptable.<br></blockquote><div><br></div><div>Something is very wrong there. I advise you to also try SuperLU and MUMPS.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 > If none of the suggestions provided is to your taste, why not just <br>
build the preconditioner matrix yourself? Seems your have precise <br>
requirements and the relevant info of the individual blocks, so you <br>
should be able to construct the preconditioner, either using A (original <br>
operator) or directly from the discrete problem.<br>
<br>
Thanks for your answer. As I stated, I have built a preconditioner for <br>
it. My preconditioner does not require a large memory, however, it has a <br>
low performance (even on GPU). Therefore, I'm trying to use PETSc <br>
functions and modules to solve the system more efficiently. I do not <br>
think there is any other library more suited than PETSc for the job.<br></blockquote><div><br></div><div>Iterative methods depend sensitively on the equation, as opposed to direct</div><div>solvers which almost do not care. The first step in designing an iterative solver</div><div>that PETSc can implement is to find in the literature where one has worked for</div><div>your problem.</div><div><br></div><div>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Best Regards,<br>
Ali<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div><div><br></div><div><a href="http://www.cse.buffalo.edu/~knepley/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div></div></div></div>