On Fri, 30 Aug 2013 16:09:06 +0100
"Garth N. Wells" <[email protected]> wrote:

> On 30 August 2013 16:05, Jan Blechta <[email protected]>
> wrote:
> > On Fri, 30 Aug 2013 16:57:42 +0200
> > Jan Blechta <[email protected]> wrote:
> >
> >> On Fri, 30 Aug 2013 15:47:28 +0100
> >> "Garth N. Wells" <[email protected]> wrote:
> >>
> >> > The functions GenericDofmap::vertex_to_dof_map and
> >> > GenericDofMap::dof_to_vertex_map are not properly documented (the
> >> > doc string is the same for both), and I think that they are back
> >> > to front. The docstring in DofMap has inconsistencies. I would
> >> > expect that
> >> >
> >> >     map0 =  GenericDofmap::vertex_to_dof_map(...)
> >> >
> >> > would mean a map from vertex to dof, i.e.
> >> >
> >> >     map0[vertex_index] -> dof index
> >> >
> >> > and  that
> >> >
> >> >     map1 =  GenericDofmap::dof_to_vertex_map(...)
> >> >
> >> > would mean a map from dof index to
> >> >
> >> >     map1[dof_index] -> vertex index
> >> >
> >> > Tests (see below code) and the return types also indicate that
> >> > things are back to front. Can someone clarify the situation?
> >>
> >> If you have some map defined on dofs, i.e. it returns whatever from
> >> dofs, for example Vector()[:], then composition with
> >> dof_to_vertex_map makes it a map on vertices (modulo dofs per
> >> vertex).
> >
> > To make it clear
> >
> >     u = Function(V)
> >     x = u.vector()
> >     values_on_vertices = x[dof_to_vertex_map]
> >
> > for CG1 space values_on_vertices are x's values indexed by local
> > vertex numbers. For other spaces (where the concept has a meaning -
> > I'm not sure which are these) it should be indexed by
> >
> >     local_vertex_index*dofs_per_vertex + i
> >
> > for i = 0, ..., dofs_per_vertex-1
> >
> 
> It's not clear and Functions and Vectors have nothing to do with it. 

Vector is here only an example of some map defined on dof indices.

> I was taught from a young age to read left-to-right, which means
> 
>    vertex_to_dof_map(...) == vertex to dof map.
> 
> Unfortunately, in this case, I'm not dyslexic, otherwise it would
> make sense.

I see your point, it's confusing. But the etymology of vertex_to_dof_map
is that it turns some vertex map (map defined on vertex indices) into
dof map (map defined on dof indices). I think that Johan is an author of
original vertex_to_dof_map. Is he dyslexic? :-P

Jan

> 
> Garth
> 
> > Jan
> >
> >>
> >> vertex_to_dof_map is just an inversion of dof_to_vertex_map.
> >>
> >> Jan
> >>
> >> >
> >> > Garth
> >> >
> >> >
> >> >
> >> > from dolfin import *
> >> >
> >> > mesh = UnitSquareMesh(4, 4)
> >> > V = FunctionSpace(mesh, "Lagrange", 1)
> >> >
> >> > dof_to_vertex = V.dofmap().dof_to_vertex_map(mesh)
> >> > vertex_to_dof = V.dofmap().vertex_to_dof_map(mesh)
> >> >
> >> > for c in cells(mesh):
> >> >     print "Cell index:", c.index()
> >> >
> >> >     # Get cell dofs
> >> >     dofs = V.dofmap().cell_dofs(c.index())
> >> >     print "  Cell dofs:", dofs
> >> >
> >> >     # Get vertices from cell
> >> >     cell_vertices0 = sorted([v.index() for v in vertices(c)])
> >> >     print "  Cell vertex indices (from cell):", cell_vertices0
> >> >
> >> >     # Get vertices from dof_to_vertex
> >> >     cell_vertices1 = sorted([dof_to_vertex[dof] for dof in dofs])
> >> >     print "  Cell vertex indices (from dof_to_vertex_map):",
> >> > cell_vertices1
> >> >
> >> >     # Get vertices from vertex_to_dof_map
> >> >     cell_vertices2 = sorted([vertex_to_dof[dof] for dof in dofs])
> >> >     print "  Cell vertex indices (from vertex_to_dof_map):",
> >> > cell_vertices2 _______________________________________________
> >> > fenics mailing list
> >> > [email protected]
> >> > http://fenicsproject.org/mailman/listinfo/fenics
> >>
> >> _______________________________________________
> >> fenics mailing list
> >> [email protected]
> >> http://fenicsproject.org/mailman/listinfo/fenics
> >
> _______________________________________________
> 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