I have a few quetions about the local ordering of vertices and dofs and I am using Dolfinx in Python for coding.
1.I use the following code,for example, to get the dofs coordinates
V=fem.FunctionSpace(mesh,("CG",1))
x=V.tabulate_dof_coordinates()
so x contains the coordinates in a list and I want to know if the ordering it arranges in the global ordering of dofs?If so, when I use x[V.dofmap.cell_dofs(0)], I will get the coordinates of dofs on cell 0 with the same ordering?But the result returned by cell_dofs does not follow the same ordering with the global ordering like tabulate_dof_coordinates.
Further, if I understand right, the cell_dofs(i) will return the global numbering of dofs on ith cell .Then if I use mpirun -n 2 , for example, the results will be the same no matter on which process?
- I know that mesh.dofmap.index_map(dim) will give a map for entities of dimension dim.How can I further get the global indices of vertices for each cell?
If I want to get local ordering of dofs of each cell, which function can I use?Or is there a local_to_global map function relating the local and global indices or global_to_local function?
For example, I use
domain=mesh.create_unit_square(MPI.COMM_WORLD,1,1)
to create a mesh containing two triangles.The local ordering of vertices for each triangle will be [0,1,2] while the global ordering of cell(1) will be [0,3,2].Is there anyway to get one of them from the other?
3.When I run code in parallel, for instance, there are two processes.Then the ordering of cells which each process contains will use its own global ordering?E.g.,as above,I use the code
mesh = dolfinx.mesh.create_unit_square(comm, 1, 1, ghost_mode=dolfinx.mesh.GhostMode.shared_facet, cell_type=dolfinx.mesh.CellType.triangle)
there is a square mesh with two triangles.The four vertices will be [0,1,2,3], and if each process contain one triangle, then when I run mesh.topology.connectivity(2,0),I find that the results will all be something like 0: [0,1,2] 1: [0,3,2](where ordering may be different).So it will return all cells connectivity but when I use GhostMode.none it will only return one cell like 0 :[0,1,2].So what is the reason?And no matter which mode, the numbering of vertices will all be global index,right?