[petsc-dev] API changes in MatIS
Stefano Zampini
stefano.zampini at gmail.com
Sun May 20 16:05:14 CDT 2012
Hi Jed,
I think you are doing hard work for the next release but, have you already
take a look to my last email in the discussion?
2012/5/12 Stefano Zampini <stefano.zampini at gmail.com>
> First, sorry for the long email...
>
> I think the construction of the prolongation/restriction operators, the
> local part of the coarse matrix and the assembling (or subassembling) of
> the global coarse matrix should all belong to PCIS (with PCBDDC and PCNN as
> subclasses). In fact, for both PCBDDC and PCNN all stuffs involved in the
> preconditioner application can be viewed as a subassembled matrices
> (Prolongation/Restrictions, static condensation also). This would need to
> change the actual structure of MATIS and allowing for the creation of
> rectangular operators mapping between two different spaces; MATIS creation
> will thus need both LocalToGlobalMapping (row mapping) and
> GlobalToLocalMapping (column mapping) arguments to be created. A brand new
> logic in PCIS setup I would like can be
>
> PCISSetup() /* common to all PCIS methods */
> "PCISDealWithAllLocalStuffNeededByTheSpecificNonOverlappingMethod()"
> PCISCreateRestrictionAndProlongationOperators(pc)
> PCISAssembleLocalCoarseMat(pc)
> PCISCreatePartitionOfCoarseMesh(pc,&partition)
> PCISAssembleGlobalCoarseMat(pc,partition)
>
> "PCISDealWithAllLocalStuffNeededByTheSpecificNonOverlappingMethod()" will
> contain the construction of the "Neumann" solver (for BDDC, it is actually
> a saddle point problem)
>
> For PCBDDC and PCNN:
>
> PCISCreateRestrictionAndProlongation_NN will create a MATIS representing a
> default P which, in case of a scalar PDE, will be the constant function
> scaled by the partition of unity operator, with global dimensions N x
> sum^N_{i=1}pcis->n with N the number of subdomains and pcis->n the size of
> the local matis matrix (local dirichlet plus interface nodes) (in case of
> more complex vector valued PDEs it will need a MatNearNullSpace object as
> already implemented in BDDC)
>
> PCISCreateRestrictionAndProlongation_BDDC: (in case of exact solvers for
> the Dirichlet problems) default P will be of size
> n_coarse_dofs*sum^N_{i=1}pcis->n_B with local matrices of P the actual
> pcbddc->coarse_phi_B
>
> PCISCreateRestrictionAndProlongation_BDDC: (in case of inexact solvers for
> the Dirichlet problems) default P will be of size
> n_coarse_dofs*sum^N_{i=1}pcis->n with local matrices of P the actual
> pcbddc->coarse_phi_B concatenated with pcbddc->coarse_phi_D
> (pcis->n=pcis->n_B+pcis->n_D)
>
> PCISAssembleLocalCoarseMat will assemble the sequential matrix
> representing subdomains' contribution to the global coarse matrix (_NN and
> _BDDC cases can be easily written using already existing codes)
>
> PCISAssembleCoarseMat(pc,IS partition) would then decide how to finally
> assemble the coarse matrix depending on the partition passed in (and
> possibly change the row mapping of the default prolongation operators).
>
> Does this logic fits what you have in mind?
>
>
> 2012/5/12 Jed Brown <jedbrown at mcs.anl.gov>
>
>> On Fri, May 11, 2012 at 6:11 PM, Stefano Zampini <
>> stefano.zampini at gmail.com> wrote:
>>
>>> Isn't PtAP still the right operation, you just have a particular
>>>> implementation that takes advantage of structure?
>>>>
>>>
>>> yes it is, but since it is an expensive operations (P is dense), in
>>> BDDC, once you solved the local problems to create P, you have almost
>>> straigthly (and at a very low cost) the columns of the coarse matrix. The
>>> latter can be obtained (as it is implemented in the code) as C^T\Lambda
>>> where C is the local sparse matrix of constraints, and \Lambda is a dense
>>> and small matrix of lagrange multipliers.
>>>
>>>> I know you can also assemble B A^{-1} B^T, which is the same thing, and
>>>> maybe we should provide a generic op for that.
>>>>
>>> What is B? the jump operator?
>>>
>>
>> Your C above.
>>
>> I have other algorithms in mind where the the interpolants would be
>> constructed somewhat differently. I may need to think a bit about what the
>> right common operation is for that case. I just feel like we may be getting
>> too tightly dependent on the specific BDDC algorithm (which has exponential
>> condition number growth in the number of levels), which we probably want to
>> generalize in the future.
>>
>
>
>
> --
> Stefano
>
--
Stefano
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20120520/222723ce/attachment.html>
More information about the petsc-dev
mailing list