Files
LaGriT/docs/_site/pages/mstkla/MeshFace.html
2025-12-17 11:00:57 +08:00

462 lines
18 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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>