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:
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.6.8+
To install KolSol, please clone the repository and then run the following command:
$ pip install poetry
$ poetry install
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)
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.
[1] Canuto, C. (1988) Spectral methods in fluid dynamics. New York: Springer-Verlag.