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