Rui Wang, Karthik Kashinath, Mustafa Mustafa, Adrian Albert, Rose Yu Towards Physics-informed Deep Learning for Turbulent Flow Prediction, KDD 2020
While deep learning has shown tremendous success in a wide range of domains, it remains a grand challenge to incorporate physical principles in a systematic manner to the design, training, and inference of such models. In this paper, we aim to predict turbulent flow by learning its highly nonlinear dynamics from spatiotemporal velocity fields of large-scale fluid flow simulations of relevance to turbulence modeling and climate modeling. We adopt a hybrid approach by marrying two well-established turbulent flow simulation techniques with deep learning. Specifically, we introduce trainable spectral filters in a coupled model of Reynolds-averaged Navier-Stokes (RANS) and Large Eddy Simulation (LES), followed by a specialized U-net for prediction. Our approach, which we call turbulent-Flow Net (TF-Net), is grounded in a principled physics model, yet offers the flexibility of learned representations. We compare our model, TF-Net, with state-of-the-art baselines and observe significant reductions in error for predictions 60 frames ahead. Most importantly, our method predicts physical fields that obey desirable physical characteristics, such as conservation of mass, whilst faithfully emulating the turbulent kinetic energy field and spectrum, which are critical for accurate prediction of turbulent flows.
- Baselines/: Six baseline modules included in the paper.
- TF-Net/:
- model.py: TF-net pytorch implementation.
- penalty.py: a few regularizers we have tried.
- train.py: data loaders, train epoch, validation epoch, test epoch functions.
- run_model.py: Scripts to train TF-Net
python run_model.py
- Evaluation/:
- Evaluation.ipynb: contains the functions of four evaluation metrics.
- radialProfile.py: a helper function for calculating energy spectrum.
- Videos/: Videos of velocity u, v predictions and ablation study.
- python 3.6
- pytorch 10.1
- matplotlib
Build
docker build . -t iperezx/turbulent-flow-net:latest
Run
docker run --name turbulent-flow-net --rm iperezx/turbulent-flow-net:latest
Build
docker-compose up --build
Create PVC if not created:
kubectl create -f pvc.yaml
Create deployment:
kubectl create -f deploy-nautilus.yaml
@article{Wang2020TF,
title={Towards Physics-informed Deep Learning for Turbulent Flow Prediction},
author={Rui Wang, Karthik Kashinath, Mustafa Mustafa, Adrian Albert, Rose Yu},
journal={Proceedings of the 26th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining},
Year = {2020}
}