[petsc-users] 2D Poisson on nonuniform meshes
Filippo Leonardi
filippo.leonardi at sam.math.ethz.ch
Tue Sep 1 04:12:23 CDT 2015
Thanks Matt,
I use the "natural scaling" of the Laplacian Lapl * x = b. The grid is *still* uniform.
I give you a couple of results:
1 ) This is e.g. gmres + gamg + 4 levels. As you can see it converges after 2 iterations which is
totally strange. The solution is incorrect.
2 ) This is mg + galerkin matrices + levels. Result is incorrect
3 ) Default: works fine
4) LU: works fine
I remove the constant nullspace as usual.
I use the usual setcomputeoperator business and compute rhs.
Instead, if I scale to Lapl * dx * dy * x = b * dx * dy (things work fine also with MG). This is fine
with uniform grid but I do not know how to do that properly on nonuniform.
Let me know if you need code pieces or other details.
1)
0 KSP Residual norm 1.793027353791e-05
2)
0 KSP Residual norm 1.010294060491e-05
0 KSP Residual norm 2.990548680394e-08
Linear solve converged due to CONVERGED_ITS iterations 1
On Tuesday 01 September 2015 03:40:14 Matthew Knepley wrote:
> On Tue, Sep 1, 2015 at 2:22 AM, Filippo Leonardi <
>
> filippo.leonardi at sam.math.ethz.ch> wrote:
> > Dear PETSc Users,
> >
> >
> >
> > I want to use multigrid to solve uniform (just Laplace) poisson in 2D/3D
> > on cartesian, non-uniform meshes with a standard 5 (7)-points stencil FD.
> >
> >
> >
> > I always scaled my Poisson matrix like in the doc examples, i.e.
> > multiplying by dx*dy (so that in ComputeRHS I need to scale b, in A*x = b,
> > as well). This always worked properly with both MG/GAMG and with galerkin
> > matrices.
> >
> >
> >
> > Now I'd like to use non-uniform meshes, therefore the scaling is
> > non-uniform. However I cannot get my matrices to scale properly with any
> > sort of multigrid.
> >
> >
> >
> > One would think that without scaling, i.e. solving the original system, at
> > least MG+galerkin or GAMG should work anyways provided the matrix A and b
> > are consistent.
> >
> >
> >
> > I tried without boundaries (i.e. torus), so this is not the problem.
>
> The point of that scaling is to make the boundary values the same size as
> the residuals. If you have
> no boundary values, the problem is scale invariant since its linear. It
> would be nice to scale it so everything
> is about size 1.
>
> When asking about convergence always run with -ksp_view
> -ksp_monitor_true_residual -ksp_converged_reason
>
> Thanks,
>
> Matt
>
> > Anyone did/knows how to do this properly?
> >
> >
> >
> > Thanks,
> >
> > F
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20150901/da3abb44/attachment-0001.html>
More information about the petsc-users
mailing list