The `variableDef` element is used to define each
constant, parameter, or variable used within or generated by the defined subsystem model. It
contains attributes including the variable name (used for documentation), an XML-unique
`varID` identifier (used for automatic code generation), the units of
measure of the variable, and optional axis system, sign convention, alias, and symbol
declarations. Optional sub-elements include a description and a mathematical description, in
MathML 2 markup, of the calculations needed to derive the variable from other variables or
function table outputs. A final optional sub-element, `isOutput`, serves to
indicate an intermediate calculation that should be brought out to the rest of the
simulation.

There must be a single `variableDef` for each and every input, output or
intermediate constant or variable within the DAVEfunc model.

variableDef+ : name, varID, units, [axisSystem, sign, alias, symbol] description? : (description character data) calculation? : math (defined in mathML2.0 DTD) : isOutput? :

`variableDef` attributes:

`name`A UNICODE name for the table (may be same as

`gtID`.`varID`An XML-legal name that is unique within the file

`units`The units-of-measure for the signal.

`axsiSystem`An optional brief indicator of the axis system (body, inertial, etc.) in which the signal is measured

`sign`An optional brief indicator of which direction is considered positive (+RWD, +UP, etc.)

`symbol`A UNICODE Greek symbol for the signal [to be superceded with more formal MathML or Tex element in a later release]

`varID`An XML-legal name that is unique within the file

`variableDef` sub-elements:

`description`An optional text description of the variable

`calculation`An optional container for the the MathML markup that describes how this variable is calculated from other variables or function table outputs. This element contains a single

`math`element which is defined in the MathML 2 markup language.`isOutput`This optional element, if present, identifies this variable needs to be passed as an output. How this is accomplished is up to the implementer. Unless specified by this element, a variable is considered an output only if it is the result of a calculation or function AND is not used elsewhere in this DAVEfunc model.

**Example 2. Two examples of variableDef elements defining input signals**

<!-- ========================== --> <!-- ========================= VARIABLE DEFINITIONS ========================= --> <!-- ========================== --> <!-- ================== --> <!-- Input variables --> <!-- ================== --> <variableDef name="Mach" varID="XMACH" units="" symbol="M"> <description> Mach number (dimensionless) </description> </variableDef> <variableDef name="dbfll" varID="DBFLL" units="deg" sign="ted" symbol="δbfll"> <description> Lower left body flap deflection, deg, +TED (so deflections are always zero or positive). </description> </variableDef>

The | |

The | |

The | |

The optional | |

The optional | |

The optional |

In this example, two input variables are defined: `XMACH` and
`DBFLL`. These two variables are inputs to a table lookup function
shown in example [FIXME] below.

**Example 4. A more complete example using a calculation element**

<!-- lower left body flap lift buildup --> <variableDef name="CLdbfll" varID="CLBFLL" units=""> <description> Lift contribution of lower left body flap deflection CLdbfll = CLdbfll_0 + alpha*(CLdbfll_1 + alpha*(CLdbfll_2 + alpha*CLdbfll_3)) </description> <calculation> <math> <apply> <plus/> <ci>CLBFLL0</ci> <apply> <times/> <ci>ALP</ci> <apply> <plus/> <ci>CLBFLL1</ci> <apply> <times/> <ci>ALP</ci> <apply> <plus/> <ci>CLBFLL2</ci> <apply> <times/> <ci>ALP</ci> <ci>CLBFLL3</ci> </apply> <!-- a*c3 --> </apply> <!-- (c2 + a*c3) --> </apply> <!-- a*(c2 + a*c3) --> </apply> <!-- (c1 + a*(c2 + a*c3)) --> </apply> <!-- a*(c1 + a*(c2 + a*c3)) --> </apply> <!-- c0 + a*(c1 + a*(c2 + a*c3)) --> </math> </calculation> </variableDef>

Here the local variable `CLBFLL` is defined as a calculated quantity,
based on several other input or local variables (not shown). Note the `description` element is used to describe
the equation, in FORTRANish human-readable text. The `calculation` element describes this same
equation in MathML 2 syntax; this portion should be used by parsing applications to
create either source code, documentation, or run-time calculation structures.

**Example 5. An output variable based on another calculation element**

<!-- ================== --> <!-- Output variables --> <!-- ================== --> <variableDef name="CL" varID="CL" units="" sign="up" symbol="CL"> <description> Coefficient of lift CL = CL0 + CLBFUL + CLBFUR + CLBFLL + CLBFLR + CLWFL + CLWFR + CLRUD + CLGE + CLLG </description> <calculation> <math> <apply> <plus/> <ci>CL0</ci> <ci>CLBFUL</ci> <ci>CLBFUR</ci> <ci>CLBFLL</ci> <ci>CLBFLR</ci> <ci>CLWFL</ci> <ci>CLWFR</ci> <ci>CLRUD</ci> <ci>CLGE</ci> <ci>CLLG</ci> </apply> </math> </calculation> <isOutput/> </variableDef>

The |

This is an example of how an output variable (`CL`) might be
defined from previously calculated local variables (in this case,
`CL0`, `CLBFL`, etc.).