Skip to main content

2D turbulent DNS solver with Fortran/OpenMP backend and PyQt6 GUI

Project description

PyDNS — 2D DNS Viewer (PyQt6 + Fortran)

A lightweight 2D Direct Numerical Simulation (DNS) visualizer using:

  • PyQt6 for the GUI
  • NumPy + f2py (Fortran) for the DNS solver
  • Runs on macOS
  • Optional .app bundle via PyInstaller

🚀 Quick Install (macOS + gcc + uv)

1. Install system tools

brew install uv
brew install gcc
  • uv — Fast Python package manager + virtualenv + runner
  • gcc — provides gfortran for the Fortran module

2. Install Python and activate it

git clone git@github.com:mannetroll/pydns.git
cd pydns
uv python install 3.13.9
uv python pin 3.13.9
uv venv --python 3.13.9
source .venv/bin/activate
uv sync

🔧 Build the Fortran extension without OpenMP

If your solver file is dns_driver_min.f:

cd fortran
bash build_dns_macos.sh

This produces:

dns_fortran.cpython-313-darwin.so

▶ Run the DNS Viewer

DNS Viewer Window

uv run python main_min.py

Build Wheel:

uv build

Produces:

dist/pydns-0.1.1-cp313-cp313-macosx_15_0_arm64.whl

🖥 Build a macOS .app

The project includes pydns.spec.

Build the bundle:

uv run pyinstaller pydns.spec

Produces:

dist/pydns.app

Double-click to launch.

twine & pypi.org

uv add --dev build twine
uv run python -m build
uv run twine upload dist/*

one-liner

curl -LsSf https://astral.sh/uv/install.sh | sh
uv run --with mannetroll-pydns==0.1.2 python -m main_min

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

mannetroll_pydns-0.1.2.tar.gz (878.3 kB view details)

Uploaded Source

Built Distribution

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

mannetroll_pydns-0.1.2-cp313-cp313-macosx_15_0_arm64.whl (885.3 kB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for mannetroll_pydns-0.1.2.tar.gz
Algorithm Hash digest
SHA256 2dabd0b4d09e0af48c9c9f810a099af7205f758264f5efca1dcd78e4769efb7c
MD5 5c59306449338607cfd3ff0c4e88a9e6
BLAKE2b-256 08a63d640dbabbad4ad8a3e91110a5d6fe16f83f7857bd3c96c179569bc53610

See more details on using hashes here.

File details

Details for the file mannetroll_pydns-0.1.2-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for mannetroll_pydns-0.1.2-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 550099c77e3ad7b259ff29c317b0fe28c5f62bb6a25c1a7979410b2afd53476d
MD5 742dad1724362c49ce680a01dcbbb508
BLAKE2b-256 5606bb0f370baf861a7d6dd40dace3a6209f96ae9f65018e28bf5775cbdc92cd

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