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
.appbundle via PyInstaller
🚀 Quick Install (macOS + gcc + uv)
1. Install system tools
brew install uv
brew install gcc
uv— Fast Python package manager + virtualenv + runnergcc— providesgfortranfor 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
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
Release files for mannetroll-pydns 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mannetroll_pydns-0.1.2.tar.gz | 878.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mannetroll_pydns-0.1.2-cp313-cp313-macosx_15_0_arm64.whl | CPython 3.13 | CPython 3.13 | macOS 15.0+ ARM64 | Details |
Total release size: 1.8 MB
Release files / mannetroll_pydns-0.1.2.tar.gz
| Download URL | mannetroll_pydns-0.1.2.tar.gz |
|---|---|
| Size | 878.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2dabd0b4d09e0af48c9c9f810a099af7205f758264f5efca1dcd78e4769efb7c
|
|
BLAKE2b-256 checksum How to use checksums |
08a63d640dbabbad4ad8a3e91110a5d6fe16f83f7857bd3c96c179569bc53610
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.9
|
Release files / mannetroll_pydns-0.1.2-cp313-cp313-macosx_15_0_arm64.whl
| Download URL | mannetroll_pydns-0.1.2-cp313-cp313-macosx_15_0_arm64.whl |
|---|---|
| Size | 885.3 kB |
| Tags | CPython 3.13 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
550099c77e3ad7b259ff29c317b0fe28c5f62bb6a25c1a7979410b2afd53476d
|
|
BLAKE2b-256 checksum How to use checksums |
5606bb0f370baf861a7d6dd40dace3a6209f96ae9f65018e28bf5775cbdc92cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.9
|