The function
element connects
breakpoint sets (for gridded tables), independent variables, and data tables (gridded or
ungridded) to their respective output variable.
function : name description? : {text description of the function} EITHER provenanceRef? : provID OR provenance? : [provID] author+ : name, org, [email] contactInfo* : [contactInfoType, contactLocation] {text describing contact information} creationDate : date {in YYYY-MM-DD format} documentRef* : [docID,] refID modificationRef* : modID description? 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 ( griddedTableRef : gtID OR griddedTableDef : gtID, [name, units] description? {text description of table} (provenance | provenanceRef)? {as described earlier} breakpointRefs bpRef+ : bpID uncertainty? : effect (normalPDF : numSigmas) | (uniformPDF : bounds+) dataTable {gridded data table as character data} OR ungriddedTableRef : utID OR ungriddedTableDef : utID, [name, units] description? {text description of table} (provenance | provenanceRef)? {as described earlier} uncertainty? : effect (normalPDF : numSigmas) | (uniformPDF : bounds+) dataPoint+ {coordinate/value sets as character data} ) )
function
attributes:
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
. Alternatively, a
provenanceRef
reference can be made to a previously defined provenance.
independentVarPts
If the author chooses, she can express a linearly interpolated functions by
specifying the independent (breakpoint) value sets as one or more
independentVarPts
which are comma- or white space-separated,
monotonically increasing floating-point coordinate values corresponding to the
dependentVarPts
. 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
set
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 to use a linear spline interpolation between points. The
performance of interpolation of various orders is left up to the processing
application. See Section 6.3.
dependentVarPts
This element goes along with the previous element to specify a function table.
Only one dependentVarPts
may be specified. If the function is
multi-dimensional, the convention is the last breakpoint dimension changes most
rapidly in this comma- or white space-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 refers to separately defined variableDef
s. The order of
specification is important and must match the order in which breakpoint sets are
specified or the order of coordinates in ungridded table coordinate/value sets.
An optional interpolate
attribute specifies the preference for
using discrete, linear, quadratic, or cubic splines for calculating dependent values
when the independent arguments are in between specified values. When not specified,
the default expectation would be a linear spline interpolation between points. The
performance of interpolation of various orders is left up to the implementer. See
Section 6.3.
dependentVarRef
A single 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.
ungriddedTableRef
If not using a simple function table, the author may use this element to point
to separately specified ungriddedTableDef
element.
Example 11.
An excerpt giving the example of a function which refers to a previously defined
griddedTableDef
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 previously defined by
the CLBFL0_table
griddedTableDef
(see the griddedTableDef example above).
<!-- ============================== --> <!-- 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>
The independent variables must be given in the order of least-rapidly changing to
most-rapidly changing values in the previously defined function table. The
processing application needs to pay attention to the | |
The dependent variable (identified as | |
This is a reference to the previously declared
|
Example 12. A function
with an internal table
In this example, the
function CLRUD0
returns, in the variable CLRUD0
,
the value of function CLRUD0_fn
represented by gridded
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 30.0 and 0.3 to 4.0,
respectively.
<!-- ================ --> <!-- Rudder functions --> <!-- ================ --> <!-- The rudder functions are only used once, so their table definitions are internal to the function definition. --> <function name="CLRUD0_fn"> <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]"/> <creationDate date="2003-01-31"/> <documentRef docID="REF01"/> </provenance> <independentVarRef varID="abs_rud" min="0.0" max="30." extrapolate="neither"/> <independentVarRef varID="XMACH" min="0.3" max="4.0" extrapolate="neither"/> <dependentVarRef varID="CLRUD0"/> <functionDefn name="CLRUD0_fn_defn"> <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 | |
The | |
The | |
This example has an embedded gridded table. |
Example 13. A simple 1D function
At the other end of the spectrum, a simple 1D nonlinear function can be defined with no reuse, as shown below; however,
multiple-dimension functions are supported by adding additional
independentVarPts
definitions.
<function name="CL"> <independentVarPts varID="alpdeg"> -4.0, 0., 4.0, 8.0, 12.0, 16.0 </independentVarPts> <dependentVarPts varID="cl"> 0.0, 0.2, 0.4, 0.8, 1.0, 1.2 </dependentVarPts> </function>
2011-07-12