Skip to content

malte-code/VentusFlow

Repository files navigation

VentusFlow WebGUI – Offshore Windpark Simulation (LES, Actuator Line)

Autor: Malte Schudek
Hochschule: Universität Stuttgart, HLRS
Betreuer: Prof. Dr.-Ing. Dr. h.c. Hon. Prof. Michael M. Resch, Uwe Woessner, Dr.-Ing.

Forschungsarbeit Energietechnik | April 2025 | Bericht Nr. 001
Repository: github.com/malte-code/VentusFlow
Datei: README.md


VentusFlowWebGUI

Willkommen bei VentusFlowWebGUI – einer webbasierten Benutzeroberfläche, die mithilfe von OpenLayers ein grafisches Werkzeug zur Definition von Turbinenpositionen, Windrichtung und Simulationsgebiet für OpenFOAM bereitstellt.

Dieses Projekt ist in Node.js und Vite (Frontend-Build-Tool) implementiert.
Das Frontend kommuniziert über einen WebSocket-Server (Node.js) mit einem Python-Programm, das den OpenFOAM-Case generiert.
Das Backend (server.js) übernimmt außerdem die Steuerung von OpenFOAM-Simulationen auf einem Remote-Server oder Cluster per SSH.


Inhaltsverzeichnis

  1. Projektüberblick
  2. Installation & Start
  3. Funktionen und Nutzung
  4. Technische Details
  5. Lizenz

Projektüberblick

Ziel von VentusFlowWebGUI ist es, ein einfaches grafisches Werkzeug bereitzustellen, mit dem Sie:

  • Ein rechteckiges Simulationsgebiet definieren und es bei Bedarf rotieren können.
  • Windturbinen auf einer Karte platzieren und verschieben können.
  • Die Windrichtung über einen Slider einstellen können (wodurch sich auch das Simulationsgebiet mitdreht).
  • Einen lauffähigen Simulation-Case generieren.
  • Kommunikation mit Server/Cluster, um OpenFOAM-Simulationen direkt über ein Control-Panel steuern zu können.

Installation & Start

1. Voraussetzungen

  • Node.js (Version 16 oder höher)
  • npm
  • Python (liegt in virtueller Umgebung vor, für Paketverwaltung)
  • Server/Cluster mit OpenFOAM oder lokal

2. Installation & Start

# Klone das Repository
git clone https://github.com/malte-code/VentusFlowWebGUI.git
cd VentusFlowWebGUI

# Installiere Node.js-Abhängigkeiten 
npm install

# Starte die Anwendung mit Server im Entwicklungsmodus
npm start

# Starte nur das Frontend im Entwicklungsmodus
npm run dev

# Alternativ: Baue die Anwendung (npm install notwendig) oder starte sie im Produktionsmodus (ein Build befindet sich in /dist)
npm run build
npm run serve

# Wenn Remote-Cluster-Funktionen genutzt werden sollen, aktualisiere ssh-agent Pfad im serve-Script-Eintrag der package.json Datei (lauffähiger Build wird mitgeliefert)

# Aktualisiere SSH-Config in index.html unter: Server Connection Setting

Nach dem Start ist die Anwendung unter http://localhost:3000 (oder einem anderen Port, der in der Konsole angezeigt wird) erreichbar.

3. Voreinstellungen der OpenFOAM Umgebung

Füge folgende Einstellungen in deine .bashrc ein:

### OpenFOAM SETTINGS ###
########################

# OpenFOAM-Version und ThirdParty-Verzeichnis festlegen
export WM_PROJECT_DIR=/home/hpcschud/OpenFOAM/OpenFOAM-v2212/OpenFOAM-v2212
export WM_THIRD_PARTY_DIR=/home/hpcschud/OpenFOAM/OpenFOAM-v2212/ThirdParty-v2212

# OpenFOAM-Umgebung sourcen
source $WM_PROJECT_DIR/etc/bashrc

# OpenFOAM-Binärdateien und wmake-Tools zum PATH hinzufügen
export PATH="$WM_PROJECT_DIR/platforms/linux64GccDPInt32Opt/bin:$WM_PROJECT_DIR/wmake:$PATH"

# LD_LIBRARY_PATH für OpenFOAM-Bibliotheken anpassen
export LD_LIBRARY_PATH="$WM_PROJECT_DIR/platforms/linux64GccDPInt32Opt/lib:$WM_THIRD_PARTY_DIR/platforms/linux64GccDPInt32/lib:$LD_LIBRARY_PATH"

### turbinesFoam SETTINGS ###
############################

