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:
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.
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¶
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.
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.
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¶
*Checkpoint/Hotstart: Wenn Sie einen Lauf aus einem bestimmten Zeitschritt neu starten müssen, können Sie die Teil-Subdomain-Dateien oft direkt als Hotstart nutzen, indem Sie die richtigen Keywords in der Lenkdatei festlegen (z.B.
RESTART FILE/RESTART = YES). In diesem Fall müssen Sie nicht unbedingt zuerst zusammenführen: Telemac kann die Subdomain-Dateien in einem parallelen Neustart lesen.*Teilschreiben: Wenn der Start Mitte der Schrift abgestürzt oder es eine Datei Korruption gab, könnte GRETEL (oder PARTEL) nicht zusammenführen. Sie müssten in der Regel die beschädigte Datei(en) entfernen oder reparieren oder von einem früheren gültigen Kontrollpunkt neu starten.
*Batch/Automatic Merge: In vielen Telemac-Skripten oder Workflows erfolgt die Verschmelzung automatisch am Ende einer Simulation. Wenn Sie die Zusammenführung benötigen, um selbst wenn die Simulation abgestürzt ist, ist das Laufen von GRETEL oder PARTEL im Merge-Modus in der Regel die beste Lösung.
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 gdbStarten 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_telemac2dIn gdb Tipp:
(gdb) runZum Ende gdb tippen Sie auf:
(gdb) quitDieser 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.011CLASSES CRITICAL SHEAR STRESS FOR MUD DEPOSITION = 0.011; 0.011 ; 0.011; 0.011
Steuerung (CAS) Dateien¶
Prefer
:over=Legen Sie alle Modelldateien in den gleichen Ordner und ** verwenden Sie nur Dateinamen** ohne Verzeichnisse von 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.

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.medBis zum Schreiben dieses Tutorials bittet mdump um Eingabevariablen in Französisch, was Folgendes bedeutet:
Mode d’affichage de noeuds? was bedeutet in
English: Node Display Mode?Option
1: Interlaced-ModusOption
2: Nicht-interlaced-Modus
Connectivité des éléments? was bedeutet in
English: Element-Konnektivität?Option
1Option
2
Il y a 1 maillage(s) de type local dans ce fichier. Lequel voulez-vous lire (0 pour tous|1|2|3|...|n)? was bedeutet in
English: Es gibt 1 lokale Maschen in dieser Datei. Welchen wollen Sie lesen (0 für alle oder |2|3|...|n)?Option
0: Alles lesenOption
i: Lesen Sie die Netznummeri
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.

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).

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 m/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 DEPTHUm 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,FMit 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 Hboundary also gets a discharge and a depth assigned in the steering file. For instance, if the Inlet in Figures 2 and 3 was5 5 5(prescribed Q and H) instead of4 5 5, the steering file needs to prescribe flowrates and depths. For instance, add a depth of0.9for 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 ZusatzVERTICALgilt 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 -tDer 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.casUm 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.pyIn der geöffneten Datei:
Öffnen Sie die betroffene Datei, die sich hier befindet:
posttelemac_hdf_parser.pyFind the
import gdalstatement and **replace it withfrom osgeo import gdal(i.e.,and writeimport gdalfrom osgeo import gdal)Speichern und schließen Sie die Python-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 foundEs 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:
Erstellen Sie manuell Kopien neuerer Bibliotheken mit Namen älterer Versionen. Zum Beispiel
In der 4. Zeile nach dem Laufen
./salome,Kernel/Sessionkann
$ error while loading [...] libSOMETHING.so.20 cannot open [...] No such file or directoryErkennen Sie die mit
whereis libSOMETHING.so.20installierte Version (ersetzen SielibSOMETHING.so.20mit der fehlenden Bibliothek); z.B. kann dieser Befehl ausgeben
$ /usr/lib/x86_64-linux-gnu/libSOMETHING.so.40Erstellen Sie eine Kopie der neueren Bibliothek und umbenennen Sie die Kopie nach Bedarf von SALOME; zum Beispiel tippen Sie auf
sudo cp /usr/lib/x86_64-linux-gnu/libSOMETHING.so.40 usr/lib/x86_64-linux-gnu/libSOMETHING.so.20Wahrscheinlich müssen die folgenden Dateien kopiert werden:
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Überschreiben Sie die interne Version von Qt von SALOME-HYDRO:
Kopie
/usr/lib/x86_64-linux-gnu/libQtCore.so.5Einfügen in (bestätigen Sie den Ersatz
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 qt5ctDann:
Konfigurieren Sie
qt5ct(nur tippen Sie aufqt5ctin Terminal)Gehen Sie zum Ansicht Tab
Style an
gtk2und Standarddialoge anGTK2Klicken Sie auf Apply und OK
Öffnen Sie die Datei
~/.profile(z.B. verwenden Sie den Dateibrowser, gehen Sie in denHome-Ordner und drücken SieCTRL+H, um versteckte Dateien anzeigen zu können) und fügen Sie am Ende der Datei hinzu:
export QT_STYLE_OVERRIDE=gtk2
export QT_QPA_PLATFORMTHEME=qt5ctSpeichern und schließen Sie
.profileund neu starten (oder einfach neu anmelden).
Erfahren Sie mehr über Qt unter archlinux.org und in der arch wiki.