All Projects → evalf → Nutils

evalf / Nutils

Licence: mit
The nutils project

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Nutils

Feelpp
💎 Feel++: Finite Element Embedded Language and Library in C++
Stars: ✭ 229 (+472.5%)
Mutual labels:  finite-elements, scientific-computing
Solidspy
2D-Finite Element Analysis with Python
Stars: ✭ 142 (+255%)
Mutual labels:  finite-elements, scientific-computing
Mfem
Lightweight, general, scalable C++ library for finite element methods
Stars: ✭ 667 (+1567.5%)
Mutual labels:  finite-elements, scientific-computing
PyMFEM
Python wrapper for MFEM
Stars: ✭ 91 (+127.5%)
Mutual labels:  scientific-computing, finite-elements
Mathext
mathext implements basic elementary functions not included in the Go standard library [DEPRECATED]
Stars: ✭ 18 (-55%)
Mutual labels:  scientific-computing
Casadi
CasADi is a symbolic framework for numeric optimization implementing automatic differentiation in forward and reverse modes on sparse matrix-valued computational graphs. It supports self-contained C-code generation and interfaces state-of-the-art codes such as SUNDIALS, IPOPT etc. It can be used from C++, Python or Matlab/Octave.
Stars: ✭ 714 (+1685%)
Mutual labels:  scientific-computing
Learn Julia The Hard Way
Learn Julia the hard way!
Stars: ✭ 679 (+1597.5%)
Mutual labels:  scientific-computing
Moose
Multiphysics Object Oriented Simulation Environment
Stars: ✭ 652 (+1530%)
Mutual labels:  finite-elements
Pytim
a python package for the interfacial analysis of molecular simulations
Stars: ✭ 38 (-5%)
Mutual labels:  scientific-computing
Eliot
Eliot: the logging system that tells you *why* it happened
Stars: ✭ 874 (+2085%)
Mutual labels:  scientific-computing
Ocaml Odepack
Binding to the ODEPACK FORTRAN library
Stars: ✭ 6 (-85%)
Mutual labels:  scientific-computing
Dealii
The development repository for the deal.II finite element library.
Stars: ✭ 737 (+1742.5%)
Mutual labels:  finite-elements
Owl
Owl - OCaml Scientific and Engineering Computing @ http://ocaml.xyz
Stars: ✭ 919 (+2197.5%)
Mutual labels:  scientific-computing
Reflow
A language and runtime for distributed, incremental data processing in the cloud
Stars: ✭ 706 (+1665%)
Mutual labels:  scientific-computing
Nasoq
NASOQ:Numerically Accurate Sparsity Oriented QP Solver
Stars: ✭ 30 (-25%)
Mutual labels:  scientific-computing
Linfa
A Rust machine learning framework.
Stars: ✭ 812 (+1930%)
Mutual labels:  scientific-computing
Mare
MaRe leverages the power of Docker and Spark to run and scale your serial tools in MapReduce fashion.
Stars: ✭ 11 (-72.5%)
Mutual labels:  scientific-computing
Itk
Insight Toolkit (ITK) -- Official Repository. ITK builds on a proven, spatially-oriented architecture for processing, segmentation, and registration of scientific images in two, three, or more dimensions.
Stars: ✭ 801 (+1902.5%)
Mutual labels:  scientific-computing
Pyopencl
OpenCL integration for Python, plus shiny features
Stars: ✭ 790 (+1875%)
Mutual labels:  scientific-computing
Edge
Extreme-scale Discontinuous Galerkin Environment (EDGE)
Stars: ✭ 18 (-55%)
Mutual labels:  scientific-computing

Nutils

Test Status Coverage Status DOI

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.

Installation

Nutils 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 the official installer.

With Python installed, the recommended way to install the latest stable version of Nutils is through pip (included in the standard installer):

python3 -m pip install --user nutils

By default and without explicitly specifying the source of the given packages, pip installs packages from the Python Package Index. To install the latest development version of Nutils, pass a zip of branch master of the official repository to pip:

python3 -m pip install --user https://github.com/evalf/nutils/archive/master.zip

To view which version of Nutils is currently installed, run:

python3 -m pip show nutils

First steps

To 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 file log.html and any produced figures are written to public_html/<script_name>/yyyy/mm/dd/hh-mm-ss 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.

Docker

Docker container images with the latest and recent stable versions of Nutils preinstalled are available from ghcr.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 example laplace using the latest version of Nutils with

docker run --rm -it ghcr.io/evalf/nutils:latest laplace

HTML log files are generated in the /log directory of the container. If you want to store the log files in /path/to/log on the host, add -v /path/to/log:/log to 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 laplace

To run a Python script in this container, bind mount the directory containing the script, including all files necessary to run the script, to /app in 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.py with Docker using

docker run --rm -it -v /path/to/script:/app:ro ghcr.io/evalf/nutils:latest example.py

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 #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 consider citing Nutils.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].