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

391 lines
16 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%20EDGE:) <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/MeshFace.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/MeshVertex.md)</p>
<hr />
<hr />
<p>   <strong>MESH EDGES:</strong></p>
<hr />
<p>Since LaGriT does not really store mesh edges, the mesh edge data</p>
<p>structure (<em>MeshEdge</em>, <em>PMeshEdge</em>) is created on the fly whenever edge</p>
<p>information is requested. Therefore after utilizing the edge(s) get</p>
<p>information, it (they) should be destroyed by calling ME_Delete</p>
<p>operator.</p>
<hr />
<p><em>int</em> <strong>ME_Number</strong>(<em>PMeshObj</em> mesh, <em>PMeshEdge</em> e);</p>
<p>*</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) edges of the mesh.</li>
</ul>
<hr />
<p><em>void</em> <strong>ME_Delete</strong>(<em>PMeshEdge</em> e);</p>
<p>Free the data structure associated with this edge 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>ME_Delete will not remove any connections in the mesh. It just destroys
the</p>
<p>temporary data structure used to store the edge info</p>
<hr />
<p><em>int</em> <strong>ME_IsParent</strong>(<em>PMeshObj</em> mesh, <em>PMeshEdge</em> pe);</p>
<p>If both vertices of the edge are parents, the edge is a parent.</p>
<hr />
<p><em>PMeshEdge</em> <strong>ME_Parent</strong>(<em>PMeshObj</em> mesh, <em>PMeshEdge</em> pe);</p>
<p>The parents of each vertex of the edge are obtained and a new parent</p>
<p>edge is constructed from them.</p>
<hr />
<p><em>void</em> <strong>ME_Children</strong>(<em>PMeshObj</em> mesh, <em>PMeshEdge</em> pe, <em>int</em>
<em>nec,
*PMeshEdge</em>
*
*ec);</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>MEs_areSame</strong>(<em>PMeshEdge</em> e1, <em>PMeshEdge</em> e2);</p>
<p>Compare the data in two MeshEdge 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>PMeshEdge</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>ME_GMentity</strong>(<em>PMeshObj</em> mesh, <em>PMeshEdge</em> e);</p>
<p>Return the geometric model entity the edge is on. In the absence of
explicit</p>
<p>edge representation in the database, this may be problematic in a few
cases</p>
<p>cases where multiple classifications are possible.</p>
<hr />
<p><em>GType</em> <strong>ME_GMtype</strong>(<em>PMeshObj</em> mesh, <em>PMeshEdge</em> e);</p>
<p>Return the type of geometric model entity the edge is on. This (I</p>
<p>think) is more deterministically found from the classifications of its</p>
<p>vertices but still there may be some incorrect cases. The way around</p>
<p>is complicated and will not be implemented for now.</p>
<hr />
<p><em>PMeshVert</em> <strong>ME_Vertex</strong>(<em>PMeshObj</em> mesh, <em>PMeshEdge</em> e, <em>int</em> i);</p>
<p>Return the ith vertex of the mesh edge. i can only be 0 or 1.</p>
<p>Parent edges return parent vertices and child edges return child
vertices.</p>
<p>If a vertex is not on an interface the vertex itself is returned.</p>
<hr />
<p><img height="300" width="300" src="https://lanl.github.io/LaGriT/assets/images/new1.gif" />“31” “12”<em>PMeshVert</em>
<strong>ME_OtherVertex</strong>(<em>PMeshObj</em> mesh, <em>PMeshEdge</em> e, <em>PMeshVert</em> v);</p>
<p>Return the other vertex of the mesh edge (obviously the one that is not
v).</p>
<hr />
<p><em>void</em> <strong>ME_Faces</strong>(<em>PMeshObj</em> mesh, <em>PMeshEdge</em> e, <em>int</em>
<em>nef,
*PMeshFace</em>
*
*efaces);</p>
<p>Get the “faces” of an “edge”. The faces data structures are also</p>
<p>constructed on the fly since they do not exist in the LaGriT</p>
<p>database. Also, as with other upward connectivity queries, this can</p>
<p>execute usefully only if the routine MESH_BldUpAdj is called</p>
<p>beforehand. Also, see note on freeing the <em>PMeshFace</em> structures listed</p>
<p>under MV_Edges and MV_Faces.</p>
<p>The behavior of this operator for parent and child edges is similar to</p>
<p>MV_Edges.</p>
<hr />
<p><em>void</em> <strong>ME_Regions</strong>(<em>PMeshObj</em> mesh, <em>PMeshEdge</em> e, <em>int</em>
<em>ner,
*PMeshRegn</em>
*
*eregions);</p>
<p>Get the regions connected to an edge. MESH_BldUpAdj must be called
before this operator can be called usefully.</p>
<p>The behavior of this operator for child and parent edges is similar to</p>
<p>that of MV_Regions.</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. Also, this</p>
<p>routine will work regardless of whether there is a complete cycle of</p>
<p>regions around the edge and whether the edge is an arbitrary type of</p>
<p>non-manifold edge!!</p>
<hr />
<p><em>int</em> <strong>ME_EntOnBdry</strong>(<em>PMeshObj</em> mesh, <em>PMeshEdge</em> pe, <em>PMeshVert</em>e
pv);</p>
<p>Check if vertex is on the boundary of edge. In other words, is this</p>
<p>vertex one of the edges vertices.</p>
<p> </p>
<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%20EDGE:) <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/MeshFace.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/MeshVertex.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>