← Back to team overview

dolfin team mailing list archive

Re: [HG dolfin] Use DofMap in FEM to get dof mapping and to compute number of nonzeroes per matrix row. This gives big memory savings for some problems. For /src/demo/pde/elasticity memory use was approx. 600mb, now 200mb.

 

On Wed, Dec 06, 2006 at 11:39:44PM +0100, Garth N. Wells wrote:
> Anders Logg wrote:
> > Do you mean "DofMap associated with mesh and finite element"?
> >
> 
> Yep.
> 
> > I'm ok with that. We could have a DiscreteFunction with two members:
> > 
> >     Vector
> >     DofMap
> > 
> 
> That would work.

ok. This will also have consequences for the file format for
input/output of Functions.

Anyway, the Function class needs some work. We've also talked about
smart pointers before so there are a few things to figure out:

    - Incorporate DofMap
    - Reference counting/smart pointers
    - FiniteElement --> ufc::finite_element

> > I haven't looked closely on the DofMap yet, but does it allow working
> > only through the on-the-fly computed dofmap of the FFC generated code?
> > 
> 
>This is exactly what it does at the moment.
>
> DofMap::dofmap(int dof_map[], const Cell& cell, const uint e = 0) const;
> 
> just call the FFC nodemap() function. The DofMap can have two finite 
> elements attached to it (for rows and columns), so e indicates which map 
> you want.

Sounds good. But I'd like to avoid talking about rows and columns if
possible.

> > Or is it necessary to compute all the data?
> > 
> 
> You only need to compute something if you want to know the total number 
> of degrees of freedom or you want to the sparsity pattern.
> 
> I'll add shortly the possibility to run the Cuthill-McKee over the map 
> and reorder it. This will be an option.

What is Cuthill-McKee?

> > I'd like something where one can decide whether to actually build all
> > the data or just use what FFC generates (to save memory in storing the
> > function).
> 
> Agree.My intention is that the data is built only if a renumbering is 
> requested.
> 
> What is worthwhile is computing the sparsity pattern. For 10^6 
> triangles, it only cost 2.5s to do this on my laptop and it can save a 
> lot of memory.

Very nice.

It looks like estimateNonZeros() is no longer needed in FEM?

/Anders


Follow ups

References