From ab6ffc5de58499ae836669f3266c643152d50822 Mon Sep 17 00:00:00 2001
From: Martin Bauer <martin.bauer@fau.de>
Date: Sat, 22 Feb 2020 14:55:18 +0100
Subject: [PATCH] Added binder support

---
 README.md              | 21 ++++++++++++++++++---
 binder/apt.txt         |  3 +++
 binder/environment.yml | 35 +++++++++++++++++++++++++++++++++++
 binder/start           |  5 +++++
 4 files changed, 61 insertions(+), 3 deletions(-)
 create mode 100644 binder/apt.txt
 create mode 100644 binder/environment.yml
 create mode 100755 binder/start

diff --git a/README.md b/README.md
index 962e05cb..aa05e6bb 100644
--- a/README.md
+++ b/README.md
@@ -1,19 +1,34 @@
 lbmpy
 =====
 
+[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/mabau/lbmpy/master?filepath=doc%2Fnotebooks)
 [![Docs](https://img.shields.io/badge/read-the_docs-brightgreen.svg)](http://pycodegen.pages.walberla.net/lbmpy)
 [![pipeline status](https://i10git.cs.fau.de/pycodegen/lbmpy/badges/master/pipeline.svg)](https://i10git.cs.fau.de/pycodegen/lbmpy/commits/master)
 [![coverage report](https://i10git.cs.fau.de/pycodegen/lbmpy/badges/master/coverage.svg)](http://pycodegen.pages.walberla.net/lbmpy/coverage_report)
 
 
-Run fast fluid simulations based on the lattice Boltzmann method in Python.
+Run fast fluid simulations based on the lattice Boltzmann method in Python on CPUs and GPUs.
+lbmpy creates highly optimized LB compute kernels in C or CUDA, for a wide variety of different collision operators, including MRT,
+entropic, and cumulant schemes.
 
-![alt text](doc/img/logo.png)
+All collision operators can be easily adapted, for example, to integrate turbulence models, custom force terms, or multi-phase models. 
+It even comes with an integrated Chapman Enskog analysis based on sympy!
+
+Common test scenarios can be set up quickly:
+```python
+ch = create_channel(domain_size=(300,100, 100), force=1e-7, method="trt",
+                    equilibrium_order=2, compressible=True,
+                    relaxation_rates=[1.97, 1.6], optimization={'target': 'gpu'})
+```
+
+To find out more, check out the interactive [tutorial notebooks online with binder](https://mybinder.org/v2/gh/mabau/lbmpy/master?filepath=doc%2Fnotebooks).
 
 
 Installation
 ------------
 
+For local installation use pip:
+
 ```bash
 pip install lbmpy[interactive]
 ```
@@ -36,4 +51,4 @@ Documentation
 -------------
 
 Read the docs [here](http://pycodegen.pages.walberla.net/lbmpy) and
-check out the Jupyter notebooks in `doc/notebooks`.
+check out the Jupyter notebooks in `doc/notebooks`. 
diff --git a/binder/apt.txt b/binder/apt.txt
new file mode 100644
index 00000000..b6243b5e
--- /dev/null
+++ b/binder/apt.txt
@@ -0,0 +1,3 @@
+build-essential
+graphviz
+ffmpeg
diff --git a/binder/environment.yml b/binder/environment.yml
new file mode 100644
index 00000000..8ba6b666
--- /dev/null
+++ b/binder/environment.yml
@@ -0,0 +1,35 @@
+
+# ----------------------------------------------------------------------------------------------------------------------
+# Environment with all dependencies to use pystencils
+#
+#
+# Download conda at https://conda.io/miniconda.html and create this environment by running:
+#     conda env create -f conda_environment_user.yml
+#     . activate pystencils
+#
+# If you have CUDA installed and want to use your GPU, uncomment the last line to install pycuda
+#
+# ----------------------------------------------------------------------------------------------------------------------
+
+name: pystencils
+dependencies:
+  # Basic dependencies:
+  - python >= 3.6
+  - numpy
+  - sympy >= 1.1
+  - appdirs # to find default cache directory on each platform
+  - joblib # caching on hard-disk, this is optional, but if not installed lbmpy is really slow
+  - cython # speed up boundary list computation (optional)
+  - matplotlib
+  - imageio
+  - pandas
+  - scipy
+  - pip
+  - pip:
+      - islpy # used to optimize staggered kernels
+      - py-cpuinfo # get cpu info like cache sizes, supported vector instruction sets, ...
+      - graphviz  # can show abstract syntax trees as formatted graphs
+      - ipy_table  # HTML tables for jupyter notebooks
+      - pyevtk # VTK output for serial simulations
+      - blitzdb # file-based No-SQL database to store simulation results
+      #- pycuda # add this if you have CUDA installed
diff --git a/binder/start b/binder/start
new file mode 100755
index 00000000..658270a3
--- /dev/null
+++ b/binder/start
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+python3 setup.py develop
+
+exec "$@"
\ No newline at end of file
-- 
GitLab