NAME
FlipLat
DESCRIPTION
This module flips, in one of two different ways, the data and coordinates
of any 2-D or 3-D lattice along any combination of its axes. The same
data and coordinate types used for the input lattice will be used for the
output lattice.
In the first flipping mode ("Reverse"), the lattice can be reordered so
that increasing values of the axis index (eg, "K") will be associated with
increasing coordinate values. For example, suppose at K=1,2,3 we have
H=100,40,10. Flipping this would create a new lattice with K=1,2,3 now
referring to coordinates 10,40,100. Why is this necessary? After all,
you may have a perfectly legal right-handed coordinate system (ie,
increasing H is consistent with increasing Z). The answer is that certain
modules (notably IsosurfaceLat when coloring an isosurface by a
second lattice) get confused unless increasing K is associated with
increasing values of the K-coordinate.
The second mode ("Invert") can be used to convert a lattice which is
left-handed into one which is right-handed. An example of this (again,
using an example where the lattice is flipped along the K axis) is
atmospheric numerical models which employ a sigma vertical
coordinate. Since sigma=0 is at the "top" of the atmosphere and
sigma=1 at the bottom, Explorer (assuming a right-handed coordinate
system) would render the lattice upside-down. The K coordinates
could be multiplied by -1 to obtain a right-handed coordinate system,
but then they would decrease as K increased. You could then apply the
same reordering as in the first flipping mode and things would get
rendered properly spatially, except that all the data would apear to lie
beneath the X,Y plane. This could be remedied by adding a constant
offset to the revised K coordinates to make all the points lie above the
X,Y plane. For all intents and purposes, this is what the second flipping
mode does. The only drawback is that the final vertical coordinate
values, while positioned correctly relative to one another, will have what
appear to be strange values.
Since flipping affects the coordinates, what about proper labelling?
FlipLat provides a solution to this problem. It has the ability to flip a
lattice, but retain the values of the coordinates of another lattice on the
"Coords In" port. This is essential if the primary lattice is flipped on
any of its axes, but the result must be labelled in the Render module (eg,
using the AllAxis module). The "Coords In" port will typically be wired to
the same lattice as the "Input" port (although it may be a different one if,
for example, "Input" has a lattice with scaled coordinates and you want
to label using the unscaled coordinates). The coordinates of the
"Coords In" lattice are treated differently than those of the "Input"
lattice. The "Coords Out" port, which contains the flipped coordinates
from the "Coords In" port, must then be connected to the "Coords In"
port of AllAxis. (Naturally, the "Output" from FlipLat must also be
connected to the "Input" of AllAxis.) All these connections are required,
otherwise AllAxis would not know whether a lattice was flipped, and the
coordinate labels would be "wrong". AllAxis uses the lattice on its
"Coords In" port for labelling. If the port is empty then it defaults to
using the coordinates of the lattice on its "Input" port.
FlipLat also has the ability to flip 2-D lattices, but the catch is that, in
the case where it is "flipped" on the dimension orthogonal to the plane
of the lattice, it needs bounding values to determine where to flip. This
is further explained in the sections describing the "Key In" and
"Key Out" ports.
CAUTION: THE OUTPUTS FROM FLIPLAT SHOULD NOT BE USED IN
ANY ANALYSIS MODULES THAT DEPEND ON THE ORIGINAL
COORDINATES. IT IS RECOMMENDED THAT THEY ONLY BE USED
WITH VISUALIZATION-RELATED MODULES SUCH AS ALLAXIS,
ISOSURFACELAT, ETC. OTHER OPERATIONS SHOULD BE DONE
BEFORE THE DATA GETS TO FLIPLAT.
INPUTS
Input -- Lattice
(2..3-D).
This is the input lattice to be flipped.
Coords In -- Lattice (Opt.)
(2..3-D).
This is an optional lattice whose coordinates will be passed through
to the "Coords Out" port, but flipped along the specified axes. The
data portion of the lattice is ignored.
Key In -- Lattice (Opt.)
(3-D, 1-vector, uniform).
This is an optional lattice containing key values from the "Key Out"
port of another FlipLat module. It is used to properly position a 2-D
lattice that must be flipped the same way as another 3-D lattice. For
example, an IxJ lattice cannot be flipped on K because there are no
values to determine where to flip it. These key values give FlipLat
upper and lower bounds so the lattice could be flipped as if it was 3-D.
WIDGETS
Flip I -- Radio Box
This determines the mode in which the lattice is flipped along the I axis.
Flip J -- Radio Box
This determines the mode in which the lattice is flipped along the J axis.
Flip K -- Radio Box
This determines the mode in which the lattice is flipped along the K axis.
OUTPUTS
Output -- Lattice
This is the lattice flipped along the specified axes.
Coords Out -- Lattice
(2..3-D).
This is the lattice containing only the coordinates from the lattice
connected to the "Coords In" port, but flipped along the specified
axes. This port is designed to be connected to the "Coords In" port
of the AllAxis module for proper labelling when flipping.
Key Out -- Lattice
(3-D, 1-vector, uniform).
This is the lattice of key values based on how the "Input" lattice is
flipped. These are just upper and lower coordinate bounds from the
flipping calculations which can be utilized by other FlipLat modules to
flip a 2-D lattice the same way as a 3-D lattice.
KNOWN PROBLEMS
There are no known bugs.
SEE ALSO
AllAxis
-
Hans Vahlenkamp (Hans.Vahlenkamp@noaa.gov)
Geophysical Fluid Dynamics Laboratory / NOAA
Princeton University Forrestal Campus
http://www.gfdl.noaa.gov