DESL


DESL Home | Website Outline | Commands | Examples | Download | Contacts

( AT) Details concerning the DESL equation command.


(See example(s) of the use of the equation command.)
[Jump to the list of available options.]
General description of the equation command :

During a typical DESL session a series of Fortran-like equations and logic can be executed on each named file's qualifying incoming SIF DATA-type records. Each record not "voided" is modified appropriately and is added to a corresponding new SIF file.

The following text explains the rules governing the syntax of the Fortran-like statements which can be included in a file referenced by either "eqfile" or "eqfilen" :

  1. Input is not restricted to having to begin in any particular column, and does NOT have to be subdivided by using blank delimiters, as is the more traditional DESL "free-field" style of input.

  2. NO blank lines are allowed within the list of statements. (First blank line will be interpreted as END of equations ! )

  3. All variables referenced and computed are considered REAL.

  4. The characters in the lines contained in the equation file are all translated to upper case in the process of being interpreted by DESL. This includes the characters which are part of SIF variable names. This is only necessary to know if the default situation of SIF variable names being automatically translated to upper case before a search is made for them as processing progresses has been CHANGED via the "namecase" DESL command to a state wherein the "namecase" status flag has been turned "on". If "namecase on" is in effect then, according to the above, the potential for character case mismatches is present.

  5. All lines of the equation file which begin with "comment" or the single item "c" (both are not case dependent) are considered comments and are ignored. There is no limit to the number of comments which can be included in an equation file.

  6. "Local" lists are constructed by inclusion in the equation file of one or more lines beginning with the word "local" "local" (case is unimportant) followed by one or more blank-delimited items indicating the variable names which are to be considered local. The "thru" option is valid. "Local" lines can appear anywhere in the equation file except as an interruption to a continued equation. An example of "local" line is the following :

    
    
    local alpha2 temp1 temp5 thru temp12
    
    
    

    where at least "temp" is implied to be a dimensioned array.

  7. Only variables NOT mentioned in a "local" list are considered SIF variables and are read and/or written to/from the SIF file(s) being processed/create
  8. All local and new SIF variable values are set to the value established by default "setval" value, 0.0, or a user-defined "setval" value. Exactly WHEN either type variable is set depends on its type :
    
    
    ****************
    Local variable values are reset to this value ONLY once per
    SIF file processed.
    SIF variable values are, however, reset to this value EACH
    time a SIF DATA-type record is read.
    ****************
    
  9. Up to 2000 local variables can be defined. (Includes all scalar variables and array elements.)

  10. Up to 2000 SIF variables can be defined. (Includes all scalar variables and array elements.)

  11. There is a limit of 500 equations which will be processed from any single equation file. Each equation can be thought of as being made up of one or more "segments"; each segment being one arithmetic operation implied by the statement content. There is a limit of 1000 segments, total, for ALL equations specified.

  12. Equations can be contained on one line or can be continued on up to 9 additional lines. A line ending with an ampersand (&) is considered incomplete and needs a following line. Up to 800 characters, including interspersed blanks, can be contained in each equation. "go to", "if/then/...", and "# continue" statements are NOT equations and CANNOT be continued.

  13. There is a limit of 100 sets of parentheses which can be contained in each equation.

  14. The following intrinsic Fortran functions are legitimate :
    abs acos aint anint asin atan cos cosh
    exp log log10 sin sinh sqrt tan tanh
    sind cosd tand asind acosd atand
    

    where the functions "sind", "cosd", "tand", "asind", "acosd", and "atand" are equivalent to their non-"d" counterparts except that these functions use arguments/produc results in degrees rather that radians.

    The following special functions are also legitimate :

    integ deriv table reg date time
    

    Use of each of these special functions is described below :

    1. integ (id, ll, ul, int, ord, crv, tol)

      Up to 50 occurrences of "integ" can exist in the ENTIRE set of equations. These up-to-50 integ uses can reference any one of up to 20 different integrals. All ARGUMENTS EXCEPT THE FIRST ARE OPTIONAL. An illegal argument type (string where value belongs, or value where string belongs) serves to NOT reset the default string or value for that argument. Definitions of the arguments are the following :

      • id : VALUE representing the integral id no. Refers to specific "integral" option/argument list which must have been specified.
      • ll : NAME/VALUE of the independent variable to serve as the LOWER limit of integration. The default lower limit is the lowest expressed or implied value of the independent variable as specified in the pertinent integral. If the specified lower limit value thus determined is out of the range of the data associated with the pertinent integral, extrapolation will occur.

      • ul : NAME/VALUE of the independent variable to serve as the UPPER limit of integration. The default upper limit is the largest expressed or implied value of the independent variable as specified in the pertinent integral. If the specified upper limit value thus determined is out of the range of the data associated with the pertinent integral, extrapolation will occur.

      • int : VALUE representing the desired number of intervals to compute an interpolated (fitted) curve for in the process of computing the integral value. The default no. of intervals is 100. The maximum no. of intervals which can be used for the evaluation of an integral is 500. In general, the more intervals, the greater the accuracy of the result, BUT, the greater the time for computation.

      • ord : VALUE indicating the curve fit order to use for the evaluation of THIS integral ONLY. The "global" order established by the "order" option is the default. (See "order" option below.)

      • crv : NAME representing the curve type to use in the fitting process to be done for the evaluation of THIS integral ONLY. Only "poly" and "lsq" are valid. The "global" curve type established by the "curve" option is the default. (See "curve" option below.)

      • tol : VALUE indicating the tolerance to use in the fitting process to be done for the evaluation of THIS integral ONLY. The "global" tol value is the default. (See "tol" option below.)

    2. deriv (id, iv, degree, ord, crv, tol)

      Up to 50 occurrences of "deriv" can exist in the ENTIRE set of equations. These up-to-50 deriv uses can reference any one of up to 20 different derivative sets. ALL ARGUMENTS EXCEPT THE FIRST ARE OPTIONAL. An illegal argument type (string where value belongs, or value where string belongs) serves to NOT reset the default string or value for that argument. Definitions of the arguments are the following :

      • id : VALUE representing the derivative id no. Refers to specific "derivative" option/argument list which must have been specified.

      • iv : NAME/VALUE of the independent variable to use to evaluate the fit/derivative in question.

      • deg : VALUE representing the desired degree of the derivative : 0, 1, 2, or 3. A 0th degree derivative is a FIT. Degrees of 1, 2, or 3 are first, second, and third derivatives, respectively.

      • ord : VALUE indicating the curve fit order to use for the evaluation of THIS derivative ONLY. The "global" order established by the "order" option is the default. (See "order" option below.)

      • crv : NAME representing the curve type to use in the fitting process to be done for the evaluation of THIS derivative ONLY. Only "poly" and "lsq" are valid. The "global" curve type established by the "curve" option is the default. (See "curve" option below.)

      • tol : VALUE indicating the tolerance to use in the fitting process to be done for the evaluation of THIS derivative ONLY. The "global" tol value is the default. (See "tol" option below.)

    3. table (tabnam, iv1, iv2, ordr1, ordr2)

      .

      (Begin modifications on 052102)

      Up to 200 occurrences of "table" can exist in the ENTIRE set of equations. These up-to-200 table uses can reference any one of up to 200 different tables.

      (End modifications on 052102)

      If a reference is made to a one-dimensional table at least two arguments MUST be specified. If a reference is made to a two-dimensional table at least three arguments MUST be specified. The "ordr1"/"ordr2" arguments are OPTIONAL. An illegal argument type (string where value belongs, or value where string belongs) serves to NOT reset the default string or value for that argument. The string "null" can be used for "ordr1" to effectively SKIP the reset from the default interpolation order. Definitions of the arguments are the following :

      • tabnam : The NAME of the table in which interpolation is to be done. The implicit dimensionality of the table, ie, how a table is defined in a table file (one or two dimensional), dictates the required/optiona number of arguments which also MUST/CAN be specified.

      • iv1 : The NAME or VALUE of the "row" independent variable. (See "tabfile" option.)

      • iv2 : If the table referenced is a two-dimensional table "iv2" is the NAME or VALUE of the "column" independent variable. (See "tabfile" option.) If the table is a one-dimensional table, then the "iv2" argument is NOT specified; ie, the third argument, if one is specified, is assumed "ordr1" if it is a value of 1 or 2.

      • ordr1 : If specified, this VALUE is the desired interpolation order for the ROW variable. Specification of this argument overrides the default interpolation order (which could have been set via the "torder" option) for THIS table reference ONLY.

      • ordr2 : If the table referenced is a two-dimensional table, "ordr2" is the VALUE of the desired interpolation order for the COLUMN variable. Specification of this argument overrides the default interpolation order (which could have been set via the"torder" option) for THIS table reference ONLY.

    4. reg (#)

      Via this function, the value currently contained in any one of 99 "value" registers (see "register" command) can be referenced.

      • # : A value from 1 to 99 representing one of the "value" register numbers.

    5. date (#)

      Via this function, the current date as the real number hhmmss, where hh is hours, mm is minutes and ss is seconds, can be set.

      • # : An offset value to be added to the current date.

    6. time (#)

      Via this function, the current time as the real number mmddyy, where mm is month, dd is day and yy is year, can be set.

      • # : An offset value to be added to the current time.

  15. The standard, default arithmetic operator symbols which can be used in equations are the following : + for addition, - for subtraction, * for multiplication, / for division, and ^ for exponentiation. These symbols, however, may be specifically changed via the "add", "subtract", "multiply", "divide", and/or "exponent" option/argument list, respectively. They can ONLY be changed to single-character symbols.

  16. Values used in equations can be specified in scientific notation.

  17. "GO TO" type statements are allowed. (Ex : go to 3) However, transfers via "go to" can ONLY occur in the FORWARD direction; ie, a "go to" CANNOT transfer control to a line before the current "go to" line in the user code.

  18. Statement numbers are not allowed except on "continue" statements used as targets of "go to" statements. (Ex : 3 continue)

  19. Any set of variables which will be treated like "array" variables must be declared in a "dimension" statement. Up to 100 local and/or SIF arrays can be dimensioned. The previously-menti limit of 2000 local and 2000 SIF variables applies to the cumulative totals of both scalar and array variables used in the equation(s). Dimensioned variables either NOT on the incoming SIF file or "local" CANNOT be referenced outside of a "do loop" or "initial" statement. The form of a variable's dimension value(s) included with the array name(s) in a dimension statement is significant :

    There are two basic methods to specify an array's dimension and thereby the form of the suffix(s) to be attached to the array's base name to give the true variable name(s). The following example of a dimension statement serves to illustrate this point :

    
    dimension w(10) x(1>10) y(01>19) z(005>123) 
    The form of the dimension for the array variable "w" implies that the local or SIF names which can be referenced are of the form "W1", "W2", ... , "W10"; ie, the suffix on the base name "W" is, in each case, the minimum number of digits needed to represent the desired variable name.

    The form of the dimension for the array variable "x" implies the same thing as did the form of the dimension on "w". In this case, however, the ability to dimension a variable from an index greater than 1 to some maximum value, is illustrated. The usefulness of such a style of dimensioning lies in the fact that, since variable names are derived from the dimensions of that variable, there may be cases when it is desired to match a sequence of SIF names which do not naturally occur in a suffix sequence beginning with 1, 01, etc.

    The form of the dimension for the array variable "y" implies that the local or SIF names which can be referenced are of the form "Y01", "Y02", ... , "Y19"; ie, the suffix on the base name "Y" is, in each case, two digits, as implied by the two-digit starting dimension value of 01; ie, the form of the FIRST dimension value, if there are two, defines the style of suffix to be generated and added to the array's base name.

    The form of the dimension for the array variable "z" implies that the local or SIF names which can be referenced are of the type "Z005", "Z006", ... , "Z123"; ie, the suffix on the base name "Z" is, in each case, three digits, as implied by the three-digit starting dimension value of 005. Note, however, in this example, dimensioning does not begin with 001; "Z001" --> "Z004" are NOT referenceable as elements of the array "Z".

    In either manner in which array variables are named, the resulting name CANNOT be more than 8 characters long. If the construction of an array "element" name attempts to force a name which is greater than 8 characters long, the "base" name of the array will be truncated to a length which can have the appropriate numeric suffix added and still be no more than 8 characters long. If name truncation occurs, it will be reported.

    "Dimension" lines can appear anywhere in the equation file except as an interruption to a continued equation.

  20. Elements of dimensioned local or SIF arrays can be initialized via the "initial" statement. Local arrays and SIF arrays are treated differently, however, regarding WHEN the specified initial values are set into the appropriate array elements. (See (6) above.) There are two forms of the "initial" state- ment. Each one assigns values to elements of a local or SIF array; an "initial" statement can contain BOTH forms. The first form allows the user to assign individual values to array elements. An example of such a form is as follows :

     initial x 1 1.02 3.94 4.05 5.55 2.443 

    Here, the array "x" will have elements 1 through 5 (because there are 5 values and the beginning element is 1) set to the values 1.02 3.94 ... 2.443, respectively.

    The second form of the "initial" statement allows the user to assign more than one element of an array to a constant value without having to explicitly specify that value more than one time. An example of such a form is as follows :

    
    initial y 1 5 at 3.9 15 at 4.1
    initial y 21 10 at 5.5 

    Here, the array "y" will have elements 1 through 5 set to 3.9, elements 6 through 20 set to 4.1, and elements 21 through 30 set to 5.5.

    "Initial" lines can appear anywhere in the equation file except as an interruption to a continued equation.

  21. DO loops are allowed. Furthermore, they are REQUIRED to operate on dimensioned local or SIF variables. Up to 100 DO loops can be contained in an equation file. Each DO loop is begun with a line of the form :
    
    do #1 to #2 by #3 

    where #1 is the beginning index value, #2 is the ending index value, and #3 is an optional index step increment value. The The item "by" is ONLY required if a step value is specified. The default step value is +1. If a negative step is specified, and appropriate beginning and ending loop indices are also specified, decrementation can be made to occur. The cases of the items "do", "to", and "by" are not significant.

    Each DO loop is ended with a line of the form :

    
    enddo 
    The case of "enddo" is not significant.

    Between the beginning and end of a DO loop, one or more equations should appear. Within equations inside a DO loop are the ONLY locations, other than in an "initial" statement, where elements of arrays can be defined. When definition or use of an array element occurs in an equation inside a DO loop, the array variable is referenced WITHOUT any type of explicitly-named subscript; the subscript is assumed to be the same as the DO loop index.

    The current DO loop index is available for use by the user. It is stored in the System Value register 11 (*V11). It is referenceable via the use of the function : "reg(11)".

    DO loops CANNOT be nested.

    DO loops can, however, be contained within IF THEN ELSE ENDIF blocks. See (22) below.

  22. SIF record "voiding" can be accomplished. The variable "void" is a special "local" variable. If, at the end of the execution of the equations, the value of "void" is other than 0.0, the SIF record being processed is not written to the corresponding new file being produced.

  23. Up to 100 IF and/or IF THEN ELSE ENDIF structures can be contained in an equation file. Examples of the two legitimate forms of constructs are as follows :

    • if( condition1 condition2 ... condition5 ) statement

    • if( condition1 condition2 ... condition5 ) then
      statement(s)
      else
      statement(s)
      endif

    These constructs are similar to those in Fortran-77 with a few important differences :

    • In the IF THEN ELSE ENDIF structure there can be NOTHING following "then", "else" or "endif". Additionally, the statement which CAN follow the "if(..)" in the IF structure CANNOT be continued.

    • Up to five (5) "conditions" can be included in the IF or IF THEN ELSE ENDIF line and all are enclosed in ONE SET of parentheses; ie, no parenthetical nesting of conditions is allowed.

    • Each condition is composed of three items : a value or name, a logical operator, and another value or name. The name item can be a "local" variable name or a SIF variable name. The logical operator must be one of the following :

      .eq. .lt. .le. .ge. .gt. .ne. 

    • Conditions must be separated by one of the following two logical conjunctions : .and. .or.

      The following are examples of legitimate "conditions" as they would appear in an IF or IF/THEN statement :

      (1) if(point.gt.4) go to 50
      (2) if(point.gt.4 .and. point.le.120) then
      (3) if (alpha.gt.0.3 .or. alphw.lt.-3.4 .and. point.lt.13) then
      

    • There can be no parentheses contained within the set of conditions. Conditions connected by .and. and .or. are evaluated separately then, with respect to the particular conjunctions present, evaluated globally from LEFT to RIGHT within the set of up to five conditions. There is a limit of 300 conditions which can be specified for ALL IF and/or IF THEN ELSE ENDIF structures in an equation file.

    IF and/or IF THEN ELSE ENDIF structures CANNOT be nested. They can, however, be contained within a DO loop.

  24. Much in the same manner as a Fortran program is compiled to produce object code - binary data which can be reused, this EQN function also "compiles" its equations into a more compact "object" form in the process of execution. Normally, the compiled form of the equations is NOT saved after execution. However, via specification of the "object" and "compile" options and their arguments, the compact, or object version of the equations, can be saved and reused, respectively. It makes sense to save the object IF (1) the equations are NOT likely to change and (2) if there are MANY equations. If an object file is to be produced, it WILL be stored by the name specified; ie, it WILL overstore any existing file by the same name, regardless of the state of the system-wide "overstore" flag.

  25. If any syntax problems are detected within the equation file processing will end and a new DESL command will be solicited. If any otherwise-fatal errors occur at execution time, such as using undefined variables, processing will end for the current file and will continue with the next file. If arithmetic operations which are otherwise-illega are attempted, such as division by 0., tangent of 90/270 degrees, log of a negative value, or raising a negative value to a negative fractional power, the result will be, instead, set to the "setval" value and a message to indicate this action has been taken will be issued once and processing continues.

    If "debug" is desired and an "object" file is to be produced then the object file WILL be produced.


The list of currently available options for the equation command is the following.

Any blinking names enclosed in brackets are required or are in a set of options, one of which must be specified. Any non-blinking names enclosed in brackets are optional or are in a set of options, only one of which can be specified.

In cases where the option name is one of a set each different set number is indicated by a red numeric set number superscript trailing the respectiveright bracket :

[add] [altvars] [backward] [cfiles] [cfrom] [compile]2 [cpaths] [cset] [curve] [debug]1 [derivative] [divide] [elsek] [endifk] [eqfile]2 [eqfilen]2 [eqtol] [exponent] [files]1 [ifk] [integral] [multiply] [newfiles] [newfilex] [noextrap] [noop] [object] [order] [pathfile] [paths] [setval] [subtract] [tabfile]3 [tabfilen]3 [tol] [torder] [voidval]

[Top][Bottom][Option list]

( ATadd) (Command :equation) Details for the add option.

[General syntax rules for this keyword.]

Indicates the single character which is to be used as the addition sign in any "equation" input. The default symbol is the plus sign (+). Extreme care should be exercised in the selection of this character such that an inadvertent conflict with another non-operative character does not occur. It is a good idea NEVER to use alphabetic characters or the question mark.

Example : add >

[Top][Bottom][Option list]

( ATaltvars) (Command :equation) Details for the altvars option.

[General syntax rules for this keyword.]

The presence of this option indicates that IF there is an active composite alternate SIF variable name file (as established via the "variables" DESL command) then this composite file will be used to attempt to assign an alternate SIF variable name if a SIF variable would otherwise not be found on the file(s) being processed.

[Top][Bottom][Option list]

( ATbackward) (Command :equation) Details for the backward option.

[General syntax rules for this keyword.]

Indicates that searching for SIF variables will be done from back to front in the SIF records. The default condition is to search from front to back.

[Top][Bottom][Option list]

( ATcfiles) (Command :equation) Details for the cfiles option.

[General syntax rules for this keyword.]

Indicates the adjunct SIF or FFSIF files to be used as effective EXTENSIONS to the files named or implied by the "files" option and argument list. There is a 1:1 correspondence between "cfiles" arguments and expressed or implied "files" arguments.

The primary intent of the capability provided via "cfiles" is to allow the inclusion of information which is considered to be CONSTANT; ie, information which would normally be the SAME in ALL SIF DATA records read. An example of this type of data would be pressure port location information.

If specified, and an adjunct file is found and is of a type consistent with the "cfrom" specified or default file type specifier, the contents of the NAMEs record and the FIRST DATA record on the named "cfiles" file is effectively merged into the NAMEs and DATA records, respectively, to result in read SIF records which are as if they had contained the adjunct information originally. Up to 1000 SIF items can be added from an adjunct file.

Example : cfiles add1 add2

[Top][Bottom][Option list]

( ATcfrom) (Command :equation) Details for the cfrom option.

[General syntax rules for this keyword.]

Indicates, in a 1:1 correspondence with the expressed or implied "files" arguments, the types of files in the "cfiles" argument list. Allowable types are "sif" and "ffsif". Up to 200 "cfrom" file types can be specified. Strings beginning with "null" are essentially not reset from the default. The default type of "cfile" file is "sif".

Example : cfrom ffsif sif rep 3 ffsif

[Top][Bottom][Option list]

( ATcpaths) (Command :equation) Details for the cpaths option.

[General syntax rules for this keyword.]

Indicates, in a 1:1 correspondence with the list of files specified, directory locations for the specified "cfiles". These locations supersede the current directory. If a "cfiles" location thus specified is not empty ("null...") a search for the respective file will be made at the indicated location before a search is made at any other alternate locations which have been made effective via a previous execution of the "path" command. By default, all "cpath" paths are blank. Up to 20 path names can be specified.

Example : cpaths ..\ ..\Main\ sub1\

[Top][Bottom][Option list]

( ATcset) (Command :equation) Details for the cset option.

[General syntax rules for this keyword.]

This option is used to specify "file-specific" conditions which, IN ADDITION to any other GLOBAL conditions which ALSO may have been specified, are to be applied to each SIF record processed from the respective SIF file. Just like global conditions, file-specific conditions act to limit the applicability of the DESL function being executed by requiring that ALL applicable "and" conditions be TRUE simultaneously or that at least ONE "or" condition be TRUE.

The item immediately following "cset" is the file sequence number in the "files" list for which the following up-to-20 conditions will be applicable.

Each file-specific 3-item condition, like its global 3-item condition counterpart, is made up of (1) a SIF variable name, (2) a 2-character logical conjunction, and (3) a second SIF variable name or a constant.

Example : cset 3 alpha gt phi mach lt 1.2

Here, the user has indicated that, along with whatever other GLOBAL conditions may have been specified, the pertinent DESL function, for the THIRD file specified or implied by the "files" list, will have its application ALSO limited to records which satisfy BOTH of the two conditions :

"ALPHA gt PHI" "MACH lt 1.2".

All file-specific conditions are implicitly joined by an "and" conjunction; ie, by default, all file-specific conditions would have to be true SIMULTANEOUSLY for the applicable record to be retained.

If one or more file-specific conditions following the file sequence number is to be connected to other file-specific conditions for the same file number by an "or" conjunction, then the 2-character item "or" must immediately follow the file number.

Example : cset 2 or alpha lt 0 alpha gt 4

Here, the user has indicated that, along with whatever other GLOBAL conditions may have been specified, the pertinent DESL function, for the SECOND file specified or implied by the "files" list, will have its application ALSO limited to records in which the value of the SIF variable "alpha" satisfies at least ONE of the conditions :

"ALPHA lt 0" "ALPHA gt 4".

Additionally, if the file number following the "cset" option is negative, the absolute value of this negative file number is used for the actual file number and the associated "and" or "or" condition(s) are NOT used in the traditional sense of filtering the records read but are ONLY used to indicate when READING of the associated file is to STOP. This ability is useful in preventing the reading of a long file when it is known that the data required is relatively near the beginning of the file.

Example : cset -1 or run eq 3 alpha gt 24

Here, the user has indicated that when a record is encountered for which either or both of the two conditions

"RUN = 3" "ALPHA gt 24"

is/are TRUE, reading of the current SIF file should end.

[Top][Bottom][Option list]

( ATcompile) (Command :equation) Details for the compile option.

[General syntax rules for this keyword.]

Indicates up to 20 files which each contain a "compiled" set of equations which is to be used for this execution of EQN. "Compiled" equations are NOT changeable at execution time. If more than one compile file is specified, the files are used in the order they are specified. See "object".

************* W A R N I N G ************

If a set of "compiled" equations previously saved in an object file contains references to the "integ" and/or "deriv" and/or "table" functions, then the corresponding appropriate "integral" and/or "derivative" and/or "table" option(s) and argument list(s) MUST have been present when the "object" file was produced. The presence of these options and argument lists in the input to "equation" when one or more "compile" files are being used is optional; ie, no use is made of these constructs at this time.

Example : compile obj1

[Top][Bottom][Option list]

( ATcurve) (Command :equation) Details for the curve option.

[General syntax rules for this keyword.]

Indicates the type of curve fit desired during evaluation of an integral or of a derivative. This option MUST be followed by either "poly", indicating a piecewise polynomial fit, or "lsq", indicating a least-squares fit. The default type curve fit is "poly".

Example : curve lsq

[Top][Bottom][Option list]

( ATdebug) (Command :equation) Details for the debug option.

[General syntax rules for this keyword.]

Indicates that the user wishes not to actually execute the equations and logic contained on the "equation" file but only check the syntax and legitimacy of the equations and report any problems found. An object file may be produced if the "object" option and argument is specified. No files can be named if debugging; no SIF files are processed.

[Top][Bottom][Option list]

( ATderivative) (Command :equation) Details for the derivative option.

[General syntax rules for this keyword.]

A option and argument list which establishes the SEQUENCE of independent and dependent variables which can be used to evaluate a derivative referenced in the equations by by the "deriv" function.

An example of this option and argument list is :

" derivative x1 fx3 4 x1 thru x114 fx31 thru fx314 "

The two name items (x1 and fx3) shown above included AFTER the "derivative" option, are optional. Normally, all mentioned variables are assumed to be SIF variables. If either or both of the independent and/or dependent variable sequences have been declared LOCAL and if either or both of the sequences of independent and/or dependent local variables have been "dimensioned", then their base array name(s) MUST be included after the "derivative" option. If the array name is NOT specified, it is assumed that the variables are scalar. Following the optional two local array names is a number in the range 1 to 20. This is the derivative id number, used for reference within the equations via the "deriv" function. Up to 20 derivatives can be defined.

Following the derivative id number is a sequence of names and/or values which ARE the independent and dependent SIF variable names/values to be associated with this derivative. ALL of the INDEPENDENT variable names/values MUST be specified BEFORE the DEPENDENT variable names/ values. Equal numbers of independent and dependent variable names/values MUST be specified. The lists of variables logically define a "range" within which differentiation can occur without (if voiding does not alter the extent of the range) extrapolation having to be done; ie, the variables define a "curve", all or some of which can be used to determine the value of a derivative.

******************** W A R N I N G ***************** Array names ending in a NUMBER should be AVOIDED when specifying lists of independent and/or dependent variables in the "derivative" argument list. *****************************************************

In general, the more definition there is to a set of data in the range where differentiation is to occur, the greater the accuracy of the resulting derivative's value. Up to a total of 500 independent and 500 dependent names/values can be specified in up to 20 "derivative" argument lists.

[Top][Bottom][Option list]

( ATdivide) (Command :equation) Details for the divide option.

[General syntax rules for this keyword.]

Indicates the single character which is to be used as the division sign in any "equation" input. The default symbol is the slash sign (/). Extreme care should be exercised in the selection of this character such that an inadvertent conflict with another non-operative character does not occur. It is a good idea NEVER to use alphabetic characters or the question mark.

Example : divide %

[Top][Bottom][Option list]

( ATeqfile) (Command :equation) Details for the eqfile option.

[General syntax rules for this keyword.]

Indicates the name of the file containing the Fortran-like equations and logic to be executed for each DATA-type record of each file specified via "files". Only one "eqfile" file can be specified. If the file so named does not exist, it is created. Once the file is accessed or created, the user is given the opportunity to edit the file with the DESL line editor.

Example : eqfile eq1

[Top][Bottom][Option list]

( ATeqfilen) (Command :equation) Details for the eqfilen option.

[General syntax rules for this keyword.]

Indicates the same information as "eqfile" does. However, the user is not given the opportunity to edit the file before it is used by the equation function.

Example : eqfilen eq2

[Top][Bottom][Option list]

( ATeqtol) (Command :equation) Details for the eqtol option.

[General syntax rules for this keyword.]

Indicates the tolerance to be applied to any global or file-specific "eq" condition(s) which may have been specified. If the tolerance value specified is positive the value is in the units of the variable being used in the respective condition(s). If the tolerance value is negative the absolute value of the value is a PERCENT difference. The default value of tolerance is 0.

Example : eqtol .5

[Top][Bottom][Option list]

( ATexponent) (Command :equation) Details for the exponent option.

[General syntax rules for this keyword.]

Indicates the single character which is to be used as the exponentiation sign in any "equation" input. The default is the circumflex (^). Extreme care should be exercised in the selection of this character such that an inadvertent conflict with another non-operative character does not occur. It is a good idea NEVER to use alphabetic characters or the question mark.

Example : exponent @

[Top][Bottom][Option list]

( ATfiles) (Command :equation) Details for the files option.

[General syntax rules for this keyword.]

Indicates the list of files whose records to modify according to the equations and logic specified on the equation file IF not "debugging".

This list of files can be implicitly extended via use of the "<list" argument which can appear among the specified file names. If one or more of the "<list"-type arguments are specified, where "list" is a currently defined file name list, the file names contained in the indicated file name list(s) will be included, at their respective point(s) of encounter, in the current file list. The referenced list(s) must have been produced by the "newfiles" and/or "newfilex" argument lists associated with one or more previously executed DESL commands. Each "list" name can be up to 15 characters long. File names can also include the {...} construct. This type specification within a file name implies that the list name given between the curly brackets ( {} ), is to be used to have each of its elements substituted in turn for the { ... }, inclusively, such that an implicit lengthening of the file list is accomplished, up to the maximum number of files allowed. Any time such a {...} usage occurs, all lists mentioned must exist; i.e., must have been previously defined in the current DESL session. Only one {...} construct can be included in a file name. Including more than one such construct will result in unpredictable results.

An example of this type of file name specification is the following :

t43r{runs}.sif

Here, the list "runs" will have its elements used, in turn, in place of the {runs} substring.

.

(Begin modifications on 052102)

Each file name, whether it includes the {...} or not, can be a maximum of 256 characters long. If a file name is more than 16 characters long it must be enclosed in question marks (?) .

(End modifications on 052102)

Up to 200 files can be explicitly or implicitly specified.

Example : files run1 run3 <flist9

[Top][Bottom][Option list]

( ATintegral) (Command :equation) Details for the integral option.

[General syntax rules for this keyword.]

A option and argument list which establishes the SEQUENCE of independent and dependent variables which can be used to evaluate an integral referenced in the equations by the "integ" function.

An example of this option and argument list is :

"... integral x1 fx3 4 x1 thru x114 fx31 thru fx314 ..."

The two name items (x1 and fx3) shown above included AFTER the "integral" option, are optional. Normally, all mentioned variables are assumed to be SIF variables. If either or both of the independent and/or dependent variable sequences have been declared LOCAL and if either or both of the sequences of independent and/or dependent local variables have been "dimensioned", then their base array name(s) MUST be included after the "integral" option. If the array name is NOT specified, it is assumed that the variables are scalar. Following the optional two local array names is a number in the range 1 to 20. This is the integral id number, used for reference within the equations via the "integ" function. Up to 20 integrals can be defined.

Following the integral id number is a sequence of names and/or values which ARE the independent and dependent SIF variable names/values to be associated with this integral. ALL of the INDEPENDENT variable names/values MUST be specified BEFORE the DEPENDENT variable names/ values. Equal numbers of independent and dependent variable names/values MUST be specified. The lists of variables logically define a "range" within which integration can occur without (if voiding does not alter the extent of the range) extrapolation having to be done; ie, the variables define a "curve", all or some of which can be used to determine an integrated value.

******************** W A R N I N G ***************** Array names ending in a NUMBER should be AVOIDED when specifying lists of independent and/or dependent variables in the "integral" argument list. *****************************************************

In general, the more definition there is to a set of data in the range where integration is to occur, the greater the accuracy of the resulting integrated value. Up to a total of 500 independent and 500 dependent names/values can be specified in up to 20 "integral" argument lists.

[Top][Bottom][Option list]

( ATmultiply) (Command :equation) Details for the multiply option.

[General syntax rules for this keyword.]

Indicates the single character which is to be used as the multiply sign in any "equation" input. The default symbol is the asterisk (*). Extreme care should be exercised in the selection of this character such that an inadvertent conflict with another non-operative character does not occur. It is a good idea NEVER to use alphabetic characters or the question mark.

Example : multiply ]

[Top][Bottom][Option list]

( ATnewfiles) (Command :equation) Details for the newfiles option.

[General syntax rules for this keyword.]

Indicates the desired names for new files being produced. There is an understood 1:1 correspondence between files in the "files" list and files in the "newfiles" list. A new file name prefixed with the 4-character string "null" can be used as a place holder in the "newfiles" file names list. This type of name is converted to a blank string before it is used; ie, using a "null" prefixed name is equivalent to having not specified that name at all. By default, all files explicitly named via this "newfiles" list will be flagged as a file "to be RETAINED at cleanup. (See the "cleanup" command.) The default file name generated for a new file not explicitly named via "newfiles" or "newfilex" is the 3-character string "gen" followed by a unique numeric suffix. Up to 200 new files can be specified.

The list of the names of the new files actually produced can be saved via the use of the ">list"- or ">>list"- type argument, which can appear among the specified new file names. If a ">list"- or ">>list"-type argument is specified, where "list" is the specified file name list, the names of the new files which DESL actually produces during the execution of the current command will be saved in the specified file name list.

This file name list can later be referenced by the "files"/"xfiles" options to imply the file names contained therein. Up to 200 new file names can be saved in any one list. If the ">list" argument is specified the named list will be created if it does not already exist, or will overwrite a like-named list if one exists. If the ">>list" argument is specified the named list will be appended to if it exists or will be created if it does not exist. All file name lists are in existence for the current DESL session only. Each "list" name can be up to 15 characters long.

In all but a few noted cases, it is acceptable to use the ">list" or ">>list"-type argument without specifying a full complement of actual new file names. Any new file produced whose NAME is GENERATED by DESL is ALWAYS marked as a file to "PURGE at cleanup".

A suffix which may be in effect as established via the filesuffix DESL command will be added to any expressed or implied new file name. New file names can also include the {...} construct. This type specification within a file name implies that the list name given between the curly brackets ( {} ), is to be used to have each of its elements substituted in turn for the { ... }, inclusively, such that an implicit lengthening of the new file list is accomplished, up to the maximum number of new files allowed. Any time such a {...} usage occurs, all lists mentioned must exist; i.e., must have been previously defined in the current DESL session. Only one {...} construct can be included in a new file name. Including more than one such construct will result in unpredictable results.

An example of this type of new file name specification is the following :

t43r{runs}.sif

Here, the list "runs" will have its elements used, in turn, in place of the {runs} substring.

.

(Begin modifications on 052102)

Each new file name, whether it includes the {...} or not can be a maximum of 256 characters long. If a newfile name is more than 16 characters long it must be enclosed in question marks (?).

(End modifications on 052102)

Example : newfiles nf1 nf2 >nflist21

[Top][Bottom][Option list]

( ATnewfilex) (Command :equation) Details for the newfilex option.

[General syntax rules for this keyword.]

This option has exactly the same function as the option "newfiles" except that all new files created with a "newfilex" name are flagged as files to "PURGE at cleanup". (See "newfiles" option. See "cleanup" command.) Up to 200 new files can be specified.

Example : newfilex nf1 nf2
.

(Begin modifications on 072304)

[Top][Bottom][Option list]

( ATnoextrap) (Command :equation) Details for the noextrap option.

[General syntax rules for this keyword.]

Indicates that, if to satisfy the table interpolation, extrapolation must be performed, then it is not allowed. By default, extrapolation is allowed. It should be pointed out that if extrapolation is done, it is always linear.

(End modifications on 072304)

[Top][Bottom][Option list]

( ATnoop) (Command :equation) Details for the noop option.

[General syntax rules for this keyword.]

A dummy option which allows one or more GLOBAL conditions to follow. This option has NO OTHER FUNCTION.

[Top][Bottom][Option list]

( ATobject) (Command :equation) Details for the object option.

[General syntax rules for this keyword.]

Indicates the file which will receive the "compiled" set of equations if no syntax errors are present. This file can be subsequently reused by EQN via the "compile" option and argument to reexecute the same set of equations without having to have them recompiled. See "compile".

************* W A R N I N G ************

If a set of "compiled" equations being saved in an object file contains references to the "integ" and/or "deriv" and/or "table" functions, then the corresponding appropriate "integral" and/or "derivative" and/or "table" option(s) and argument list(s) MUST be present when the "object" file is produced. The presence of these options and argument lists in the input to "equation" when one or more "compile" files are being used is optional; ie, no use is made of these constructs at that time.

Example : object obj1

[Top][Bottom][Option list]

( ATorder) (Command :equation) Details for the order option.

[General syntax rules for this keyword.]

Indicates the highest order of curve fit allowed during the evaluation of an integral or a derivative. The maximum order of fit when "curve" = "poly" is 3. The maximum order of fit when "curve" = "lsq" is 7. However, in some cases when the situation regarding the number of existing data points in a set of data dictates it, this order may be temporarily reduced. The default order is one, linear. During extrapolation, the order is always one.

Example : order 2

[Top][Bottom][Option list]

( ATpathfile) (Command :equation) Details for the pathfile option.

[General syntax rules for this keyword.]

If specified, any up-to-16-charact string specified via the "paths" option and argument list can be translated to an up-to-64-charact string. If a specified "paths" string matches a string in the left column in the path file, then the (potentially longer) string in the right column in the same line in the path file is substituted for the original string. The rules for the syntax of a path file are the following :

  1. all lines are ASCII
  2. any line beginning with "* " is a comment and is ignored (asterisk + one or more blanks)
  3. blank lines are ignored
  4. only 2 items per line per translation : the first up to 16 characters and the second up to 64 characters. Any string longer than 16 characters MUST be enclosed in question-mark (?) delimiters.
  5. free-field interpretation, therefore embedded blanks require the "?" delimiters
  6. first item is name to be translated; must match VERBATIM with path name specified or implied via "paths" argument list
  7. second item is the corresponding path name translation

An example of such a file is the following :



*
*  Example path file for test xxx
*
*  item  1 = path to be translated : MUST
*             match VERBATIM with name given
*             specified/implied via "paths"
*
*  item  2 = resulting name translation
*
data56    ? \usr\home2\ people\test56\ ?
up  ?..\?
way-up  ? ..\..\..\ Temp46\?


Example : pathfile pathA

[Top][Bottom][Option list]

( ATpaths) (Command :equation) Details for the paths option.

[General syntax rules for this keyword.]

Indicates, in a 1:1 correspondence with the list of files specified, directory locations for the specified files. These locations supersede the current directory. If a file location thus specified is not empty ("null...") a search for the respective file will be made at the indicated location before a search is made at any other alternate locations which have been made effective via a previous execution of the "path" command. By default, all path names are blank. Up to 200 path names can be specified.

Example : paths ..\ ..\Main\ sub1\

[Top][Bottom][Option list]

( ATsetval) (Command :equation) Details for the setval option.

[General syntax rules for this keyword.]

By default, any time a value is needed and not specified, a default value is assigned. The value can be the default value of 0.0 or can be some other value. This other value is specified via the "setval" option. Also, any time an equation would compute a result which would not be representable as a legitimate number, the result is, instead, set to the default "setval" value. For example, if division by 0 is to be done, the result will be set to the setval value. The default "setval" value is 0.

Example : setval 888

[Top][Bottom][Option list]

( ATsubtract) (Command :equation) Details for the subtract option.

[General syntax rules for this keyword.]

Indicates the single character which is to be used as the subtraction sign in any "equation" input. The default is the minus sign (+). Extreme care should be exercised in the selection of this character such that an inadvertent conflict with another non-operative character does not occur. It is a good idea NEVER to use alphabetic characters or the question mark.

Example : subtract <

[Top][Bottom][Option list]

( ATtabfile) (Command :equation) Details for the tabfile option.

[General syntax rules for this keyword.]

Indicates the name of the "table file" containing the definition of one or more "tables" which can be referenced in the equations to accomplish one or two dimensional first or second order interpolation as a function of one or two independent variables. Tables defined via their inclusion in the specified "table file" are referenced by name in the equations via the special function "table". If a table file defined by "tabfile(n)" is being used, it must be used in the PRODUCTION of the "object" file. It does NOT have to be specified when using "compile" to name a previously-produ "object" file.
.

(Begin modifications on 052102)

A table file can define up to 200 tables.

(End modifications on 052102)

(See the discussion regarding special functions.)

The structure of a valid table file must adhere to the following rules :

(1) Any line beginning with an asterisk followed by at least one blank space is considered a comment and is ignored.

(2) Blank lines are ignored.

(3) There may be an unlimited number of lines in a table file.

(4) Each table's definition in the table file begins with a single line containing the word "table" followed by a table name and size specification(s): no. of rows, no. columns; ie, table tab1 4 7 This initial line is followed, on any number of lines, by the values of the row variable, column variable and the table dependent variables.

(5) Each table will be completely defined when the correct total number of row variable values, column variable values and table dependent variable values have been specified.

(6) A table can have up to 1000 rows OR columns.

.

(Begin modifications on 052102)

(7) For ALL tables defined, a total of up to 20000 values can be specified : row variable values + column variable values + table dependent variable values.

(End modifications on 052102)

(8) The sequence of input for a one-dimensional table is the following : independent ("row") variable value 1, dependent variable value 1, independent variable value 2, dependent variable value 2, etc.

(9) The sequence of input for a two-dimensional table is the following (where "ncol" is the number of columns in the table) : second independent ("column") variable values 1 --> ncol, value 1 of the first independent variable, the first ncol values of the dependent variable, value 2 of the first independent variable, the second ncol values of the dependent variable, etc.
.

(Begin modifications on 010107)

(9.1) The sequence of values for a one or two dimensional table can be implied to come from predefined lists. If the last field on the line with the "table" string is the string "rlist" or "clist" then it is implied that all of the values to be stored in a table are to come from one or more previously defined lists. such lists can be defined explicitly or can be defined via the "makelist" option in the "copy" command.

Following the line that is ended with "rlist" or "clist" are lines containing the names of the lists that will be accessed for values to be stored in the table being defined. The implicit sequence of the table elements is important and determined by the "rlist" and "clist" strings.

For a one dimensional table in which independent and dependent variable vectors need to be defined both the "rlist" or "clist" imply the same thing: the vector representing the independent variable will be filled to the length specified on the "table" line before the vector representing the dependent variable is filled to the same length.

For a two dimensional table the use of the values encountered in the list(s) specified is in the following order: if "rlist" is specified, the vector of the "row" independent variable values is defined, then the vector of "column" independent variable values is defined then the array of dependent variable values is specified. This much of the process i the same if "clist" is specified.

The order of array (table) element filling is, however, dependent on whether "rlist" or "clist" was specified. If "rlist" was specified, the lists encountered are used to fill each row from left to right. The row order value filling is row #1, row #2, ..., row #K.

If "clist" was specified, the lists encountered are used to fill each column from top to bottom. The column order value filling is column #1, column #2, ..., column #J.

As in the case of the explicit loading of values, if a table is insufficiently filled via this new list type method a message will be issued to the log file and the "equation" function will not produce a new sif file.

(End modifications on 010107)

.

(Begin modifications on 072404)

(10) Extrapolation is allowed when doing table interpolation unless the "noextrap" option is specified. If extrapolation is required and allowed, the resulting extrapolation will be linear. If extrapolation is required but not allowed the resulting value will be set to the current "setval" value.

(End modifications on 072404)

An example of a table file containing both one- and two-dimensional table definitions is the following :

The first example table is named "tab1d" and is a 1-dimensional table with 6 rows and 1 column ... (Table does NOT have to laid out as indicated below. This arrangement is recommended for aesthetic/visual reasons. All values COULD have been specified on ONE line.)

*
* -------------------------------------------------
*
*  The first example table is named "tab1d" and
*  is a 1-dimensional table with 6 rows and
*  1 column ...
*
*  (Table does NOT have to laid out as indicated below.
*  This arrangement is recommended for aesthetic/visual
*  reasons.  All values COULD have been specified on
*  ONE line.)
*
table  tab1d  6
0       0
1       4.6
2       7.9
3       13.3
4       20.5521
5.3     47.34

* * -------------------------------------------------

The second example table is named "tab2d" and is a 2-dimensional table with 7 rows and 5 columns ...

*
*  The second example table is named "tab2d" and
*  is a 2-dimensional table with 7 rows and
*  5 columns ...
*
table tab2d 7 5
*
-.5    -.1    .2    .8    1.5
* - - - - - - - - - - - - - - -- - - - - - - -
-5     1.     2      3     4     5
-3     1.2    1.4    1.6   1.8   2.0
-1     2.1    2.2    2.3   2.5   2.9
0     3.1    3.3    3.6   4.0   5.2
1     7      6      5     4     5
1.5    0      1      0     -1    -2
2.0    10     5      2     5     9
*
* -------------------------------------------------
*

Use of these example tables among the equations could be the following :

a= table(tab1d,alpha) + table(tab2d,alpha,beta)
b= table(tab1d,alpha,2)
c= table(tab2d,alpha,beta,2,1)

These uses of these example tables indicate the user wishes to accomplish the following tasks :

  1. set "a" to the sum of (a) the one-dimensional interpolation in table "tab1d" with the current value of the variable "alpha" and (b) the two- dimensional interpolation in table "tab2d" with the current values of "alpha" and "beta" being used as the "row" variable and "column" variable, respectively. Both of the interpolations will be done at the default order. (See "torder" option.)

  2. set "b" to the one-dimensional interpolation in the table "tab1d" with the current value of the variable "alpha". Also, the order has been specified to be 2, overriding the default order.

  3. set "c" to the two-dimensional interpolation in the table "tab2d" with the current values of "alpha" and "beta" being used as the "row" variable and "column" variable, respectively. Also, the order for the row-wise (alpha) interpolation has been specified to be 2 and the column-wise (beta) interpolation has been specified to be 1.

Example : tabfile tab1

[Top][Bottom][Option list]

( ATtabfilen) (Command :equation) Details for the tabfilen option.

[General syntax rules for this keyword.]

<<< The file containing table information (no edit)

This option has exactly the same meaning as "tabfile" except that user is NOT given the opportunity to edit the table file before its use in the program.

Example : tabfilen tab5

[Top][Bottom][Option list]

( ATtol) (Command :equation) Details for the tol option.

[General syntax rules for this keyword.]

The item following this option is the tolerance value. Sets the allowable tolerance between adjacent independent variable values in each set of such variable values being used for the curve fit and subsequent evaluations of the pertinent integral or derivative. Successive values of the independent variable are not used to determine the curve fit if they fall within the specified tolerance of the most previous retained independent variable value. If the specified tolerance value is negative, it is assumed to be a tolerance in percent, and the tolerance percent value is the absolute magnitude of the number specified. The default tolerance is 1 percent. Normally, the "set" of independent variable values are reordered to be monotonically increasing after they are collected. The tolerance value is, therefore, applied normally to this strictly-increas set of values.

Example : tol .5

[Top][Bottom][Option list]

( ATtorder) (Command :equation) Details for the torder option.

[General syntax rules for this keyword.]

Specifies the default interpolation order to use when evaluating "table" functions. This order can be either 1 or 2, for first or second Lagrangian interpolation, respectively. If the table has only two rows/columns and the order is 2, then the respective order(s) will be reduced to 1 temporarily to evaluate the table function in question.

Example : torder 2

[Top][Bottom][Option list]

( ATvoidval) (Command :equation) Details for the voidval option.

[General syntax rules for this keyword.]

Indicates the variable value (SINGLE following value) or range of values (TWO following values : algebraically lesser, algebraically greater) for which, if a pertinent variable's value is equal or falls within, respectively, will cause that variable TO BE CONSIDERED "void". ( Setting variable values to a void flag value can be accomplished via the "copy" function.) During integration or differentiation, "voided" values of either the independent OR dependent variable cause the use of the corresponding PAIR of values to be essentially skipped when the integral or derivative is evaluated.

Example : voidval -444

[Top][Bottom][Option list]


DESL Home | Website Outline | Commands | Examples | Download | Contacts




ViGYAN, Inc.


DESL Manager at ViGYAN, Inc.

30 Research Drive
Hampton, VA 23666
Voice: (757) 865-1400
Toll Free: (800) 288-3998
FAX: (757) 865-8177

© 1998 ViGYAN, Inc.