Package: nutils
NutilsNutils is a Free and Open Source Python programming library for Finite Element
Method computations, developed byEvalf Computingand 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.InstallationNutils is platform independent and is known to work on Linux, Windows and macOS.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 theofficial installer.With Python installed, the recommended way to install the latest stable version
of Nutils is throughpip(included in the standard installer):python3 -m pip install --user nutilsBy default and without explicitly specifying the source of the given packages,
pip installs packages from thePython Package Index. To install the latest
development version of Nutils, pass a zip of branch master of theofficial
repositoryto pip:python3 -m pip install --user https://github.com/evalf/nutils/archive/master.zipTo view which version of Nutils is currently installed, run:python3 -m pip show nutilsNutils can be installed in a Windows machine using WSL environment.
If you want to assemble matrices in parallel using nutils on a Windows machine,
then WSL is the way to go. Instructions to setup WSL are availablehere.
After setting up WSL, nutils can be installed using the above instructions.First stepsTo confirm Nutils and its dependencies are installed correctly, try to run the
Laplace example or any of the other examples included in this repostitory. Make
sure to use the same version of an example as the version of Nutils that is
currently installed.When running an example from a terminal or editor with Python console, log
messages should appear in the terminal or console. Simulateneously, a html filelog.htmland any produced figures are written topublic_html/<script_name>/yyyy/mm/dd/hh-mm-ssin 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.htmlalways redirects to the most recent simulation.DockerDockercontainer images with the latest and recent stable versions of
Nutils preinstalled are available fromghcr.io/evalf/nutils. The
container images includes all examples in this repository. To run an example,
add the name of the example and any additional arguments to the command line.
For example, you can run examplelaplaceusing the latest version of Nutils
withdocker run --rm -it ghcr.io/evalf/nutils:latest laplaceHTML log files are generated in the/logdirectory of the container. If
you want to store the log files in/path/to/logon the
host, add-v /path/to/log:/logto the command line before the
name of the image. Extending the previous example:docker run --rm -it -v /path/to/log:/log ghcr.io/evalf/nutils:latest laplaceTo run a Python script in this container, bind mount the directory
containing the script, including all files necessary to run the script,
to/appin the container and add the relative path to the script and
any arguments to the command line. For example, you can run/path/to/script/example.pywith Docker usingdocker run --rm -it -v /path/to/script:/app:ro ghcr.io/evalf/nutils:latest example.pyNext steps and supportFor the numerical background of all examples as well as line by line
documentation see theoverview of examples. Documentation of individual
functions can be found in theAPI 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#nutils-users:matrix.org. 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 considerciting
Nutils.