Re: [firedrake] view of underlying DMPlex?
David --
The DM is the one you found. The rest of this is more a PETSc4py question than a Firedrake question and I have to say that I?m not the PETSc4py expert. However I note that the DM you get from the FunctionSpace has a viewFromOptions method. I think that?s what you?re after.
Both view() and viewFromOptions() give the same view of a DMShell and the solution Vec. Here is output from W.dm.viewFromOptions('-dm_view') for a P^1 FunctionSpace on a UnitSquareMesh(2,1) in serial: DM Object: 1 MPI processes type: shell Vec Object: 1 MPI processes type: seq 0. 0. 0. 0. 0. 0. Once I find the DMPlex I will use view() or viewFromOptions() on it. So I'm afraid my question stands as is. It is a Firedrake question because I am trying to find the DMPlex, which I understand from Lange et al (2016) is foundational in Firedrake. This is a general PETSc4py pattern, by the way. PETSc is written in plain c
using an object oriented paradigm where the type is prepended to the function name and the object is passed as the first argument. Since Python has built in object oriented features, these functions become methods in PETSc4py, without the type prefix and without explicitly passing the object. Regrettably, PETSC4py is sparsely documented, so often you have to ?just know? the conventions for turning the C interface into the Python one.
Yup. The PETSc devs (e.g. Sanan) are working through their docs to make things better but docing petsc4py is a job for the future. Thanks! Ed
Regards, David From: <firedrake-bounces@imperial.ac.uk> on behalf of Ed Bueler < elbueler@alaska.edu> Reply-To: firedrake <firedrake@imperial.ac.uk> Date: Thursday, 26 July 2018 at 01:37 To: firedrake <firedrake@imperial.ac.uk> Subject: [firedrake] view of underlying DMPlex? Dear Drake -- Suppose I generate a mesh and FunctionSpace this way (or any other way): mesh = UnitSquareMesh(2,1) W = FunctionSpace(mesh, 'Lagrange', 1) Is there a programmatic and/or option way to view the underlying DMPlex? Actually, where is the underlying DMPlex? When I look at W.dm it is of type DMShell. W.dm.view() gives an output including VecView on the solution, but no real info on the mesh. An example of what I have in mind is the output from DMViewFromOptions(). (Is it somewhere in Firedrake/petsc4py?) For a certain 3-triangle mesh (i.e. not the mesh from UnitSquareMesh() above) the output of DMViewFromOptions() is: DM Object: tiny mesh 1 MPI processes type: plex tiny mesh in 2 dimensions: 0-cells: 5 1-cells: 7 2-cells: 3 Labels: depth: 3 strata with value/size (0 (5), 1 (7), 2 (3)) So I know I have 3 cells with 7 edges and 5 vertices, and the multi-process view tells me about the partition. Thanks! I don't want to write my own viewer in Python until I have no choice. ;-) Ed
-- Ed Bueler Dept of Math and Stat and Geophysical Institute University of Alaska Fairbanks Fairbanks, AK 99775-6660 301C Chapman
As Lawrence has pointed out in his answer:
As well as this DMShell, there is also a DMPlex hanging around, that describes the mesh topology. But this is attached to the mesh object you made, rather than the FunctionSpace. You can get at it via mesh._plex:
________________________________ From: firedrake-bounces@imperial.ac.uk <firedrake-bounces@imperial.ac.uk> on behalf of Ed Bueler <elbueler@alaska.edu> Sent: 26 July 2018 17:07:21 To: firedrake Subject: Re: [firedrake] view of underlying DMPlex? David -- The DM is the one you found. The rest of this is more a PETSc4py question than a Firedrake question and I have to say that I?m not the PETSc4py expert. However I note that the DM you get from the FunctionSpace has a viewFromOptions method. I think that?s what you?re after. Both view() and viewFromOptions() give the same view of a DMShell and the solution Vec. Here is output from W.dm.viewFromOptions('-dm_view') for a P^1 FunctionSpace on a UnitSquareMesh(2,1) in serial: DM Object: 1 MPI processes type: shell Vec Object: 1 MPI processes type: seq 0. 0. 0. 0. 0. 0. Once I find the DMPlex I will use view() or viewFromOptions() on it. So I'm afraid my question stands as is. It is a Firedrake question because I am trying to find the DMPlex, which I understand from Lange et al (2016) is foundational in Firedrake. This is a general PETSc4py pattern, by the way. PETSc is written in plain c using an object oriented paradigm where the type is prepended to the function name and the object is passed as the first argument. Since Python has built in object oriented features, these functions become methods in PETSc4py, without the type prefix and without explicitly passing the object. Regrettably, PETSC4py is sparsely documented, so often you have to ?just know? the conventions for turning the C interface into the Python one. Yup. The PETSc devs (e.g. Sanan) are working through their docs to make things better but docing petsc4py is a job for the future. Thanks! Ed Regards, David From: <firedrake-bounces@imperial.ac.uk<mailto:firedrake-bounces@imperial.ac.uk>> on behalf of Ed Bueler <elbueler@alaska.edu<mailto:elbueler@alaska.edu>> Reply-To: firedrake <firedrake@imperial.ac.uk<mailto:firedrake@imperial.ac.uk>> Date: Thursday, 26 July 2018 at 01:37 To: firedrake <firedrake@imperial.ac.uk<mailto:firedrake@imperial.ac.uk>> Subject: [firedrake] view of underlying DMPlex? Dear Drake -- Suppose I generate a mesh and FunctionSpace this way (or any other way): mesh = UnitSquareMesh(2,1) W = FunctionSpace(mesh, 'Lagrange', 1) Is there a programmatic and/or option way to view the underlying DMPlex? Actually, where is the underlying DMPlex? When I look at W.dm it is of type DMShell. W.dm.view() gives an output including VecView on the solution, but no real info on the mesh. An example of what I have in mind is the output from DMViewFromOptions(). (Is it somewhere in Firedrake/petsc4py?) For a certain 3-triangle mesh (i.e. not the mesh from UnitSquareMesh() above) the output of DMViewFromOptions() is: DM Object: tiny mesh 1 MPI processes type: plex tiny mesh in 2 dimensions: 0-cells: 5 1-cells: 7 2-cells: 3 Labels: depth: 3 strata with value/size (0 (5), 1 (7), 2 (3)) So I know I have 3 cells with 7 edges and 5 vertices, and the multi-process view tells me about the partition. Thanks! I don't want to write my own viewer in Python until I have no choice. ;-) Ed -- Ed Bueler Dept of Math and Stat and Geophysical Institute University of Alaska Fairbanks Fairbanks, AK 99775-6660 301C Chapman
participants (2)
- 
                
                Ed Bueler
- 
                
                Homolya, Miklós