Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Native Compilation von Delft3D-FLOW auf Ubuntu und Linux Mint

A Jupyter Book Usage Note for `install-delft3d-flow-native.sh`

Delft3D-FLOW

Dieser Abschnitt beschreibt ein natives Installationsverfahren zur Erstellung des Delft3D 4 hydrodynamischen Kernels auf Ubuntu- und Linux Mint-basierten Systemen ohne Verwendung von Docker. Das Verfahren wird im Shell-Skript install-delft3d-flow-native.sh durchgeführt. Das Skript kloniert das Deltares Delft3D Quell-Repository, installiert eine lokale Python/Conan Build-Umgebung, installiert und konfiguriert Intel oneAPI-Compiler, initialisiert den Open-Source Conan Abhängigkeits-Workflow, baut die Delft3D 4 Suite oder das flow2d3dZiel, kopiert den resultierenden Installationsbaum auf ein benutzerdefiniertes Präfix und führt einen Rauchtest mit dem Standard Delft3D 4 aus. Das Verfahren sollte als experimenteller Host-Build betrachtet werden, da das dokumentierte Linux-Building-Verfahren für Delft3D auf Containern basiert. Der Verwendungszweck ist reproduzierbare lokale Experimente, Code-Inspektion und Befehlszeilen-Ausführung von Delft3D-FLOW-Testfällen auf nicht-containerisierten Engineering-Workstations.

Bereit

Das Delft3D-Repository enthält Quellcode für Delft3D 4 und Delft3D FM. Delft3D-FLOW ist Teil der Delft3D 4 Suite, für die die jeweilige Build-Konfiguration d3d4-suite ist. Innerhalb dieser Suite sind die wichtigsten Delft3D-FLOW Binaries d_hydro und flow2d3d. Das Build-System stellt auch flow2d3d als individuelle Konfiguration vor; die Suite-Level-Konfiguration ist jedoch das konservativere Ziel für eine erste Installation, da es den erwarteten Delft3D 4 Laufzeitkontext bewahrt.

Das Skript ist für folgende Betriebsbedingungen bestimmt:

Das Verfahren soll die grafische Benutzeroberfläche von Windows Delft3D nicht installieren oder ausführen. Es installiert Kommandozeilenkerne und Laufzeitdateien nur.

To continue, download the installer script install-delft3d-flow-native.sh.

Beweis des Verfahrens

Das Skript folgt der Repository-Level-Building-Sequenz, die von Deltares eigenen Helfer-Tools verwendet wird. Drittanbieter-Abhängigkeiten werden mit Conan 2 verwaltet, während run_conan.py einmalig Conan-Konfiguration und build.pydrives-Abhängigkeitsinstallation, CMake-Konfiguration, Compilation und Installation durchführt. Für externe Benutzer ohne Zugriff auf den Deltares Nexus Paketserver ist der entsprechende Initialisierungsmodus:

python run_conan.py initialize external

Die entsprechende Erst-Zeit-Erstellung kompiliert alle Abhängigkeiten von Drittanbietern vor Ort:

python build.py --config d3d4-suite --build --build-type Release --build-dependencies

Das native Skript automatisiert diese Operationen und fügt die Host-Level-Präparationsschritte hinzu, die normalerweise vom Deltares Build Container geliefert werden würden:

Installation

Datei Platzierung

Legen Sie das Skript in ein Arbeitsverzeichnis, in dem die Ausführung der Shell erlaubt ist. Das folgende Layout wird empfohlen:

mkdir -p "$HOME/src/delft3d-native-installer"
cd "$HOME/src/delft3d-native-installer"

# copy or move the script here
ls -l install-delft3d-flow-native.sh

Machen Sie das Skript ausführbar:

chmod +x install-delft3d-flow-native.sh

Default Installation

Die Standardanrufung baut die Delft3D 4 Suite im Release-Modus, kopiert den resultierenden Installationsbaum an $HOME/opt/delft3d-flow und führt das Standardbeispiel als Rauchtest:

./install-delft3d-flow-native.sh

Das Skript fragt nach dem sudo-Passwort, wenn es Systempakete installiert. Die Standardwerte sind in Table 1 zusammengefasst.

Table 1:Default script options

Option

Fehler

Funktion

--src-dir

$HOME/src/delft3d

Standort des verstopften Delft3D-Quellen-Repositorys.

--prefix

$HOME/opt/delft3d-flow

Ziel der Endinstallation/Kopie.

--config

d3d4-suite

