Ghost Zone and Face List Filter

This page describes logic in the avtGhostZoneAndFacelistFilter. This modules sole purpose is to decide the sequence of the avtFacelistFilter and the avtGhostZoneFilter in a pipeline.

We describe four concepts before describing how VisIt handles ghost data and facelists:

  1. Distinguishing types of external faces
  2. The outcome of taking a facelist filter followed by a ghost zone filter
  3. The outcome of taking a ghost zone filter followed by a facelist filter
  4. The types of input data

External faces of a domain

In a multi-domain setting, the external faces of a given domain consist of one of two types:

  1. Faces that are external to that domain, but internal to the entire data set
  2. Faces that are external to that domain, and also external to the entire data set

When finding the external faces, the goal is typically to discard faces of the first type and only display faces of the second type.

Facelist-before-ghost

  1. The external faces of a domain are found
    • Some of the faces are incident to ghost zones
  2. Ghost data is then removed.

The outcome of this is that the only type of faces remaining are "faces that are external to that domain and also external to the entire data set".

Ghost-before-facelist

  1. All ghost zones are removed
    • This leaves only real zones
  2. The facelist is calculated only on the real zones

The outcome of this is that the faces remaining are of both types: "faces that are external to that domain and also external to the entire data set" and "faces that are external to that domain, but internal to the entire data set".

Types of input data

Data sets that have ghost zones have one of two characteristics:

  1. The ghost data was generated by the simulation code and is static.
    • If some domains were removed, we no longer know which ghost data is real and which is not.
  2. The ghost data was generated by VisIt.
    • If some of the domains were removed, VisIt will generate ghost data only for the domains that are actually being used.

Ghostzone-and-facelist strategy

Goals

  1. Produce the correct picture (primary goal)
  2. Produce the minimal amount of geometry, to increase performance (secondary goal)

Strategy

Ghost data generated by simulation code

  • If all of the domains are being used, then do facelist-then-ghostzone
    • This will produce the correct picture with the minimum geometry.
  • Else if only some of the domains are being used, then do ghostzone-then-facelist
    • This will produce the correct picture (with opaque geometry) with way too much geometry.
    • Transparent rendering will be ugly.
      • If we don't do this, then there will be "holes" in the external faces corresponding to the missing domains
      • If we do, then the "holes" will be filled by the external faces of the abutting domains that are rendered.

Ghost data generated by VisIt

  • Always do facelist-then-ghostzone
    • If we are only using some of the domains, then VisIt will only generate the proper ghost data, so there will be no "holes"