Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kolsol-1.0.1.tar.gz (384.6 kB view details)

Uploaded Source

Built Distribution

kolsol-1.0.1-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

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

Hashes for kolsol-1.0.1.tar.gz
Algorithm Hash digest
SHA256 4ace8022b96deaee44ac0732829e1aff00186a931f441f87ea6293e9c86ca8d1
MD5 99ad1b10ace04085552ef1108c146dd5
BLAKE2b-256 669b6437ce1d1822dc27b370af80fd803e0ecd0e00a307419ef73991e2073a04

See more details on using hashes here.

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

Hashes for kolsol-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e8101eb65e74808fad421a483518a5258be57ae7a7ee0c28d24d009630cabfb5
MD5 77c30b95549ea02e5869fa4fc84272b5
BLAKE2b-256 3251a2a96d4c007f7b0d55a6bc7d74fe10d97134fe4aa83e01bc37c8debfeb28

See more details on using hashes here.

Supported by

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