[petsc-dev] API changes in MatIS

Jed Brown jedbrown at mcs.anl.gov
Sat May 26 10:23:39 CDT 2012


On Sat, May 26, 2012 at 9:39 AM, Stefano Zampini
<stefano.zampini at gmail.com>wrote:

> One we have the constraint matrix, we can easily obtain the change of
> basis matrix T (as in Klawonn-Widlund papers).
> Note that the change of basis approach will be very effective for exact
> applications with reduced iterations. I think we should include in the new
> matrix class the possibility of doing iterations on the reduced space
> instead of the whole space of dofs.
>

Indeed. You might be aware of the "second approach" described here (CPAM
2006)

https://ftp.cs.nyu.edu/web/Research/TechReports/TR2004-855/TR2004-855.pdf

I think it's worth testing, but since the number of integral Lagrange
multipliers is reasonably small, I would not a priori be concerned by
solving the saddle point problem in which they are ordered last. If there
are enough vertex constraints to keep the subdomains nonsingular, you can
easily handle the problem manually (as Dohrmann does), but I wouldn't
expect modern LDL^T packages to be slowed greatly by a handful of Lagrange
multipliers and you want it to reorder anyway to reduce fill during the
factorization.


>
>>
>>> Actually in PCBDDC the local coarse matrix is computed using a
>>> theoretical equivalence of the PtAP operation of coarse basis and the
>>> unassembled MATIS matrix (coarse basis are continuous only at vertex and
>>> constraints dofs). PtAP (where P is dense) is just avoided for its
>>> computational costs.
>>>
>>
>> Are you basically just doing a local PtAP or do you use the equivalence
>>
>> K \Psi = C^T \Lambda   (notation of Dohrmann's Eq 2)
>>
>> or something else?
>>
>>
>
> I'm using the equivalence.
>
> You said you would have the new matrix class to support either more
> subdomains per core, or more cores per subdomain. In the latter case,
> threaded or mpi matrices (on subcomms)?
>

I would plan to make it support any combination.

Tell me if you think it's a bad idea, but my thought was to pre-select a
few coarse vertices (ideally enough to prevent floating subdomains, but the
method should be able to tolerate if not). Then the form that gets
assembled due to normal MatSetValuesLocal() would have nonsingular
subdomains. We can factor those subdomains and then adaptively select
additional vertex or integral constraints to enrich the coarse space. As
soon as we have enough constraints to make the subdomain nonsingular (i.e.
we would usually start nonsingular), we can enforce all additional
constraints with Lagrange multipliers so that the factorization does not
need to be repeated.

Once we have enriched the coarse space, we have a choice of whether to
apply a change of basis and re-factor or to reuse the current factorization
and keep enforcing the enrichment by Lagrange multipliers.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20120526/fa57498b/attachment.html>


More information about the petsc-dev mailing list