6.1 Beschreibung der Steuerungsdatei
Mit der Version 3.09.00 liegen die Eingabedateien
in einem neuen völlig freien Format vor. Das alte Dateiformat kann zwar weiterhin eingelesen werden, aktuelle und künftige Neuerungen stehen dann allerdings nicht zur Verfügung. Rismo2D unterscheidet die neuen von den alten Eingabedateien durch ein Schlüsselwort in der 1. Zeile:
Jede weitere Zeile mit relevanten Programmparametern beginnt ebenfalls mit einem Schlüsselwort. Alle anderen Zeilen werden überlesen und können daher beliebige Kommentare enthalten. Auch Zeilen, die mit einem Kommentarzeichen # oder * in der ersten Spalte beginnen, bleiben unberücksichtigt. Dies bietet die Möglichkeit, Zeilen mit Schlüsselworten vorübergehend zu deaktivieren.
Die Schlüsselworte können in einer beliebigen Reihenfolge eingegeben werden. Außerdem können die Schlüsselworte fehlen, die für einen Programmlauf nicht benötigt werden, oder bei denen Sie Standardwerte verwenden möchten.
6.2 Beschreibung der Zeitschritt-/Randbedingungsdatei
In der Zeitschritt-/Randbedingungsdatei sind die Parameter zusammengefasst, mit denen Ablaufsteuerung sowie Randbedingungen zu den jeweiligen Zeitschritten definiert werden. Zum Einlesen dieser Datei muss in der Steuerdatei (siehe Abschnitt 6.1) mit dem Schlüsselwort $TIMESTEPFILE ein Dateiname vorgegeben werden.
Für einen Zeitschritt können Sie einerseits Randbedingungen vorgeben und andererseits die zu bearbeitenden Programmzyklen ($TM_CYCLE). Ein Programmzyklus kann z.B. die Lösung der Flachwassergleichung oder die Lösung der k-e-Gleichungen sein.
Fehlt das Schlüsselwort $TIMESTEPFILE in der Steuerdatei, versucht Rismo2D die im Folgenden definierten Schlüsselworte aus der Steuerdatei einzulesen:
alphabetische Liste
Zeitschrittwichtung
$TM_WEIGHT <theta>
Die Zeitschrittwichtung J gilt (z.Zt.) gleichermaßen für alle Differentialgleichungen. Der Standardwert entspricht dem Zentraldifferenzenverfahren:
$TM_WEIGHT 0.5
Für J sind allgemein Werte zulässig im Bereich von 0,0 < J ≤ 1,0. Dabei entspricht:
J = 0,0 |
Vorwärtsdifferenz (meist sind nur Werte größer Null zulässig) |
J = 0,5 |
Zentraldifferenz |
J = 1,0 |
Rückwärtsdifferenz |
|
Zeitschrittlänge
$TM_INTERVAL <timeInterval> <relax_UV> <relax_H> <relax_KD>
|
|
Standardwert
|
timeInterval |
Länge des Zeitschritts in Sekunden |
1.0
|
relax_UV |
relaxierter Zeitschritt in den Impulsgleichung |
1.0
|
relax_H |
relaxierter Zeitschritt in der Kontinuitätsgleichung |
1.0
|
relax_KD |
relaxierter Zeitschritt in den k-e-Gleichungen |
1.0
|
Für die Lösung stationärer Gleichungen spielen diese Parameter keine Rolle.
Für eine instationäre Simulation legen Sie hier mit dem Parameter <timeInterval> die Zeitdiskretisierung fest (vgl. $TM_CYCLE 2 und 5). Die Länge des Zeitintervalls hat einen entscheidenden Einfluss auf das Verhalten der Strömung. Wenn Sie beispielsweise instationäre Prozesse, wie z.B. die Kármánsche Wirbelstraße, nachbilden möchten, ist neben einer ausreichenden räumlichen auch eine ausreichende zeitliche Auflösung der Strömung erforderlich. Auch bei einer instationären Simulation sind in jedem Zeitschritt mehrere Iterationen bis zur Konvergenz erforderlich. Der Zeitgradient wird im Rahmen dieser Iterationen iterativ bestimmt. Aus diesem Grund ist die Zeitschrittlänge unabhängig vom so genannten Courant-Kriterium und kann frei gewählt werden.
Der zur Zeit übliche Lösungsweg zur Berechnung stationärer Strömungen beruht ebenfalls auf den instationären Gleichungen, die nun jedoch in einer vereinfachten Form gelöst werden; auf die iterative Bestimmung der Zeitgradienten wird verzichtet (vgl. $TM_CYCLE 3 und 6). Im Gegensatz zur instationären Simulation wird hierzu ein sehr langer quasi stationärer Zeitschritt gewählt (z.B. 1 Tag = 86.400 Sekunden). Es empfiehlt sich jedoch die Simulation mit einem sehr kurzen "relaxierten Zeitschritt" zu beginnen, um die Iterationen zu stabilisieren (vgl. auch den $RELAX-Parameter in der Steuerdatei). Ein Anhaltswert für die Wahl des relaxierten Zeitschritts ist das Courant-Kriterium (Courant-Zahl Cu):
Cu |
=
|
v∙Dt
|
<
|
1,0 |
Þ
|
Dt
|
<
|
Dx
|
|
|
Dx
|
v
|
|
$TM_OUTPUT <no1>,<no2>,...
$TM_OUTPUT <fst> to <lst> step <inc>
Mit diesem Parameter legen Sie fest zu welchen Zeitschritten eine Ausgabe der Berechnungsergebnisse erfolgen soll. Die Vorgabe der Zeitschritte kann in zwei verschiedenen Formaten erfolgen. Entweder durch eine mit Komma oder Leerzeichen separierte Liste:
$TM_OUTPUT 5,10,15,20,25,30,35,40,45,50
oder durch einen Ausdruck ählich dem Schleifenbefehl in der Programmiersprache Basic:
$TM_OUTPUT 5 to 50 step 5
Beide Zeilen bewirken eine Ausgabe zu den gleichen Zeitschritten.
Falls der Parameter nicht angegeben wird, erfolgt eine Ausgabe zu jedem Zeitschritt. Nach dem letzten Zeitschritt erfolgt immer eine Ausgabe.
|
Zeitschrittsteuerung
$TM_STEPS <first> <last> <loop>
Hier definieren Sie mit den Parametern <first> und <last> die Anzahl der Zeitschritte, die in dem Berechnungslauf abgearbeitet werden sollen. Es müssen nicht für jeden zu berechnenden Zeitschritt Randbedingungen vorgegeben werden. Sobald der letzte Zeitschritt mit Vorgaben bearbeitet wurde, verwendet Rismo2D den im Parameter <loop> definierten Zeitschritt und wiederholt ab diesem Zeitschritt die Abfolge der Rabdbedingungen.
Der Zweck des Parameters <loop> kann einerseits zur Definition von periodischen Randbedingungen verwendet werden, und andererseits, um z.B. Stofftransport- und Strömungsberechnung in einer definierten Abfolge von Zeitschritten durchzuführen.
Folgendes Beispiel soll die Zeitschrittsteuerung veranschaulichen:
Beispiel |
Zeitschritt
|
Ablauf |
$TM_STEPS 1 50 1
$TM_STEP_NO 1
... Strömungsberechnung &
... Stofftransportberechnung
$TM_STEP_NO 2
... Stofftransportberechnung
$TM_STEP_NO 10
... Stofftransportberechnung
|
1
2 - 10
11
12 - 20
21
22 - 30
31
32 - 40
41
42 - 50
|
Strömung + Stofftransport
Stofftransport
Strömung + Stofftransport
Stofftransport
Strömung + Stofftransport
Stofftransport
Strömung + Stofftransport
Stofftransport
Strömung + Stofftransport
Stofftransport |
|
$TM_STEP_NO <no>
Der Parameter $TM_STEP_NO leitet einen neuen Block mit Parametern (Programmzyklen und Randbedingungen) für den Zeitschritt <no> ein. Falls dieser Parameter fehlt, werden alle Parameter dem Zeitschritt 1 zugeordnet.
|
Steuerung des Programmablaufs im Zeitschritt
$TM_CYCLE <cycle_1> <cycle_2> ...
$TM_TURBULENCE <turb_1> <turb_2> ...
$TM_MAXITER <maxiter_1> <maxiter_2> ...
$TM_SOLVER <solver_1> <solver_2> ...
Mit diesen Parametern steuern Sie den Programmablauf in einem Zeitschritt. Aus der unten gegebenen tabellarischen Liste wählen Sie zum einen eine Folge von Programmzyklen ($TM_CYCLE), das heißt eine Abfolge von Gleichungen, die in dem Zeitschritt gelöst werden sollen. Für die stationäre Strömungsberechung eines Flusses mit einem algebraischen Turbulenzmodell wählen Sie zum Beispiel:
$TM_CYCLE 90 60 3
Für jeden Programmzyklus definieren Sie außerdem ein Turbulenzmodell <turb>, die maximale Anzahl der Iterationen <maxiter> sowie einen Gleichungslöser <solver> aus der Definitionsliste in der Steuerdatei (vgl. $SOLVER). Das Turbulenzmodell hat nur Einfluss auf die Berechnung im Strömungsmodell sowie im k-e-Modell. Sie wäjhlen das Turbulenzmodell mit einer dreistelligen Zahl. Folgende Wahlmöglichkeiten stehen Ihnen zur Verfügung:
Wahl der Turbulenzmodellierung $TM_TURBULENCE |
|
Implementierung der Wirbelviskosität |
1
|
nt bereichsweise konstant |
2
|
nt isotrop berechnet aus k-e-Werten |
3
|
nt anisotrop berechnet aus k-e-Werten (ELDER-Modell) |
|
Grenzwerte für die Wirbelviskosität |
1#
|
unterer Grenzwert: vtmin (vgl. $MINMAX) |
2#
|
unterer Grenzwert: LES (netzabhängiges lm; SMAGORINSKY) |
|
Iterative Behandlung von nt |
1##
|
nt wird im Programmzyklus iterativ verbessert |
Der vollständige Programmablaufsteuerung für die stationäre Strömungsberechung eines Flusses mit dem algebraischen ELDER-Turbulenzmodell würde folgende Eingabe erfordern:
$TM_CYCLE 90 60 3
$TM_TURBULENCE 0 0 13
$TM_MAXITER 0 0 20
$TM_SOLVER 0 0 1
Programmzyklen $TM_CYCLE |
Zweidimensional-tiefengemittelte Flachwassergleichung |
|
Lösung mit quadratischen Ansatzfunktionen für die Fließgeschwindigkeit und linearen Ansatzfunktionen für den Wasserspiegel |
1 |
stationäre Gleichungen |
2 |
instationäre Gleichungen |
3 |
instationäre Gleichungen für stationäre Strömungen mit Zeitrelaxation |
|
Lösung mit linearen Ansatzfunktionen für die Fließgeschwindigkeit und elementweise konstantem Wasserspiegel
Anmerkung: Nach den bisherigen Erfahrungen zeigen diese Gleichungen nur bei Finite-Elemente-Gittern, die überwiegend aus Viereckselementen bestehen, ein gutes Konvergenzverhalten. Bei reinen Dreiecksgittern konnte bisher keine Konvergenz erzielt werden. |
5 |
instationäre Gleichungen |
6 |
instationäre Gleichungen für stationäre Strömungen mit Zeitrelaxation
|
Initialisierung |
30 |
Initialisierung des Wasserspiegels |
35 |
Wasserspiegel im Elementvolumen berechnen
Dieser Zyklus ist erforderlich, wenn Sie von einem Strömungsmodell 1,2 oder 3 auf ein Strömungsmodell 4,5 oder 6 umschalten. |
40 |
Divergenzfreie Strömung
In diesem Zyklus wird die Druck-Poisson-Gleichung für die 2D-tiefengemittelte Strömung gelöst. Die Lösung erfolgt mit quadratischen Ansatzfunktionen für die Fließgeschwindigekeit un mit linearen Ansatzfunktion für das Potenzial.
|
Transportgleichungen |
50 |
Advektions-Dispersions-Gleichung für einen gelösten/suspendierten Stoff
In der Gleichung enthalten ist ein Erosionsterm und ein Sedimentationsterm für nicht-bindige Sedimente. Die Einstellungen erfolgen in der Materialdatei.
|
Algebraische Turbulenzmodelle
... haben auch die Funktion die Turbulenzparameter des k-e-Modells zu initialisieren. Die Berechnung der Wirbelviskosität, die dann im Strömungsmodell benötigt wird, erfolgt nach der Prandtl-Kolmogorov-Beziehung:
|
60 |
Berechnung aus Sohlschubspannung t und Fliesstiefe H |
61 |
Berechnung aus Sohlschubspannung t, Fliesstiefe H und Strömungsgradienten
Dies ist eine experimentelle Version, die auf einem Gleichgewicht von Produktion und Dissipation der Turbulenz beruht. |
62 |
Prandtl'scher Mischungsweg mit Elementparameter lm
Die Mischweglänge lm muss in der Materialdatei (zonenweise) definiert werden. |
63 |
Prandtl'scher Mischungsweg mit netzabhängigem lm
DIe Mischweglänge wird bei diesem Grobstruktur-Turbulenzmodell durch das Produkt aus Smagorinski-Konstante und lokalem Knotenabstand ersetzt. Die Smagorinski-Konstante ist nun anstelle der Mischweglänge in der Materialdatei zu definieren.
|
Eingleichungs-Turbulenzmodelle
Die hier implementierten Eingleichungsmodelle sind experimentell. Die turbulente kinetische Energie k wird durch die Lösung Transportgleichung für k ermittelt. Für die Dissipation e werden algebraische Ansätze verwendet. |
71 |
stationäre Gleichung |
72 |
instationäre Gleichung |
73 |
instationäre Gleichung für stationäre Strömungen mit Zeitrelaxation
|
Zweigleichungs-Turbulenzmodelle
k-e-Modell |
|
Lösung mit quadratischen Ansatzfunktionen für k und e. |
81 |
stationäre Gleichungen |
82 |
instationäre Gleichungen |
83 |
instationäre Gleichungen für stationäre Strömungen mit Zeitrelaxation |
|
Lösung mit linearen Ansatzfunktionen für k und e. |
84 |
stationäre Gleichungen |
85 |
instationäre Gleichungen |
86 |
instationäre Gleichungen für stationäre Strömungen mit Zeitrelaxation
|
Spezielle Programmzyklen |
90 |
Nass-/Trocken-Algorithmus |
95 |
Bestimmung der optimalen Elementreihenfolge (reordering). |
98 |
Datenausgabe, skaliertes Modell |
99 |
allgemeine Datenausgabe |
|
Randbedingungen an Knoten
$TM_BOUND_NODE <no> <type> <U> <V> <S> <K> <D> <C>
Mit diesem Parameter legen Sie Randbedingungen für den Knoten <no> fest. Die Interpretation der Parameter <U> <V> <S> <K> <D> <C> hängt von <type> ab. Eine Übersicht der für Knoten definierbaren Randbedingungen gibt die folgende Tabelle.
type
|
RB
|
Beschreibung |
Parameter |
1
|
D
|
Einlaufrandbedingung
Vorgabe des breitenbezogenen Zuflusses q
Mit dieser Randbedingung wird am Einlaufknoten ein Zufluss definiert. Der Wasserspiegel kann sich abhängig von den berechneten Strömungsverhältnissen frei einstellen. Die Gleichungen für die Fließgeschwindigkeit am Einlaufrand werden durch die Bedingung:
q = U∙H [m³/s/m]
mit Vektoren q und U = {U;V}.
ersetzt. Definieren Sie q = [U∙H; V∙H} über die Parameter U und V. Hierdurch wird auch die Strömungsrichtung am Knoten vorgegeben.
|
U,V
|
2
|
N
|
Auslaufrandbedingung
Vorgabe des Wasserspiegels S [mNN]
Definieren Sie den Wasserspiegel als Parameter S. Dies ist eine "weiche" Randbedingung für den Auslaufrand, die auch der Kontinuitätsbedingung genügt.
|
S
|
4
|
-
|
Offener Rand / Auslaufrandbedingung
Seitliche Ränder, die nicht mit einer vom Anwender spezifizierten Randbedingung belegt sind, erhalten intern eine automatische Randbedingung. Offene Ränder müssen daher vom Benutzer eigens gekennzeichnet werden.
Die Randbedingung ist auf einem Auslaufrand mit schießendem Abfluss zu wählen, da der Wasserspiegel nicht von unterstrom reguliert wird. |
|
8
|
D
|
Strömungsrichtung
Vorgabe der Strömungsrichtung t
t = U / |U|
mit Vektoren t und U sowie |U| = Betrag von U
Mit dieser Randbedingung wird am Knoten die Richtung der Strömung definiert. Dies wird analog zur (automatischen) Definition der Strömungsrichtung auf nicht durchströmten Rändern ereicht, indem eine Strömungsgleichung eliminiert wird und eine Rotation der Gleichungen in die definierte Strömungsrichtung erfolgt.
|
U,V
|
16
|
D
|
Fließgeschwindigkeit U = {U;V}
Die feste Vorgabe der Fließgeschwindigkeit wird durch das Eliminieren bieder Strömungsgleichungen erreicht.
|
U,V
|
32
|
D
|
Wasserspiegellage
Vorgabe des Wasserspiegels S [mNN]
Definieren Sie den Wasserspiegel als Parameter S. Dies ist eine "harte" Randbedingung für den Auslaufrand. An dem Knoten wird die Kontinuitätsbedingung nicht erfüllt.
|
S
|
64
|
D
|
Turbulenz
Feste Vogabe der Turbulenzparameter k und e
|
K,D
|
128
|
C
|
Transportrate
Feste Vorgabe der Transportrate Qs [kg/s]
|
C
|
4096
|
D
|
Stoffkonzentration
Feste Vorgabe der Stoffkonzentration C [kg/m³]
|
C
|
Die Buchstaben D = Dirchlet-Randbedingung, N = Neumann-Randbedingung und C = Cauchy-Randbedingung geben den Typ der Randbedingung an.
Die einzelnen Randbedingungen können im Rahmen des physikalisch/numerisch Sinnvollen durch eine einfache Addition des Parameters <type> überlagert werden. (Die Nummern sind jeweils 2er-Potenzen, so dass keine Seiteneffekte auftreten können.)
Beispiel: Sollen an einem Auslaufrandknoten (Typ 2) eine Strömungsrichtung (Typ 4) und die Turbulenzparameter k und e (Typ 32) vorgegeben werden, so lautet der Randbedingungstyp: type = 2 + 4 + 32 = 38.
|
Randbedingungen an Kontrolllinien
$TM_BOUND_LINE <no> <type> <X> <Y> <U> <V> <S> <K> <D> <C>
Dieser Parameter ist eine Erweiterung des Parameters $TM_BOUND_NODE und soll die Vorgabe von Randbedingungen vereinfachen. Wenn Sie mehrere Zeilen mit Koordinaten <X> <Y> vorgeben. werden die vorgegebenen Randbedingungen auf die Knoten der Kontrolllinie interpoliert, wie dies die folgende Abbildung veranschaulicht:
Neben den bereits für Knoten definierten Randbedingungen können auf Kontrolllinien weitere Typen von Randbedingungen definiert werden. Mit <no> wird die Nummer einer Kontrolllinie angegeben. Die Randbedingung gilt für alle Knoten dieser Kontrolllinie. Die Interpretation der Parameter <X> <Y> <U> <V> <S> <K> <D> <C> hängt von <type> ab.
type
|
RB
|
Beschreibung |
Parameter |
256
|
D
|
Einlaufrandbedingung
Vorgabe des Zuflusses Q [m³/s] auf der Kontrolllinie <no>
Mit dem ebenfalls vorgegebenen Wasserspiegel S wird der Zufluss auf dem Einlaufrand (Konrolllinie) verteilt. Der Berechnung liegt die Annahme zugrunde, dass auf dem Einlaufquerschnitt das Energieliniengefälle IE konstant ist.
Diese Randbedingung wird immer mit der Randbedingung 1 für den Einlaufrand verknüpft.
|
U,S
|
512
|
D
|
Einlaufrandbedingung
Vorgabe der Zuflussganglinie Q(t) [m³/s] Zusätzlich zur Randbedingung vom Typ 256 wird hier der Zufluss als zeitliche Funktion definiert. Der Zeitpunkt t für den Abfluss Q(t) wird in der Variablen X in Sekunden definiert. Um eine korrekte Berechnung des Zuflusses zu gewährleisten, müssen Sie unter Umständen die aktuelle Zeit in der Initialisierungsdatei überprüfen.
|
X,U,S
|
1024
|
D
|
Auslaufrandbedingung
Vorgabe der Schlüsselkurve S(Q) [mNN]
Für den Auslaufrand (Kontrolllinie) definieren Sie hier eine Schlüsselkurve über die Variablen U (entspricht Q) und S, mit der das Programm abhängig vom momentan ermittelten Abfluss die Auslaufandbedingung festlegen kann. Die Randbedingung 1024 impliziert daher den Typ 2.
|
U,S
|
2048
|
D
|
Auslaufrandbedingung
Vorgabe des zeitabhängigen Wasserspiegels S(t) [mNN]
Für den Auslaufrand (Kontrolllinie) definieren Sie hier einen geregelten Wasserspiegel. Der Zeitpunkt t für den Wasserspiegel S(t) wird in der Variablen X in Sekunden definiert. Um eine korrekte Berechnung des Wasserspiegels zu gewährleisten, müssen Sie unter Umständen die aktuelle Zeit in der Initialisierungsdatei überprüfen.
|
X,S
|
|
|