On Wed, Oct 07, 2009 at 10:47:53AM +0100, Garth N. Wells wrote:
We added some time ago
dof_map::max_local_dimension()
and perhaps we also need
finite_element::max_local_dimension()
and
finite_element::local_dimension(const ufc_cell& )
I have a problem for which the number of dofs an element has can grow
during a computation. You may say that this is then a different element,
but that would make it hard to handle in DOLFIN and hard to generate
code for.
Here's an example of an inconsistency. In dolfin::Function, we
initialise some scratch space for the dof map based on the element space
dimension,
dofs = new uint[element.space_dimension()];
for (uint i = 0; i < element.space_dimension(); i++)
dofs[i] = 0;
whereas is dolfin::UFC we use dof_map::max_local_dimension().
Yes, it would be natural to have max_ in both and an optional cell
argument.
But for the finite element class, it would be better to have
unsigned int max_space_dimension() const;
unsigned int space_dimension(const cell& cell) const;
rather than (max_)local_dimension, since there is always only one
dimension for an element (not local and global).