<html><head><style type='text/css'>p { margin: 0; }</style></head><body><div style='font-family: times new roman,new york,times,serif; font-size: 12pt; color: #000000'>Hello Carlos,<br><br>I assume you have already seen this:<br>http://trac.mcs.anl.gov/projects/ITAPS/wiki/MOAB/h5m<br>Also, if you can compile visit (and have  about 3 hours to spare :)), you would be able to see the h5m file directly. You can follow these instructions:<br>http://trac.mcs.anl.gov/projects/ITAPS/wiki/VisIt<br>Please see below,<br><br><hr id="zwchr"><blockquote style="border-left:2px solid #1010FF;margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><div dir="ltr"><div><div><div id="DWT1380"><div>Hello,<br><br></div>I've recently began tweaking with MOAB for my PhD research and hit a snag regarding heterogeneous mesh. I mean, a tri + quad mesh in 2D, for instance, or an tetra+prism mesh in 3D.<br>
<br>I used the <b>ReadTemplate.cpp</b> source in <b>src/io </b>as a base to feed my mesh data (CGNS format) to MOAB. After registering the nodes, connectivities and creating the sets (based on the ranges for each element type) I write them to an h5m file, using:<br>
<br><b>mbImpl->write_file(filename.c_str(), "H5M", "PARALLEL=NONE");</b><br><br></div></div></div></div></blockquote>If you read/write in serial, you do not need to use <b>"PARALLEL=NONE"</b><blockquote style="border-left:2px solid #1010FF;margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><div dir="ltr"><div><div id="DWT1381"><div></div>It all goes well, the file is written and seems ok (checking the file through <b>hdfview</b> seems allright). When I have homogeneous meshes (all tri, quad, tetra, hex) it is all fine, my code reads the h5m file and process it normally. The <b>h5mvalidade</b> tool reports no problems.<br></div></div></div></blockquote>I do not use h5mvalidate. <br><blockquote style="border-left:2px solid #1010FF;margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><div dir="ltr"><div id="DWT1382"><div>
</div><br>However, with mixed meshes, regardless of element types or dimesion, <b>h5mvalidade</b> always reports at least 1 set with invalid content IDs. </div></div></blockquote>It could be a problem in h5mvalidate<br><blockquote style="border-left:2px solid #1010FF;margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><div dir="ltr"><div id="DWT1383">My code also breaks down when trying to read such files (<b>Leaked HDF5 object handle in function at ReadHDF5.cpp</b>).<br>
<br></div></div></blockquote>This is a real problem. I cannot say much more unless I see the file (or the whole content of h5dump )<br><blockquote style="border-left:2px solid #1010FF;margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><div dir="ltr"><div></div><div>The problem seems to be related to the way I write the sets. Here is a sample for an all tri mesh (with edge elements for boundary conditions), with 6944 tris, 50 edges (farfield BC) and 116 edges (wall BC), the mesh has 3555 nodes:<br>
<br></div><div id="DWT1384"><b>tstt/sets/list</b><br>1 -1 -1 10<br>3 -1 -1 10<br>5 -1 -1 10<br><br><b>tstt/sets/contents</b><br>3722<br>6944<br>3556<br>50<br>3606<br>116<br><br></div></div></blockquote>According to this:<br>http://trac.mcs.anl.gov/projects/ITAPS/wiki/MOAB/h5m<br>your first set contains 6944 objects, that start at file id (object) 3722. The second set starts at 3556, and has 50 objects. The third set starts at 3606, and has 116 objects. So far, it seems to agree with what you said are the contents.<br><blockquote style="border-left:2px solid #1010FF;margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><div dir="ltr"><div></div><div>I have no problem with this mesh. I can use <b>mbconvert</b> and see the mesh in paraview.<br>
<br></div><div>The mixed mesh (tri+quad), for the same geometry (NACA0012 airfoil) looks like this:<br><br><b>tstt/sets/list</b><br>1 -1 -1 10<br>3 -1 -1 10<br>5 -1 -1 10<br>7 -1 -1 10<br><br><b>tstt/sets/contents</b><br>
3722<br>6910<br>10632<br>17<br>3556<br>50<br>3606<br>116<br><br></div><div>Mesh has 3555 nodes, 6910 tris and 17 quads.<br></div><div id="DWT1386"><br></div></div></blockquote>maybe it is a problem with h5mvalidate. I can't tell more unless I have 
the h5m file :(. Is it too big to attach? Or can you put it somewhere I 
can get to it? It should not be too big. Unless you have some data in 
it, it should be less than 1Mb;  <br>3722+6910 = 10632 so objects with the file id [3722-10631] are in set 0 (triangles, according to you)<br>10632+17= 10649, so [10632-10648] are in set 1 (quads?)<br>[3556: 3556+50-1] are in set 2 (edges?)<br>[3606 - 3606+116-1] are in set 3 (edges?)<br><blockquote style="border-left:2px solid #1010FF;margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><div dir="ltr"><div></div><div><b>h5mvalidade</b> output:<br></div><div><br><b>Set 0 (ID 10649) has invalid content IDs.<br>
Set 1 (ID 10650) has invalid content IDs.<br>2 sets had invalid IDs in their content lists.</b><br><br></div><div id="DWT1385">I tried reordering the way elements and sets are written to no success. In <b>src/io/mhdf/example/validade.c</b> (for the <b>h5mvalidade</b> tool), it seemed to me that the sequence of the ranges determine whether the sets are ok or not (<b>ranges_contained</b> function).<br>
<br>Interestingly enough, another mesh with mixed (tri+quad) works, with a larger quantity of quads than tris, 69 tris, 349 quads (22, 24, 20 and 20 are edge elements for BCs):<br></div></div></blockquote><br><blockquote style="border-left:2px solid #1010FF;margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><div dir="ltr"><div><br><b>tstt/sets/list</b><br>1 -1 -1 10<br>
3 -1 -1 10<br>5 -1 -1 10<br>7 -1 -1 10<br>9 -1 -1 10<br>11 -1 -1 10<br><br><b>tstt/sets/contents</b><br>513<br>69<br>582<br>349<br>428<br>22<br>450<br>23<br>473<br>20<br>493<br>20<br><br></div><div><b>h5mvalidate</b> has no problem with this mesh (<b>ranges_contained</b> loop break condition is met for this specific ratio of quad and tris , count -= avail). But it does not seem to me that is right after all. However, my code reads the mesh with no problems and I can even convert and visualize it, and it is all right!<br>
<br></div><div>I have not found an h5m example with mixed elements (with the same topology dimension). There are hex+quads, tetra+tris, but no tetra+prism or tri+quad for example.<br><br></div><div>I read the mesh  in my code using:<br>
<b>mbImpl->load_file(meshFile.c_str(), &rootset, read_options.c_str());</b><br><br></div><div>Moreover, I am using <b>MOAB version 4.6.2</b>.<br></div><div><br></div><div>If anyone have already figured this out or can tell what I am doing wrong I will appreciate.<br>
<br></div><div>Thanks!<br>Carlos Breviglieri<br></div></div>
</blockquote><br>If you can read the file, you can also use mbsize -ll <file> to dump the contents. it will be more "friendly" in terms of set contents.<br><br>Hope this helps,<br>Iulian<br></div></body></html>