← Back to team overview

dolfin team mailing list archive

Re: Linear algebra

 

On Oct 26, 2004, at 5:07 PM, Anders Logg wrote:

On Tue, Oct 26, 2004 at 02:00:30PM -0500, Matthew Knepley wrote:

I, of course, would advocate using an IDL (since that is what I do). However, I really want to take issue with the idea that we NEED pieces in C++. If SWIG has shown anything, its that the implementation language should not be important and wrappers are fairly easy. Much more important is the
interface and the packaging.

              Matt

That's a good point. We don't need to have any code in C++.
But there are good reasons for providing a C++ *interface*:

If we cannot provide a complete toolset that covers every problem,
people will have to implement some parts of the code themselves, and
people prefer to use C++. With people I mean people like ourselves in

*some* people prefer C++. Other people prefer some variant of fortran. Others will want a bash interface...Hence, providing C is nice since most languages have figured out how to play well with it. Then, if people want to add stuff on their own, they can do whatever they want. We have to be careful when we start accepting contributions back from the general public.

the business of developing new algorithms and methods for PDEs, but not
necessarily in the business of developing tools. I don't think you can
say too people who want to implement a new algorithm that they should
go ahead and create a low-level library for that feature and then
create a wrapper for their new library.


What do we mean by "algorithm"? do we mean sparse data access, linear solver, or variational form? The granularity of algorithm affects where people have to do their writing.

It all depends on what you want to do. If you want to create the best
possible tools, then optimized low-level libraries with wrappers might
be the best way. But if you want to make your system
(user-)extensible, I would like to see a C++ interface, since it
allows you to implement fairly efficient new algorithms in the same
language as the interface of the toolset you are using.





References