TSCW - OUTPUT - Plots und Daten Export
TBHC.txt
Druck- und Temperaturergebnisse in Kaverne und im Strömungsraum i Pro Zeitschritt werden hier die Druck- und Temperaturwerte in der Kaverne und für jeden Strömungsraum pro Schicht ausgegeben. Der Index i steht für die Nummer des Strömungsraumes (Tubing bzw. Ringraum), hochgezählt beginnend von der Bohrlochachse. Die Struktur dieser Datei kann in drei Teile gegliedert werden, die durch *** voneinander getrennt sind. Die ersten Zeilen sind im Folgenden exemplarisch dargestellt:
FLUID SPACE NO.: 1
MEDIUM: Stage 1: GAS.Methan
V_CAVERN: 488925.22
***
STAGE t_STAGE t_TOTAL T_CAVERN p_CAVERN T_BRINE_EQ T_WH p_WH PRODUCT AMOUNT FLOW_RATE w_MAX *** 0.00 25.00 50.00 75.00 100.00 125.00 150.00 175.00 200.00 225.00 250.00 275.00 300.00 325.00 350.00 375.00 400.00 425.00 450.00 475.00 500.00 525.00 550.00 575.00 600.00 625.00 650.00 675.00 700.00 725.00 750.00 775.00 800.00 825.00 850.00 875.00 900.00 925.00 950.00 975.00 1000.00 1100.00 *** 0.00 25.00 50.00 75.00 100.00 125.00 150.00 175.00 200.00 225.00 250.00 275.00 300.00 325.00 350.00 375.00 400.00 425.00 450.00 475.00 500.00 525.00 550.00 575.00 600.00 625.00 650.00 675.00 700.00 725.00 750.00 775.00 800.00 825.00 850.00 875.00 900.00 925.00 950.00 975.00 1000.00 1100.00
1 0.00 0.00 24.26 15.00 24.26 10.00 13.05 80400839.05 100000.00 10.70 *** 10.00 11.00 12.00 13.00 14.00 15.00 16.00 17.00 18.00 19.00 20.00 21.00 22.00 23.00 24.00 25.00 26.00 27.00 28.00 29.03 30.00 30.78 31.50 32.25 33.00 33.75 34.50 35.28 36.00 36.53 37.00 37.50 38.00 38.50 39.00 39.50 40.00 41.61 41.00 34.85 24.26 24.26 *** 13.05 13.10 13.15 13.19 13.24 13.28 13.33 13.38 13.42 13.47 13.51 13.56 13.61 13.65 13.70 13.74 13.79 13.83 13.88 13.93 13.97 14.02 14.06 14.11 14.15 14.20 14.25 14.29 14.34 14.38 14.43 14.47 14.52 14.57 14.61 14.66 14.70 14.75 14.79 14.84 14.88 15.00
1 0.00 0.00 24.26 15.00 24.26 10.59 13.05 80400709.24 100000.00 10.71 *** 10.59 11.60 12.60 13.60 14.60 15.60 16.60 17.60 18.60 19.60 20.60 21.60 22.60 23.60 24.61 25.61 26.61 27.62 28.61 29.55 30.42 31.19 31.92 32.67 33.43 34.19 34.93 35.61 36.24 36.76 37.24 37.74 38.24 38.74 39.24 40.15 40.24 38.19 34.71 30.10 24.26 24.26 *** 13.05 13.10 13.15 13.19 13.24 13.28 13.33 13.38 13.42 13.47 13.51 13.56 13.61 13.65 13.70 13.74 13.79 13.83 13.88 13.93 13.97 14.02 14.06 14.11 14.15 14.20 14.25 14.29 14.34 14.38 14.43 14.47 14.52 14.56 14.61 14.66 14.70 14.75 14.79 14.84 14.88 15.00
1 0.00 0.00 24.26 15.00 24.26 11.08 13.05 80400579.44 100000.00 10.73 *** 11.08 12.09 13.09 14.09 15.09 16.09 17.09 18.09 19.09 20.09 21.09 22.09 23.10 24.10 25.10 26.10 27.10 28.08 29.03 29.93 30.77 31.53 32.27 33.02 33.77 34.50 35.20 35.85 36.44 36.95 37.44 37.94 38.44 39.09 39.44 39.17 38.02 35.38 31.95 28.31 24.26 24.26 *** 13.05 13.10 13.15 13.19 13.24 13.28 13.33 13.38 13.42 13.47 13.51 13.56 13.61 13.65 13.70 13.74 13.79 13.83 13.88 13.93 13.97 14.02 14.06 14.11 14.15 14.20 14.25 14.29 14.34 14.38 14.43 14.47 14.52 14.56 14.61 14.66 14.70 14.75 14.79 14.84 14.88 15.00
1 0.00 0.00 24.26 15.00 24.26 11.51 13.05 80400449.63 100000.00 10.74 *** 11.51 12.51 13.51 14.52 15.52 16.52 17.52 18.52 19.52 20.52 21.52 22.52 23.52 24.53 25.53 26.52 27.50 28.46 29.37 30.24 31.07 31.83 32.57 33.31 34.04 34.75 35.41 36.03 36.61 37.12 37.61 38.16 38.61 38.89 38.71 37.74 36.05 33.49 30.48 27.45 24.26 24.26 *** 13.05 13.10 13.15 13.19 13.24 13.28 13.33 13.38 13.42 13.47 13.51 13.56 13.61 13.65 13.70 13.74 13.79 13.83 13.88 13.93 13.97 14.02 14.06 14.11 14.15 14.20 14.24 14.29 14.34 14.38 14.43 14.47 14.52 14.56 14.61 14.66 14.70 14.75 14.79 14.84 14.88 15.00
1 0.01 0.01 24.26 15.00 24.26 11.90 13.05 80400319.83 100000.00 10.75 *** 11.90 12.90 13.91 14.91 15.91 16.91 17.91 18.91 19.91 20.91 21.91 22.91 23.91 24.91 25.91 26.89 27.85 28.78 29.68 30.53 31.34 32.10 32.83 33.56 34.27 34.95 35.60 36.20 36.76 37.29 37.76 38.20 38.43 38.29 37.68 36.38 34.55 32.18 29.54 26.94 24.26 24.26 *** 13.05 13.10 13.15 13.19 13.24 13.28 13.33 13.38 13.42 13.47 13.51 13.56 13.61 13.65 13.70 13.74 13.79 13.83 13.88 13.93 13.97 14.02 14.06 14.11 14.15 14.20 14.24 14.29 14.34 14.38 14.43 14.47 14.52 14.56 14.61 14.65 14.70 14.75 14.79 14.84 14.88 15.00
1 0.01 0.01 24.26 15.00 24.26 12.27 13.06 80400190.02 100000.00 10.76 *** 12.27 13.27 14.28 15.28 16.28 17.28 18.28 19.28 20.28 21.28 22.28 23.28 24.28 25.27 26.25 27.22 28.16 29.08 29.95 30.79 31.59 32.34 33.06 33.78 34.47 35.14 35.77 36.36 36.90 37.40 37.78 38.03 37.99 37.54 36.66 35.22 33.38 31.21 28.87 26.58 24.26 24.26 *** 13.06 13.10 13.15 13.19 13.24 13.28 13.33 13.38 13.42 13.47 13.51 13.56 13.61 13.65 13.70 13.74 13.79 13.83 13.88 13.93 13.97 14.02 14.06 14.11 14.15 14.20 14.24 14.29 14.34 14.38 14.43 14.47 14.52 14.56 14.61 14.65 14.70 14.75 14.79 14.84 14.88 15.00
(weiter bis zum Simulationsende)
Die *TBHC.txt
Datei kann mit folgendem Befehl eingelesen werden:
1 from tscw_module import TSCW_TBHC
2 from pathlib import Path
3
4 path = Path(r"DeinPfad/*TBHC.txt")
5 tscw_data = TSCW_TBHC(path)
Die einzelnen Parameter können folgerndermaßen aufgerufen werden:
1 # Sobald die TSCW_TBHC Klasse initiiert wurde, können einzelnen Parameter aufgerufen werden.
2
3 tscw_data.df # Übersicht aller eingeladenen Daten (pandas.DataFrame)
4 tscw_data.sr_df # pandas DataFrame von den Meta Daten
5 tscw_data.vertT_df # pandas DataFrame von den Temperatur daten
6 tscw_data.vertP_df # pandas DataFrame von den Druck daten
7
8 tscw_data.t_total # Numpy Array über Simulationszeit
9 tscw_data.t_etappe # Numpy Array über jeweilige Etappenzeit
10 tscw_data.stage_idx # Numpy Array über Etappennummer
11 tscw_data.depth_array # Numpy Array über simulierter vertikale Stützpunkte
Excel/CSV Export
Pandas Dataframe
Formate können mühelos als csv oder xlsx Datei exportiert werden.
Falls beispielsweise die gesamte *TBHC.txt
Datei in ein bearbeitbares Excel File konvertiert werden möchte,
kann dies mit folgendem Befehl ausgeführt werden:
1 import pandas as pd
2 tscw_data.df.to_excel('Export.xlsx', header = True, index = False)
Note
Dies gilt analog für eingelesene TFC.txt und TFBH.txt Dateien.
Plots
Temperatur und Druck vs Zeit
Die Druck- und Temperaturverteilung über die Zeit kann mit der Funktion plot_tp_vs_time()
geplottet werden:
- plot_tp_vs_time(depth_t, depth_p, is_export)
- Parameters:
depth_t (array, optional) – Die Tiefenintervalle für Temperatur, standardmäßig alle
depth_p (array, optional) – Die Tiefenintervalle für Druck, standardmäßig alle
is_export (bool, optional) – standardmäßig False
Hint
Die Tiefenintervalle müssen nicht 1:1 mit den simulierten übereinstimmen. Im Algorithmus wird nach dem nächst gelegenen Intervall gesucht.
Zum Beispiel liefert der Code:
1from tscw_module import TSCW_TBHC
2from pathlib import Path
3path = Path(r"DeinPfad/*TBHC.txt")
4tscw_data = TSCW_TBHC(path)
5depths = [0.0,122.5,245.0,367.5,490.0]
6tscw_data.plot_tp_vs_time(depths,depths)

