The object is called TSDM but methods are DMTSXXX()?

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?

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?


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).

  Perhaps some refactoring could bring this stuff down to the simple-minded 
design of the rest of PETSc?

    Barry

Reply via email to