GithubHelp home page GithubHelp logo

slicot / slicot-reference Goto Github PK

View Code? Open in Web Editor NEW
40.0 11.0 19.0 4.75 MB

SLICOT - A Fortran subroutines library for systems and control

License: BSD 3-Clause "New" or "Revised" License

Fortran 99.47% Makefile 0.12% HTML 0.38% NASL 0.03%
control-systems descriptor-systems eigenvalues filtering fortran lapack linear-algebra slicot system-identification periodic-systems

slicot-reference's Introduction

SLICOT Library

DOI License

SLICOT - Subroutine Library In COntrol Theory - is a general purpose basic mathematical library for control theoretical computations. The library provides tools to perform essential system analysis and synthesis tasks. The main emphasis in SLICOT is on numerical reliability of implemented algorithms and the numerical robustness and efficiency of routines. Providing algorithmic flexibility and the use of rigorous implementation and documentation standards are other SLICOT features.

The SLICOT Library is available as standard Fortran 77 code in double precision. Each user-callable subroutine for control computations is accompanied by an example program which illustrates the use of the subroutine and can act as a template for the user's own routines.

The SLICOT Library is organized by chapters, sections and subsections. The following chapters are currently included:

A : Analysis Routines

B : Benchmark and Test Problems

D : Data Analysis

F : Filtering

I : Identification

M : Mathematical Routines

N : Nonlinear Systems (not yet available, except for some auxiliary routines for Wiener systems)

S : Synthesis Routines

T : Transformation Routines

U : Utility Routines

SLICOT Library Root Directory contains few, basic files for the SLICOT Library distribution and generation. When distributed, SLICOT software comes with several filled-in subdirectories (benchmark_data, doc, examples, src, and src_aux), and the following files in this root directory:

  • this file, README.md,

  • the contributors to the library and financial support, Contributors.md,

  • the license file, LICENSE, and

  • the main SLICOT Library documentation index, libindex.html.

After software installation, this directory will also contain the library files slicot.a and lpkaux.a, or slicot.lib and lpkaux.lib, for Unix or Windows platforms, respectively. The library files could then be linked in applications programs, as usual. Specific examples are contained in the directory examples. The on-line documentation of the SLICOT user's callable routines is accessible via the main SLICOT Library documentation index, libindex.html. This file also contains a link to the documentation of the lower-level, support routines.

The SLICOT Library is built on LAPACK (Linear Algebra PACKage) and BLAS (Basic Linear Algebra Subprograms) collections. Therefore, these packages should be available on the platform used.

Basic References:

  1. P. Benner, V. Mehrmann, V. Sima, S. Van Huffel, and A. Varga, "SLICOT - A Subroutine Library in Systems and Control Theory", Applied and Computational Control, Signals, and Circuits (Birkhauser), Vol. 1, Ch. 10, pp. 505-546, 1999.

  2. S. Van Huffel, V. Sima, A. Varga, S. Hammarling, and F. Delebecque, "Development of High Performance Numerical Software for Control", IEEE Control Systems Magazine, Vol. 24, Nr. 1, Feb., pp. 60-76, 2004.

slicot-reference's People

Contributors

andreasvarga avatar vasilesima4 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

slicot-reference's Issues

Can I use slicot to solve this particular problem?

Here is my numerical problem: I want to compute a Hamiltonian square root of a given skew-Hamiltonian matrix.

The following article Structure-Preserving Schur Methods for Computing Square Roots of Real Skew-Hamiltonian Matrices by Zhongyun Liu, Yulin Zhang, Carla Ferreira, and Rui Ralha proposes an algorithm involving the following steps:

  1. A Paige / van Loan decomposition of the initial skew-Hamiltonian matrix
  2. Transformation of the above into a symplectic schur decomposition of the initial matrix.
  3. Schur decomposition of the top-left block
  4. Solution of a Sylvester equation

I think I can use Lapack to deal with 3. and 4.
My question is: can I use SLICOT to deal with 1. and/or 2. ?
I see in the doc that there is a subroutine for the Paige/Van Loan form of a Hamiltonian matrix MB04PB, but I don't see anything for the skew-Hamiltonian case.

Any tips would be greatly appreciated

Use of deprecated LAPACK routines

When linked with modern LAPACK versions, > v.3.5.0 xLATZM, xGEGS routines have been deprecated since 11/2015. See the end section "What's new?" https://netlib.org/lapack/lapack-3.6.0.html

