[petsc-users] Use of MatRestrict/MatInterpolate with PCMG.

Vijay S. Mahadevan vijay.m at gmail.com
Wed Dec 15 18:06:53 CST 2010


Hi,

I have an implementation issue with the MatRestrict/Interpolate
functions. The problem is that one of my coarser levels (with PCMG)
has higher dofs than the finest level. This does not always happen and
requires a weird fine mesh system (in a sense) that uses multi-grid,
but the idea is that the finest level problem has a high order (HO)
discretization while the lower level mesh has a linear tesselation of
the finest HO level (which I can optimize) and then adaptively
coarsened levels beyond that. Since the number of columns in this case
is larger than the number of rows, MatRestrict invariably calls
MatMultTranspose to multiply instead of MatMult and vice-versa while
calling  MatInterpolate. These result in assertion errors while
comparing the length of Mat and Vec. The chosen method is based on
whether (M>N) which seems to act against what I am doing here...

I can always implement a shell matrix to replicate
Restrict/Interpolate actions but my question is whether if such
discretization will yield a consistent convergence in MG algorithm ?
Is there a strong reason for checking if (M>N) rather than just doing
(mat->rmap->N==y->map->N && mat->cmap->N==x->map->N) ? I would
appreciate any detailed answer that you can provide for this and any
suggestions to use the existing methods (without implementing the
shell restriction) is very welcome.

Thanks,
vijay


More information about the petsc-users mailing list