On Sunday 28 September 2008 02:39:41 [EMAIL PROTECTED] wrote: > Do any of the FENICS people sleep? Man, it is Saturday! it must have > been 10pm your time zone when this was written.
Well, more like, 23.46, and yes, I slept well that night! ;) Johan > :) not that I disagree > with this... > > > Hello! > > > > Occasionally we have had some discussion about implementing a basic > > aritmetic > > operators for matrices in DOLFIN. I have been able to add -=, +=, +, -, > > operators, for the PETScMatrix interface, using the petsc function > > MatAXPY. I > > also implemented both assignment operators. > > > > I added a public function add(A,a), which add a GenericMatrix, A, scaled > > by a, > > to the present matrix. This is a usefull funtion when combining matrices > > in a > > linear algebra setting. The function is also used to implement the +=, > > and -=, which then are used to implement +, - together with the > > assignment operator. > > > > Is this something we want? I would at least like it to happen :) > > > > Do I miss any important aspects? What about two distributed matrices? > > Will PETSc AXPY take care of this, (supposing of course that the matrices > > have the > > same number of nonzeros)? > > > > If we add the "add" function in the GenericMatrix interface we could > > implement > > the +=, -= operators directly in the GenericMatrix interface, together > > with > > both + and - using +=, -=. This is a good solution for at least PETSc and > > Epetra Matrix that do not implement its own += and -=, which uBLAS and > > MTL4 > > do. > > > > I have it going for PETScMatrix. Should I implement this interface to > > GenericMatrix, and update the other dolfin Matrix classes too? The > > changes in > > GenericMatrix would be: > > > > 1) remove explicit from the copy constructor, to allow "return by > > value" 2) add virtual add(const GenericMatrix, real a) = 0 > > 3) implement +=, -= using the add function. > > 4) implement +, - using the +=, -= > > > > The changes in the other Matrix classes would be: > > > > For PETSc, and Epetra Matrices. > > > > 1) Implement add(A,a) > > 2) Implement operator=(A) > > > > I can make the changes in GenericMatrix, and implement the interface for > > PETSc, Epetra, and I could update GenericMatrix too. If we want to use > > uBLAS's += -=, and I suppose we want, we need to overload these functions > > in > > the uBLAS interface, with the proposed implementation. Are there any > > similare > > functionality to PETSc's AXPY in uBLAS, for implementing an "add" > > function? > > > > I suppose uBLAS and MTL4 are similare with respect to implementation. > > > > Johan > > _______________________________________________ > > DOLFIN-dev mailing list > > [email protected] > > http://www.fenics.org/mailman/listinfo/dolfin-dev _______________________________________________ DOLFIN-dev mailing list [email protected] http://www.fenics.org/mailman/listinfo/dolfin-dev
