TUFLOW on Linux
Introduction
Starting at version 2026.0, TUFLOW Classic/HPC will also be available for Linux, just like TUFLOW FV has been since its inception. Although the application functions the same on either Microsoft Windows or Linux, there are some caveats to consider especially when working across both platforms within a single project.
How to install
TUFLOW for Linux will be made available in two types of packages, .deb for Debian family distributions (like Debian, Ubuntu, Mint, etc.) and .rpm for RHEL family distributions (Red Hat, CentOS, Rocky, etc.).
These can be downloaded and installed with tools that are available on any Linux distribution by default. It is recommended that admins use dnf or apt respectively, to ensure that dependencies are automatically downloaded and installed as needed.
How to use
After installation, TUFLOW will be available from the command line as tuflow_2026.0. Users may define an alias like alias tuflow='tuflow_2026.0' or use the specific versioned command directly in their scripts. Command-line options are passed just as in Windows.
However, because Linux often runs without a graphical environment, TUFLOW on Linux runs as if the -nmb option was provided.
Use across both Microsoft Windows and Linux
Some of the quirky differences between Windows and Linux will affect users that want to use TUFLOW across both systems.
By no means a complete overview, but these are some aspects to consider:
- Slashes and backslashes
Windows uses backslashes in file and directory paths likeD:\Project\results\. Linux uses forward slashes instead like~/Project/resultsand will often interpret characters following backslashes as special characters. TUFLOW will usually deal with either format on either system in configuration files, but when writing scripts or commands users should remain aware. Also, logs and outputs referring to files will use the format appropriate to the system it is running on. - Drive letters
Drive letters likeD:are specific to Windows. Configuration files that need to be usable across both systems should avoid their use and instead use relative paths like../Model/Materials_001.csvor absolute paths that assume the file is on the current drive like/Project/model/Materials_001.csv. - Character case in names
Windows is case-insensitive, which means that files calledHello.TXTandhello.txtare considered to have the same name, and cannot exist in the same location. Linux is case-sensitive and considers uppercase characters and lowercase characters to be different, and so those two files can exist side by side. This is very relevant if TUFLOW users use one spelling in one place, and the other in another - whereas Windows might interpret both references to point to the same file, on Linux they would result in two separate files. Similarly, if a file's name is spelled with different case from its actual name, a Windows application would find it, and a Linux application might not. (see below) - Encoding and special characters
On older versions of Windows in English-speaking countries, text files (including TUFLOW configuration files) would use the 1252-Windows encoding. In modern versions of Windows, UTF-8 with BOM is the standard. On Linux UTF-8 without BOM is the standard. TUFLOW accepts any of these encodings and will typically write files in UTF-8 without BOM. On Windows, line endings in such text files are encoded as two characters, a carriage return and a line feed (CR/LF), while Linux uses only a single LF. TUFLOW accepts both forms and writes what is appropriate to the system it is running on.
To ensure maximum compatibility of models across systems, TUFLOW will do its best to match names in the model files in the same way between Windows and Linux. This may surprise some new users on Linux and can be disabled with a command-line flag if undesirable, in future releases.
As a general principle, TUFLOW will default to trying to run a model with as little change as possible required across both platforms, writing results in a form that is appropriate to the platform it runs on. Future releases may provide users with more control over this behaviour, if needed.
Common Questions Answered (FAQ)
Why use TUFLOW on Linux at all?
TUFLOW on Linux is not just for users that use Linux as their primary work environment, although those certainly exist. Other reasons to consider are:
- Performance
Servers or workstations that are dedicated for the running of models can be configured to run TUFLOW and the necessary supporting software (e.g. CodeMeter, NVIDIA GPU drivers, etc.) and very little else, using Linux. There may also be small performance differences in general between an executable built and optimised for Windows or Linux. - Infrastructure cost
Especially relevant when running virtual machines dedicated to running TUFLOW, or many of those in the cloud, most distributions of Linux do not require a licence whereas Windows does. This can substantially reduce the cost of infrastructure. - HPC tooling
Automation of running TUFLOW models across many computers or in the cloud can be greatly simplified with tooling designed for that purpose. Many such tools are available "off the shelf", but mostly on Linux. (e.g. SLURM, PBS/Torque, etc.). Similarly, containerisation (e.g. Docker, Podman, LXC) typically requires running on Linux as well.
Must TUFLOW users on Linux use the command line interface?
Linux offers a variety of desktop environments and TUFLOW can be used from those just like users would using Microsoft Windows. However, in either case TUFLOW itself is always running as a so-called console application and that makes it uniquely suited to running in lightweight non-graphical environments as well.
Like Windows, Linux offers a variety of scripting options that can help minimise the direct use of the command line by users, if that is desirable. Bash shell scripts are as easy to write and run as batch files are on Windows. Running Python or even PowerShell on Linux is easy to set up as well.
However, given the nature of the application and Linux as an operating system, TUFLOW users on Linux would do well to try and understand some of the very basic of using TUFLOW from the command line and the TUFLOW Support team can assist with that.