Sorry about the delay in reply.

Roy,

> Your confusion is due to the fact that you're assuming our design is
> better than it is.  ;-)

haha. libMesh is one of the more decently structured libraries I've
seen and you guys have done a great job in making sure the design
adheres to many of the standard patterns/principles. It is not a
perfect design but any change that improves it does help everyone.

Yes. I can see that in solve, all the systems are treated in a
completely decoupled fashion, in a block-jacobi sense. But without the
ability to derive from EquationSystems explicitly, there is not much
use for this routine. It is understandable that all the primary
developers have not derived from this object since it is supposed to
be self contained.

In my version of EquationSystems, I have the following methods made
virtual which I think is the minimal set needed to derive from it.

void    clear ()
void    init ()
void    reinit ()
System &        add_system (const std::string &system_type, const std::string 
&name)
bool    compare (const EquationSystems &other_es, const Real threshold,
const bool verbose) const
std::string     get_info () const

Also, I derived EquationSystems from ReferenceCountedObject. Do let me
know what you think.

John,

I know solve was virtual for a while now but only noticed the other
virtual methods recently. I do not have adjoint sensitivity analysis
capability in my code yet and definitely do not use the new routines
yet. And that could've been the reason why I was oblivious to the
change.

On Wed, Jan 13, 2010 at 9:53 AM, Roy Stogner <royst...@ices.utexas.edu> wrote:
>
> On Tue, 12 Jan 2010, Vijay S. Mahadevan wrote:
>
>> I had to make few of the routines virtual in order to accomplish
>> that but since I did not see any of that in the existing design, I
>> assumed that EquationSystems was not supposed to be extendable as
>> is. But the new inclusions have got me all confused.
>
> Your confusion is due to the fact that you're assuming our design is
> better than it is.  ;-)  The explanation is simple:
>
> In principle, we've thought that EquationSystems should be usable as a
> base class.  In particular, I think that overriding solve() would be
> one of the more elegant ways to implement certain operator splitting
> and loose coupling algorithms.
>
> In practice, none of the primary developers have derived from
> EquationSystems, so features necessary to do it well may be missing
> because they've never been tested in practice.
>
> Which routines did you make virtual?  There's nothing in
> EquationSystems that gets called from an inner loop, so there should
> be no objections to making more of its methods virtual in the SVN
> head.
> ---
> Roy
>

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
Libmesh-devel mailing list
Libmesh-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to