# Pfad zu turbinesFoam festlegen
export TURBINESFOAM_DIR=/home/hpcschud/OpenFOAM/turbinesFoam

# turbinesFoam-Binärdateien zum PATH hinzufügen
export PATH="$TURBINESFOAM_DIR/platforms/linux64GccDPInt32Opt/bin:$PATH"

# turbinesFoam-Bibliotheken zum LD_LIBRARY_PATH hinzufügen
export LD_LIBRARY_PATH="$TURBINESFOAM_DIR/platforms/linux64GccDPInt32Opt/lib:$LD_LIBRARY_PATH"

Die korrekte .bashrc muss in backend/process_input.py bei "Allrun.slurm" gesetzt sein.


Funktionen und Nutzung

Taskleiste

  • Layer Dropdown: Wählen Sie im Dropdown-Menü "Simulationsgebiet" und zeichnen Sie ein Rechteck auf der Karte, um den Simulationsbereich zu definieren.
    Jeder Formtyp wird auf einem eigenen Layer definiert, der dann aktuell bearbeitet werden kann. Ein Wechsel des Dropdown-Eintrags ändert den aktiven Layer, der bearbeitet werden kann.
  • Rotation: Rotieren Sie die Windrichtung und das Simulationsgebiet simultan über den Slider.
  • Edit shapes: Im aktivierten Editmodus können Objekte des aktiven Layers durch Anklicken ausgewählt und anschließend verschoben werden.
  • 🗑️ (Delete):
    Alle Objekte des aktiven Layers werden gelöscht, wenn kein Objekt durch Edit ausgewählt ist, ansonsten wird nur das ausgewählte Objekt gelöscht.

Sidepanels (einklappbar)

  • Turbinen Panel (links): Verwenden Sie die Eingabefelder des linken Toggle-Fensters, um die Attribute des Turbinenobjekts zu definieren, das als nächstes initialisiert auf der Karte gesetzt wird.
    Wake-Verfeinerungsgebiete werden für alle existierenden Turbinenobjekte des Turbinenlayers angepasst.
  • Parameterpanel (rechts): Verändern Sie die Dimensionen des Simulationsgebietes, Umgebungsparameter und Löser-Einstellungen.

Export der Daten

Über den Export-Button wird der OpenFOAM-Case erstellt und die SSH-Verbindung konfiguriert. (Case wird immer generiert)
Bei Nutzung eines SSH-Agenten kann ohne Passphrase-Eingabe mit dem "Abbrechen"-Button die Konfiguration erstellt werden.
Ohne Agenten ist eine Passphrase-Eingabe notwendig (unsicher, da das Passwort zur Laufzeit der Anwendung in Klartext gespeichert wird).

OpenFOAM Control Panel

  • Local to Remote: Synchronisiert lokale Dateien mit dem Remote-Server.
  • Allclean: Bereinigt vorherige Simulationsergebnisse.
  • Allpre: Führt die Vorbereitungsschritte für die Simulation durch.
  • Allrun (Slurm): Startet die Simulation als Slurm-Job.
  • Status: Zeigt den aktuellen Status der Simulationen.
  • Allpost: Rekonstruiert Parallelisierung und erstellt VTK-Dateien.
  • Get VTK: Lädt VTK-Dateien für die Visualisierung herunter.

Technische Details

Frontend

  • OpenLayers: Für die interaktive Karte und Vektorzeichnungen.
  • Vite: Als Build-Tool und Entwicklungsserver.
  • Die Hauptanwendungslogik befindet sich in frontend/src/main.js, die HTML-Struktur in frontend/index.html und die Styles in frontend/src/styles/style.css.

Backend

  • Node.js mit Express: Dient als Basis für den WebSocket-Server (es werden keine eigenen HTTP-API-Endpunkte oder statischen Dateien ausgeliefert).
  • WebSocket (ws): Für die gesamte Echtzeit-Kommunikation zwischen Frontend und Backend (z.B. Export, SSH-Kommandos, Fortschrittsabfragen).
  • SSH2: Für die Verbindung mit dem Remote-Server zur Ausführung von OpenFOAM-Befehlen.
  • Die Server-Implementierung befindet sich in backend/server.js.

Python-Verarbeitung

  • Das Python-Skript backend/process_input.py konvertiert die JSON-Ausgabe des Frontends in OpenFOAM-kompatible Dateien.

GPLv3 Lizenz

Dieses Projekt steht unter der GNU General Public License Version 3 (GPLv3).
Siehe die Datei LICENSE für weitere Details.

Copyright (c) 2024 – VentusFlowWebGUI Projekt

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published