AST_DECOMPOSE

Decompose a Mapping into two component Mappings

Description:

This routine returns pointers to two Mappings which, when applied either in series or parallel, are equivalent to the supplied Mapping.

Since the Frame class inherits from the Mapping class, Frames can be considered as special types of Mappings and so this method can be used to decompose either CmpMaps or CmpFrames.

Invocation

CALL AST_DECOMPOSE( THIS, MAP1, MAP2, SERIES, INVERT1, INVERT2, STATUS )

Arguments

THIS = INTEGER (Given)
Pointer to the Mapping.
MAP1 = INTEGER (Returned)
A pointer to first component Mapping.
MAP2 = INTEGER (Returned)
A pointer to second component Mapping.
SERIES = LOGICAL (Returned)
Indicates if the component Mappings are applied in series or parallel. A .TRUE. value means that the supplied Mapping is equivalent to applying MAP1 followed by MAP2 in series. A zero value means that the supplied Mapping is equivalent to applying MAP1 to the lower numbered axes and MAP2 to the higher numbered axes, in parallel.
INVERT1 = INTEGER (Returned)
The value of the Invert attribute to be used with MAP1.
INVERT2 = INTEGER (Returned)
The value of the Invert attribute to be used with MAP2.

Applicability

CmpMap
If the supplied Mapping is a CmpMap, then MAP1 and MAP2 will be returned holding pointers to the component Mappings used to create the CmpMap, either in series or parallel. Note, changing the Invert attribute of either of the component Mappings using the returned pointers will have no effect on the supplied CmpMap. This is because the CmpMap remembers and uses the original settings of the Invert attributes (that is, the values of the Invert attributes when the CmpMap was first created). These are the Invert values which are returned in INVERT1 and INVERT2.
TranMap
If the supplied Mapping is a TranMap, then MAP1 and MAP2 will be returned holding pointers to the forward and inverse Mappings represented by the TranMap (zero will be returned for SERIES). Note, changing the Invert attribute of either of the component Mappings using the returned pointers will have no effect on the supplied TranMap. This is because the TranMap remembers and uses the original settings of the Invert attributes (that is, the values of the Invert attributes when the TranMap was first created). These are the Invert values which are returned in INVERT1 and INVERT2.
Mapping
For any class of Mapping other than a CmpMap, MAP1 will be returned holding a clone of the supplied Mapping pointer, and MAP2 will be returned holding AST__NULL. INVERT1 will be returned holding the current value of the Invert attribute for the supplied Mapping, and INVERT2 will be returned holding zero.
CmpFrame
If the supplied Mapping is a CmpFrame, then MAP1 and MAP2 will be returned holding pointers to the component Frames used to create the CmpFrame. The component Frames are considered to be in applied in parallel.
Frame
For any class of Frame other than a CmpFrame, MAP1 will be returned holding a clone of the supplied Frame pointer, and MAP2 will be returned holding AST__NULL.

Notes: