idrlnet/README.md

84 lines
3.0 KiB
Markdown

[![License](https://img.shields.io/github/license/analysiscenter/pydens.svg)](https://www.apache.org/licenses/LICENSE-2.0)
[![Python](https://img.shields.io/badge/python-3.8-blue.svg)](https://python.org)
[![Documentation Status](https://readthedocs.org/projects/idrlnet/badge/?version=latest)](https://idrlnet.readthedocs.io/en/latest/?badge=latest)
## Installation
### Docker
```bash
git clone https://github.com/idrl-lab/idrlnet
cd idrlnet
docker build . -t idrlnet_dev
docker run -it -p [EXPOSED_SSH_PORT]:22 -v [CURRENT_WORK_DIR]:/root/pinnnet idrlnet_dev:latest bash
```
### Anaconda
```bash
git clone https://github.com/idrl-lab/idrlnet
cd idrlnet
conda create -n idrlnet_dev python=3.8 -y
conda activate idrlnet_dev
pip install -r requirements.txt
pip install -e .
```
# IDRLnet
IDRLnet is a machine learning library on top of [Pytorch](https://www.tensorflow.org/). Use IDRLnet if you need a machine
learning library that solves both forward and inverse partial differential equations (PDEs) via physics-informed neural
networks (PINN). IDRLnet is a flexible framework inspired by [Nvidia Simnet](https://developer.nvidia.com/simnet>).
## Features
IDRLnet supports
- complex domain geometries without mesh generation. Provided geometries include interval, triangle, rectangle, polygon,
circle, sphere... Other geometries can be constructed using three boolean operations: union, difference, and
intersection;
- sampling in the interior of the defined geometry or on the boundary with given conditions.
- enables the user code to be structured. Data sources, operations, constraints are all represented by ``Node``. The graph
will be automatically constructed via label symbols of each node. Getting rid of the explicit construction via
explicit expressions, users model problems more naturally.
- solving variational minimization problem;
- solving integral differential equation;
- adaptive resampling;
- recover unknown parameters of PDEs from noisy measurement data.
It is also easy to customize IDRLnet to meet new demands.
- Main Dependencies
- [Matplotlib](https://matplotlib.org/)
- [NumPy](http://www.numpy.org/)
- [Sympy](https://https://www.sympy.org/)==1.5.1
- [pytorch](https://www.tensorflow.org/)>=1.7.0
## Contributing to IDRLnet
First off, thanks for taking the time to contribute!
- **Reporting bugs.** To report a bug, simply open an issue in the GitHub "Issues" section.
- **Suggesting enhancements.** To submit an enhancement suggestion for IDRLnet, including completely new features and
minor improvements to existing functionality, let us know by opening an issue.
- **Pull requests.** If you made improvements to IDRLnet, fixed a bug, or had a new example, feel free to send us a
pull-request.
- **Asking questions.** To get help on how to use IDRLnet or its functionalities, you can as well open an issue.
- **Answering questions.** If you know the answer to any question in the "Issues", you are welcomed to answer.
## The Team
IDRLnet was originally developed by IDRL lab.