287 lines
8.4 KiB
Markdown
Executable File
287 lines
8.4 KiB
Markdown
Executable File
---
|
||
GENERATOR: 'Mozilla/4.05C-SGI [en] (X11; I; IRIX64 6.5 IP28) [Netscape]'
|
||
---
|
||
<img height="300" width="300" src="https://lanl.github.io/LaGriT/assets/images/arrow2.gif">"30"
|
||
"30"](http://www.ees.lanl.gov/staff/rao/mstkla/mstkla.md#MESH%20FACE:) <img height="300" width="300" src="https://lanl.github.io/LaGriT/assets/images/arrow3.gif">"30"
|
||
"30"](http://www.ees.lanl.gov/staff/rao/mstkla/MeshRegion.md) <img height="300" width="300" src="https://lanl.github.io/LaGriT/assets/images/arrow4.gif">"30"
|
||
"30"](http://www.ees.lanl.gov/staff/rao/mstkla/MeshEdge.md)
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
**MESH FACES:**
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
Since LaGriT does not really store mesh faces, the mesh face data
|
||
|
||
structure (MeshFace, *PMeshFace*) is created on the fly whenever face
|
||
|
||
information is requested. Therefore after utilizing the face(s) get
|
||
|
||
information, it (they) should be destroyed by calling MF\_Delete
|
||
|
||
operator.
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
*int* **MF\_Number**(*PMeshObj* mesh, *PMeshFace* f);
|
||
|
||
<img height="300" width="300" src="https://lanl.github.io/LaGriT/assets/images/note1.gif">"31" "32"
|
||
*
|
||
* This will return 0
|
||
for now since I haven't yet decided on a good
|
||
|
||
*
|
||
* way to assign a unique number to the (virtual) faces of the mesh.
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
*void* **MF\_Delete**(*PMeshFace* f);
|
||
|
||
Free the data structure associated with this face created on the fly.
|
||
|
||
(There is an operator for creation but I cannot yet imagine needing to
|
||
|
||
make that a publicly available operator).
|
||
|
||
<img height="300" width="300" src="https://lanl.github.io/LaGriT/assets/images/bullet12.gif">"27" "31"
|
||
*
|
||
* IMPORTANT
|
||
*
|
||
*
|
||
|
||
MF\_Delete will not remove any connections in the mesh. It just
|
||
|
||
destroys the temporary data structure used to store the face info
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
*int* **MF\_IsParent**(*PMeshObj* mesh, *PMeshFace* pf);
|
||
|
||
If all vertices of the face are parents, the face is a parent.
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
*PMeshFace* **MF\_Parent**(*PMeshObj* mesh, *PMeshFace* pf);
|
||
|
||
The parents of all vertices of the face are obtained and a new
|
||
|
||
'parent' face is constructed from them.
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
*void* **MF\_Children**(*PMeshObj* mesh, *PMeshFace* pf, *int*
|
||
*nfc,
|
||
*PMeshFace*
|
||
*
|
||
*fc);
|
||
|
||
<img height="300" width="300" src="https://lanl.github.io/LaGriT/assets/images/note1.gif">"31" "32"
|
||
*
|
||
*
|
||
* NOT YET
|
||
IMPLEMENTED
|
||
*
|
||
*
|
||
*
|
||
|
||
Child vertices of the face are found and appropriate combinations of
|
||
these vertices are used to construct the new 'child' faces. For a
|
||
combination to be appropriate, the vertices of the child face has to
|
||
point to the same material region.
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
*int* **MFs\_areSame**(*PMeshObj* mesh, *PMeshFace* f1, *PMeshFace* f2);
|
||
|
||
Compare the data in two MeshFace data structures and see if they
|
||
|
||
represent the same connection in the mesh. This operator is needed
|
||
|
||
since the on-the-fly *PMeshFace* pointers may not be the same and they
|
||
|
||
do not directly point to any persistent "object" in the database.
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
*PGeomEntity* **MF\_GMentity**(*PMeshObj* mesh, *PMeshFace* f);
|
||
|
||
Return the geometric model entity the face is on. In the absence of
|
||
|
||
explicit face representation in the database, this may be problematic
|
||
|
||
in a few cases cases where multiple classifications are possible.
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
*GType* **MF\_GMtype**(*PMeshObj* mesh, *PMeshFace* f);
|
||
|
||
Return the type of geometric model entity the face is on. This (I
|
||
|
||
think) is more deterministically found from the classifications of its
|
||
|
||
vertices but some problems may still occur. See Comments in ME\_GMtype.
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
*PMeshVert* **MF\_Vertices**(*PMeshObj* mesh, *PMeshFace* f, *int*
|
||
|
||
*nfv, *PMeshVert*ex
|
||
*
|
||
*fverts);
|
||
|
||
Return the vertices of the mesh face. The vertices are in no
|
||
|
||
particular order. Parent faces return parent vertices and child faces
|
||
|
||
child vertices. If a vertex is not on an non-manifold boundary
|
||
|
||
(interface) the vertex itself is returned.
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
*PMeshVert* **MF\_VerticesOrd**(*PMeshObj* mesh, *PMeshFace* f, *int*
|
||
|
||
*nfv, *PMeshVert*ex
|
||
*
|
||
*fverts);
|
||
|
||
<img height="300" width="300" src="https://lanl.github.io/LaGriT/assets/images/note1.gif">"31" "32"
|
||
*
|
||
* NOT YET IMPLEMENTED
|
||
|
||
*
|
||
*
|
||
|
||
Return the vertices of the mesh face. The vertices are ordered such
|
||
|
||
that the smallest one is the first. Also, the sequence is such that
|
||
|
||
the face points out of the region connected to it or in case there are
|
||
|
||
two regions connected to it, such that it points out of the region
|
||
|
||
with the lower ID Number. The behavior of the operator for parent and
|
||
|
||
child faces is the same as MF\_Vertices
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
*void* **MF\_Edges**(*PMeshObj* mesh, *PMeshFace* f, *int*
|
||
*nef,
|
||
*PMeshFace*
|
||
*
|
||
*efaces);
|
||
|
||
Get the "edges" of an "face". The edges data structures are
|
||
|
||
constructed on the fly since they do not exist in the LaGriT
|
||
|
||
database. See note on freeing the *PMeshFace* structures listed under
|
||
|
||
MV\_Edges and MV\_Faces. Parent faces return parent edges and child
|
||
|
||
faces return child edges.
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
*void* **MF\_Regions**(*PMeshObj* mesh, *PMeshFace* f, *PMeshRegn*
|
||
fregions[2]);
|
||
|
||
Get the regions connected to an face. MESH\_BldUpAdj must be called
|
||
|
||
before this operator can be called usefully. The regions will be
|
||
|
||
returned such that the face 'f' as defined will point out fregions[0]
|
||
|
||
(if it exists) and into fregions[1] (if it exists).
|
||
|
||
A parent face will return both regions connected to it while a child
|
||
|
||
face will return a region only on its side of the interface. If a
|
||
|
||
"child" face constructed from interior nodes and child nodes on an
|
||
|
||
interface, both regions connected to it are returned.
|
||
|
||
<img height="300" width="300" src="https://lanl.github.io/LaGriT/assets/images/bullet12.gif">"27" "31"
|
||
*
|
||
* IMPORTANT
|
||
*
|
||
*
|
||
|
||
Since MESH\_BldUpAdj builds explicit upward adjacency information, this
|
||
|
||
routine does not require a seed region to be provided.
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
*int* **MF\_EntOnBdry**(*PMeshObj* mesh, *PMeshFace* f, MType mtype,
|
||
PMeshEntity pent);
|
||
|
||
Check if mesh entity of type 'mtype' is on the boundary of mesh
|
||
|
||
face. mtype can only be MEDGE or MVERTEX. In other words, check if
|
||
|
||
mesh face is made up of mesh edge or vertex in question.
|
||
|
||
|
||
|
||
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
[]{#MF-Attribs*int* **MF\_GetAttVal**(*PMeshObj* mesh, *PMeshFace* f,
|
||
*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)
|
||
|
||
<img height="300" width="300" src="https://lanl.github.io/LaGriT/assets/images/bullet12.gif">"27" "31" Will only work for
|
||
surface meshes
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
*int* **MR\_SetAttVal**(*PMeshObj* mesh, *PMeshFace* f, *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.....
|
||
|
||
|
||
|
||
<img height="300" width="300" src="https://lanl.github.io/LaGriT/assets/images/bullet12.gif">"27" "31" Will only work for
|
||
surface meshes
|
||
<img height="300" width="300" src="https://lanl.github.io/LaGriT/assets/images/arrow2.gif">"30"
|
||
"30"](http://www.ees.lanl.gov/staff/rao/mstkla/mstkla.md#MESH%20FACE:) <img height="300" width="300" src="https://lanl.github.io/LaGriT/assets/images/arrow3.gif">"30"
|
||
"30"](http://www.ees.lanl.gov/staff/rao/mstkla/MeshRegion.md) <img height="300" width="300" src="https://lanl.github.io/LaGriT/assets/images/arrow4.gif">"30"
|
||
"30"](http://www.ees.lanl.gov/staff/rao/mstkla/MeshEdge.md)
|