Technical Programs

The following sections describe some of the many available programs installed on all our computation servers. These programs are mainly the ones that offer a `complete' environment for a particular type of work. Note that any program can be installed and run by the user, in for example the home-directory (for smallish programs) or /local (for enormous things), using the environment to override system-installed versions. The old pages may also be of interest.

I aim to keep old versions of widely used proprietary programs, in case anyone needs an older version -- regressions and incompatibilities are not uncommon. Using just the name, e.g. `matlab', will get the newest version that isn't known to have problems. Adding a version number will get specific versions, (e.g. matlab-7.1). In a shell, just type the command name followed by the Tab key a couple of times, to see the available versions. Or, for most such programs, look under the /pkg directory.

Modern programs for simulation can sometimes speed up the programming and improve the finding and removal of errors in the model. Often, however, a large price is paid in speed of execution, compared to for example writing the simulation in a compiled language, perhaps making use of some libraries. A further problem with proprietary programs is the restriction on which or how many computers may run them, and of what will happen in a few years if the program isn't continued or has changed a lot; here, too, a compiled language is likely to be better, particularly if using only standard or widely-used Free libraries. So, if a simulation is to be run many many times during one's project, and to be maintained in the group after that, it may be useful to code the simulation in a compiled language. For prototyping and short runs, however, a domain-specific program is almost certainly the better option.

General Numerical Work

Matlab

Matlab is a (proprietary) interpreter for a matrix-oriented language, with a lot of `toolboxes' of functions available under our site licence. It's unlikely that anyone here needs more introduction, though perhaps some features and functions are not known to them: for example, there is recently support for multi-threading of some core functions (see the optimisation page), and besides the regular text-based scripting language with many available `toolboxes', there are Simulink (mentioned below), the symbolic maths toolbox (further below), Stateflow, and a compiler (mcc) for compiling stand-alone executables (in my experience even slower than normal Matlab).
[A more negative view of the UI aspects is here.]

Scilab

Scilab is a (Free) interpreted numerical computation environment, with similar application areas to those of Matlab, but with a mildly different syntax. Its linear algebra routines, in our installation, take advantage of the threaded BLAS/LAPACK libraries.

Comsol Script

Comsol script is basically a proprietary Matlab-like Matlab-competitor. It only appeared recently, but is developing rapidly. Except in conjunction with `Comsol Multiphysics' there's probably not any point using it instead of Matlab, since we have all parts of both programs available to us anyway so the cost issue is unimportant.

GNU R

R is an interpreter for the R language (a derivative of `S'), with very good plotting capabilities and a general flavour of statistics, statistical tests, neural networks, etc. (but it's much broader than that). We have a printed quick-start manual, which is also available on the web. The interpreter can be started with the command `R'.

Euler

Euler is another numerical computation environment with display capabilities.

GNU Octave

Octave is a (Free) interpreter for a language intentionally very similar to Matlab; it is not as rich in functions. Quick startup is one potential advantage. Scripts can be made directly executable (make the first line be "#!/usr/bin/octave -qf" (no `"' symbol). A simple GUI exists (a third-party add-on), called as `koctave3'.

FreeMat

FreeMat is another Matlab-like program aiming to have quite similar syntax (as with octave) and its own graphical interface (as with scilab). It is not at all as intensely developed as Scilab.

Field Solvers

The following are all FEM programs. Comsol and Ace have modes that pre-specify the necessary equations for various physics applications, requiring just the parameters to be supplied. Ace doesn't really have any other (general PDE) mode. FreeFem and Elmer are pure PDE systems, requiring rather more knowledge.

Comsol

