[petsc-dev] Some questions about adding default global to local, etc., functions for DMShell

Barry Smith bsmith at mcs.anl.gov
Thu Mar 7 20:01:40 CST 2013


  Richard,

    Your argument is reasonable, I've pushed a change to make them public.

  Barry

On Mar 7, 2013, at 7:23 PM, Richard Tran Mills <rtm at eecs.utk.edu> wrote:

> Hi Barry,
> 
> I used the names without underscores because at first my intention had been for those to simply be user functions like SNESConvergedDefault(), and if a user wanted them to be used then this had to be explicitly set via DMShellSetGlobalToLocalBegin()/End().  After adding DMShellSetGlobalToLocalVecScatter(), I'm having trouble thinking of a good reason that DMShellDefaultGlobalToLocalBegin()/End() need to be user functions, but I think I lean towards keeping them that way because
> 
> 1) DMShell is supposed to be able to wrap *anything*, and maybe there is some weird situation in which DMShellDefaultGlobalToLocalBegin()/End() should be called, but something else should happen as well to some ancillary data, analogous to how in PFLOTRAN we call SNESConvergedDefault() in our convergence routines but then run a bunch of other checks as well.
> 
> 2) Since the user can set dm->ops->globaltolocalbegin/end to whatever they want via DMShellSetGlobalToLocalBegin()/End(), I just like the completeness of having the default functions exposed so that the user could set things back to that.
> 
> But if everyone prefers, we can make those private.
> 
> Thanks for the pointer to the current developers guide.  After hacking on some PETSc internals after a long hiatus, I had been about to ask where that lived these days, actually. =)
> 
> --Richard
> 
> On 3/6/13 4:19 PM, Barry Smith wrote:
>> [...]
>> I have also added some new functions like DMShellDefaultGlobalToLocalBegin()/End(), and in DMCreate_Shell I do
>> 
>>   dm->ops->globaltolocalbegin = DMShellDefaultGlobalToLocalBegin;
>>   dm->ops->globaltolocalend   = DMShellDefaultGlobalToLocalEnd;
>> 
>>    Bad names. Since they are not user functions they should have an underscore in them and specification of implementation after the underscore. Perhaps  DMGlobalToLocalBegin_Shell_Default?
>> 
>>     Check out the PETSc developers manual style guide (which is now chapter one so people actually read it :-)) Section 1.1 and 1.2 http://www.mcs.anl.gov/petsc/developers/developers.pdf
>> 
>> 
>>    Barry
>> 
>> 
>> 
>>> The user can set different routines via DMShellSetGlobalToLocalBegin()/End(), but if the user only sets the gtol and ltog scatter contexts, then the default routines will perform the appropriate scatter operations.
>>> 
>>> Second question: What is the proper "PETSc way" to throw an error if gtol is NULL and tell the user that DMShellDefaultGlobalToLocalBegin() cannot be used without first setting the scatter context via DMShellSetGlobalToLocalVecScatter()?
>>> 
>>> SETERRQ(comm, PETSC_ERR_ARG_WRONGSTATE, "DMShellDefaultGlobalToLocalBegin() cannot be used without first setting the scatter context via DMShellSetGlobalToLocalVecScatter()");
>>> 
>>>    Matt
>>>  Thanks,
>>> Richard
>>> 
>>> 
>>> 
>>> -- 
>>> Richard Tran Mills, Ph.D.
>>> Computational Earth Scientist      | Joint Assistant Professor
>>> Hydrogeochemical Dynamics Team     | EECS and Earth & Planetary Sciences
>>> Oak Ridge National Laboratory      | University of Tennessee, Knoxville
>>> E-mail:
>>> rmills at ornl.gov  V: 865-241-3198 http://climate.ornl.gov/~rmills
>>> 
>>> 
>>> 
>>> -- 
>>> What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
>>> -- Norbert Wiener
> 
> 
> -- 
> Richard Tran Mills, Ph.D.
> Computational Earth Scientist      | Joint Assistant Professor
> Hydrogeochemical Dynamics Team     | EECS and Earth & Planetary Sciences
> Oak Ridge National Laboratory      | University of Tennessee, Knoxville
> E-mail: rmills at ornl.gov  V: 865-241-3198 http://climate.ornl.gov/~rmills
> 




More information about the petsc-dev mailing list