Fino, a free finite element solver

Fino: a free finite-element solver 

Fino is a free and open source tool that uses the finite-element method to solve

  • steady-state thermo-mechanical problems, or
  • steady or transient heat conduction problems, or
  • modal analysis problems.

It is particularly designed to handle complex dependence of material properties (i.e. temperature-dependent properties). It can also perform parametric or optimization runs. The domain over which the problem is solved should be a grid generated by Gmsh. The material properties and boundary conditions may involve arbitrary dependence of space associated to physical entities defined in the mesh.

Fino follows, amongst others, the UNIX philosophy. Fino is a back-end aimed at advanced users. For an easy-to-use web-based front-end with Fino running in the cloud, see CAEplex:

A beam modeled with CAEplex

1 Quick start

“It is really worth any amount of time and effort to get away from Windows if you are doing computational science.”

Open a terminal in a GNU/Linux box (may be a VirtualBox box) and install the following tools and libraries:

sudo apt-get install m4 make autoconf automake gcc g++ git findutils
sudo apt-get install libgsl-dev libsundials-serial-dev libreadline-dev petsc-dev slepc-dev

If your distribution does not have a bundled version of PETSc or SLEPc, then you might need to compile them yourself (SLEPc is optional for Fino). Ask for help in the mailing list.

Clone the Fino repository, bootstrap (might take a while as it has to clone and bootstrap wasora first), configure, compile, check and install:

git clone
cd fino
make check
sudo make install

If these instructions are non-sense to you, go directly to the mailing list.

Note that you also need to have a working and reasonably-recent version of Gmsh in order to use Fino. See for further information.

2 Features

Fino uses a main input file (see below for examples), that in turn instructs Fino to read one or more mesh files in Gmsh format. Fino works on top of the wasora framework so it shares its design basis and inherits all of its features:

Output is 100% defined in the input file. If no explicit output instruction is provided, Fino remains silent (as required by the UNIX rule of silence). Besides terminal and plain-text files (e.g. user-defined results in JSON), post-processing files in VTK o MSH formats can be generated.

3 Examples

See the directory examples for further cases.

3.1 Tensile test

Let us consider the example input file examples/tensile-test.fin:

If we ran this example from a terminal, we would get something like this:

The three lines with the dots, dashes and double dashes are ASCII progress bars for the assembly of the stiffness matrix, the solution of the linear system and the computation of stresses, respectively. We can process the VTK output file with the free tool ParaView:

Tensile test results.
Tensile test results.

3.2 Cantilever beam with first & second order elements

Cantilever beam displacement for different grids and element order.
Cantilever beam displacement for different grids and element order.

3.3 Thermal conduction in a piston engine

Problem taken from Simscale’s thermal tutorial:

Fino results.
Fino results.
Simscale (CalculiX) results.
Simscale (CalculiX) results.

3.4 Conic valve

Can your solver constrain your model faces to algebraically-defined surfaces such as cones? Ours can (and it is open source):

Conic valve 

See the original tweet at

3.5 Thermal expansion of finite cylinders

Veeder Benchmark problem
Veeder Benchmark problem


4 Licensing

Fino is distributed under the terms of the GNU General Public License version 3 or (at your option) any later version. The following text was borrowed from the Gmsh documentation, and replacing “Gmsh” with “Fino” gives:

Fino is “free software”; this means that everyone is free to use it and to redistribute it on a free basis. Fino is not in the public domain; it is copyrighted and there are restrictions on its distribution, but these restrictions are designed to permit everything that a good cooperating citizen would want to do. What is not allowed is to try to prevent others from further sharing any version of Fino that they might get from you.

Specifically, we want to make sure that you have the right to give away copies of Fino, that you receive source code or else can get it if you want it, that you can change Fino or use pieces of Fino in new free programs, and that you know you can do these things.

To make sure that everyone has such rights, we have to forbid you to deprive anyone else of these rights. For example, if you distribute copies of Fino, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights.

Also, for our own protection, we must make certain that everyone finds out that there is no warranty for Fino. If Fino is modified by someone else and passed on, we want their recipients to know that what they have is not what we distributed, so that any problems introduced by others will not reflect on our reputation.

The precise conditions of the license for Fino are found in the General Public License that accompanies the source code. Further information about this license is available from the GNU Project webpage

5 Further information

Home page:
Mailing list and bug reports: (you need to subscribe first at )
Web interface for mailing list:
Follow us: Twitter YouTube LinkedIn Bitbucket

Fino is copyright ©2014-2018 Jeremy Theler
Fino is licensed under GNU GPL version 3 or (at your option) any later version.
Fino is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
See the file COPYING for copying conditions.