Pseudospectral Kolmogorov Flow Solver
Project description
KolSol
KolSol is a pseudospectral Kolmogorov flow solver, using a Fourier-Galerkin approach as described by Canuto [1].
This library contains both NumPy
and PyTorch
implementations to allow for autograd-compatible workflows. Please note
that the implementation of the FFT within NumPy
is much more efficient so for general usage this version is preferable.
The solver provides numerical solutions to the divergence-free Navier-Stokes equations:
$$ \begin{aligned} \nabla \cdot u &= 0 \ \partial_t u + u \cdot \nabla u &= - \nabla p + \nu \Delta u + f \end{aligned} $$
As a spectral method is employed, using a larger quantity of wavenumbers will reduce the numerical error.
Note: Highly accurate simulations can be attained even with relatively few wavenumbers.
- License: MIT
- Python Versions: 3.8.10+
Flowfield:
Installation:
You can install KolSol from PyPI as follows
$ pip install kolsol
Solver Example:
import numpy as np
from kolsol.numpy.solver import KolSol
# instantiate solver
ks = KolSol(nk=8, nf=4, re=30.0, ndim=2)
dt = 0.01
# define initial conditions
u_hat = ks.random_field(magnitude=10.0, sigma=2.0, k_offset=[0, 3])
# simulate :: run over transients
for _ in np.arange(0.0, 180.0, dt):
u_hat += dt * ks.dynamics(u_hat)
# simulate :: generate results
for _ in np.arange(0.0, 300.0, dt):
u_hat += dt * ks.dynamics(u_hat)
# generate physical field
u_field = ks.fourier_to_phys(u_hat, nref=256)
Data Generation:
The given generate.py
script can be used to generate simulation data for a Kolmogorov flow field, for example:
$ python generate.py --data-path .data/RE30/results.h5 --resolution 256 --re 30.0 --time-simulation 60.0
Running the above command results in the following file structure:
data
├── RE30
│ └── results.h5
├── README.md
└── generate.py
Note: Additional command-line arguments are available for customising simulations.
References:
[1] Canuto, C. (1988) Spectral methods in fluid dynamics. New York: Springer-Verlag.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file kolsol-1.0.1.tar.gz
.
File metadata
- Download URL: kolsol-1.0.1.tar.gz
- Upload date:
- Size: 384.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ace8022b96deaee44ac0732829e1aff00186a931f441f87ea6293e9c86ca8d1 |
|
MD5 | 99ad1b10ace04085552ef1108c146dd5 |
|
BLAKE2b-256 | 669b6437ce1d1822dc27b370af80fd803e0ecd0e00a307419ef73991e2073a04 |
File details
Details for the file kolsol-1.0.1-py3-none-any.whl
.
File metadata
- Download URL: kolsol-1.0.1-py3-none-any.whl
- Upload date:
- Size: 11.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e8101eb65e74808fad421a483518a5258be57ae7a7ee0c28d24d009630cabfb5 |
|
MD5 | 77c30b95549ea02e5869fa4fc84272b5 |
|
BLAKE2b-256 | 3251a2a96d4c007f7b0d55a6bc7d74fe10d97134fe4aa83e01bc37c8debfeb28 |