TFSISO

The TFSISO (Transfer Function, Single-Input, Single-Output) statement defines a single-input, single-output transfer function as a ratio of two polynomials in the Laplace domain when used with the associated ARRAY statements.

Format

Arguments

 
DENOMINATOR=a0[,...,a29]
Specifies the coefficients of the polynomial in the denominator of the transfer function. Coefficients are listed in order of ascending powers of s, starting with s to the zero power, including any intermediate zero coefficients. The number of coefficients for the denominator must be greater than or equal to the number of coefficients for the numerator.
NUMERATOR=b0[,...,b29]
Specifies the coefficients of the polynomial in the numerator of the transfer function. Coefficients are listed in order of ascending powers of s, starting with s to the zero power, including any intermediate zero coefficients. The number of coefficients for the numerator must be less than or equal to the number of coefficients for the denominator.
STATIC_HOLD
Indicates that the TFSISO states are not permitted to change during static and quasi-static analysis.
U=id
Designates the ARRAY statement in the dataset that is used to define the input (or control) for the transfer function. You must have an ARRAY statement with this identifier in the dataset and it must be of the U type. If you specify the SIZE of the U ARRAY, it must be 1.
X=id
Designates the ARRAY statement in the dataset that is used to define the state variable array for the transfer function. You must have an ARRAY statement with this identifier in the dataset; it must be of the X type; and it may not be used in any other LSE, GSE, or TFSISO statement. If you specify the SIZE of the X ARRAY, it must be one less than the number of coefficients in the denominator.
Y=id
Designates the ARRAY statement in the dataset that is used to define the output for the transfer function. You must have an ARRAY statement with this identifier in the dataset; it must be of the Y type; and it may not be used in any other LSE, GSE, or TFSISO statement. If you specify the SIZE of the Y ARRAY, it must be 1.

Extended Definition

The TFSISO (Transfer Function, Single-Input, Single-Output) statement is designed to model a linear, time-invariant dynamic system defined in the Laplace domain, especially to facilitate the import of elements from control-system block diagrams. It can also be used, however, to define an arbitrary set of constant-coefficient, differential and algebraic equations which can be expressed in the Laplace domain as
where m < k
The TFSISO follows standard control systems terminology, where x is the state variable array, y is the output variable, and u is the input variable. Initial conditions are assumed to be identically zero. In the Adams Solver (FORTRAN) dataset, each of these arrays is defined using an ARRAY statement. The characteristic equation for a single TFSISO statement, defined by the DENOMINATOR argument, can be a polynomial of degree less than 30.
Internally to Adams Solver (FORTRAN), there is an algorithm to automatically convert the list of fixed numerator and denominator coefficients to a canonical state-space form; that is, a set of coupled, linear, constant-coefficient differential equations and a single algebraic equation.
When you reference only the output of the TFSISO, the details of the internal equations are unimportant. In some cases, however, it may be useful to understand how Adams Solver (FORTRAN) constructs the equations. When interpreting Adams Linear output or examining the values in the X ARRAY, for instance, it may be necessary to determine what the internal states represent.
The conversion from transfer function to canonical state-space form is done in two steps. First, the numerator and denominator are normalized by the coefficient of the largest power of s in the denominator.
q = [b0/ak,b1/ak,...,bm/ak,0,...,0,0]
p = [a0/ak,a1/ak,...,ak-1/ak,1]
where array p is of length k+1. Array q is also of length k+1, padded with zeros, if necessary. The entries in arrays p and q are labeled from 0 to k for the following analogous transfer function:
The equivalent state space realization of this transfer function is:
where:
 
