## Overview

The **RoseMeshTopologyWritable** class is a subclass of
RoseMeshTopology, which includes
additional methods to allow the mesh to be updated.

## createEdge()

unsignedcreateEdge( unsigned v1, unsigned v2 );

The **createEdge**() function creates a new edge in the topology
structure (and the underlying facet set). The parameters specified
are the the vertices of the edge. Create a new edge will cause the
mesh to be inconsistent until the edges facets and the facet edges are
updated.

#### See Also

RoseMesh::createFacet, setEdgeVerts, setEdgeFacets, setFacetEdges## deleteEdge()

voiddeleteEdge( unsigned ei );

The **deleteEdge**() function deletes an edge from the topology
structure.

## deleteFacet()

voiddeleteFacet( unsigned fi );

The **deleteFacet**() function deletes a facet from the topology
structure and the underlying facet set.

## deleteVertex()

void deleteVertex( unsigned vi );

The **deleteVertex**() function deletes a vertex from the
topology structure and the underlying facet set.

## getFacetSet()

RoseMesh *getFacetSet();

The **getFacetSet**() function returns the facet set associated
with this this topology structure. Unlike the method declared on
supertype, this method returns a non-const facet set.

#### See Also

RoseMeshTopology::getFacetSet## init()

virtal voidinit( const RoseMesh * facets ); voidinit( RoseMesh * facets );

The **init**() function initializes the **RoseMeshTopology**
instance with a given facet set. The value specified by
the **facets** parameter must not be deleted until the application
is finished with the topology object.

There are two versions of the init method: one that takes a const facet set, and one that takes a non-const. The const version should not be used. It is provided to override the version in the supertype, and will generate a warning.

## setEdgeFacets()

voidsetEdgeFacets( unsigned edge, unsigned f1, unsigned f2 );

The **setEdgeFacets**() function sets the facets associated with
an edge in a topology structure. Note that change the edge facets
will result in an inconsistent topology structure unless the edge
vertices and facet edges are also updated.

## setEdgeVerts()

voidsetEdgeVerts( unsigned edge, unsigned v1, unsigned v2 );

The **setEdgeVerts**() function replaces the vertices on an
edge. Note that this will result in an inconsistent topology
structure unless that facet edges and edges facets are also updated
to reflect the updated structure.

## setFacetEdge()

voidsetFacetEdge( unsigned f, unsigned ei, unsigned new_e );

The **setFacetEdge**() function updates one of the edges of a
facet. The **f** parameter is the facet to be updated,
the **ei** parameter is either 0 or 1, indicating which edge of the
facet is updated, and the **new_e** parameter is the new edge value
to be set.

## setFacetEdges()

voidsetFacetEdges( unsigned f, unsigned e1, unsigned e2, unsigned e3 );

The **setFacetEdges**() function updates the edges on a facet.
Note that this will result in an inconsistent topology structure
unless the facet vertices
and edge facets are also updated.

## setFirstVertexFacet()

voidsetFirstVertexFacet( unsigned v, unsigned f );

The **setFirstVertexFacet**() function sets one of the vertices
associated with a facet. From this, the other edges and facets
surrounding the vertex can be determined.

## setVertexFacet()

voidsetVertexFacet( unsigned vertex, unsigned facet );

The **setVertexFacet**() function sets a vertex associated with
a facet. This can reference any of the facets the the vertex is a
member of. The other facets and edges can then be efficiently
determined by traversing the topology strutues.