UFC 1.1 already has a function for tabulating the number of dofs associated with each mesh entity, but I don't think FFC implements UFC 1.1 completely yet. Shouldn't this be all that's needed from FFC for DOLFIN to compute/estimate the max non-zeroes per row? Sum the local dimension of all elements and subtract the number of dofs for each entity shared by neighbouring elements.
-- Martin 2008/7/22 Garth N. Wells <[EMAIL PROTECTED]>: > I've been testing assembly with various back-ends, and the bottleneck is > std::map::insert(..). I don't see an easy away around this which would > yield the complete sparsity pattern. > > For various back-ends (PETSc, MTL4, and perhaps Trilinos), I would > suggest that we go back to how we initialised matrices before the > introduction of the sparsity pattern, where based on the number of > neighbours to each cell and the finite element dimension, the maximum > number of non-zeroes per row was estimated. With this information, there > is no time overhead in assembling PETSc and MTL4 matrices relative to > using the complete sparsity pattern. > > A more sophisticated but complex approach would be to allow FFC to help > compute the maximum number of non-zeroes. How hard would it be for FFC > to compute the maximum number of non-zeroes per row given the number of > neighbours of a mesh entity? Using FFC, it would be possible to take > into account the type of finite element. > > Garth > _______________________________________________ > 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
