[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