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:
- Distinguishing types of external faces
- The outcome of taking a facelist filter followed by a ghost zone filter
- The outcome of taking a ghost zone filter followed by a facelist filter
- 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:
- Faces that are external to that domain, but internal to the entire data set
- 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.
- The external faces of a domain are found
- Some of the faces are incident to ghost zones
- 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".
- All ghost zones are removed
- This leaves only real zones
- 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:
- 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.
- 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.
- Produce the correct picture (primary goal)
- Produce the minimal amount of geometry, to increase performance (secondary goal)
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"