transfer_function Derived Type

type, public :: transfer_function

Defines a transfer function for a continuous system of the form .


Contents


Components

Type Visibility Attributes Name Initial
type(polynomial), public :: X

The denominator polynomial in . The polynomial coefficients are stored in acending order such that .

type(polynomial), public :: Y

The numerator polynomial in . The polynomial coefficients are stored in acending order such that .


Type-Bound Procedures

generic, public :: evaluate => tf_eval_omega, tf_eval_s

  • private pure elemental function tf_eval_omega(this, omega) result(rst)

    Evaluates the transfer function at the specified value of the Laplace variable .

    Arguments

    Type IntentOptional Attributes Name
    class(transfer_function), intent(in) :: this

    The transfer_function object.

    real(kind=real64), intent(in) :: omega

    The frequency, in rad/s, at which to evaluate the transfer function.

    Return Value complex(kind=real64)

    The value of the transfer function.

  • private pure elemental function tf_eval_s(this, s) result(rst)

    Evaluates the transfer function at the specified value of the Laplace variable .

    Arguments

    Type IntentOptional Attributes Name
    class(transfer_function), intent(in) :: this

    The transfer_function object.

    complex(kind=real64), intent(in) :: s

    The Laplace variable at which to evaluate the transfer function.

    Return Value complex(kind=real64)

    The value of the transfer function.

generic, public :: initialize => tf_init_poly, tf_init_array

  • private subroutine tf_init_poly(this, y, x)

    Initializes a new transfer function.

    Arguments

    Type IntentOptional Attributes Name
    class(transfer_function), intent(inout) :: this

    The transfer_function object.

    class(polynomial), intent(in) :: y

    The numerator polynomial in .

    class(polynomial), intent(in) :: x

    The denominator polynomial in .

  • private subroutine tf_init_array(this, y, x)

    Initializes a new transfer function.

    Arguments

    Type IntentOptional Attributes Name
    class(transfer_function), intent(inout) :: this

    The transfer_function object.

    real(kind=real64), intent(in), dimension(:) :: y

    The numerator polynomial in . The polynomial coefficients are stored in acending order such that .

    real(kind=real64), intent(in), dimension(:) :: x

    The denominator polynomial in . The polynomial coefficients are stored in acending order such that .

procedure, public :: poles => tf_poles

  • private function tf_poles(this, err) result(rst)

    Computes the poles of the transfer function.

    Arguments

    Type IntentOptional Attributes Name
    class(transfer_function), intent(in) :: this

    The transfer_function object.

    class(errors), intent(inout), optional, target :: err

    An error handling object.

    Return Value complex(kind=real64), allocatable, dimension(:)

    The poles of the transfer function.

procedure, public :: to_ccf_state_space => tf_to_ccf_statespace

  • private function tf_to_ccf_statespace(this) result(rst)

    Converts a transfer_function type into a controllable canonical form state_space type. See this article for a description of this form.

    Arguments

    Type IntentOptional Attributes Name
    class(transfer_function), intent(in) :: this

    The transfer_function to convert.

    Return Value type(state_space)

    The resulting state-space object.

procedure, public :: to_ocf_state_space => tf_to_ocf_statespace

  • private function tf_to_ocf_statespace(this) result(rst)

    Converts a transfer_function type into an observable canonical form state_space type. See this article for a description of this form.

    Arguments

    Type IntentOptional Attributes Name
    class(transfer_function), intent(in) :: this

    The transfer_function to convert.

    Return Value type(state_space)

    The resulting state-space object.

procedure, public :: zeros => tf_zeros

  • private function tf_zeros(this, err) result(rst)

    Computes the zeros of the transfer function.

    Arguments

    Type IntentOptional Attributes Name
    class(transfer_function), intent(in) :: this

    The transfer function object.

    class(errors), intent(inout), optional, target :: err

    An error handling object.

    Return Value complex(kind=real64), allocatable, dimension(:)

    The zeros of the transfer function.