Comsol Multiphysics (formerly `Femlab'). The Multiphysics (i.e. FEM) GUI is started as `comsol'. The scripting interpreter is `comsol script'. To start Matlab with comsol solvers and functions available, `comsol matlab'. To start a server (calculation) and client (GUI), use `comsol server' and `comsol client'; these can run on different computers. Brief help on command-line options: `comsol -help'.

Note (Comsol bugs to work around): Errors such as `Unable to initialize com.mathworks.mwswing.MJStartup' when starting matlab alone after `comsol matlab' are generally because of the files `classpath.txt' and `java.opts' being left in the working directory by the `comsol matlab' session: remove these!! Errors of document browser not found are (often) due to a silly `feature' of comsol writing details of paths into a user's home on the first time it's started -- if it's started on another computer with a different path to the comsol program then it has problems that would not have happened if it had just worked out the path each time: the easiest fix is to set the browser manually in the GUI preferences dialogue to e.g. `/pkg/comsol/3.3/doc/browser' (this would work on all systems here) rather than prepending `/local' as comsol does.

Comsol 3.3a has some multi-threading support, at least in the `pardiso' solver. Comsol 3.4 has supposedly full multi-threading support, with a configurable number of threads, but this has not yet been seen to give large improvements in our work, and is sometimes even a hindrance. See the multithreading section of the optimisation page.

When calling comsol with matlab (comsol matlab) the Matlab version is set generally to an old Matlab version from before the comsol release: otherwise they tend to have problems. To change the Matlab version, set the shell variable MLROOT to the base directory of the Matlab version that you want, e.g. MLROOT=/pkg/matlab/7.4 comsol matlab

Ace

Ace is a FEM program oriented to electrical and magnetic transient and steady-state analysis in 2D; it is proprietary, from ABB. A set of reference pages can be found from the program's GUI's own Help menu, or by searching for pdf files under the installation directory (/pkg/ace).

FreeFem++

FreeFem++ is a FEM-based solver for a C++-like minilanguage that describes PDEs. There are several commands (in /usr/local/bin) for a basic solver, client-server, opengl-based and IDE (editor, run-button, plotting). The command `FreeFem++-cs' starts the GUI in client-server mode, which has worked well for me: the command `FreeFem++-ide' won't directly provide a working simulation. Read the excellent manual, from the website, for much more detail. The package is installed in /usr/local, so some example files are in /usr/local/share/FreeFem++_Examples .

FreeFem3D

FreeFem3D is a non-GUI solver, of the same family as FreeFem++ but for 3D problems. The commmand is `ff3d', and documentation and example files are in /usr/local/share/doc/freefem3d . Run a file ending in .ff from the examples directory, as an argument to the ff3d command.

Elmer

Elmer is another minilanguage and solver for FEM programs. A basic compilation is in /opt/elmer on diagsim; users are advised to compile their own or get a binary, if the system's copy doesn't do as desired.

General Dynamic System Solvers

These programs solve systems of ODE|DAEs, for text or GUI input.

Matlab Simulink

Simulink is a dynamic-system simulation program, using graphical block-diagram interaction. It has some `blocksets' to add application-specific functionality. It can be started from within Matlab.

Scicos

Scicos is a graphical dynamic-system simulator for Scilab. It is included with the Scilab releases. The website claims that blocks written in Modelica can be included, as can Scilab, C and Fortran code. It can generate C code for the whole system. The program is multi-platform and Free, which is a large benefit for use by collaborators, students, and for running simulations on many computers at once.

Dymola

Dymola is a proprietary GUI and solver for dynamic systems expressed in a graphical modelling language called Modelica. Several versions are available; their names start with `dymola'.

OpenModelica

OpenModelica is a `Modelica modeling, compilation and simulation environment' from LiU. This looks quite promising, if it and dymola can be got to work together, with this perhaps being a way to get fast executables for batched simulations. We have a 32-bit downloaded version available (commands: gui interpreter `OMShell', writing and simulating `OMNotebook', compiler `omc'). Being free software, this can be downloaded by users, (presumably) compiled for 64bit systems, etc.

Saber

Saber is a circuit and device simulation environment, used mainly in electronics. Its commands are `saber', `scope' and `sketch'. By obvious similarities in the equations describing electronic circuits, mechanical systems, thermal condcution etc., such a simulation program can be applied to a wider domain than just electronics.

Sandys

Sandys is a general-purpose ODE solver: the non-GUI, ODE-rather-than-PDE, complement to Ace, also from ABB. It is console-based, apart from a Motif GUI for viewing results. User functions in Fortran can be linked with the core Sandys solver. Some M3 users have pre-existing code that depends on this. Anyone else is recommended to avoid it, and to use libraries of Free Fortran, C or other ODE solvers, or else Matlab or similar. There is little maintenance, no guarantee of continuation, and the usual licensing inconvenience (that it might just stop working because of changed hardware, expired licence etc.). The command is `sandys'. Look in its installation directory /pkg/sandys for a pdf manual.

Computer Algebra

The main difference of these compared to the general numerical environments described above is that they are aimed mainly at the use of logic to rearrange equations, rather than on solving for numerical values. A program that can confirm a complicated rearrangement or vector solution is very valuable, since mistakes so easily can arise when doing these often rather mechanical tasks manually. Note that even some numerical environments may include some sort of algebraic commands: e.g. Matlab has a `symbolic math' toolbox.

An AMS page has a list of some general mathematical (algebraic or numerical) software, with links to further such pages.

Maple

[Univ. of] Waterloo Maple is a proprietary computer algebra program, widely used. It is called as `xmaple' for the GUI program, or `maple' for a console-based interface.

Axiom, Maxima, Yacas, Mathomatic

Axiom has a long history, and was recently released under an open source licence. It is a strongly-typed computer algebra system, and is really rather clever! The current version starts as a GUI together with a command line (command: `axiom'). Maxima is another such program with a long history (command: `maxima'). Yacas is, the acronym states, `Yet another' computer algebra system (command: `yacas'). Mathomatic is an `algebraic calculator' for solving, simplifying etc. equations and for generating program code to implement them (command: `mathomatic'). Pari is an algebra program oriented to number theory (command: `gp'). By running these programs as sessions in TeXmacs, one can have the ASCII output of Axiom converted into beautiful, easily read, equations.

Other: Mathematica

Mathematica is a (proprietary) maths program which is held in high regard and has a very wide range of capabilities and interoperability. The only problem is that we don't have it (as it was extremely expensive to license, last time I was asked to check, and no-one here has wanted it for anything other than amusement). Its full documentation is available on the web, to whet prospective users' appetites.

General Scripting Languages

The general-purpose scripting languages Python and Perl are covered in more detail on another page. Python's SciPy and Matplotlib may in particular be of interest for technical work, as may its use for binding C, Fortran etc. routines together.

Other

Paraview is a program for visualisation of data (command: `paraview').


Page started: 2007-11-xx
Last change: 2008-12-01