Delft3D 4 Suiten bauen, einschließlich Delft3D-FLOW.

--build-type

Release

Optimierter CMake Build-Typ.

--jobs

nproc

Paralleler Aufbau (CMAKE_BUILD_PARALLEL_LEVEL und MAKEFLAGS).

--tag

nicht

Benutzt den Standardzweig, es sei denn, ein Zweig, ein Tag oder ein Commit ist angegeben.

--no-test

nicht

Überspringt den Rauchtest mit dem Standardbeispiel.

Wiederholbare Installation

Bei hydraulischen Ingenieurstudien sollte die Quellenrevision festgelegt werden. Eine Zweigspitze ist keine reproduzierbare Modellabhängigkeit. Verwenden Sie ein Release-Tag oder begehen Hash wo möglich.

./install-delft3d-flow-native.sh \
  --tag <Delft3D-tag-or-commit> \
  --config d3d4-suite \
  --build-type Release \
  --prefix "$HOME/opt/delft3d-flow"

Minimale FLOW-Orientierung

Wenn das Ziel nur die Bewertung des flow2d3d Build-Ziels ist, kann das Skript wie folgt aufgerufen werden:

./install-delft3d-flow-native.sh --config flow2d3d

Für Erstanwender bleibt d3d4-suite die bevorzugte Testversion, da es sich um das mit Delft3D 4 verbundene Ziel von Suite-Level handelt. Das kleinere flow2d3d-Ziel ist besser geeignet, nachdem die Host-Toolchain bereits zur Arbeit gezeigt wurde.

Installation von Ski-Paketen

Auf verwalteten Universitäts- oder Institutsarbeitsplätzen darf der Benutzer nicht wollen, dass das Skript Systempakete ändert. Es werden zwei reduzierte Modi bereitgestellt.

Überspringen Sie nur den Intel oneAPI Installationsschritt:

./install-delft3d-flow-native.sh --skip-oneapi-install

Skip all aptaktivität:

./install-delft3d-flow-native.sh --no-apt

Diese Moden gehen davon aus, dass die benötigten Compiler und Build-Tools bereits installiert sind. Insbesondere müssen die folgenden Befehle nach der oneAPI Initialisierung beheben:

source /opt/intel/oneapi/setvars.sh --force
which icx icpx ifx mpiicx mpiifx mpicxx

Wenn die vorinstallierte oneAPI-Version von 2024.2 abweicht, patchiert das Skript das Conan-Profil und die erlaubten Compiler-Versionen automatisch, aber eine solche Abweichung bewegt den Build weiter von der Deltares-Basislinie entfernt.

Start und Test Delft3D-FLOW

Runtime Umwelt

Nach einem erfolgreichen Aufbau befindet sich der Installationsbaum im ausgewählten Präfix (default $HOME/opt/delft3d-flow) und enthält unter anderem bin/run_dflow2d3d.sh,bin/d_hydro und die flow2d3d Gemeinschaftsbibliotheken. Das Skript schreibt eine Umgebungsdatei am Präfix. Quelle diese Datei in jeder neuen Shell, bevor Delft3D-FLOW:

source "$HOME/opt/delft3d-flow/env.sh"

Dieser Befehl reitialisiert die Intel oneAPI Laufzeit, setzt DELFT3D_HOME und setzt die Delft3D Binaries und Bibliotheken auf PATH und LD_LIBRARY_PATH.

Test mit dem Standardbeispiel

Der Installateur führt diesen Test bereits am Ende des Builds aus, es sei denn, --no-test wurde angegeben. Um es manuell zu wiederholen, verwenden Sie das mit dem Repository verteilte Standard-Beispiel Delft3D 4 (ein Tidal-Testfall auf dem f34curvilinear-Gitter):

source "$HOME/opt/delft3d-flow/env.sh"

cd "$HOME/src/delft3d/examples/delft3d4/01_standard"
run_dflow2d3d.sh

run_dflow2d3d.sh lokalisiert die Installation relativ zu ihrem eigenen Pfad und liest die Modellkonfigurationsdatei config_d_hydro.xml aus dem aktuellen Arbeitsverzeichnis. Der Lauf dauert Sekunden. Betrachten Sie den Test erfolgreich, wenn alle der folgenden halten:

  1. Die Konsolenausgabe endet ohne Fehlermeldungen und das Skript gibt den Ausgangscode 0 zurück.

  2. Die Geschichts- und Kartenergebnisdateien trih-f34.dat,trih-f34.def,trim-f34.dat und trim-f34.def wurden in das Beispielverzeichnis geschrieben.

  3. Die Diagnosedatei tri-diag.f34 enthält keine Zeilen mit *** ERROR.

