Files
LaGriT/docs/_site/pages/mstkla/MeshFace.html

462 lines
18 KiB
HTML
Raw Normal View History

2025-12-17 11:00:57 +08:00
<html lang="en-gb" dir="ltr">
<head>
<title>LaGriT</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="LaGriT : LaGriT is a library providing mesh generation and optimization for a variety of polyhedra and dimensions.">
<link href="https://fonts.googleapis.com/css?family=Do+Hyeon|Fira+Sans" rel="stylesheet">
<link rel="preload" href="https://getuikit.com/fonts/ProximaNova-Reg-webfont.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="preload" href="https://getuikit.com/fonts/ProximaNova-Light-webfont.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="stylesheet" href="/assets/css/uikit_theme.css">
<link rel="icon" type="image/x-icon" href="https://www.lanl.gov/favicon.ico">
<link rel="stylesheet" type="text/css" href="/assets/css/footer.css">
<!-- load stylesheets -->
<script type="text/javascript" async="" src="https://www.google-analytics.com/analytics.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js" defer=""></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/he/1.2.0/he.min.js" defer=""></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/marked/0.6.2/marked.min.js" defer=""></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.min.js" defer=""></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue-router/3.0.2/vue-router.min.js" defer=""></script>
<script src="https://getuikit.com/assets/uikit/dist/js/uikit.min.js?1180" defer=""></script>
<script src="https://getuikit.com/assets/uikit/dist/js/uikit-icons.min.js?1180" defer=""></script>
<script src="https://getuikit.com/assets/highlightjs/highlight.min.js" defer=""></script>
<script src="https://getuikit.com/app/main.min.js?1180" defer=""></script>
<script src="https://www.googletagmanager.com/gtag/js?id=UA-42150424-1" async=""></script>
<!-- tipuesearch files -->
<link rel="stylesheet" href="/assets/tipuesearch/css/normalize.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="/assets/tipuesearch/tipuesearch_content.js"></script>
<link rel="stylesheet" href="/assets/tipuesearch/css/tipuesearch.css">
<script src="/assets/tipuesearch/tipuesearch_set.js"></script>
<script src="/assets/tipuesearch/tipuesearch.min.js"></script>
<!-- Finally, load global style to overwrite template, tipuesearch, etc. -->
<!--<link rel="stylesheet" href="/assets/globalstyle.css">-->
</head>
<body>
<div>
<!-- Header -->
<div uk-sticky="media: 960" class="uk-navbar-container tm-navbar-container uk-sticky uk-sticky-fixed" style="position: fixed; top: 0px; width: 100%; color: #212328;">
<div class="uk-container uk-container-expand">
<nav class="uk-navbar">
<div class="uk-navbar-left">
<a href="/" class="uk-navbar-item uk-logo" style="font-family: 'Do Hyeon', sans-serif; color: white;">
<img uk-img src="/assets/img/logo.png" width="50" class="uk-margin-small-right" alt="LANL logo">
LaGriT
</a>
</div>
<div class="uk-navbar-right">
<ul class="uk-navbar-nav uk-visible@m">
<li><a href="/pages/commands">Commands</a></li>
<li><a href="/pages/tutorial/index">Tutorials</a></li>
<li><a href="/pages/release">Release Notes</a></li>
<li><a href="/pages/publications">Publications</a></li>
<li><a href="http://github.com/lanl/LaGriT"><span uk-icon="github"></span></a></li>
<!-- Begin search bar -->
<div class="nav-overlay uk-navbar-right">
<a class="uk-navbar-toggle" uk-search-icon uk-toggle="target: .nav-overlay; animation: uk-animation-fade" href="#"></a>
</div>
<div class="nav-overlay uk-navbar-left uk-flex-1" hidden>
<div class="uk-navbar-item uk-width-expand">
<form class="uk-search uk-search-navbar uk-width-1-1" action="https://lanl.github.io/LaGriT/search/">
<input class="uk-search-input" name="q" type="search" id="tipue_search_input" placeholder="Search..." autofocus>
</form>
</div>
<a class="uk-navbar-toggle" uk-close uk-toggle="target: .nav-overlay; animation: uk-animation-fade" href="#"></a>
</div>
<script>
$(document).ready(function() {
$('#tipue_search_input').tipuesearch({
'show': 10,
'newWindow' : true,
'showURL' : true,
'showTitleCount' : true,
'descriptiveWords' : 20,
'highlightTerms' : true,
'mode': 'static',
});
});
</script>
<!-- End search bar -->
</ul>
<a uk-navbar-toggle-icon="" href="#offcanvas" uk-toggle="" class="uk-navbar-toggle uk-hidden@m uk-icon uk-navbar-toggle-icon">
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" data-svg="navbar-toggle-icon">
<rect y="9" width="20" height="2"></rect>
<rect y="3" width="20" height="2"></rect>
<rect y="15" width="20" height="2"></rect>
</svg>
</a>
</div>
</nav>
</div>
</div>
<div class="uk-sticky-placeholder" style="height: 80px; margin: 0px;"></div>
<!-- End Header -->
<!-- Main Body text -->
<div class="tm-main uk-section uk-section-default">
<div class="uk-container uk-container-small uk-position-relative">
<p><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)</p>
<hr />
<hr />
<p>    <strong>MESH FACES:</strong></p>
<hr />
<p>Since LaGriT does not really store mesh faces, the mesh face data</p>
<p>structure (MeshFace, <em>PMeshFace</em>) is created on the fly whenever face</p>
<p>information is requested. Therefore after utilizing the face(s) get</p>
<p>information, it (they) should be destroyed by calling MF_Delete</p>
<p>operator.</p>
<hr />
<p><em>int</em> <strong>MF_Number</strong>(<em>PMeshObj</em> mesh, <em>PMeshFace</em> f);</p>
<p><img height="300" width="300" src="https://lanl.github.io/LaGriT/assets/images/note1.gif" />“31” “32”
*</p>
<ul>
<li>This will return 0
for now since I havent yet decided on a good</li>
</ul>
<p>*</p>
<ul>
<li>way to assign a unique number to the (virtual) faces of the mesh.</li>
</ul>
<hr />
<p><em>void</em> <strong>MF_Delete</strong>(<em>PMeshFace</em> f);</p>
<p>Free the data structure associated with this face created on the fly.</p>
<p>(There is an operator for creation but I cannot yet imagine needing to</p>
<p>make that a publicly available operator).</p>
<p><img height="300" width="300" src="https://lanl.github.io/LaGriT/assets/images/bullet12.gif" />“27” “31”
*</p>
<ul>
<li>IMPORTANT
*
*</li>
</ul>
<p>MF_Delete will not remove any connections in the mesh. It just</p>
<p>destroys the temporary data structure used to store the face info</p>
<hr />
<p><em>int</em> <strong>MF_IsParent</strong>(<em>PMeshObj</em> mesh, <em>PMeshFace</em> pf);</p>
<p>If all vertices of the face are parents, the face is a parent.</p>
<hr />
<p><em>PMeshFace</em> <strong>MF_Parent</strong>(<em>PMeshObj</em> mesh, <em>PMeshFace</em> pf);</p>
<p>The parents of all vertices of the face are obtained and a new</p>
<p>parent face is constructed from them.</p>
<hr />
<p><em>void</em> <strong>MF_Children</strong>(<em>PMeshObj</em> mesh, <em>PMeshFace</em> pf, <em>int</em>
<em>nfc,
*PMeshFace</em>
*
*fc);</p>
<p><img height="300" width="300" src="https://lanl.github.io/LaGriT/assets/images/note1.gif" />“31” “32”
*
*</p>
<ul>
<li>NOT YET
IMPLEMENTED
*
*
*</li>
</ul>
<p>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.</p>
<hr />
<p><em>int</em> <strong>MFs_areSame</strong>(<em>PMeshObj</em> mesh, <em>PMeshFace</em> f1, <em>PMeshFace</em> f2);</p>
<p>Compare the data in two MeshFace data structures and see if they</p>
<p>represent the same connection in the mesh. This operator is needed</p>
<p>since the on-the-fly <em>PMeshFace</em> pointers may not be the same and they</p>
<p>do not directly point to any persistent “object” in the database.</p>
<hr />
<p><em>PGeomEntity</em> <strong>MF_GMentity</strong>(<em>PMeshObj</em> mesh, <em>PMeshFace</em> f);</p>
<p>Return the geometric model entity the face is on. In the absence of</p>
<p>explicit face representation in the database, this may be problematic</p>
<p>in a few cases cases where multiple classifications are possible.</p>
<hr />
<p><em>GType</em> <strong>MF_GMtype</strong>(<em>PMeshObj</em> mesh, <em>PMeshFace</em> f);</p>
<p>Return the type of geometric model entity the face is on. This (I</p>
<p>think) is more deterministically found from the classifications of its</p>
<p>vertices but some problems may still occur. See Comments in ME_GMtype.</p>
<hr />
<p><em>PMeshVert</em> <strong>MF_Vertices</strong>(<em>PMeshObj</em> mesh, <em>PMeshFace</em> f, <em>int</em></p>
<p><em>nfv, *PMeshVert</em>ex
*
*fverts);</p>
<p>Return the vertices of the mesh face. The vertices are in no</p>
<p>particular order.  Parent faces return parent vertices and child faces</p>
<p>child vertices. If a vertex is not on an non-manifold boundary</p>
<p>(interface) the vertex itself is returned.</p>
<hr />
<p><em>PMeshVert</em> <strong>MF_VerticesOrd</strong>(<em>PMeshObj</em> mesh, <em>PMeshFace</em> f, <em>int</em></p>
<p><em>nfv, *PMeshVert</em>ex
*
*fverts);</p>
<p><img height="300" width="300" src="https://lanl.github.io/LaGriT/assets/images/note1.gif" />“31” “32”
*</p>
<ul>
<li>NOT YET IMPLEMENTED</li>
</ul>
<p>*
*</p>
<p>Return the vertices of the mesh face. The vertices are ordered such</p>
<p>that the smallest one is the first. Also, the sequence is such that</p>
<p>the face points out of the region connected to it or in case there are</p>
<p>two regions connected to it, such that it points out of the region</p>
<p>with the lower ID Number. The behavior of the operator for parent and</p>
<p>child faces is the same as MF_Vertices</p>
<hr />
<p><em>void</em> <strong>MF_Edges</strong>(<em>PMeshObj</em> mesh, <em>PMeshFace</em> f, <em>int</em>
<em>nef,
*PMeshFace</em>
*
*efaces);</p>
<p>Get the “edges” of an “face”. The edges data structures are</p>
<p>constructed on the fly since they do not exist in the LaGriT</p>
<p>database. See note on freeing the <em>PMeshFace</em> structures listed under</p>
<p>MV_Edges and MV_Faces. Parent faces return parent edges and child</p>
<p>faces return child edges.</p>
<hr />
<p><em>void</em> <strong>MF_Regions</strong>(<em>PMeshObj</em> mesh, <em>PMeshFace</em> f, <em>PMeshRegn</em>
fregions[2]);</p>
<p>Get the regions connected to an face. MESH_BldUpAdj must be called</p>
<p>before this operator can be called usefully. The regions will be</p>
<p>returned such that the face f as defined will point out fregions[0]</p>
<p>(if it exists) and into fregions[1] (if it exists).</p>
<p>A parent face will return both regions connected to it while a child</p>
<p>face will return a region only on its side of the interface. If a</p>
<p>“child” face constructed from interior nodes and child nodes on an</p>
<p>interface, both regions connected to it are returned.</p>
<p><img height="300" width="300" src="https://lanl.github.io/LaGriT/assets/images/bullet12.gif" />“27” “31”
*</p>
<ul>
<li>IMPORTANT
*
*</li>
</ul>
<p>Since MESH_BldUpAdj builds explicit upward adjacency information, this</p>
<p>routine does not require a seed region to be provided.</p>
<hr />
<p><em>int</em> <strong>MF_EntOnBdry</strong>(<em>PMeshObj</em> mesh, <em>PMeshFace</em> f, MType mtype,
PMeshEntity pent);</p>
<p>Check if mesh entity of type mtype is on the boundary of mesh</p>
<p>face. mtype can only be MEDGE or MVERTEX. In other words, check if</p>
<p>mesh face is made up of mesh edge or vertex in question.</p>
<p> </p>
<p> </p>
<hr />
<p>[]{#MF-Attribs<em>int</em> <strong>MF_GetAttVal</strong>(<em>PMeshObj</em> mesh, <em>PMeshFace</em> f,
*char
**attname, *int
**ival,</p>
<p>*double
**rval, *char
**cval, *void
*
**pval, *AttType
**atype);</p>
<p>Depending on the type of the attribute, the appropriate field will be</p>
<p>filled on succesful completion. Arrays are returned in pval, integer in</p>
<p>ival and real number in rval (I dont think lagrit supports character</p>
<p>attributes)</p>
<p><img height="300" width="300" src="https://lanl.github.io/LaGriT/assets/images/bullet12.gif" />“27” “31” Will only work for
surface meshes</p>
<hr />
<p><em>int</em> <strong>MR_SetAttVal</strong>(<em>PMeshObj</em> mesh, <em>PMeshFace</em> f, *char</p>
<p><em>*attname, *int</em> ival,</p>
<p><em>double</em> rval, <em>char</em> cval, *void
**pval);</p>
<p>This is similar to the GetAttVal routine - depending on the type and</p>
<p>rank, one sends in a value with the right variable</p>
<p>*
*</p>
<ul>
<li>PERHAPS these routines need an additional variable, “rank” but
for</li>
</ul>
<p>now…..</p>
<p> </p>
<p><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)</p>
</div>
</div>
<!-- Begin footer -->
<footer class="footer-distributed">
<div class="footer-right">
<div><img src="/assets/img/lanl_logo_white.png" height="80"></div>
</div>
<div class="footer-left lg-background-color">
<p class="footer-links" style="font-family: 'Fira Sans', sans-serif; color: white;">
<a href="/">Home</a>
·
<a href="/pylagrit/original/index.html">PyLaGriT</a>
·
<a href="https://int.lanl.gov/org/ddste/aldcels/ees/index.shtml">EES-16</a>
·
<a href="/pages/licensing.html">License</a>
·
<a href="https://lagrit.lanl.gov/">Contact</a>
</p>
<p>&copy; 2019 Los Alamos National Laboratory</p>
<p>EES-16 | Computational Earth Science</p>
<p>LA-CC-15-069</p>
</div>
</footer>
<!-- Begin Navigation Bar -->
<div id="offcanvas" uk-offcanvas="mode: push; overlay: true" class="uk-offcanvas">
<div class="uk-offcanvas-bar">
<div class="uk-panel">
<ul class="uk-nav uk-nav-default tm-nav">
<form class="uk-search uk-search-default" action="https://lanl.github.io/LaGriT/search/">
<a href="" uk-search-icon></a>
<input class="uk-search-input" type="search" placeholder="" name="q" id="tipue_search_input_mobile">
</form>
<li class="uk-nav-header">General</li>
<li><a href="/">Home</a></li>
<li><a href="/pages/commands">Commands</a></li>
<li><a href="/pages/release">Release Notes</a></li>
<li><a href="/pages/publications">Publications</a></li>
<li><a href="http://github.com/lanl/LaGriT">GitHub</a></li>
</ul>
</div>
</div>
</div>
<!-- End Navigation Bar -->
</div>
</body>
</html>