Temperatur und Druck vs Tiefe
Analog können die Daten über die Tiefe geplotted werden.
Zum Beispiel liefert der Code:
6times = np.array([0, 10, 100])
7tscw_data.plot_tp_vs_depth(time_t=depths, time_p=[])
Hint
In diesem Beispiel wurde mit time_p=[]
keine Druckdaten ausgewählt.
Somit erscheinen im Plot nur Temperaturdaten für die ausgewählten Zeitpunkte.
Analog ist dies auch in der Funktion plot_tp_vs_time
mit den Tiefenintervallen möglich.

TFBH.txt
Diese Datei beinhaltet das berechnete Temperaturfeld um die Bohrlochachse für jeden Zeitschritt mit selbsterklärender Darstellung (analog zum 2. Teil der Datei *_i_ pTBHC.txt).
Die Datei kann folgendermaßen eingelesen werden:
1 from tscw_module import TSCW_TBHC
2 from pathlib import Path
3 path = Path(r"DeinPfad/*TFBH.txt")
4 tfbh_data = TSCW_TFBH(path)
Die Temperaturverteilung entlang des Bohrlochs mit der Funktion plot_temp_distribution()
dargestellt werden:
- plot_temp_distribution(times, depths, range_radial, is_colormap, is_export, field_data_picklePath: str = None)
- Parameters:
times (list) – Zeitpunkte zum plotten in [h]
depths (list, optional) – darzustellende Teufen, standartmäßig werden alle Stützpunkte dargestellt.
range_radial (list, optional) – [x0, x1] Grenzwerte der x-Achse in [m], defaults to None
is_colormap (bool, optional) – Plot als a colormap oder line plot, defaults to True
is_export (bool, optional) – export figure into parent folder of file, defaults to False
field_data_picklePath (str) – Pfad zur (/*.pickle)-Datei der Klasse FieldData (falls sie exportiert wurde). Wenn geladen, wird die Geometrie im Hintergrund angezeigt. Standardmäßig ist dies auf None gesetzt.
- Return type:
figure
So liefern beispielsweise die Befehle:
1 import matplotlib.pyplot as plt
2 tfbh_data.plot_temp_distribution(times = [0, 10, 100], range_radial=[0, 0.5], is_colormap = True)
3 tfbh_data.plot_temp_distribution(times = [0, 10, 100], depths = [0, 200, 400], range_radial=[0, 0.5], is_colormap = False)
4 plt.show()
isColormap = True |
isColormap = False |
![]() |
![]() |
Der Temperaturverlauf kann ebenfalls als time lapse mit der Funktion create_movie()
dargestellt werden
.
- create_movie(range_radial, is_export, n_levels, field_data_picklePath)
- Parameters:
range_radial (Liste, optional) – [x0, x1] Bereich des radialen Start- und Endpunktes (keine exakte Übereinstimmung erforderlich), Standardwert ist None
is_export (bool, optional) – exportiert den Film als .mp4 in den gleichen Ordner wie die aktuelle Instanz, Standardwert ist False
n_levels (int, optional) – wie viele Ebenen für plt.contourf, Standardwert ist 100
field_data_picklePath (str, optional) – Pfad zu (/*.pickle) der FieldData-Klasse (wenn sie exportiert wurde). Wenn geladen, wird die Geometrie im Hintergrund angezeigt, Standardwert ist None
- Returns:
Animation
- Return type:
animation.FuncAnimation
In unserem Beispiel kann mit folgendem Befehl der Zeitraffer exportiert werden.
# ohne Modellgeomtrie im Hintergrund
tfbh_data.create_movie(range_radial = [0, 0.5], is_export = True)
# mit Modellgeomtrie im Hintergrund
geometry_path = Path(r"*.pickle")
tfbh_data.create_movie(range_radial = [0, 0.5], is_export = True, field_data_picklePath = geometry_path)
>>> Saving L:\Projekte\SG-UBT\40_Thermodynamik\TSWC_GACA_Bernburg\Gruppe1\BB_Gruppe1_Bb122\Ausspeisung_DruckKriterium\SaveFolder\BB_Gruppe1_Bb122Ausspeisung_DruckKriterium_TFBH.mp4
>>> 100%|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 1100/1100 [01:39<00:00, 11.07it/s]
|
|
TFC.txt
Diese Datei beinhaltet das berechnete Temperaturfeld um die Kaverne für jeden Zeitschritt mit selbsterklärender Darstellung.
Analog zu der Methode in TFBH.txt kann mit plot_temp_distribution()
der Temperaturverlauf in der Kaverne für verschiedene Zeitpunkte geplottet werden.
from tscw_module import TSCW_TFC
from pathlib import Path
import matplotlib.pyplot as plt
tfc_data = TSCW_TFC(Path(r"deinPfad/*TFC.txt"))
tfc_data.plot_temp_distribution(times = [0, 100, 200], range_radial = [30, 50])
plt.show()

Vergleich verschiedener Simulation
Die Simulationsergebnisse verschiedener Varianten können folgender Methode verglichen werden:
- plot_pt_difference(depths, save_folder: Path, xlimits, *args)
- Parameters:
depths (list) – zu plottende Teufen
save_folder (Path, bei None wird die Datei nicht gespeichert.) – Pfad zum Ordner
xlimits (List (x1, x2)) – Min. und max. Limit der x-Achse (Zeit), wenn None angegeben wird, wird die Achsenlimits automatisch gewählt.
args (list of TSWC_TBHC instances.) – Liste mit anderen OIbjekten der Klasse TSWC_TBHC.
Beispiel:
from pathlib import Path
import matplotlib.pyplot as plt
from tscw_module import TSCW_TBHC
path1 = Path(r'Kh48_CH4_pres1.00_A5.46e-05_B8.10e-09h952.6_T32.4rate_208.33__1_pTBHC.TXT')
path2 = Path(r'Kh48_H2_pres1.00_A5.46e-05_B8.10e-09h952.6_T32.4rate_208.33__1_pTBHC.TXT')
TbhcData_1 = TSCW_TBHC(path1)
TbhcData_1.name = 'CH4 - 4999 Nm3/d - mit Minsky'
TbhcData_2 = TSCW_TBHC(path2)
TbhcData_2.name = 'H2 - 4999 Nm3/d - mit Minsky'
TbhcData_1.plot_pt_difference([0, 467, 935], None, None, TbhcData[1:])
plt.show()

Falls die Axialkraft für die jeweiligen Objekte ebenfalls berechnet worden ist, kann analog mit der Methode plot_forces_difference()
die Axialkraftverteilung geplottet werden.