Eine schnelle Prüfung:

ls -l trih-f34.* trim-f34.*
grep -i error tri-diag.f34 || echo "no errors in tri-diag.f34"

Eine erfolgreiche Ausführung zeigt an, dass die binären Laufzeitbibliotheken und das Kommandozeilen-Startskript auf dem Host aufeinander abgestimmt sind. Es stellt keine wissenschaftliche Gültigkeit für ein Projektmodell fest. Hydrodynamische Modellvalidierung bleibt case-spezifisch und sollte Netz, Badymetrie, Randbedingung, Rauheit, Prozesskopplung und Kalibrierungsprüfungen umfassen.

Führen Sie Ihr eigenes Modell

Um ein Projektmodell auszuführen, legen Sie die Delft3D-FLOW-Eingabedateien (z.B. *.mdf, Grid, Bathymetry und Limit Files) zusammen mit einer config_d_hydro.xml Konfigurationsdatei in einem Arbeitsverzeichnis auf und starten Sie dann:

source "$HOME/opt/delft3d-flow/env.sh"

cd /path/to/my-model
run_dflow2d3d.sh                 # uses config_d_hydro.xml
run_dflow2d3d.sh my_config.xml   # or an explicit configuration file

Die config_d_hydro.xml-Datei von examples/delft3d4/01_standard dient als Vorlage; passen Sie den <mdfFile>-Eintrag an den Namen der Projektdatei .mdf an. Für Parallelläufe mit Intel MPI bietet die Installation auch run_dflow2d3d_parallel.sh, die die Anzahl der Prozesse akzeptiert und auf andere Weise den gleichen Konventionen folgt.

Dateien löschen

Jeder Installer-Laufwerk schreibt eine Zeitstempel-Log-Datei unter:

$HOME/.cache/delft3d-native-build

Wenn der Build fehlschlägt, überprüfen Sie den letzten Teil des Protokolls:

tail -n 120 "$HOME/.cache/delft3d-native-build"/build-*.log

Kopieren Sie für einen deterministischen diagnostischen Datensatz das Log in den Modell- oder Software-Resistenzordner:

mkdir -p provenance/software
cp "$HOME/.cache/delft3d-native-build"/build-*.log provenance/software/

Häufige Fehlermodi

Table 2:Diagnostic interpretation

Symptome

Wahrscheinliche Ursache

Korrekturmaßnahmen

ifx not found oder mpiifx not found

Intel oneAPI-Compiler oder MPI-Pakete sind abwesend oder setvars.sh wurde nicht veröffentlicht.

Reinstallieren Sie den oneAPI-Compiler und intel-oneapi-mpi-devel-Pakete oder überprüfen Sie /opt/intel/oneapi/setvars.sh.

CMake 3.30 or higher is required

Das System CMake schattiert die Virtual-Umgebung CMake.

Rerun das Skript; es installiert CMake in $HOME/src/delft3d/.venv und aktiviert diese Umgebung selbst.

Conan meldet Invalid setting für compiler.version.

Die installierte oneAPI-Version ist nicht in conan/config/settings_user.yml.

Lassen Sie das Skript das Profil und die Einstellungen zu Patchen oder installieren Sie die gepinnten oneAPI 2024.2 Pakete.

Fehlen von Drittanbieter-Paket während Conan-Installation.

Externe Nutzer müssen lokale Abhängigkeiten aufbauen.

Stellen Sie sicher, dass der Build-Befehl --build-dependencies umfasst; dies ist der Skript-Standard.

CMake-Konfiguration fehlschlägt nach der Abhängigkeitsinstallation.

Host-Bibliotheken oder Compiler-Konfiguration unterscheiden sich von der Deltares Linux-Container-Basislinie.

Überprüfen Sie den ersten CMake-Fehler, nicht nur die endgültige Build-Zusammenfassung.

run_dflow2d3d.sh beginnt, kann aber keine gemeinsame Bibliothek laden.

Der Runtime-Bibliothekspfad ist unvollständig.

Quelle <prefix>/env.sh und bestätigen LD_LIBRARY_PATH enthält <prefix>/lib.

Build gelingt, aber die Ergebnisse unterscheiden sich von einem anderen Arbeitsplatz.

