Skip to content
Gijs Molenaar edited this page Feb 13, 2014 · 4 revisions

Contributed comments and suggestions

Of course you are free to edit the "official" text below the line. However, if you are not entirely sure about your point, we would prefer you to make it in this top section, together with the date and your email address. It will then be visible upfront until it is integrated in the official text by an experienced MeqTree monkey.

Summary of general node behaviour

The main function of a node is to return a Result when issued a Request. The latter contains a Domain, which usually defines a rectangle in freq-time space (other dimensions are possible too). The Domain is subdivided into a rectangular grid of Cells. The Result contains a "vellset", i.e. an array of values for the Domain cells. Most nodes do this by first passing the Request to their children, and then combining their Results (e.g. a MeqAdd node just adds them cell-by-cell). Nodes without children are called "leaf" nodes, and have other way to satisfy a Request.

Results may have multiple vellsets, and a shape (e.g. [2,2]). In this way, they may represent scalars, vectors, matrices, tensors, or any other N-dimensional mathematical construct. (Note that the name "tensor-nodes"" is a mis-nomer, since it is the Results that have the shape, not the nodes. There are some specialized nodes that perform operations on Results with specific shapes, e.g. 2x2 matrices (see below). Obviously, they will fail if the Results of any of their children have the wrong shape.

Results may also have flag-arrays, with one flag for each vellset cell. When its flag is set, the cell is ignored in all subsequent operations downstream. The various bits in a flag may be used for different flag-categories. Note that data-weights are NOT carried in Results: they must be applied via their own nodes, using regular node multiplication.

Vellsets are optimized in the sense that, if all values in a certain dimension are equal, that dimension is "collapsed" to unit length. This minimizes the size of the Results, and also the number of operations. Each node has a cache, which may hold its Result to be used by multiple parents.

Detailed Description

Clone this wiki locally