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:
der Benutzer benötigt die Befehlszeile Delft3D-FLOW-Ausführung unter Linux;
Docker oder eine andere Behälterlaufzeit ist unerwünscht;
lokale Compilationszeit (etwa ein bis mehrere Stunden) und Festplattennutzung (etwa 25 GB für oneAPI, Quellen und Baumbau) sind akzeptabel;
der Host ist ein Ubuntu- oder Linux Mint-derived System mit
apt;Intel oneAPI-Compiler können unter
/opt/intel/oneapiinstalliert werden;der Benutzer akzeptiert, dass das Verfahren außerhalb des von Deltares beschriebenen hauptsächlich getesteten Linux-Pfades liegt.
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 externalDie entsprechende Erst-Zeit-Erstellung kompiliert alle Abhängigkeiten von Drittanbietern vor Ort:
python build.py --config d3d4-suite --build --build-type Release --build-dependenciesDas native Skript automatisiert diese Operationen und fügt die Host-Level-Präparationsschritte hinzu, die normalerweise vom Deltares Build Container geliefert werden würden:
Es installiert die Intel oneAPI Toolchain, die an die Versionen des Deltares Containers und Conan-Profils gepinnt wird: C/C++ und Fortran Compilers 2024.2, Intel MPI 2021.13 und MKL 2024.2. Wenn diese gepinnten Pakete aus dem Intel-Repository verschwinden, fällt das Skript auf die neuesten Versionen zurück und speichert die Conan-Konfiguration, um die erkannte Compiler-Version zu akzeptieren.
Es erzeugt eine virtuelle Python-Umgebung innerhalb des Quellbaums mit
conan ~= 2.29und einem aktuellen CMake, denn der Delft3D-Build benötigt CMake 3.30 oder neuer, die Ubuntu 24.04 und Linux Mint 22 nicht versenden.Es exportiert die Compiler-Umgebung im Deltares-Container (
CC=mpiicx,CXX=mpicxx,FC=mpiifx), so dass CMake Delft3D selbst mit der gleichen Toolchain wie die Conan-built Abhängigkeiten konfiguriert.
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.shMachen Sie das Skript ausführbar:
chmod +x install-delft3d-flow-native.shDefault 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.shDas 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 |
|---|---|---|
|
| Standort des verstopften Delft3D-Quellen-Repositorys. |
|
| Ziel der Endinstallation/Kopie. |
|
| Delft3D 4 Suiten bauen, einschließlich Delft3D-FLOW. |
|
| Optimierter CMake Build-Typ. |
|
| Paralleler Aufbau ( |
| nicht | Benutzt den Standardzweig, es sei denn, ein Zweig, ein Tag oder ein Commit ist angegeben. |
| 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 flow2d3dFü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-installSkip all aptaktivität:
./install-delft3d-flow-native.sh --no-aptDiese 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 mpicxxWenn 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.shrun_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:
Die Konsolenausgabe endet ohne Fehlermeldungen und das Skript gibt den Ausgangscode 0 zurück.
Die Geschichts- und Kartenergebnisdateien
trih-f34.dat,trih-f34.def,trim-f34.datundtrim-f34.defwurden in das Beispielverzeichnis geschrieben.Die Diagnosedatei
tri-diag.f34enthä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 fileDie 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-buildWenn der Build fehlschlägt, überprüfen Sie den letzten Teil des Protokolls:
tail -n 120 "$HOME/.cache/delft3d-native-build"/build-*.logKopieren 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 |
|---|---|---|
| Intel oneAPI-Compiler oder MPI-Pakete sind abwesend oder | Reinstallieren Sie den oneAPI-Compiler und |
| Das System CMake schattiert die Virtual-Umgebung CMake. | Rerun das Skript; es installiert CMake in |
Conan meldet | Die installierte oneAPI-Version ist nicht in | 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 |
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. |
| Der Runtime-Bibliothekspfad ist unvollständig. | Quelle |
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:
run_conan.py initialize externalvervollständigt ohne Fernmeldefehler.build.pyvervollständigt die CMake Build- und Installationsstufen.Das ausgewählte Präfix enthält
bin/run_dflow2d3d.sh.Das Standard-Beispiel Delft3D 4 läuft von einer sauberen Hülle nach
env.shwird ausgeliefert und schreibt dietrih-f34.*undtrim-f34.*Ergebnisdateien ohne Fehler intri-diag.f34.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.shzusammengestellt. Das Skript initialisierte den Delft3D externen Conan Workflow mit Intel oneAPI 2024.2 Compilern und Intel MPI 2021.13, baute died3d4-suite-Konfiguration imRelease-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
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
Deltares. 2026. “buildtools.Dockerfile.” Delft3D GitHub Repository. ci
Intel. 2026. “Installieren mit APT.” Intel oneAPI Toolkit Installationsanleitung für Linux. https://
Intel. 2024. “Benutze die setvars und oneapi-vars Scripts mit Linux.” Intel oneAPI Programming Guide. https://
MyST Markdown. 2026. “Callouts & Admonitions.” https://
Jupyter Book. 2026. “MyST Markdown Übersicht.” https://