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.

Debugging TELEMAC

Seit seiner frühen Entwicklung ist TELEMAC ein robustes und zuverlässiges Werkzeug für die numerische Modellierung offener Oberflächenströme. Dennoch gibt es ein paar kleine Herausforderungen und diese immer wachsende Seite bietet einige Antworten.

Recover abgestürzte Simulationsdateien

Wenn ein Telemac parallel (mit mehreren Kernen) abstürzt, oder wenn Sie Teilausgabedateien von jeder Subdomain in eine einzelne Datei rekombinieren müssen, bieten Telemacs Nachbearbeitungstools Optionen zum Zusammenfügen (oder “Stitching”) der Submesh-Ergebnisse. Es gibt zwei Hauptwerkzeuge:

  1. GRETEL (das dedizierte Verschmelzungswerkzeug)

    • GRETEL nimmt die partiellen (Subdomain-)Ergebnisse aus jedem Kern und führt sie zurück in eine einzelne SELAFIN/MED-Datei für die gesamte Domäne.

    • Dies ist in der Regel der go‐to-Ansatz, wenn Ihre Simulation teilweise durchstürzt ist, aber Sie wollen immer noch visualisieren oder analysieren, was Teilergebnisse gespeichert wurden.

  2. PARTEL (im Fusionsmodus)

    • PARTEL wird typischerweise verwendet, um Maschen für parallele Abläufe zu trennen, hat aber auch eine Zusammenführungsfähigkeit. Einige Versionen oder Workflows verwenden PARTEL für die Partitionierung und Verschmelzung.

    • Für die meisten modernen Telemac-Konfigurationen neigt GRETEL dazu, das Streamline- oder Standard-Merging-Tool zu sein.

Wie man GRETEL verwendet

  1. Wenn Sie Ihre Simulation parallel lief und es abgestürzt (oder abgeschlossen, aber Sie müssen nur Subdomains manuell kombinieren), finden Sie die Teilergebnisdateien benannt etwas wie:

    T3DRES00000-00001.slf
    T3DRES00000-00002.slf
    …

oder für jede Subdomain die entsprechenden Dateien, die typischerweise unter -0000X.slf enden.

  1. Sie können sie zusammenführen, indem Sie GRETEL aus der Befehlszeile ausführen, zum Beispiel:

    runcode.py gretel -c <your_config> -f <your_config_file> --merge --ncsize <number_of_subdomains>

Passen Sie die Flaggen und Dateinamen nach Bedarf an. Wenn Sie Telemac3d verwenden:

runcode.py telemac3d <steering_file> --merge -w <folder_path>

Ersetzen Sie <folder_path> mit dem Verzeichnis, das die Ausgabeteile enthält.

Die genaue Syntax kann je nach Version von Telemac variieren. Einige Installationen haben ein dediziertes Python-Skript oder einen Launcher für GRETEL.

  1. Sobald GRETEL fertigt, gibt es eine single 3D SELAFIN (oder MED) Datei mit allen Subdomains wieder zusammen. Sie können dann die Verarbeitung visualisieren oder fortsetzen, die in Ihrer bevorzugten Nachbearbeitungsumgebung zusammengeführt wurde (z.B. Blue Kenue, Paraview, QGIS).

Zusätzliche Anmerkungen und Tipps

Rückverfolgungsfehler

Wenn eine Simulation abstürzt und es ist nicht klar, warum Debugging mit dem GNU Project debugger GDB ist eine gute Option. Dazu zunächst GDB installieren:

sudo apt install gdb

Starten Sie dann die Lenkdatei im Debugging-Modus wie folgt:

telemac2d.py -w tmp simulation_file.cas --split
telemac2d.py -w tmp simulation_file.cas -x
cd tmp
gdb ./out_telemac2d

In gdb Tipp:

(gdb) run

Zum Ende gdb tippen Sie auf:

(gdb) quit

Dieser Ansatz funktioniert auch mit Telemac3d (und anderen Modulen).

Fehlermeldung Quickfixes

Dieser Abschnitt listet schnelle Korrekturen für einige häufige Fehlermeldungen.

RANDOM CRASH

Wenn TELEMAC aus scheinbar zufälligen Gründen abstürzt, stellen Sie sicher, dass:

  • Keine Linie in der Lenkdatei hat mehr als 72 (aktive Eigenschaften). Zum Beispiel:

Too long line (bad)
Correct line break (good)
CLASSES CRITICAL SHEAR STRESS FOR MUD DEPOSITION = 0.011; 0.011; 0.011; 0.011

Steuerung (CAS) Dateien

Mesh Datei

Feine hochauflösende Meshes

Dieser Abschnitt wird von Federica Scolari.

