<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Oct 28, 2014 at 5:39 AM, Tabrez Ali <span dir="ltr"><<a href="mailto:stali@geology.wisc.edu" target="_blank">stali@geology.wisc.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>Mark<br>
<br>
When I replace "-fieldsplit_0_ksp_type preonly" with
"-fieldsplit_0_ksp_type cg" then it becomes very slow (had to kill
it).<br></div></div></blockquote><div><br></div><div>That means something in the setup is wrong. It should be about the same or faster. Run with -fieldsplit_0_ksp_monitor</div><div>so we can see what is happening.</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"><div bgcolor="#FFFFFF" text="#000000"><div>
With MUMPS , i.e., with '-fieldsplit_0_pc_type lu
-fieldsplit_0_pc_factor_mat_solver_package mumps
-fieldsplit_0_ksp_type preonly' it works fine but takes more time,
and will be an issue for larger problems. The output for this run
is attached.<br>
<br>
I will work on passing rigid body modes (as Matt mentioned) but
short of that what is the best set of options for solving the
following problem (i.e., linear elasticity with constraints):<br>
<br>
<tt>|K cG'| | u | = |F|</tt><tt><br>
</tt><tt>|G 0 | |l/c| |d|</tt><br>
<br>
where c is a scaling factor (so that cG' terms are more or less of
the same order as K)? The constraints are used to impose slip
between surfaces and so on.<br>
<br>
Tabrez<br>
<br>
On 10/27/2014 01:17 PM, Mark Adams wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">The null space for GAMG is not critical but useful
for elasticity. If you in fact have an indefinite operator (eg,
not "pinned) the you need to use an iterative coarse grid
solver. You are using '-fieldsplit_0_pc_type gamg
-fieldsplit_0_ksp_type preonly'. And you have a hard elasticity
problem. You are going to want to start with a stronger solver.
Use cg instead of preonly. As Matt said start with MUMPS, then
go to CG/GAMG, then you can see how far you can cut the _0_
solver down.
<div>Mark</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Thu, Oct 23, 2014 at 11:51 AM,
Matthew Knepley <span dir="ltr"><<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote"><span>On Thu, Oct 23,
2014 at 10:48 AM, Tabrez Ali <span dir="ltr"><<a href="mailto:stali@geology.wisc.edu" target="_blank">stali@geology.wisc.edu</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#ffffff"> Matt<br>
<br>
On 10/23/2014 09:54 AM, Matthew Knepley wrote:
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Thu, Oct 23,
2014 at 9:27 AM, Tabrez Ali <span dir="ltr"><<a href="mailto:stali@geology.wisc.edu" target="_blank">stali@geology.wisc.edu</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>Matt<br>
<br>
Sorry about that (I always forget
it). The output for the smallest
problem is now attached (see
log.txt). I am also attaching some
results that compare results
obtained using FS/LSC and the
direct solver (MUMPS), again for
the smallest problem. The
difference, as you can see is
insignificant O(1E-6).<br>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>1) How do you use MUMPS if you have
a saddle point</div>
</div>
</div>
</div>
</blockquote>
I simply used -pc_type lu
-pc_factor_mat_solver_package mumps.<br>
<br>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div><br>
</div>
<div>2) You can see from the output that
something is seriously wrong with the
preconditioner. It looks like it has a
null space.</div>
<div> Did you add the elastic null
modes to GAMG? Without this, it is not
going to work. We have helper
functions for this:</div>
<div><br>
</div>
<div> <a href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DM/DMPlexCreateRigidBody.html" target="_blank">http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DM/DMPlexCreateRigidBody.html</a></div>
<div><br>
</div>
<div>you could just copy that code. And
then use</div>
<div><br>
</div>
<div> <a href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatSetNearNullSpace.html" target="_blank">http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatSetNearNullSpace.html</a></div>
<div><br>
</div>
<div>I don't see it in the output, so I
think this is your problem.</div>
<div><br>
</div>
<div>In order to test, I would first use
MUMPS as the A00 solver and get the
Schur stuff worked out. Then I would</div>
<div>replace MUMPS with GAMG and tune it
until I get back my original
convergence.</div>
</div>
</div>
</div>
</blockquote>
I will try this with
MatNullSpaceCreateRigidBody. Btw does it matter
if some nodes are pinned?<br>
</div>
</blockquote>
<div><br>
</div>
</span>
<div>No these are null modes of the operator, not of
the particular problem.</div>
<div><br>
</div>
<div> Matt</div>
<div>
<div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#ffffff"> Tabrez<br>
<br>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div><br>
</div>
<div> Thanks,</div>
<div><br>
</div>
<div> Matt</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div> Also, I did pass 'upper' and
'full' to
'-pc_fieldsplit_schur_factorization_type'
but the iteration count doesn't
improve (in fact, it increases
slightly). The attached log is
with 'upper'.<br>
<br>
Regards,<br>
<br>
Tabrez<br>
<br>
On 10/23/2014 07:46 AM, Matthew
Knepley wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On
Thu, Oct 23, 2014 at 7:20
AM, Tabrez Ali <span dir="ltr"><<a href="mailto:stali@geology.wisc.edu" target="_blank">stali@geology.wisc.edu</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Hello<br>
<br>
I am using the
following options
(below) for solving
linear
elasticity/poroelasticity
problems involving
slip between two
surfaces involving
non-trivial
geometries, i.e.,
elements with high
aspect ratios, large
contrasts in material
properties etc. The
constraints are
imposed using Lagrange
Multipliers. <br>
<br>
A picture (shows
displacement
magnitude) is
attached. The boundary
nodes, i.e., the base
and the four side are
pinned.<br>
<br>
The following options
appear to work well
for the saddle point
problem:<br>
<br>
<tt>-pc_type
fieldsplit
-pc_fieldsplit_type
schur
-pc_fieldsplit_detect_saddle_point
-fieldsplit_0_pc_type
gamg
-fieldsplit_0_ksp_type
preonly
-fieldsplit_1_pc_type
lsc
-fieldsplit_1_ksp_type
preonly
-pc_fieldsplit_schur_fact_type
lower -ksp_monitor</tt><br>
<br>
However, the number of
iterations keep on
increasing with the
problems size (see
attached plot), e.g.,<br>
<br>
<tt>120K Tets <b>507</b>
Iterations (KSP
Residual norm
8.827362494659e-05)</tt><tt>
in 17 secs on 3
cores<br>
</tt><tt>1 Million
Tets <b>1374</b>
Iterations (KSP
Residual norm
7.164704416296e-05)</tt><tt>
in 117 secs on 20
cores<br>
</tt><tt>8 Million
Tets <b>2495</b>
Iterations (KSP
Residual norm
9.101247550026e-05)
in 225 secs on 160
cores</tt><br>
<br>
So what other options
should I try to
improve solver
performance? Any
tips/insights would be
appreciated as
preconditioning is
black magic to me.<br>
</div>
</blockquote>
<div><br>
</div>
<div>For reports, always
run with </div>
<div><br>
</div>
<div> -ksp_view
-ksp_monitor_true_residual
-ksp_converged_reason</div>
<div><br>
</div>
<div>so that we can see
exactly what you used.</div>
<div><br>
</div>
<div>I believe the default
is a diagonal
factorization. Since
your outer iterates are
increasing, I would
strengthen this</div>
<div>to either upper or
full</div>
<div><br>
</div>
<div>
-pc_fieldsplit_schur_factorization_type
<upper, full></div>
<div><br>
</div>
<div> Thanks,</div>
<div><br>
</div>
<div> Matt </div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Thanks
in advance.<span><font color="#888888"><br>
<br>
Tabrez<br>
</font></span></div>
</blockquote>
</div>
<br>
<br clear="all">
<span><font color="#888888">
<span><font color="#888888">
<div><br>
</div>
-- <br>
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 </font></span></font></span></div>
<span><font color="#888888"> </font></span></div>
<span><font color="#888888"> </font></span></blockquote>
<span><font color="#888888"> <br>
</font></span></div>
<span><font color="#888888"> </font></span></blockquote>
<span><font color="#888888"> </font></span></div>
<span><font color="#888888"> <br>
<br clear="all"><span class="HOEnZb"><font color="#888888">
<div><br>
</div>
-- <br>
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</font></span></font></span></div><span class="HOEnZb"><font color="#888888">
</font></span></div><span class="HOEnZb"><font color="#888888">
</font></span></blockquote><span class="HOEnZb"><font color="#888888">
</font></span></div><span class="HOEnZb"><font color="#888888">
</font></span></blockquote><span class="HOEnZb"><font color="#888888">
</font></span></div><span class="HOEnZb"><font color="#888888">
</font></span></div><span class="HOEnZb"><font color="#888888">
</font></span></div><span class="HOEnZb"><font color="#888888">
<div>
<div><br>
<br clear="all">
<div><br>
</div>
-- <br>
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>
</font></span></div><span class="HOEnZb"><font color="#888888">
</font></span></div><span class="HOEnZb"><font color="#888888">
</font></span></blockquote><span class="HOEnZb"><font color="#888888">
</font></span></div><span class="HOEnZb"><font color="#888888">
<br>
</font></span></div>
</blockquote>
<br>
</div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>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>