[CIG-SHORT] cohesive cells pylith 2.1.0

Brad Aagaard baagaard at usgs.gov
Thu Aug 20 10:58:26 PDT 2015


On 08/18/2015 12:48 PM, Birendra jha wrote:
> Hi developers
>
> 1. Can you please explain why the number of edges of a face of a cohesive cell is restricted to be 3 in CohesiveTopology::create?
> Face "<<p<<" has "<<numEdges<<" edges != 3."
>
> What about quads?

The "if (faultBdLabel && (dim > 2)) {" statement surrounds the statement 
you refer to above. This is related to fixing over-agressive completion 
of the boundary label marking the buried edges of the fault. See the 
response below to your second question in regards to the changes in the 
topology of the mesh and cohesive cells for what the boundary label means.

> 2. How can I get the indices of cells neighboring a cohesive face? For example, in pylith-1.8.0, the following was sufficient,
>
> PointRetriever<SieveMesh::sieve_type> sV2
> ifaultSieve->support(face, sV2)
> const point_type *cells = sV2.getPoints()
>
> Can I use the following in pylith-2.1.0:
>
> const PetscInt *cells;
> DMPlexGetSupport(dm, p, &cells);
>
> where p = bd[i]. I don't understand bd or boundary faces for faults?

In PyLith v2.0.0 we changed how we store the topology of the mesh and 
the topology of cohesive cells. Beginning in v2.0.0 a 3-D mesh contains 
vertices, edges, faces, and cells. In 2-D the faces are the cells. 
Previously, we stored only the vertices and cells and on the fly filled 
in the missing pieces. With this "interpolated" mesh, Matt decided a 
more understandable topology for cohesive cells was that the DOF 
associated with the Lagrange multiplier should be the edge connecting 
the vertices on each side of the fault rather than an additional vertex. 
This edge connecting the two sides of the fault is called a hybrid edge 
and the cohesive cell is a hybrid cell.

Additionally, we introduced a better way to handle buried edges of 
faults. We no longer insert Lagrange vertices at the buried edges. This 
is discussed and illustrated in the manual; see Figure 6.3.

To get the cells neighboring a cohesive cell, you need to get the 
support for the face on each side.

DMPlexGetSupportSize(dm, face, &supportSize);
DMPlexGetSupport(dm, face, &support);

> Is there documentation of Petsc implementation of fault/cohesive cells?

I doubt it as it is somewhat tangential to the rest of PETSc. Matt 
should be able to provide more information about what is available.

Brad



More information about the CIG-SHORT mailing list