Dear FiPy folks --
I am solving a 2D elliptic equation (from a steady-state diffusion
system) with strong advection/convection terms
(e.g. hyperbolic-ish). The convection terms are often locally
dominant, however the over all solution is determined by the
diffusion/elliptic terms.
One way to think about it is that the streamlines of the convection
terms form closed loops in some parts of the domain, and so the
solution in those loops is set by the diffusion across the closed
stream lines. For those who care, this problem is similar to
Stommel's solution for gyre scale circulation in the ocean, but
with bathymetry.
The diffusivity is slightly anisotropic (factor of no more than
0.5). The velocity-like terms are incompressible -- they can be
expressed as a stream function. I suspect the solution to this
steady problem will not be overly sensitive to
upwind-spurious-diffusion. The fipy formulation is:
eq=(fipy.DiffusionTerm(var=psi,coeff=DiffCoeff)+
fipy.ExponentialConvectionTerm(var=psi,coeff=convCoeff))
The default scipy solver is going in the right direction, but the
solution has not fully converged in the interior of the closed
streamlines (I test this by setting all boundaries to psi=1, so the
solution must be psi=1 everywhere). If I increase diffusion enough,
the scipy solver does solve it correctly.
The default pySparse solver dies after running out of memmory on a
machine with lots of it. I am configuring trilinos now. In the
distant past I had success with similar problems with the MUDPACK
class of multigrid methods (using mud2).
What solvers would you suggest to work with a problem like this?
What guides you in your choice of solvers? What guides your choice
of the type of the Convection term?
Thanks,
Jamie Pringle
University of New Hampshire
_______________________________________________
fipy mailing list
[email protected]
http://www.ctcms.nist.gov/fipy
[ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]