Quellrevision, Compiler-Version, Abhängigkeitsaufbau oder Laufzeitkonfiguration unterscheidet sich.

Erfassen Sie die Git-Revision, das Skriptprotokoll, eine API-Version und die Modell-Eingabedateien.

Interpretation des Erfolgs

Die Installation sollte als erfolgreich angesehen werden, wenn alle folgenden Bedingungen erfüllt sind:

  1. run_conan.py initialize external vervollständigt ohne Fernmeldefehler.

  2. build.py vervollständigt die CMake Build- und Installationsstufen.

  3. Das ausgewählte Präfix enthält bin/run_dflow2d3d.sh.

  4. Das Standard-Beispiel Delft3D 4 läuft von einer sauberen Hülle nach env.sh wird ausgeliefert und schreibt die trih-f34.* und trim-f34.* Ergebnisdateien ohne Fehler in tri-diag.f34.

  5. Die Build-Log-, Git-Revision- und Compiler-Versionen werden archiviert.

Für rechnerische Hydraulik entspricht die binäre Verfügbarkeit nicht der Modellvalidierung. Eine defensible Delft3D-FLOW-Studie sollte die Software-Revision, Compiler-Umgebung, Rasterschematisierung, physikalische Prozess-Schalter, Begrenzungszwingen, Kalibrierdaten und Akzeptanzmetriken melden.

Deinstallation

Das Skript installiert Dateien im Benutzer-Raum standardmäßig. Um die resultierende Installation zu entfernen und Cache zu bauen:

rm -rf "$HOME/opt/delft3d-flow"
rm -rf "$HOME/src/delft3d/build_d3d4-suite_release"
rm -rf "$HOME/src/delft3d/.venv"
rm -rf "$HOME/.conan2"

Um den geklonten Quellbaum vollständig zu entfernen:

rm -rf "$HOME/src/delft3d"

Systempakete, die von apt installiert werden, einschließlich der Intel OneAPI-Pakete und des Intel APT-Repository-Eintrags in /etc/apt/sources.list.d/oneAPI.list, werden nicht automatisch entfernt. Dies ist absichtlich, weil Compiler, CMake, Python, Git und oneAPI Komponenten von anderen numerischen Modellen geteilt werden können.

Empfohlener Citationsrekord für Berichte

Eine genaue Reproduzierbarkeitserklärung kann in die Projektdokumentation aufgenommen werden:

Delft3D-FLOW wurde auf einem Ubuntu/Linux Mint Host mit install-delft3d-flow-native.sh zusammengestellt. Das Skript initialisierte den Delft3D externen Conan Workflow mit Intel oneAPI 2024.2 Compilern und Intel MPI 2021.13, baute die d3d4-suite-Konfiguration im Release-Modus und installierte die Kommandozeilenlaufzeit unter einem Benutzer-Raum-Präfix. Die Delft3D Git-Revision, die Intel oneAPI-Compiler-Version und das Build-Log wurden mit den Modellresistenzdateien archiviert.

Referenzen

Deltares. 2026. “Compiling Delft3D auf Linux.” Delft3D GitHub Repository Dokumentation. doc/compiling_Linux.md

Deltares. 2026. “Getting begann mit Code-Compilation und Entwicklung.” Delft3D GitHub Repository Dokumentation. doc/development.md

Deltares. 2026. “build.py.” Delft3D GitHub Repository. build.py

Deltares. 2026. “delft3d_alma8_intel_2024 Conan Profil.” Delft3D GitHub Repository. conan/config/profiles/delft3d_alma8_intel_2024

Deltares. 2026. “buildtools.Dockerfile.” Delft3D GitHub Repository. ci/dockerfiles/linux/buildtools.Dockerfile

Intel. 2026. “Installieren mit APT.” Intel oneAPI Toolkit Installationsanleitung für Linux. https://www.intel.com/content/www/us/en/docs/oneapi-toolkit/installation-guide-linux/latest/install-oneapi-toolkit-with-apt.html

Intel. 2024. “Benutze die setvars und oneapi-vars Scripts mit Linux.” Intel oneAPI Programming Guide. https://www.intel.com/content/www/us/en/docs/oneapi/programming-guide/2024-2/use-the-setvars-and-oneapi-vars-scripts-with-linux.html

MyST Markdown. 2026. “Callouts & Admonitions.” https://mystmd.org/guide/admonitions

Jupyter Book. 2026. “MyST Markdown Übersicht.” https://jupyterbook.org/v1/content/myst.html