← Back to team overview

dolfin team mailing list archive

Re: DofMap.tabulate_vertex_map

 

On 01/28/2013 10:35 PM, Anders Logg wrote:
> On Mon, Jan 28, 2013 at 09:31:27PM +0000, Garth N. Wells wrote:
>> On 28 January 2013 21:22, Anders Logg <logg@xxxxxxxxx> wrote:
>>> On Mon, Jan 28, 2013 at 10:10:40PM +0100, Johan Hake wrote:
>>>> Hello!
>>>>
>>>> I have now added a method to DofMap, which tabulate a map between
>>>> vertices and dofs. It will only work for DofMaps with dofs on vertices.
>>>> So basically for any CG 1 FunctionSpaces and will raise error else wise.
>>>>
>>>> Usage:
>>>>
>>>>   from dolfin import *
>>>>   import numpy as np
>>>>   mesh = UnitSquareMesh(10,10)
>>>>   V = VectorFunctionSpace(mesh, "CG", 1)
>>>>   u = Function(V)
>>>>   u.interpolate(Constant((1,2)))
>>>>   vert_values = np.zeros(mesh.num_vertices()*2)
>>>>   vert_values[V.dofmap().tabulate_vertex_map(mesh)] = \
>>>>   u.vector().array()
>>>>   print vert_values
>>>>
>>>> In parallel the map will follow the local dofs. This means that some
>>>> values in vert_values above will still be 0. The 0 values will then
>>>> correspond to vertex values which are owned by another process.
>>>>
>>>> In C++ the method returns a std::vector<std::size_t>.
>>>>
>>>> Questions:
>>>> Does the name "tabulate_vertex_map" work?
>>>
>>> Sounds ok.
>>>
>>
>> Doesn't mean much to me. Can it be more descriptive?
>>
>>>> Should a version of this method exist in other classes. FunctionSpace,
>>>> Function (without the mesh argument of course)?
>>>
>>> Yes, would be good to have for convenience.
>>>
>>
>> I don't see the benefit of spreading it around. It should just belong to DofMap.
> 
> A method in Function should do more than just provide the map.

Like what? Set values from vertex_ordered values? I am not convinced of
that...

Johan



References