The function
element connects
breakpoint sets (for gridded tables), independent variables, and data tables to their
respective output variable.
function* : name description? : provenance? : author : name, org, [email] address? (address character data) functionCreationDate : extraDocRef* : docID modificationRef* : modID EITHER { independentVarPts+ : varID, [name, units, sign, extrapolate, interpolate] (input values as character data) dependentVarPts : varID, [name, units, sign] (output values as character data) } OR { independentVarRef+ : varID, [min, max, extrapolate, interpolate] dependentVarRef : varID functionDefn : [name] CHOICE OF { CHOICE OF { griddedTableRef : gtID OR griddedTableDef : [name] breakpointRefs bpRef+ : bpID confidenceBound? : value dataTable (gridded data table as character data) } } OR { CHOICE OF { ungriddedTableRef : utID OR ungriddedTableDef : [name] confidenceBound? : value dataPoint+ (coordinate/value sets as character data) } } }
function
attributes:
name
A UNICODE name for the function.
function
sub-elements:
description
The optional description element allows the
author to describe the data contained within this
function
.
provenance
The optional provenance element allows the
author to describe the source and history of the data within this
function
.
independentVarPts
If the author chooses, [he|she] can express a linearly-interpolated functions by
specifying the independent (breakpoint) values sets as one or more
independentVarPts
which are comma-separated, monotonically
increasing floating-point coordinate values corresponding to the
dependentVarPts
given next. In the case of multiple dimensions,
more than one independentVarPts
must be specified, one for each
dimension. The mandatory varID
attribute is used to connect
each independentVarPts
with an input variable.
An optional 'interpolate' attribute specifies the preference for using linear, quadratic, or cubic relaxed splines for calculating dependent values when the independent arguments are in between specified values. When not specified, the expectation would be a linear spline interpolation between points. The performance of interpolation of various orders is left up to the processing application. More information on relaxed spline interpolation may be found in [wiki01].
dependentVarPts
This element goes along with the previous element to specify a function
table. Only one dependentVarPts
may be specified. If the
function is multidimensional, the convention is the last breakpoint dimension
changes most rapidly in this comma-separated list of floating-point output
values. The mandatory varID
attribute is used to connect this
table's output to an output variable.
independentVarRef
One or more of these elements refer to separately-defined variableDef
s. For multidimensional
tables, the order of specification is important and must match the order in which
breakpoints are specified or the order of coordinates in ungridded table
coordinate/value sets.
An optional 'interpolate' attribute specifies the preference for using linear, quadratic, or cubic relaxed splines for calculating dependent values when the independent arguments are in between specified values. When not specified, the expectation would be a linear spline interpolation between points. The performance of interpolation of various orders is left up to the processing application. More information on relaxed spline interpolation may be found in [wiki01].
dependentVarRef
One dependentVarRef
must be specified to connect the output of
this function to a particular variableDef
.
functionDefn
This element identifies either a separately-specified data table definition or specifies a private table, either gridded or ungridded.
griddedTableRef
If not defining a simple function table, the author may use this element to
point to a separately-specified griddedTableDef
element.
griddedTable
As an alternative to reutilization of a previously defined table, this element may
be used to define a private output gridded table. See the writeup on griddedTableDef
for
more information. [Deprecated: use of this element is discouraged and will not be
supported in future DAVE-ML versions. Use a griddedTableDef
instead.]
ungriddedTableRef
If not using a simple function table, the author may use this element to point
to separately-specified ungriddedTableDef
element.
ungriddedTable
As an alternative to reuse of a previously defined table, this element may be used
to define a private output ungridded table. See the writeup on ungriddedTableDef
for more information. [Deprecated: use of this element is discouraged and will
not be supported in future DAVE-ML versions. Use an griddedTableDef
instead.]
Example 11. An example of a function which refers to a previously defined griddedTableDef
<!-- ============================== --> <!-- Lower left body flap functions --> <!-- ============================== --> <function name="CLBFLL0"> <description> Lower left body flap lookup function for lift, polynomial constant term. </description> <independentVarRef varID="DBFLL" min="0.0" max="60." extrapolate="neither"/> <independentVarRef varID="XMACH" min="0.3" max="4.0" extrapolate="neither"/> <dependentVarRef varID="CLBFLL0"/> <functionDefn name="CLBFL0_fn"> <griddedTableRef gtID="CLBFL0_table"/> </functionDefn> </function>
This example ties the input variables DBFLL
and
XMACH
into output variable CLBFLLO
through a
function called CLBFLO_fn
, which is represented by the linear
interpolation of the gridded table defined by the CLBFL0_table
griddedTableDef
(see example
7 above).
Example 12. A function
that has an internal table
<!-- ================ --> <!-- Rudder functions --> <!-- ================ --> <!-- The rudder functions are only used once, so their table definitions are internal to the function definition. --> <function name="CLRUD0"> <description> Rudder contribution to lift coefficient, polynomial multiplier for constant term. </description> <provenance> <author name="Bruce Jackson" org="NASA Langley Research Center" email="[email protected]"/> <functionCreationDate date="2003-01-31"/> <documentRef docID="REF01"/> </provenance> <independentVarRef varID="abs_rud" min="0.0" max="15." extrapolate="neither"/> <independentVarRef varID="XMACH" min="0.3" max="4.0" extrapolate="neither"/> <dependentVarRef varID="CLRUD0"/> <functionDefn name="CLRUD0_fn"> <griddedTableDef name="CLRUD0_table"> <breakpointRefs> <bpRef bpID="DRUD_PTS"/> <bpRef bpID="XMACH1_PTS"/> </breakpointRefs> <dataTable> <!-- last breakpoint changes most rapidly --> <!-- CLRUD0 POINTS --> <!-- RUD = 0.0 --> 0.00000E+00 , 0.00000E+00 , 0.00000E+00 , 0.00000E+00 , 0.00000E+00 , 0.00000E+00 , 0.00000E+00 , 0.00000E+00 , 0.00000E+00 , 0.00000E+00 , 0.00000E+00 , 0.00000E+00 , 0.00000E+00 , <!-- RUD = 15.0 --> -0.13646E-01 , 0.26486E-01 , 0.16977E-01 ,-0.16891E-01 , 0.10682E-01 , 0.75071E-02 , 0.53891E-02 ,-0.30802E-02 ,-0.59013E-02 ,-0.95733E-02 , 0.00000E+00 , 0.00000E+00 , 0.00000E+00 , <!-- RUD = 30.0 --> -0.12709E-02 , 0.52971E-01 , 0.33953E-01 ,-0.33782E-01 , 0.21364E-01 , 0.15014E-01 , 0.10778E-01 ,-0.61604E-02 ,-0.11803E-01 ,-0.19147E-01 , 0.00000E+00 , 0.00000E+00 , 0.00000E+00 </dataTable> </griddedTable> </functionDefn> </function>
This comment helps humans understand the reason for an embedded table. | |
The | |
This example has an embedded gridded table. |
In this example, the function CLRUD0
returns, in the variable
CLRUD0
, the value of function CLRUD0_fn
represented by gridded table CLRUD0_table
. The inputs to the function
are abs_rud
and XMACH
which are used to normalize
breakpoint sets DRUD_PTS
and XMACH1_PTS
respectively. The input variables are limited between 0.0 to 15.0 and 0.3 to 4.0,
respectively.
Example 13. A simple one-dimensional function