The type definitions for cxData and cxCoord are given in the next few pages. Schematic Structure of the Lattice Data Type. The number of dimensions an integer. It determines the dimensionality of the array that holds data, independent of its Cartesian mapping and the number of data variables.
The nDim variable indicates the number of dimensions of the lattice. In curvilinear lattices, it indicates the number of parameter variables. The dims array specifies the number of nodes in each dimension, that is, the number of data values in each dimension. For example, if you define nDim as 3 and dims as [10,6,6] in cxData , you must also define them as 3 and [10,6,6] in cxCoord.
Data values go into the cxData type, which contains the value or values stored at each node of the lattice. Its elements include:. The Cartesian coordinate values that define the position of the lattice nodes go into the cxCoord data type.
Data types as lattices
These values map the lattice data to Cartesian space. There are three options: uniform, perimeter, and curvilinear mapping, described later in this chapter. This example depicts a 2-D lattice with seven nodes in each dimension and three data variables per node. Lattice Variables.
The lattice and coordinate data values are stored separately and in different formats. The formats used by each data and coordinate lattice type in cxLattice format are described below. Storing a Lattice. Lattice data is located at the coordinate nodes. In two dimensions, each internal node has four neighbors. A node internal to a 3-D array has six neighbors.
This regular structure is the computational space of the array. Array Neighbors. For all lattice types, the I direction corresponds to the X direction. Similarly, J corresponds to Y, and K to Z. Storing Data Values. In a color image, for example, the interleaving of RGB data looks like this:. To locate a particular node within an array, you use array indexing. For example, the node located at i,j,k is:. You can compute the number of nodes in a lattice by calling the subroutine cxDimsProd.
You can also use this function to compute the total number of data variables. The primitive data type is defined in terms of C values in the lattice data type. If you are programming in Fortran, choose the C primitive that is equivalent to the Fortran variable that your subroutine expects.
Coordinates are always stored in single-precision floating point float format. The lattice data type allows for three types of coordinate mapping to physical space: uniform, perimeter, and curvilinear. The interleaving of the coordinate storage varies from type to type. Each type is described in detail below. Most generated data is in this format. A 2-D Uniform Lattice Structure.
The coordinate values are stored in row-major format, in the C convention:. Explorer uses a bounding box to set the size and aspect ratio of lattice coordinates. Bounding boxes are dimensioned as a constant and a scalar in the cxCoord data type. That is, dims is [2, nDim ]. Explorer saves only the bounding box coordinates for a uniform lattice.
It can construct the complete lattice coordinate set from these values. For example, this is how PrintLat prints out the coordinate structure for a uniform lattice. It shows the values of nDim in this case 2 , dims , coordType , and the bounding box coordinates. A 3-D Uniform Lattice Structure. A 2-D image is an example of a uniform lattice; all the pixels in the image have the same size and aspect ratio.
You can change the aspect ratio of a lattice by manipulating the bounding box coordinates. The default mapping provides a aspect ratio. Since the bounding box for this lattice is [0, 4] by [0, 8], the lattice is mapped into a 5 by 9 grid to be displayed. However, if the bounding box coordinates were [-1, 1] by [-1, 1], the lattice would occupy a 2 by 2 space when mapped to the screen, with a pixel aspect ratio of Uniform lattices can have this non-uniform aspect. A perimeter lattice has a list of coordinate values sufficient to specify an irregularly spaced rectangular structure.
The x and y perimeter vectors contain coordinate values that specify the layout of the lattice. It contains eight nodes in the x dimension and six nodes in the y dimension. Data Set for a 2-D Perimeter Lattice. Storing Perimeter Coordinates. The dims values are the same for each of the perimeter vectors, because there are eight nodes in each dimension. Example of a 3-D Perimeter Lattice. Curvilinear lattices are used to define distorted shapes, such as flow patterns in fluid dynamics, or the surface variations of a sphere. The coordinate variable for a curvilinear lattice stores explicit coordinate values for each node in the lattice.
There is no restriction on the range of values.
You can use cxDimsProd to compute the product of the dims vector. Coordinate values for curvilinear lattices are stored interlaced at the node level in the Fortran convention, with the I dimension varying the fastest. This is the reverse of the storage methods for uniform and perimeter coordinates. Storing Curvilinear Coordinates.
Data types as lattices | SpringerLink
You can use a curvilinear lattice to depict the positions of data values in three dimensions. Here, nDim is 1, dims is the number of time-steps, and nCoordVar is 3. The 1-D uniform lattice shows the same trajectory in a plane. As the trajectory moves out of the plane, each node must be defined by three coordinates, x, y and z. But there is still only one data value at each node.
A 1-D Curvilinear Lattice. In 1-D, perimeter and curvilinear lattices are structurally the same but their data values are stored differently in memory. The two data variables are the dimensions of the spline field and the coordinates of each point are x t , y t , z t. Here, nDim is 2, dims is the number of nodes, and nCoordVar is 3. You can use 3-D curvilinear lattices to describe volumes.
When you build a module, you specify the range of lattice types the module can accept on its input port or produce on its output port. You can define in general terms the lattice constraints that encompass a large range of values for a given element, or you can be very specific. The range you choose will depend on the kind of data you want the module to handle.
The port will accept a 1-D lattice with four data variables. The primitive data type must be a float, and the lattice coordinate type must be uniform. The number of coordinate dimensions is not limited. Skip to search form Skip to main content. View PDF. Save to Library. Create Alert.
Share This Paper. Tables and Topics from this paper. Citations Publications citing this paper.
Operational domain theory and topology of sequential functional languages Weng Kin Ho. Abstract relational semantics Jules Desharnais. How the World Computes S. On the ubiquity of certain total type structures John Longley. Uniqueness of Scott ' s reflexive domain in Po 9 T. References Publications referenced by this paper. Goguen , James W. Thatcher , Eric G.
Related Data Types as Lattices
Copyright 2019 - All Right Reserved