MESH VERTEX OPERATORS
 

int MV_Number(PMeshObj mesh, PMeshVert v);

Return an ID number for the mesh vertex.
 


VType MV_Type(PMeshObj mesh, PMeshVert v);

Return the mesh vertex type. Most useful in checking if a mesh vertex
has been deleted or if it is a parent vertex on an interface


PGeomEntity MV_GMEntity(PMeshObj mesh, PMeshVert v);

Return the geometric model entity the mesh vertex is classified on.


GType MV_GMtype(PMeshObj mesh, PMeshVert v);

Return the type of geometric model entity the mesh vertex is
classified on (GREGION, GFACE, GEDGE, GVERTEX, GUNKNOWN).


void MV_Coords(PMeshObj mesh, PMeshVert v, double *xyz);

Coordinates of mesh vertex


int MV_IsParent(PMeshObj mesh, PMeshVert v);

A vertex not on an interface is its own parent - return value will be 1


int MV_IsChild(PMeshObj mesh, PMeshVert v);

A vertex not on an interface is its own child - return value will be 1


PMeshVert MV_Parent(PMeshObj mesh, PMeshVert v);

For a vertex not on an interface, the vertex itself is returned


void MV_Children(PMeshVert mesh, PMeshVert v, int *nvc, PMeshVert **vc)

For a vertex not on an interface, a 1 item array with the vertex
pointer itself is returned and nvc = 1
 


void MV_Edges(PMeshObj mesh, PMeshVert v, int *nve, PMeshEdge **vedges);

List of mesh edges connected to vertex. For this routine to work
properly, one must call MESH_BldAdj first. If not the routine will
just return 0.

If the vertex is a parent vertex, then the operator will return all
the edges connected to all the child vertices of the vertex. The edge
returned will be of type PARENT. Each of these edges will be made up
of 'v' and any other parent vertex it is connected to. If it is a
child vertex, then it will return edges connected only to itself.  In
this case all the edges will be of type CHILD. Each edge will be made
up of the child vertex 'v' and any other child vertex it is connected
to. Note that vertices on 2-manifold (single material) boundaries and
in the interior can be considered a parent or a child as required.

*** IMPORTANT ***
When finished with the list of edges, call ME_Delete on each of the
edges and free the vedges list. This is important since the MeshEdge
data structures are created on the fly and the MESH object does not
keep track of them.
 


void MV_Faces(PMeshObj mesh, PMeshVert v, int *nvf, PMeshFace **vfaces);

** NOT YET TESTED **

List of mesh faces connected to vertex. For this routine to work
properly, one must call MESH_BldAdj first. If not the routine will
just return 0.

The behavior of the operator for parent and child vertices is the same
as it is for MV_Edges.

*** IMPORTANT ***
When finished with the list of faces, call MF_Delete on each of the
faces and free the vfaces list. This is important since the MeshFace
data structures are created on the fly and the MESH object does not
keep track of them.


int MV_numRegions(PMeshObj mesh, PMeshVert v);

Number of mesh regions connected to mesh vertex. For this routine to
work properly, one must call MESH_BldUpAdj first. If not the routine
will just return 0.
 


void MV_Regions(PMeshObj mesh, PMeshVert v, int *nr, PMeshRegn **regns);

List of mesh regions connected to mesh vertex. For this routine to
work properly, one must call MESH_BldUpAdj first. If not the routine
will just return 0 for the number of regions and a NULL pointer for
the region list.
 

For a parent vertex, mesh regions in all the material regions
connected to all its children are returned. For a child vertex, only
mesh regions in the particular material region pointed to by the child
are returned.



int MV_GetAttVal(PMeshObj mesh, PMeshVert v, char *attname, int *ival,
double *rval, char *cval, void **pval, AttType *atype);

Depending on the type of the attribute, the appropriate field will be
filled on succesful completion. Arrays are returned in pval, integer in
ival and real number in rval (I don't think lagrit supports character
attributes)
 



int MV_SetAttVal(PMeshObj mesh, PMeshVert v, char *attname, int ival,
double rval, char cval, void *pval);

This is similar to the GetAttVal routine - depending on the type and
rank, one sends in a value with the right variable

*** PERHAPS these routines need an additional variable, "rank" but for
now.....