jsmeredith / EAVL

Extreme-scale Analysis and Visualization Library
http://ft.ornl.gov/eavl/
Other
19 stars 10 forks source link

support partial-unstructured hybrid connectivity, like extruded 2d tri to 3d wedges #4

Open jsmeredith opened 12 years ago

jsmeredith commented 12 years ago

First, two possible real-world examples I've heard:

  1. I know some fusion (tokamak) apps have an unstructured triangular grid in each poloidal plane. (XGC1 maybe? Don't quote me on that.) Stitching these 2D planes together in the toroidal direction would create wedges in 3D.
  2. B.G. suggested CAM (the climate code) might work the same; each plane has the same unstructured connectivity. Don't know if these were tris (extrude into wedges) or quads (extrude into hexahedra).

In both cases, there are two possible savings and implementation implications:

  1. In the coordinate arrays, one of those dimensions is layered. E.g. if each XY 2D slice has 300 points and there are 20 slices in Z, you would need 6000 X and Y coordinate values, but only 20 Z values. Right now in EAVL, one might be able to use a 2D logical structure, call it ni=20 and nj=300, and assign Z to logical dim index 0. But that's not quite right, because the logical structure defines not just coordinate striding (div/mod indexing) but also an implicit connectivity which, quite simply, is not there. It wouldn't be awful, but separating the indexing from the regular connectivity would be much more correct.
  2. The connectivity is the bigger savings. So for example, if your 2D connectivity contains a triangle with the three indices (100, 107, 104), then you know that there will be a wedge with the six indices (100+i_nj, 107+i_nj, 104+i_nj, 100+(i+1)_nj, 107+(i+1)_nj, 104+(i+1)_nj). This is a space savings for the raw array, and can, if you're careful, result in space savings for reverse indexing, face and edge indexing, etc.