The replacement routine is xORMRZ, xGGES family. Is this something that can be changed ? I can send a Pull Request if there is an interest. Otherwise LAPACK library should be recompiled with deprecated routines enabled which is unnecessary bloat in my opinion. Moreover it seems like only xLATZM and xGEGS are the culprit.

Incorrect results MB03WD with increasing period P

The transformation matrices from the MB03WD periodic Schur decomposition are not computed correctly when the period P increases. The slicot example TMB03WD can be used to reproduce the problem, see attached data and result files. When P becomes 18 or larger, the transformation matrices getting incorrectly computed. With P=18 the calculated result NORM (Z'AZ - Aout) = 1.899 becomes very large. While with P=17 the periodic Schur decomposition is still computed correctly, because result NORM (Z'AZ - Aout) = 2.01839D-14 is still very small.

The problem seem to be with periodic Schur decomposition MB03WD and not with the periodic Hessenberg decomposition MB03VD/MB03VY, because using the slicot example TMB03VD with P=18 data shows that the periodic Hessenberg is computed correctly as the result NORM (Q'AQ - Aout) = 8.11581D-15 is very small.

Note, that the MB03WD function did not return any convergence error indicating the computation went wrong.

examples.zip

Create CI/CD for SLICOT

Originally posted by @andreasvarga in #1 (comment)

  1. It would be great if we could provide a testing facility for SLICOT for
    the purpose of CI. Such facility exists also for LAPACK, but we lack
    experience in this area.

  2. I see one of the main usages for SLICOT as a computational kernel for
    control related computations in conjunction with environments like Matlab,
    Python, Julia, Octave. Bulding interfaces to these tools (wrappers,
    mex-files, etc.) involves (probably) the generation of appropriate shared
    libraries for different architectures and compilers. It would be usefull
    for many potential users to have this process largely automated.

Structured singular value of real scalar with real uncertainty

AB13MD gives a BOUND of 0 if Z is 1x1 and the uncertainty is real, even if the value of Z is in fact real; this is due to

IF( ITYPE( 1 ).EQ.1 ) THEN
C
C 1-by-1 real block.
C
BOUND = ZERO
DWORK( 1 ) = ONE
ZWORK( 1 ) = CONE

The correct value of mu if the imaginary component is 0 is abs(Z) (e.g., Skogestad & Postlethwaite first edition, Eq. (8.75)).

I don't know how much of a pointless corner case this is (why bother computing structured singular values of 1x1 matrices?), but it seems fairly easy to fix by either checking for the imaginary component being exactly 0, or perhaps if the absolute value of the imaginary component is less than some tolerance times the absolute value of the real component.

MB4DLZ and MB02SZ use a non Standard BLAS routine

The routines MB4DLZ and MB02SZ reference the DCABS1 routine, which is not available in some BLAS implementations(like ATLAS). In order to get SLICOT working with allmost all BLAS libraries, this routine needs to be replaced or inlined.

Inclusion of AB13HD method for L-infinity norm computation of Descriptor Systems

The function AB13HD (available, e.g., here) written by @VasileSima4 and Matthias Voigt is currently not included in this repository.
However, AB13HD is needed for computing the L-infinity norm, when the E matrix (in an EABCD-system) is singular. The function AB13DD, that is currently available, assumes that E is nonsingular.
Is it possible to include AB13HD into the SLICOT-Reference repository? In this way it would also be automatically available e.g. to julia users via SLICOT_jll.
Can we just open a pull-request with the code from this link or is further testing/documentation needed?

make.inc is missing

The provided makefiles include make.inc, but it is not in this repository.

Here is an old one (from SLICOT-5.0):
make.inc
(to be renamed without .txt, but GH does not accept .inc files)

Of course it must be configured!

The file Installation.txt is also missing:
Installation.txt

Cannot build the makefile in Ubuntu (help wanted)

I an trying to compile SLICOT on Ubuntu.
I deleted all the windows makefile and changed the name of all unix files from makefile_Unix to makefile.
When I hit make, I get:

( cd src; make )
make[1]: Entering directory '/home/charbie/Documents/Programmation/SLICOT-Reference-main/src'
ifort /O2 /fp:source /4I8 -c AB01MD.f
make[1]: ifort: No such file or directory
make[1]: *** [makefile:139: AB01MD.o] Error 127
make[1]: Leaving directory '/home/charbie/Documents/Programmation/SLICOT-Reference-main/src'
make: *** [makefile:46: lib] Error 2

Could you help me please?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.