<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252"></head><body style="color: rgb(0, 0, 0); font-size: 14px; font-family: Calibri, sans-serif; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Hi Iulian,</div><div><br></div><div>Thank you for the rapid response and great information. &nbsp;I have a couple of follow-up questions (inline).</div><div><br></div><div><br></div><div><br></div><span id="OLK_SRC_BODY_SECTION"><div style="font-family:Calibri; font-size:11pt; text-align:left; color:black; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: #b5c4df 1pt solid; BORDER-RIGHT: medium none; PADDING-TOP: 3pt"><span style="font-weight:bold">From: </span> Iulian Grindeanu &lt;<a href="mailto:iulian@mcs.anl.gov">iulian@mcs.anl.gov</a>&gt;<br><span style="font-weight:bold">Date: </span> Sat, 11 Feb 2012 01:02:03 -0500<br><span style="font-weight:bold">To: </span> Christopher Mueller &lt;<a href="mailto:cmueller@asascience.com">cmueller@asascience.com</a>&gt;<br><span style="font-weight:bold">Cc: </span> Guy De Wardener &lt;<a href="mailto:gdewardener@asascience.com">gdewardener@asascience.com</a>&gt;, David Stuebe &lt;<a href="mailto:DStuebe@asascience.com">DStuebe@asascience.com</a>&gt;, don brittain &lt;<a href="mailto:don.brittain@instanteffects.com">don.brittain@instanteffects.com</a>&gt;, &quot;<a href="mailto:moab-dev@mcs.anl.gov">moab-dev@mcs.anl.gov</a>&quot; &lt;<a href="mailto:moab-dev@mcs.anl.gov">moab-dev@mcs.anl.gov</a>&gt;<br><span style="font-weight:bold">Subject: </span> Re: [MOAB-dev] Questions about Tags and Topology<br></div><div><br></div><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;"><div><style type="text/css">p { margin: 0; }</style><div><div style="font-family: Times New Roman; font-size: 12pt; color: #000000">Hello,<br>I will try to answer to some of those questions;<br><br><hr id="zwchr"><blockquote style="border-left:2px solid rgb(16, 16, 255);margin-left:5px;padding-left:5px;"><div>Hi Tim,</div><div><br></div><div>I've had a good deal of success this week and have been able to represent a couple of our simpler datasets in what seems to be a reasonable manner. &nbsp;I have also come up with a few questions.&nbsp;</div><div><br></div><div>Tags:</div><ul><li id="DWT3878">DataTypes – from what I can see, tags do not support a few of the numpy datatypes, namely: float32, int16, and int64. &nbsp;Is this a constraint of the PyTAPS wrapper or the underlying iMesh/MOAB infrastructure?</li></ul></blockquote>itaps has a limited data type set; see MOAB/itaps/iBase.h<br>pytaps is closely related to itaps;<br><br>some types can be &quot;manufactured&quot; out of byte type, but it is the user responsibility to interpret / convert correctly (so interpret an int16 as a 2-byte value, etc). I am not sure if something like that is possible in python/pytaps. It is for sure possible in c/c&#43;&#43;</div></div></div></blockquote></span><span id="OLK_SRC_BODY_SECTION"><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;"><div><div><div style="font-family: Times New Roman; font-size: 12pt; color: #000000"><br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><ul><li></li><li id="DWT3879">Tags-of-tags – Is this possible? &nbsp;I've tried a couple of ways but can't seem to get it to go.</li></ul></blockquote>tags can be set/get on anything that is an &quot;EntityHandle&quot; in moab. So anything that is an entity handle (node, element, mesh set) can set and get tag values, using a tag handle. <br>I am not sure I understand the question. Would you need to set a tag value on a tag handle? That is not possible.&nbsp; </div></div></div></blockquote></span><div><br></div><div>Unfortunately, it is the latter case that I was hoping for – the ability to set a tag value on a tag handle. &nbsp;For example:</div><blockquote style="margin:0 0 0 40px; border:none; padding:0px;"><div>tag1=mesh.createTag(&quot;tag1&quot;,1,bytes)</div><div>tag2=mesh.createTag(&quot;tag2,1,bytes)</div><div>tag2[tag1]=value</div></blockquote><div><br></div><span id="OLK_SRC_BODY_SECTION"><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;"><div><div><div style="font-family: Times New Roman; font-size: 12pt; color: #000000"><br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><ul><li></li></ul><div>Topology:</div><ul><li id="DWT3880">Is it possible to apply topology over entity sets? &nbsp;One way I've found for dealing with time is to have a &quot;temporal&quot; EntitySet that has child EntitySets for each timestep. &nbsp;This seems to work well, but I can't find a way of relating the various timesteps aside from the inherent indexing of the &quot;temporal&quot; EntitySet. &nbsp;I hoped that it would be possible to do something like make a line_segment that related the timestep EntitySets, but that didn't seem to work.</li></ul></blockquote>maybe you can set a tag with the time value for each of the child EntitySets. I am not sure I understand what do you mean by &quot;line_segment&quot;.<br>Also, if set1 is a child of set2, it does not mean that the set2 is a parent of set1 (and viceversa)&nbsp; see the difference between <br>add_parent_child and add_child_meshset, for example<br><br>Another thing that can help:<br>&nbsp;you add child1 to set1, then add child2 to set1<br>When you ask for children of set1, you will always get them in order child1, child2. So maybe you can use that for a natural ordering of your children ( EntitySets ).</div></div></div></blockquote></span><div><br></div><div>This is the method I'm currently using and it works well as long as the relationship is a linear one (unfortunately, this may not always be the case for us).</div><div>Do you know if it is possible to &quot;insert&quot; a child into an existing list of children? &nbsp;For example:</div><blockquote style="margin:0 0 0 40px; border:none; padding:0px;"><div>set1_children=[c1,c2,c3,c4]</div><div>set.add(c2a,index=2)</div><div>set1_children=[c1,c2,c2a,c3,c4]</div><div><br></div></blockquote><span id="OLK_SRC_BODY_SECTION"><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;"><div><div><div style="font-family: Times New Roman; font-size: 12pt; color: #000000"><br><br>Another question: Is the mesh changing in time? That is one reason you may want EntitySets changing in time. Or maybe some solution uses different mesh elements at a given time</div></div></div></blockquote></span><div><br></div><div>This is certainly a possibility, so having an entityset/time is valuable to us.</div><div><br></div><span id="OLK_SRC_BODY_SECTION"><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;"><div><div><div style="font-family: Times New Roman; font-size: 12pt; color: #000000"><br><br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><ul><li></li><li>Edges from quadrilaterals: &nbsp;After building a set of quadrilateral entities from an array of vertices, I was surprised that there were not edge entities generated as well. &nbsp;Is there a method for doing this? &nbsp;I realize I could generate the edges from the vertex array (perhaps after some reworking), but it seems to me that it might also be possible to get them from the quadrilaterals themselves.</li></ul><div id="DWT3881"><br></div></blockquote>this is the easiest question:)<br>you have to use the flag create_if_missing=true in a call like:<br>ErrorCode get_adjacencies(const EntityHandle *from_entities,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const int num_entities,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const int to_dimension,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const bool create_if_missing,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::vector&lt;EntityHandle&gt;&amp; adj_entities,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const int operation_type = Interface::INTERSECT) = 0;<br><br>from_entities are your quads, to_dimension is 1 (edges), and you will get the edges in adj_entities vector.</div></div></div></blockquote></span><div><br></div><div>This is great news! &nbsp;I tried applying the argument &quot;create_if_missing&quot; as a kwarg in a handful of the iMesh functions exposed in PyTAPS (mesh.createEntArr,&nbsp;mesh.getEntArr, mesh.getEntAdj), but I kept getting a TypeError stating that &quot;'create_if_missing' is an invalid keyword argument for this function&quot;. &nbsp;Do you know if this functionality is available from PyTAPS?</div><div><br></div><span id="OLK_SRC_BODY_SECTION"><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;"><div><div><div style="font-family: Times New Roman; font-size: 12pt; color: #000000"><br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><div></div><div><br></div><div>Thanks in advance,</div><div>Chris</div></blockquote>Hope this helps,<br>Iulian</div></div></div></blockquote></span><div><br></div><div>Thanks,</div><div>Chris</div></body></html>