1 / 11

Domain Boundaries

Domain Boundaries. 2012 Developer Documentation. Brad Whitlock. Domain Boundaries. Meshes are decomposed into multiple domains Domain Boundaries let VisIt know how domains touch so ghost data can be created on demand. Each zone in the mesh is labeled by its domain number.

totie
Download Presentation

Domain Boundaries

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Domain Boundaries 2012 Developer Documentation • Brad Whitlock

  2. Domain Boundaries • Meshes are decomposed into multiple domains • Domain Boundaries let VisIt know how domains touch so ghost data can be created on demand • Each zone in the mesh is labeled by its domain number

  3. Domain Boundaries Domain 0 Boundaries Domain 1 Boundaries Domain 2 Boundaries Domain 3 Boundaries Domain 4 Boundaries Domain 5 Boundaries

  4. Boundary Lists • Each domain has a list of boundaries where the domain touches other domains • Domains sharing a boundary will each have an entry for the boundary in their own boundary list • The boundary entries in each list must represent the same size (#cells)

  5. Boundary Information • Boundaries are represented by an 11-tuple of integers with this layout: boundary { intneighbordomain; intmi; intorientation[3]; intextents[6]; }; • Neighbordomain is the index of the neighboring domain [0,nDomains). • Mi is a pointer into another domain’s boundary list. • Orientation specifies which axes are first. (For X,Y,Z, use 1,2,3) • Extents consist of 6 values (loX, hiX, loY, hiY, loZ, hiZ) that indicate where the cells in the neighbor domain touch the current domain.

  6. Extents Boundary Boundary • Extents are a range of cells that are shared along a boundary • The extents are specified relative to the domain that contains the boundary • Extents consist of 6 numbers: loX, hiX, loY, hiY, loZ, hiZ Domain 0 Domain 0 Domain 1 Domain 1 loX,hiY loX,loY loX,hiY loX,hiY loX,loY loX,hiY loX,loY loX,loY hiX,hiY hiX,loY hiX,hiY hiX,hiY hiX,loY hiX,hiY hiX,loY hiX,loY Target zones Donor zones Target zones Donor zones Domain 0 Boundary list Domain 1 Boundary list Extents: hiX0, hiX0, loY0, hiY0, loZ0, loZ0 Extents: loX1, loX1, loY1, hiY1, loZ1, loZ1

  7. Calculating the “mi” pointer • The mi pointer is an index to where the boundary for the current domain falls in the other domain's boundary list

  8. Domain 0 Boundaries Domain 2 Boundaries Domain 5 Boundaries Domain 3 Boundaries Domain 4 Boundaries Domain 1 Boundaries idx idx idx idx idx idx domain domain domain domain domain domain mi mi mi mi mi mi orient orient orient orient orient orient extent extent extent extent extent extent 2 2 3 0 2 3 1 1 1 0 1 0 3 1 3 3 1 2 0 0 0 2 0 4 1 1 2 3 3 4 1 3 3 2 4 5 2 1 2 2 4 5 5 5 1 0 3 2 3 0 1 3 1 1 0 2 0 0 3 2 1 2 0 1 0 1 3 4 2 4 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 … … … … … … … … … … … … … … … … … … … … … … … … 4 4

  9. Building a Neighbors Table Domain 0 Boundaries Domain 1 Boundaries idx idx domain domain mi mi orient orient extent extent Combine all values into one table 0 1 3 0 2 1 1 3 4 2 5 0 2 0 2 0 0 2 1 0 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3 … … … … … … … 4 1 0 1,2,3 … 2 0 1,2,3 … 0 0 1,2,3 … 2 1 1,2,3 … 4 0 1,2,3 … 3 2 1,2,3 … … 5 2 1,2,3 … Arrays of integers intneighbors[] = { /* Domain 0 */ 1, 0, 1,2,3, HiX_0, HiX_0, lo, HiY_0, lo, lo, 2, 0, 1,2,3, lo, HiX_0, HiY_0, HiY_0, lo, lo, /* Domain 1 */ 0, 0, 1,2,3, lo, lo, lo, HiY_1, lo, lo, 2, 1, 1,2,3, lo, HiX_1, HiY_1, HiY_1, lo, lo, 4, 0, 1,2,3, HiX_1, HiX_1, lo, HiY_1, lo, lo, 3, 2, 1,2,3, HiX_1, HiX_1, HiY_1, HiY_1, lo, lo, 5, 2, 1,2,3, HiX_1, HiX_1, HiY_1, HiY_1, lo, lo, /* the rest of the domains … */ }; /* Number of boundaries for each domain. */ intnneighbors[] = {2, 5, 5, …}; …

  10. Passing Neighbor Table to VisIt • You can use a little boilerplate coding to pass the neighbor table to VisIt’savtDomainBoundaries subclass voidSetDomainBounds(avtStructuredDomainBoundaries *dbi, intndomains, int*ext, int*nneighbors, int*neighbors) { dbi->SetNumDomains(ndomains); int*tuple = neighbors; for(intj = 0; j < ndomains; j++) { dbi->SetExtents(j, &ext[j*6]); for (intk = 0; k < nneighbors[j]; k++) { // neighbors 11-tuple dbi->AddNeighbor(j, tuple[0], tuple[1], tuple + 2, tuple + 5); tuple += 11; } dbi->Finish(j); } }

  11. Interpolation Results • No interpolation • Interpolation to nodes

More Related