On Tue, 9 Aug 2016, Vikram Garg wrote:

On Mon, Aug 8, 2016 at 10:06 PM, Roy Stogner <royst...@ices.utexas.edu> wrote:

      Same variables but with different weak residuals?

Yes. The simpler residual has pure diffusion, while complex one has
an additional convection and reaction term (and hence finer mesh).

A strong convection term makes things harder on the stabilization but
can make life easier for solvers; in the convection-only limit you
can get an exact solution in a single sweep.

      Fewer iterations?  Wall clock time is a lot harder to pin down.

Yup. Fully complex takes 6 NL iterations, and 132 total linear
steps. Whereas, 10% complex also takes 6 NL steps (which is again a
bit surprising) and 208 total linear steps.

      What preconditioner are you currently using?

-ksp_gmres_modifiedgramschmidt -ksp_gmres_restart 500 -pc_type ilu
-pc_factor_levels 4 -pc_factor_shift_type nonzero  

That's a relatively heavy-duty preconditioner, which I guess could
explain why the competition is close if it's oversolving the simple
physics case, but it wouldn't make the simpler physics do *worse*.

      How fast does it solve with 0% domain being complex physics?

2 NL iterations, and 24 total linear solver steps.

And this is also baffling.

      I'm wondering if rather your physics is more "complex" in terms of
      residual evaluation but is easier on the solver somehow.
       
Thats a tempting direction for an explanation. But think about this
way, if we used LU, then if both the 10% and full complex take the
same number of NL steps, the 10% will be far cheaper, because of a
lower dof count.

The lower dof count is because although you're using the same
variables, you also have to use a finer mesh on the complex physics?

The efficacy of GMRES depends on the spectra, and we did do some
investigation of the condition numbers of the matrices we were
solving.

The condition numbers of the *preconditioned* matrices should be
what's important to the Krylov solver.

      libMesh makes fieldsplits between different variables easy enough now,
      but I don't think we've added any options to make field splits between
      subdomains easy, so I think you'll need to code the PETSc index sets
      yourselves to do this.

Any idea how difficult this will be ?

It was hard to figure out how to do but easy to finally do IIRC.
Check out petsc_auto_fieldsplit.C for a starting point.
---
Roy
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity 
planning reports. http://sdm.link/zohodev2dev
_______________________________________________
Libmesh-users mailing list
Libmesh-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to