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 fipy@nist.gov http://www.ctcms.nist.gov/fipy [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]