Thread Previous • Date Previous • Date Next • Thread Next |
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
Thread Previous • Date Previous • Date Next • Thread Next |