Skip to content

forbes-group/super_hydro

Repository files navigation

Super_Hydro: Exploring Superfluids

Welcome to the super_hydro superfluid explorer. This project provides a way to develop intuition about superfluid dynamics through a series of interactive demonstrates where you can play with various superfluid demonstrations. The simplest way to get started is to install the explorer, then explore the various example notebooks.

For better performance, however, the explored can be run as a client-server application with the computations being run on a high-performance server (preferably with an Nvidia GPU) while you interact with the client on your device.

Installing Super_Hydro

Although super_hydro can be installed directly with Pip:

python3 -m pip install super_hydro

it is recommended that you first create a Conda environment with any performance libraries such as the FFTW libraries or the NVIDIA CUDA toolkit (only if you have a suitable NVIDIA GPU):

conda env create -n super_hydro -f anaconda-project.yaml
conda install -n super_hydro conda-forge::pyfftw # FFTW support
conda install -n super_hydro conda-forge::cupy   # GPU support
conda activate super_hydro
python3 -m pip install super_hydro[fftw,gpu]     # Choose your options

The reason is that Pip cannot install the binary dependencies, and there can be subtle version issues that Conda resolves.

If you want to use the notebook demonstrations, then you should also install the super_hydro [Jupyter] kernel:

python3 -m ipykernel install --user --name "super_hydro" --display-name "Python 3 (super_hydro)"

Source

If you are working from a source distribution, then all of this can be automated with Anaconda Project:

anaconda-project run init      # No GPU support (use for client)
# OR
anaconda-project run init_gpu  # If you have an NVIDA GPU

This will create and update the appropriate Conda environment in envs/. You can then either activate a shell

anaconda-project run shell
# OR
anaconda-project run shell_gpu

For more details, see {ref}sec:install for more details.

Getting Started

If needed, first activate your environment with one of the following, depending on how you installed Super_Hydro:

conda activate super_hydro
# OR
conda activate super_hydro_gpu
# OR
anaconda-project run shell
# OR
anaconda-project run shell_gpu

The simplest way to get started is to launch the Flask client:

python bin/client

This will start a webserver at http://localhost:27372 (or on a similar port depending on your configuration) which you can connect with using your browser.

Alternatively, you can run demons in a Jupyter notebook from the Demo folder:

jupyter notebook "Docs/Demonstrations/Contents (Start Here).md"

Remote Server

To run a remote computation server:

  1. Install super_hydro on the remote server and setup a virtual environment, either using Conda or as a virtual environment.
  2. Launch the remote server using SSH while forwarding the appropriate ports.

Funding {{ nsf_logo }}

This material is based upon work supported by the National Science Foundation under Grant Number 1707691. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.