Skip to content
The nutils project
Branch: master
Clone or download
gertjanvanzwieten Merge pull request #443 from gertjanvanzwieten/sampled
add Sample.basis, change function.Sampled
Latest commit 06ae2d1 Jul 17, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs Revert "replace d:x, n_i with J:x, n:x_i in examples, tut." Jul 3, 2019
examples Revert "replace d:x, n_i with J:x, n:x_i in examples, tut." Jul 3, 2019
nutils add Sample.basis, change function.Sampled Jul 12, 2019
tests add Sample.basis, change function.Sampled Jul 12, 2019
.coveragerc move html report of coverage to build/coverage Jan 12, 2018
.gitignore use toctree for generated docs, rename directories Jul 24, 2018
.travis.yml fix pypy travis, cache pip Jul 2, 2019
CHANGELOG.rst add changelog entry Jul 12, 2019
LICENSE embed MIT license in all source files Dec 8, 2017 update readme Jul 24, 2018
readthedocs.yml restructure setup extras, make mpl, scipy optional Nov 28, 2018


Nutils is a Free and Open Source Python programming library for Finite Element Method computations, developed by Evalf Computing and distributed under the permissive MIT license. Key features are a readable, math centric syntax, an object oriented design, strict separation of topology and geometry, and high level function manipulations with support for automatic differentiation.

Nutils provides the tools required to construct a typical simulation workflow in just a few lines of Python code, while at the same time leaving full flexibility to build novel workflows or interact with third party tools. With native support for Isogeometric Analysis (IGA), the Finite Cell method (FCM), multi-physics, mixed methods, and hierarchical refinement, Nutils is at the forefront of numerical discretization science. Efficient under-the-hood vectorization and built-in parallellisation provide for an effortless transition from academic research projects to full scale, real world applications.


Nutils is platform independent and is known to work on Linux, Windows and OS X.

A working installation of Python 3.5 or higher is required. Many different installers exist and there are no known issues with any of them. When in doubt about which to use, a safe option is to go with the official installer.

With Python installed, the recommended way to install Nutils is to clone the repository, followed by an editable installation using pip (included in the standard installer):

$ git clone
$ python3 -m pip install --user --editable nutils

This will install Nutils locally along with all dependencies. Afterward a simple git pull in the project directory will suffice to update Nutils with no reinstallation required.

Alternatively it is possible to install Nutils directly:

$ python3 -m pip install --user nutils

This will download the latest stable version from the Python Package Index and install it along with dependencies. However, since this installation leaves no access to examples or unit tests, in the following is is assumed that the former approach was used.

First steps

A good first step after installing Nutils is to confirm that all unit tests are passing. With the current working directory at the root of the repository:

$ python3 -m unittest -b

Note that this might take a long time. After that, try to run any of the scripts in the examples directory, such as the Laplace problem:

$ python3 examples/

Log messages should appear in the terminal during operation. Simulateneously, a html file log.html and any produced figures are written to public_html/ in the home directory. In case a webserver is running and configured for user directories this automatically makes simulations remotely accessible. For convenience, public_html/log.html always redirects to the most recent simulation.

Next steps and support

For the numerical background of all examples as well as line by line documentation see the overview of examples. Documentation of individual functions can be found in the API reference.

Most simulations will have components in common with the example scripts, so a mix-and-match approach is a good way to start building your own script. For questions that are not answered by the API reference there is the nutils-users support channel at Note that you will need to create an account at any Matrix server in order to join this channel.

If you are using Nutils in academic research, please consider citing Nutils.

You can’t perform that action at this time.