On Wed, Feb 25, 2015 at 8:57 AM, Martin Sandve Alnæs <[email protected]> wrote:
> I've started working on this issue:
> https://bitbucket.org/fenics-project/ffc/issue/61/global-dofs-aka-reals-should-not-be
>
> Can we agree on a target convention for naming of dofs in FEniCS?
> I'd like to clean it up, and in the process get to know
> the current dofmap implementation in dolfin better.
>
> Here's my suggestion for terminology:
>
> global dof numbering = numbering of dofs globally agreed upon across all
> processes
> local dof numbering = numbering of dofs local to a single process (*)
> element dof numbering = numbering of dofs local to a single finite element
> entity dof numbering = numbering of dofs local to a single mesh entity
>

There is a subtle difference between 'element dof numbering' and
'entity dof numbering' in the implementation. At present, 'element dof
numbers' are the local (process-wise) indices, and 'entity dof
numbers' and element-wise (local to the element).

> global dofs = all dofs
> local dofs = all dofs on a single process
> element dofs = all dofs associated with a particular element (including its
> subentities)
> entity dofs = all dofs associated with a particular mesh entity (not
> including its subentities)
> facet dofs = dofs associated with a particular facet including its
> subentities
> universal dofs = dofs not associated with any mesh entity (constants, the
> "Real" space)
>

I'm not  too keen on the name 'universal dofs'. We want these dofs
belong to a (sub)-domain. Maybe 'domain dofs'?

>
> So for example a dof associated with a vertex (0,i) is part of:
> - the 'facet dofs' of facets (d-1,j) adjacent to vertex (0,i),
> - the 'entity dofs' of vertex (0,i),
> - the 'element dofs' of cells (d,k) adjacent to vertex (0,i),
> - the 'local dofs' of the process that owns this dof,
> - and the 'global dofs', unconditionally.
>
> The new part here is the concept of a 'universal dof' which is part of:
> - the 'element dofs' of all cells (**this is disputable),

This should be 'an arbitrary number of cells/entities' rather than 'all cells'.

> - the 'local dofs' of the process that owns this dof,
> - and the 'global dofs', unconditionally.
> However the universal dof is NOT part of any entity dofs or facet dofs.
>
> * It's not clear to me whether local dofs include ghosted dofs or not.
>

Depends on how one defines 'local dofs'. If local dofs are all dofs in
the dofmap on a process, then yes they're local. If local dofs are
those that have been numbered by the process, then the ghosts are not
local.

From a high level, I think it's better to think of dofs maps as
overlapping. The question of 'ownership' only comes up when
initialising the data structures for some linear algebra backends.

For this reason, I have been planning to deprecate
GenericDofMao::ownership_range() now that dofmaps use process-wise
indices.

Garth

> ** The universal dof needs to be part of the element dofs at least for the
> time being, unless we change a lot of code and handle them separately.
> For constants that would be fine (and better in a lot of ways), but for
> mixed
> elements with a Real subspace that's trickyer.
>
> Martin
>
> _______________________________________________
> fenics mailing list
> [email protected]
> http://fenicsproject.org/mailman/listinfo/fenics
>
_______________________________________________
fenics mailing list
[email protected]
http://fenicsproject.org/mailman/listinfo/fenics

Reply via email to