← Back to team overview

dolfin team mailing list archive

Re: Assembly speed

 

On Tue, Jul 22, 2008 at 10:49:47AM -0500, Matthew Knepley wrote:
> On Tue, Jul 22, 2008 at 10:42 AM, Anders Logg <logg@xxxxxxxxx> wrote:
> > On Tue, Jul 22, 2008 at 05:05:45PM +0200, Martin Sandve Alnæs wrote:
> >> 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.
> >
> > True. FFC does not yet implement tabulate_entity_dofs but it would be
> > fairly easy to add.
> >
> >> 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.
> >
> > How should this be done? It seems that to do this, we would need to
> > compute all cell-cell connectivity which is fairly expensive. On the
> > other hand, we need to compute it anyway to initialize edges and
> > facets when there are dofs on those entities.
> 
> You can do it on the fly. I just use adj(c) = closure(start(c)). With a suitable
> global order, you can distinguish between diagonal and offdiagonal, and
> you are done.
> 
>   Matt

We can do something similar, but I haven't checked the cost of
computing the mesh connectivity compared to assembly.

Take piecewise linears for example. We just need the connectivity
D -- 0 (cells to vertices) to assemble. Investigating which dofs are
shared locally would require us to initialize/compute also D -- D.
But this is fairly cheap and O(N) so I guess it's something to
consider.

-- 
Anders

Attachment: signature.asc
Description: Digital signature


References