Um sehr feine Maschen mit einer Rastergröße kleiner als 1,0 m zu erzeugen, sollte eine selafin (*.slf) Geometriedatei im doppelten Präzisionsformat (SERAFIND) gespeichert werden. Anderenfalls können Modellgrenzkanten im Rechennetz nicht gut dargestellt werden. Figure 1 illustriert den Verlust der Grenzgenauigkeit, wenn anstelle von Doppelpräzision (b) Einpräzision (a) verwendet wird.

telemac slf selafin single double precision serafind

Figure 1:Die Verlustgrenzgenauigkeit in einem einpräzisen Klärnetz (a) im Vergleich zu einem doppelpräzisen Klärnetz (b).

Integrierte Mesh-Konsistenzprüfung

Um zu überprüfen, ob TELEMAC das Netz lesen kann, laden Sie die TELEMAC-Umgebung (z.B. source pysource.openmpi.sh) und gehen Sie in das Verzeichnis, in dem das zu überprüfende Netz lebt und mdump laufen kann, zum Beispiel:

cd ~/telemac/studies/test-case/
mdump mesh-to-test.med

Bis zum Schreiben dieses Tutorials bittet mdump um Eingabevariablen in Französisch, was Folgendes bedeutet:

Eine Standard-Antwort-Kombination von 1 - 1 - 0 führt zu einem Konsolendruck aller Knoten und Verbindungen zwischen den Knoten im Netz, da TELEMAC die Mesh-Datei lesen kann. Beginnend mit:

(**********************************************************)
(* INFORMATIONS GENERALES SUR LE MAILLAGE DE CALCUL N°01: *)
(**********************************************************)

- Nom du maillage : <<Mesh_Hn_1>>
- Dimension du maillage : 2
- Type du maillage : MED_NON_STRUCTURE
- Description associee au maillage :

