Are these things still used? Seems they should have been removed?   

petscdm.h:PETSC_EXTERN PetscErrorCode DMSetInitialGuess(DM,PetscErrorCode 
(*)(DM,Vec));
petscdm.h:PETSC_EXTERN PetscErrorCode DMSetFunction(DM,PetscErrorCode 
(*)(DM,Vec,Vec));
petscdm.h:PETSC_EXTERN PetscErrorCode DMSetJacobian(DM,PetscErrorCode 
(*)(DM,Vec,Mat,Mat,MatStructure *));


On Nov 20, 2012, at 9:10 AM, Jed Brown <jedbrown at mcs.anl.gov> wrote:

> On Tue, Nov 20, 2012 at 3:08 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
> 
> The object is called TSDM but methods are DMTSXXX()?
> 
> DMTS... is right because they are methods on a DM, though they are packaged 
> with TS. The user _never_ sees the internal "TSDM" object. I think the 
> original motivation for that naming structure was to prevent conflict with a 
> TS/SNES implementation of the same name, but I would not object to switching 
> to DMTS
>  
> 
> TSDM is itself not a PETSc object but it is wrapped into a PetscContainer 
> (which is a PETSc object), so why not just make TSDM a PETSc object? Is it 
> because of circular references?
> 
> I don't mind making it a PetscObject.
>  
> What's with the complicated DMTSGetContextWrite() (copy on write crapola) 
> stuff? This kind of paradigm is not used anywhere else in PETSc, is it really 
> needed? Seems overly complex, is it just to save a few small objects?
> 
> It's for interface simplicity. If the user sets the the residual routine on 
> the finest level and then changes it, they probably expect their change to 
> propagate through the levels. But if they get out a coarse level and 
> explicitly change it there, they probably intended to use a different 
> discretization/physics on the coarse level.
>  
> 
> The DMTSGetContext() business uses PetscObjectCompose to attach the TSDM to a 
> dm. Why not just have DM's have opaque pointers to KSPDM, SNESDM, and TSDM 
> built into the DM and things
> like DMGetKSPDM() that do the usual dm->kspdm access instead of composing 
> business.  Since the business of DM's is to talk to TS, SNES, and KSP there 
> is no reason to go through the more complicated object compose business is 
> there? (The object compose business is for out-of-the-ordinary stashing of 
> stuff, not ordinary stashing of stuff, it is kind of like using object 
> compose to attach the ksp to the snes).
> 
> Okay, but when the optimizers need to attach something, do we add special 
> support for that in DM as well? What about UQ and so on? The idea here was to 
> keep DM as ignorant as possible, but allow it to carry this extra data around 
> for the various solver objects that need it.
>  
>   Perhaps some refactoring could bring this stuff down to the simple-minded 
> design of the rest of PETSc?
> 
>     Barry
> 
> 

Reply via email to