← Back to team overview

dolfin team mailing list archive

Re: [HG dolfin] Implement assembly over interior facets. The result seems to

 

Anders Logg wrote:
On Fri, Mar 09, 2007 at 03:07:43PM +0100, Garth N. Wells wrote:
Why do we need a class AssemblyMatrix? GenericMatrix/GenericVector should provide the necessary virtual functions for assembly.

Garth

Yes, definitely. The assembler assumes it gets a GenericTensor that
has a function

    void add(real* block, uint* size, uint** entries)

(entries is probably a bad choice of name here, let's change it)
This makes it possible to implement just one assembly function and
keep the Assembler class small.


Then GenericVector and GenericMatrix should then derive from GenericTensor?

Anyway, the class AssemblyMatrix is just a temporary implementation of
something that implements the GenericTensor interface. My suggestion
is that we overload the add() function above in both GenericMatrix and
GenericVector. The overloaded functions will map to the correct add()
function in the respective classes. For GenericMatrix, we'll have

    void add(real* block, uint* size, uint** entries)
    {
        add(block, size[0], entries[0], size[1], entries[1]);
    }

So, even if AssemblyMatrix could be of some use (it seems to be a fast
option for assembly, the STL vector of maps beat PETSc in at least one
benchmark I made)

Don't draw conclusions too quickly. STL vector of maps is fast to assemble, but is close to useless for linear algebra. The current implementation for the assembly uBLAS matrices use something like STL vector of maps (fast to assemble but slow for linear algebra) and converts it to compressed row storage (fast for linear algebra). The conversion can take some time. A STL vector of integer maps should be created and then used to initialise a particular sparse storage format (before first use only). Then we wouldn't have to convert matrix formats.

Garth

it is just a temporary implementation until we decide
to implement the GenericTensor interface in GenericMatrix and
GenericVector.

/Anders

DOLFIN wrote:
One or more new changesets pushed to the primary DOLFIN repository.
A short summary of the last three changesets is included below.

changeset:   2698:eb995ba168f6249aa061bf16b6b094d7d697090b
tag:         tip
user:        "Anders Logg <logg@xxxxxxxxx>"
date:        Fri Mar 09 13:40:42 2007 +0100
files:       TODO src/kernel/fem/Assembler.cpp src/kernel/fem/UFC.cpp src/kernel/fem/dolfin/UFC.h src/sandbox/assembly/Poisson.form src/sandbox/assembly/Poisson.h src/sandbox/assembly/PoissonOld.form src/sandbox/assembly/PoissonOld.h src/sandbox/assembly/main.cpp
description:
Implement assembly over interior facets. The result seems to
be wrong (compared to the old assembly) but the new assembly
is considerably faster... :-)


changeset:   2697:d9af2a3e540db91dc68936ff188c588b0cc259e9
parent:      2696:e7e54e87c948b580979f1041facb491e5dacd102
parent:      2695:1099832e1b156f53450783a81243609beab71fff
user:        "Anders Logg <logg@xxxxxxxxx>"
date:        Fri Mar 09 09:17:50 2007 +0100
files:       src/kernel/la/PETScEigenvalueSolver.cpp src/kernel/la/dolfin/PETScEigenvalueSolver.h
description:
Merge assembly over exterior facets


changeset:   2696:e7e54e87c948b580979f1041facb491e5dacd102
parent:      2690:24a6d6a566cdbdccb2c253cc62522fd265dad1af
user:        "Anders Logg <logg@xxxxxxxxx>"
date:        Thu Mar 08 23:30:09 2007 +0100
files:       src/kernel/fem/Assembler.cpp src/sandbox/assembly/Poisson.form src/sandbox/assembly/Poisson.h src/sandbox/assembly/main.cpp
description:
Implement assembly over exterior facets (interior facets remain).


----------------------------------------------------------------------
For more details, visit http://www.fenics.org/hg/dolfin
_______________________________________________
DOLFIN-dev mailing list
DOLFIN-dev@xxxxxxxxxx
http://www.fenics.org/mailman/listinfo/dolfin-dev

_______________________________________________
DOLFIN-dev mailing list
DOLFIN-dev@xxxxxxxxxx
http://www.fenics.org/mailman/listinfo/dolfin-dev
_______________________________________________
DOLFIN-dev mailing list
DOLFIN-dev@xxxxxxxxxx
http://www.fenics.org/mailman/listinfo/dolfin-dev





Follow ups

References