[petsc-dev] PCFieldSplitSetFields() API change

Barry Smith bsmith at mcs.anl.gov
Fri Mar 23 22:15:00 CDT 2012


On Mar 23, 2012, at 6:22 PM, Jed Brown wrote:

> But what does using B as 00 block actually mean? It seems to me that you pivot, producing P' P J where P J has B in the 00 location.

   I am not arguing if it is pivoting or not. I'm arguing what the user interface should be.  Say I want D to be the 00 block then I just set that with PCFieldSplitSetFields() as the zeroth field. My point is that I am proposing a SINGLE interface for setting the blocks locations in all circumstances, while you are proposing having an additional interface for certain 00 configurations (pivoting) thus with your model you first call the PCFieldSplitSetFields() and then something else. 

   What is your proposed API?

   Barry



> 
> On Mar 23, 2012 6:13 PM, "Barry Smith" <bsmith at mcs.anl.gov> wrote:
> 
> On Mar 23, 2012, at 6:00 PM, Jed Brown wrote:
> 
> > On Fri, Mar 23, 2012 at 17:48, Barry Smith <bsmith at mcs.anl.gov> wrote:
> >    I'm confused. I am NOT injecting it into the original definition, I am injecting it into the PCFieldSplit in the same way that your "permutation" would inject it just into the PCFieldSplit, it is just (in my opinion) a more user friendly way of the user providing this permutation. Note that this "two fields" business is NOT going in the DM (and hence into the original definition of the problem) and would normally only be used when the DM definition was "bad" (due to zero block for example) just like your permutation would only be used when things were bad.
> >
> > 1. The PCFieldSplitSetIS() interface does not have this.
> >
> > 2. The reason for pivoting is not that the DM ordering was "bad", it's that a symmetric ordering without the 0 block does not exist (factorization does not work with _any_ symmetric ordering). So you pivot for factorization and restore.
> 
>   I don't agree. Consider   [A  B ;  C D] where all four matrices are square and non-singular. It may be that using B as the 00 block is just better for convergence etc
> 
> >
> > 3. You now have one name for a set of rows and columns that may not "go together".
> 
>   That name is only for setting fieldsplit options etc. It is not fieldnames in the way that DM fieldnames are names of fields.
> 
> >
> > Somehow I think this is just more confusing and less run-time-friendly, but maybe that's my fault. In any case, the change has to be consistent (PCFieldSplitSetIS) and we have to decide how the DM can specify when pivoting is needed.
> 
>   You may be right. Spec out your alternative Functions I would call and command line options I would use to get the same effect as the affect Jungho and I were trying to achieve.  I was bothered by the separation in your original proposal between the
> selection of the blocks the "pivoting" of your model. I don't really see using a different block in 00 as necessarily a "pivoting" that is why you proposal turned me off.
> 
> 
>   Barry
> 
> 




More information about the petsc-dev mailing list