Skip to main content

Physics-Informed Neural Networks for Fluid Dynamics

Project description

DeepFlow: Physics-Informed Neural Networks for Fluid Dynamics

PyPI version License: MIT Python 3.8+

DeepFlow Logo

DeepFlow is a user-friendly framework for solving partial differential equations (PDEs), such as the Navier-Stokes equations, using Physics-Informed Neural Networks (PINNs). It provides a CFD-solver-style workflow to make PINN-based simulations accessible and straightforward.

Table of Contents

Key Features

promo

  • Physics-Attached Geometry: AUTO GENERATE TRAINING DATA by explicitly attach physics and neural network to geometries.
  • 🔧 CFD-Solver Style: Straightforward workflow similar to CFD software.
  • 📊 Built-in Visualization: Tools to evaluate and plot results.
  • 🚀 GPU Acceleration: Enable GPU for faster training.
  • Flexible Domain Definition: Easily define complex 2D geometries.

Current Implementations

  • Supported problems: solving forward partial differential equations (PDEs)
    • transient & steady 2D imcompressible Navier-Stokes equations, 2D Fourier Heat equation, Burgers' equation
  • Sampling methods: Uniform, Random, Latin Hypercube Sampling, RAR-G [0], R3 [1]
  • 2D Geometries: Custom functions, Rectangle, Circle, Polygon, and combinations & subtractions.
  • Hard Boundary Conditions: Automatic Hard BC w.r.t. to geometry.
  • Neural Network Architectures: Fully connected feedforward networks (FNN).
  • Optimizers: Adam, L-BFGS
  • Backend: PyTorch

Installation

You can install DeepFlow via pip:

pip install deepflow

For development or to build from source:

git clone https://github.com/YoYo-XYZ/deepflow.git
cd deepflow
pip install -e .

Requirements

  • Python >= 3.8
  • PyTorch >= 1.7.0
  • NumPy >= 1.19.0
  • Matplotlib >= 3.3.0
  • SymPy >= 1.5.0
  • SciPy >= 1.5.0
  • Ultrplot >= 1.0.0

Quick Start

This example demonstrates how to simulate Steady channel flow under 20 lines of code! We recommend using a Python notebook (.ipynb) for interactive experience.

1. Define the Geometry and Physics

import deepflow as df

# Define the area and bounds
rectangle = df.geometry.rectangle([0, 5], [0, 1])
domain = df.domain(rectangle)

domain.show_setup() # Display the domain setup

alt text

# Define Boundary Conditions
domain.bound_list[0].define_bc({'u': 1, 'v': 0})  # Inflow: u=1
domain.bound_list[1].define_bc({'u': 0, 'v': 0})  # Wall: No slip
domain.bound_list[2].define_bc({'p': 0})          # Outflow: p=0
domain.bound_list[3].define_bc({'u': 0, 'v': 0})  # Wall: No slip

# Define PDE (Navier-Stokes)
domain.area_list[0].define_pde(df.pde.NavierStokes(U=0.0001, L=1, mu=0.001, rho=1000))

domain.show_setup() # Display the domain setup

alt text

# Sample points: [Left, Bottom, Right, Top], [Interior]
domain.sampling_random([200, 400, 200, 400], [5000])
domain.show_coordinates(display_physics=True)

alt text

2. Create and Train the model

# Initialize the PINN model
model0 = df.PINN(width=40, length=4)
# Train the model using Adam Optimizer
model1 = model0.train_adam(
    calc_loss=df.calc_loss_simple(domain),
    learning_rate=0.001,
    epochs=2000,)

3. Visualize Results

# Evaluate the best model
prediction = domain.area_list[0].evaluate(model1_best)
prediction.sampling_area([500, 100])

# Plot Velocity Field
_ = prediction.plot_color('u', cmap='jet')

# Plot Training Loss
_ =prediction.plot_loss_curve()

alt text alt text

Examples

Explore the examples directory for real use cases, including:

Each example includes Jupyter notebooks and data files.

Contributing

Feel free to submit a Pull Request. For major changes, open an issue first to discuss the proposed changes.

DeepFlow Milestones

  1. Define custom PDE
  2. Inverse problems PDE
  3. 3D Geometries
  4. More sampling methods
  5. More neural network architectures (e.g., CNN, RNN)

License

This project is licensed under the MIT License - see the LICENSE file for details.

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

deepflow-0.1.2.tar.gz (24.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

deepflow-0.1.2-py3-none-any.whl (25.5 kB view details)

Uploaded Python 3

File details

Details for the file deepflow-0.1.2.tar.gz.

File metadata

  • Download URL: deepflow-0.1.2.tar.gz
  • Upload date:
  • Size: 24.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for deepflow-0.1.2.tar.gz
Algorithm Hash digest
SHA256 e9398e433f0bb2a09754dc94c85c5b805d88a2274c091fb6e3146cbae6171aa2
MD5 2b705879fb7385cc1ac8ee302155d5a5
BLAKE2b-256 bb8e2d8b1a24e824e831d34a7ab98d08c6cc7b011cd38e251c43f65faff0b9ee

See more details on using hashes here.

File details

Details for the file deepflow-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: deepflow-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 25.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for deepflow-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9eae44de3a0e18c5245340bf8870c5bdacaf8619b572548710da0a4f8bbb2fc6
MD5 312073ce11e770d743c8f386eb9c1008
BLAKE2b-256 ac301a9cbb508f54400923b1617892117b007069fea1c7c79861a37b02a5130a

See more details on using hashes here.

Supported by

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