Skip to main content

PyTorch implementation of Deep Learning methods to solve differential equations

Project description

TorchPhysics is a Python library of (mesh-free) deep learning methods to solve differential equations. You can use TorchPhysics e.g. to

  • solve ordinary and partial differential equations

  • train a neural network to approximate solutions for different parameters

  • solve inverse problems and interpolate external data

The following approaches are implemented using high-level concepts to make their usage as easy as possible:

  • physics-informed neural networks (PINN) [1]

  • QRes [2]

  • the Deep Ritz method [3]

  • DeepONets [4] and Physics-Informed DeepONets [5]

We aim to also include further implementations in the future.

TorchPhysics is build upon the machine learning library PyTorch.

Features

The Goal of this library is to create a basic framework that can be used in many different applications and with different deep learning methods. To this end, TorchPhysics aims at a:

  • modular and expandable structure

  • easy to understand code and clean documentation

  • intuitive and compact way to transfer the mathematical problem into code

  • reliable and well tested code basis

Some built-in features are:

  • mesh free domain generation. With pre implemented domain types: Point, Interval, Parallelogram, Circle, Triangle and Sphere

  • loading external created objects, thanks to a soft dependency on Trimesh and Shapely

  • creating complex domains with the boolean operators Union, Cut and Intersection and higher dimensional objects over the Cartesian product

  • allowing interdependence of different domains, e.g. creating moving domains

  • different point sampling methods for every domain: RandomUniform, Grid, Gaussian, Latin hypercube, Adaptive and some more for specific domains

  • different operators to easily define a differential equation

  • pre implemented fully connected neural network and easy implementation of additional model structures

  • sequentially or parallel evaluation/training of different neural networks

  • normalization layers and adaptive weights [6] to speed up the training process

  • powerful and versatile training thanks to PyTorch Lightning

    • many options for optimizers and learning rate control

    • monitoring the loss of individual conditions while training

Getting Started

To learn the functionality and usage of TorchPhysics we recommend to have a look at the following sections:

Installation

TorchPhysics reqiueres the follwing dependencies to be installed:

Installing TorchPhysics with pip, automatically downloads everything that is needed:

pip install torchphysics

Additionally, to use the Shapely and Trimesh functionalities, install the library with the option all:

pip install torchphysics[all]

If you want to add functionalities or modify the code. We recommend copying the repository and installing it locally:

git clone https://github.com/boschresearch/torchphysics
cd path_to_torchphysics_folder
pip install .[all]

About

TorchPhysics was originally developed by Nick Heilenkötter and Tom Freudenberg, as part of a seminar project at the University of Bremen, in cooperation with the Robert Bosch GmbH. Special thanks belong to Felix Hildebrand, Uwe Iben, Daniel Christopher Kreuter and Johannes Mueller, at the Robert Bosch GmbH, for support and supervision while creating this library.

Contribute

If you are missing a feature or detect a bug or unexpected behaviour while using this library, feel free to open an issue or a pull request in GitHub or contact the authors. Since we developed the code as a student project during a seminar, we cannot guarantee every feature to work properly. However, we are happy about all contributions since we aim to develop a reliable code basis and extend the library to include other approaches.

License

TorchPhysics uses an Apache License, see the LICENSE file.

Bibliography

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

torchphysics-1.0.2.tar.gz (9.6 MB view details)

Uploaded Source

Built Distribution

torchphysics-1.0.2-py2.py3-none-any.whl (121.6 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file torchphysics-1.0.2.tar.gz.

File metadata

  • Download URL: torchphysics-1.0.2.tar.gz
  • Upload date:
  • Size: 9.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for torchphysics-1.0.2.tar.gz
Algorithm Hash digest
SHA256 95287154ed36ad330a97067bc48b3f443cd2dc85d7ee49e5e4f2d75e7ca04904
MD5 8efeb6cb9b67cdd50596c3fa96bd1c71
BLAKE2b-256 53ba3f2d962301e6f75187036efdcefaf0db262052cd00ec64cf28e31718bd94

See more details on using hashes here.

File details

Details for the file torchphysics-1.0.2-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for torchphysics-1.0.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 78d6a11ed301f5152b7b78a0d45a3598a29c9bf02e6db135e9c74253baa109b4
MD5 4bb97e236d080a86d21250c625ef1c69
BLAKE2b-256 9dc1168bd44feb65ebf77bcb1d63d796725aff5c5cbca0abe3b54b65d0efd5af

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page