(**********************************************************************************)
(* MAILLAGE DE CALCUL |Mesh_Hn_1| n°01 A L'ETAPE DE CALCUL (n°dt,n°it)=(-01,-01): *)
(**********************************************************************************)
- Nombre de noeuds : 243
- Nombre de mailles de type MED_SEG2 : 80
- Nombre de mailles de type MED_TRIA3 : 404
- Nombre de familles : 15

[...]

Was dieser Ausgang bedeutet: Wenn mdump das Mesh lesen kann, ist die Mesh-Datei selbst OK und mögliche Berechnungsfehler stammen aus anderen Dateien wie der Lenkdatei oder den Randbedingungen. Andernfalls überarbeiten Sie die Mesh-Datei und lösen Sie jedes mögliche Problem.

Bounding

Dieser Abschnitt wird von Federica Scolari.

Kein Wasser im Modell

Fehlerhafte Simulationen, bei denen ** kein Wasser ein- oder austritt** die Domäne höchstwahrscheinlich unangemessen definierte Randbedingungen aufweist. So können Sie beispielsweise die in Fig. 2 angegebenen offenen Grenzen mit prescribed Q (4 5 5) Upstream und prescribed H (5 4 4) Downstream betrachten.

debugging boundary conditions cli bluekenue

Figure 2:Die Definition offener (flüssiger) Grenzen mit prescribed Q (4 5 5) Upstream und prescribed H (5 4 4) Downstream.

Intuitiv können Sie denken, dass die vorgelagerte Grenze die Zahl (1) ist und die nachgeschaltete Grenze die Zahl (2) ist. Die Reihenfolge der Grenznummerierung hängt jedoch von der Definitionsordnung während der Einrichtung der Grenzen ab (z.B. in der BlueKenue pre-processing tutorial beschrieben). Wenn Sie sich nicht an die Definitionsreihenfolge erinnern, kann sie jederzeit in der Randdatei (*.cli) gelesen werden. So sieht die Randdatei für das oben gezeigte Mesh (Fig. 2) wie die Darstellung in Fig. 3 aus, wo das Outlet***** das Inlet* definiert ist. Daher ist die downstream (Outlet) offene Grenze die Nummer (1) und die upstream (Inlet) offene Grenze ist in dieser Simulation die Nummer (2).

debugging boundary conditions cli bluekenue

Figure 3:Beispielhafte Definition einer nachgeschalteten (Outlet) und einer vorgeschalteten (Inlet) offenen Grenze in einer Grenze. cli-Datei entsprechend Fig. 2.

So müssen diese beiden Grenzen in der Steuerungsdatei (*.cas) wie folgt referiert werden, um eine Durchflussrate Q (z.B. 10 m3^3/s) an der vorgelagerten und eine Tiefe H (z.B. 0,75 m) an der nachgeschalteten Grenze zu verschreiben:

PRESCRIBED FLOWRATES : 0.;10
PRESCRIBED DEPTHS : 0.75;0.

Problem bei der Boundary Number (Simulation Stop)

Dieser Abschnitt führt durch Debugging Fehlermeldungen wie:

DEBIMP_2D: PROBLEM ON BOUNDARY NUMBER       2
        GIVE A VELOCITY PROFILE
        IN THE BOUNDARY CONDITIONS FILE
        OR CHECK THE WATER DEPTHS
        OTHER POSSIBLE CAUSE:
        SUPERCRITICAL ENTRANCE WITH FREE DEPTH

Um die Ursache des Fehlers besser zu würdigen (z.B. herauszufinden, ob überkritische Strömungsbedingungen am Eingang die Ursache sind), fügen Sie die Froude number an die Ausgangsvariablen in der Lenkung (*.cas)-Datei. Dazu fügen Sie F an das Ausgabevariable Keyword:

VARIABLES FOR GRAPHIC PRINTOUTS : U,V,H,S,Q,F

Mit einer genaueren Ursache für den Fehler, versuchen Sie eine der folgenden Optionen:

Supercritical boundaries at the entrance

For supercritical flow conditions at the entrance, make sure that a prescribed Q and H boundary also gets a discharge and a depth assigned in the steering file. For instance, if the Inlet in Figures 2 and 3 was 5 5 5 (prescribed Q and H) instead of 4 5 5, the steering file needs to prescribe flowrates and depths. For instance, add a depth of 0.9 for the Inlet as follows:

PRESCRIBED FLOWRATES : 0.;10
PRESCRIBED DEPTHS : 0.75;0.9
Ändern des (vertikalen) Geschwindigkeitsprofils

Die Definition eines VELOCITY PROFILE-Keywords in der Lenkdatei wird in diesem eBook unter steady2d tutorial erläutert. Der Zusatz VERTICAL gilt nur für 3d-Modelle (weiterlesen unter Telemac 3d (SLF) section).

3d Modelle mit überkritischen Grenzen

Zu viele vertikale Schichten können zu sehr dünnen 3d-Netzelementen führen, die lokal überkritische Ströme verursachen. So sollten Sie die NUMBER OF HORIZONTAL LEVELS in der Steuerdatei reduzieren, um den CFLZustand zu erfüllen.

Gaia (Morphodynamik)

BEGRIFFSBESTIMMUNGEN

TELEMAC-Gaia kann mit einer Fehlermeldung wie KEYWORD: [...] UNKNOWN BOUNDARY CONDITIONS FILE ... unterbrechen. Diese Nachricht bedeutet, dass der Randbedingungstyp in der *.cli-Datei nicht den in der *.cas-Datei definierten Randbedingungen entspricht. Wenn z.B. die Grenzsäule (9 in der Gaia *.cli-Datei für CBOR) auf 5 gesetzt wird, versuchen Sie unter EQUILIBRIUM INFLOW CONCENTRATION : YES oder überprüfen Sie die für das Schlüsselwort *PRESCRIBED SUSPENDED SEDIMENTS CONCENTRATION VALUES definierten Zahlen.

Lesen Sie mehr über die Einrichtung von Randbedingungsdateien für Gaia in der Gaia Basics section. Die Definition von Randtypen in der Gaia-Lenkungsdatei wird separat für bedload und suspended load beschrieben.

Blaue Küche

Dieser Abschnitt wird von Federica Scolari.

BlueKenue kann Fehler werfen oder nicht korrekt zeigen, wenn Sie mit 3d Maschen arbeiten. Einige der Probleme können durch die neueste Version von BlueKenue behoben werden (v3.12.2-alpha zum Zeitpunkt der Bearbeitung dieses Artikels).

OnFileOpendata(): ERROR: on Activate()
** Ursachen:** Die Fehlermeldung tritt typischerweise bei parallelisierten Modellen auf, wenn Telemac3d / PARTEL das Netz am Ende der Simulation nicht korrekt zusammengeführt hat.

Lösung: Zwingen Sie TELEMAC, den temporären Simulationsordner nicht zu löschen (ein Ordner, der im Simulationsverzeichnis standardmäßig nur während einer Simulation angezeigt wird). Das Halten des temporären Berechnungsverzeichnisses wird erreicht, indem am Ende des Simulationslaufbefehls eine -t-Flag hinzugefügt wird. Tippen Sie zum Beispiel auf folgendes, um den Simulationsordner für eine Telemac3d-Simulation zu halten (lesen Sie mehr in Anhang A der Telemac3d manual):

telemac3d.py steering-file.cas -t

Der temporäre Ordner enthält T3DRES (mesh Partition) Dateien, die zusammengeführt und dann in BlueKenue geöffnet werden können. Um die T3DRES-Dateien zusammenzufügen, führen Sie den folgenden Befehl aus (vergewissern Sie sich, dass die TELEMAC-Umgebung noch mit source pysource.YOUR-ENV.sh aktiviert ist):

runcode.py --merge -w temp_directory/ telemac3d file.cas

Um Hilfe bei der Ausführung dieses Befehls zu erhalten, lesen Sie dieses TELEMAC Forum entry.

Für updates zu dieser Nachricht, folgen Sie dem BlueKenue Thread im TELEMAC Forum, um Updates zu diesem Fehler zu beheben.

PostTelemac Plugin

Einige Versionen von QGIS können einen Python-Fehler (gelb Frame in der oberen Region des Kartenansichtsport) werfen und einen Klick auf Stack zeigt eine Fehlermeldung. Am Ende der Fehlermeldung kann es import error: no module named gdal geschrieben werden. Der Fehler stammt wahrscheinlich aus einer Import-Anweisung in einem der Python-Skripte des PostTelemac Plugins. Um den gdal import Fehler zu beheben, finden Sie das Python-Skript, das die Fehlermeldung anhebt. So kann das Skript posttelemac_hdf_parser.py den Fehler durch seine import gdal-Anweisung verursachen. Um es zu beheben, zu öffnen und unter Windows, können Sie es im folgenden Verzeichnis finden:

C:\Users\USERNAME\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\PostTelemac\meshlayerparsers\posttelemac_hdf_parser.py

In der geöffneten Datei:

Wieder versuchen, das PostTelemac Plugin zu starten. Es sollte jetzt ohne Probleme laufen.

SALOME-HYDRO

SALOME-HYDRO startet nicht (Kernel/Session)

Wenn eine Fehlermeldung von Kernel/Session in der Naming Service angehoben wird, wird sie in der Regel in

$ [Errno 3] No such process ... 
   RuntimeError: Process NUMBER for Kernel/Session not found

Es gibt mehrere mögliche Ursprünge solcher Fehler, die teilweise in potenziell schwercodierten Bibliotheksversionen des Installers verwurzeln. Folgende Fehlerbehebungsoptionen existieren, die jedoch eine sorgfältige Prüfung erfordern, da sie das Betriebssystem beeinträchtigen könnten:

$ error while loading [...] libSOMETHING.so.20 cannot open [...] No such file or directory
$ /usr/lib/x86_64-linux-gnu/libSOMETHING.so.40
sudo cp /usr/lib/x86_64-linux-gnu/libSOMETHING.so.40 usr/lib/x86_64-linux-gnu/libSOMETHING.so.20
sudo cp /usr/lib/x86_64-linux-gnu/libmpi.so.40 /usr/lib/x86_64-linux-gnu/libmpi.so.20
sudo cp /usr/lib/x86_64-linux-gnu/libicui18n.so.63 /usr/lib/x86_64-linux-gnu/libicui18n.so.57
sudo cp /usr/lib/x86_64-linux-gnu/libicuuc.so.63 /usr/lib/x86_64-linux-gnu/libicuuc.so.57
sudo cp /usr/lib/x86_64-linux-gnu/libicudata.so.63 /usr/lib/x86_64-linux-gnu/libicudata.so.57
sudo cp /usr/lib/x86_64-linux-gnu/libnetcdf.so.13 /usr/lib/x86_64-linux-gnu/libnetcdf.so.11
sudo cp /usr/lib/x86_64-linux-gnu/libmpi_usempif08.so.40 /usr/lib/x86_64-linux-gnu/libmpi_usempif08.so.20
sudo cp /usr/lib/x86_64-linux-gnu/libmpi_java.so.40 /usr/lib/x86_64-linux-gnu/libmpi_java.so.20
sudo cp /usr/lib/x86_64-linux-gnu/libmpi_cxx.so.40 /usr/lib/x86_64-linux-gnu/libmpi_cxx.so.20
sudo cp /usr/lib/x86_64-linux-gnu/libmpi_mpifh.so.40 /usr/lib/x86_64-linux-gnu/libmpi_mpifh.so.20
sudo cp /usr/lib/x86_64-linux-gnu/libmpi_usempi_ignore_tkr.so.40 /usr/lib/x86_64-linux-gnu/libmpi_usempi_ignore_tkr.so.20
/usr/lib/x86_64-linux-gnu/libQtCore.so.5
/Salome-V2_2/prerequisites/Qt-591/lib/

GUI/Qt5-Unterstützung (GTK-Versionskompatibilität)

Mit den neueren Versionen der Qt-Plattform wird kein Menüeintrag in SALOME-HYDRO angezeigt. Um dieses Problem zu beheben, installieren und konfigurieren qt5ct styles:

sudo apt install qt5-style-plugins libnlopt0 qt5ct

Dann:

export QT_STYLE_OVERRIDE=gtk2
export QT_QPA_PLATFORMTHEME=qt5ct

Erfahren Sie mehr über Qt unter archlinux.org und in der arch wiki.