#define SAF_ALGTYPE_SCALAR saf_find_algebraic_scalar() /* Used to specify fields that obey properties of scalar
* algebra. */
#define SAF_ALGTYPE_VECTOR saf_find_algebraic_vector() /* Used, generically, for fields that obey properties of vector
* algebra. */
#define SAF_ALGTYPE_COMPONENT saf_find_algebraic_component() /* Used, generically, for any component of a multi-component
* field. In many cases, it might be just as well to treat
* each component of a multi-component field as a scalar field.
* However, this is not entirely mathematically correct. */
#define SAF_ALGTYPE_TENSOR saf_find_algebraic_tensor() /* Used for general, non-symmetric tensor fields */
#define SAF_ALGTYPE_SYMTENSOR saf_find_algebraic_symmetric_tensor() /* Used for general, symmetric tensor fields. */
#define SAF_ALGTYPE_TUPLE saf_find_algebraic_tuple() /* Used to identify a field which evaluates to a /group/ of
* otherwise unrelated fields. Typically used in a /State/
* field. */
#define SAF_ALGTYPE_FIELD saf_find_algebraic_field() /* This algebraic type is used for fields that are, in reality,
* simply /references/ to other fields. These are called
* /field/indirections/ or, /indirect/fields. Indirect fields are
* used, primarily for two kinds of fields; /inhomogeneous/ fields
* and /cross-product/ fields. An inhomogeneous field is
* represented as references to pieces of the field over subsets
* of its base-space over which each piece *is* homogenous.
* Likewise, a cross-product field is used to work around the
* fact that SAF does NOT deal with cross product sets in the
* base-spaces of fields. Thus, we represent such fields as
* references to fields over other base spaces. */
#define SAF_ALGTYPE_ANY NULL /* Wildcard for find operations. */