Note:  
Except in the specific case where the numerator and denominator are of equal orders, qk= 0.
Tip:  
Keeping track of which ARRAY statements go with which system elements is easier if all system elements are numbered uniquely and the ARRAY statements are numbered consistently. For example, the X ARRAY that goes with TFSISO/100 could be ARRAY/100; the U ARRAY would then be ARRAY/101, and the Y ARRAY would be ARRAY/102.
Often, transfer functions are needed where the order of the numerator is larger than the denominator. The classic example of this is the pure differentiator. It is generally possible to avoid this situation in Adams Solver (FORTRAN) by using the derivative of the input, i.e., marker velocity or acceleration instead of displacement or velocity. In other cases, you may need to algebraically incorporate another transfer function into a system or subsystem such that the overall transfer function has a higher degree denominator.
Caution:  
Although the TFSISO statement allows for up to 30 numerator and denominator coefficients in the transfer function, the conversion to the canonical state-space form is typically not robust for higher-order systems. Such systems should be used only when you are confident that the problem is well-posed. An alternate approach more suited to Adams Solver (FORTRAN) would be to break up (factor) the large transfer function into a series of smaller ones in separate TFSISO statements.
Note that, if the output equation defined by the TFSISO statement has no solution or multiple solutions (this is possible because of the general nature of the input ARRAY), Adams Solver (FORTRAN) most likely fails to converge or possibly converge to an unexpected answer. You can avoid this possibility by not referencing the X (state) or Y (output) ARRAYs in the definition of the VARIABLE in the U (input) ARRAY.
You must be sure to list the coefficients in order of increasing powers of s. Some texts and programs use the opposite convention, listing coefficients in order of decreasing powers of s.
Adams Solver (FORTRAN) does not check for pole-zero cancellation in the TFSISO numerator and denominator. In this case, the canonical transform used in Adams Solver leads to an unobservable but controllable state space realization. Adams Solver (FORTRAN) models containing such elements when tested for observability in control design software are indicated having some unobservable portions. You should perform any pole-zero cancellation prior to defining the TFSISO data.
During a static analysis, Adams Solver (FORTRAN) finds equilibrium values for user-defined differential variables (DIFFs, GSEs, LSEs, and TFSISOs), as well as for the displacement and force variables. This changes the initial conditions for a subsequent analysis. If STATIC_HOLD is not specified, during a static analysis, Adams Solver (FORTRAN) sets the time derivatives of the user-defined variables to zero, and uses the user-supplied initial-condition values only as an initial guess for the static solution. Generally, the final equilibrium values are not the same as the initial condition values. Adams Solver (FORTRAN) then uses the equilibrium values of the user-defined variables as the initial values for any subsequent analysis, just as with the equilibrium displacement and force values.
However, if STATIC_HOLD is specified, the user-specified initial conditions are retained as the static equilibrium values. Thus, the final equilibrium values are the same as the user-specified initial conditions. Note that this does not guarantee that the time derivatives of the user-defined variable are zero after static analysis.

Examples

ARRAY/100, X
ARRAY/101, U, VARIABLE=101
ARRAY/102, Y
VARIABLE/101, FUNCTION=ACCZ(5,99,5)
TFSISO/100, X=100, U=101, Y=102,
, NUMERATOR=1.0, DENOMINATOR=100.0,10.0,1.0
These statements define the following transfer function.
ARRAY/100 is the state array. ARRAY/101 is the input array. ARRAY/102 is the output array. VARIABLE/101 defines the input.

Applications

The TFSISO statement may be most useful for adding feedback controls to an Adams Solver (FORTRAN) model. A series of TFSISO statements can be assembled to resemble any linear block diagram arrangement. The transfer function can be derived manually or may be imported directly from a control system design program such as MATRIXx or MATLAB. Normally, the mechanical portion of the model includes some kind of actuator which depends on the TFSISO output.
TFSISO statements can also be conveniently used in many cases to replace systems of coupled DIFF and VARIABLE statements (for nonlinear equations, the GSE statements should be used). Examples of possible dynamics system uses include unsteady aerodynamics, hydraulics, power transmission, and electrodynamics.
You can use the current values of TFSISO state variables and outputs in both function expressions and user-written subroutines via the associated ARRAY facilities (see the function expression ARYVAL, and the subroutines: GTARAY, SYSARY, and SYSFNC). That is, instead of Adams Solver (FORTRAN) functions and FORTRAN callable subroutines dedicated explicitly to the TFSISO statement, the system states and outputs are accessed by offset referencing through the appropriate ARRAY routines. This method of referencing the variables makes access to the system states and outputs consistent for all three system modeling elements, the TFSISO statement, the GSE statement, and the LSE statement.
See other Generic systems modeling available.