Thread Previous • Date Previous • Date Next • Thread Next |
Anders Logg wrote:
On Fri, Mar 09, 2007 at 07:10:31PM +0100, Garth N. Wells wrote: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.GarthYes, 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?Yes. So far it is just two functions that are needed, init() and add().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.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 onebenchmark I made)Do you mean this should be done in DofMap?
Yes. The STL vector of maps is cheap to construct, and can be used to initialise the non-zero layout of a sparse matrix.
Garth.
/AndersGarth it is just a temporary implementation until we decideto implement the GenericTensor interface in GenericMatrix and GenericVector. /AndersDOLFIN 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_______________________________________________ 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
Thread Previous • Date Previous • Date Next • Thread Next |