Einführung

Version | Datum | Kommentar
3.10.02 | 05. 05. 2006 | fehlende Kommunikation in MPI-Parallelisierung Nass-Trocken-Algorithmus: Die Benetzung trockener Elemente über Gebietsgrenzen hinweg wurde nicht kommuniziert. alternative Methoden zur Benetzung trockener Elemente a) Grenzfließtiefe oder b) Wasserspiegel des Nachbarelements neue Randbedingungstypen a) offener Rand und b) Auslaufrandbedingung S(t)
3.10.01 | 28. 02. 2006 | 2 neue Schlüsselworte: $MACRO und $SUBDOMPATH geringfügige Überarbeitung der Randbedingungen: Die Kombination des Randingungstyps kQInflow, kQTInflow bzw. kQHOutflow mit kInflow bzw. kOutflow ist nicht mehr erforderlich. Somit ist der Ranbedingungstyp "256" nun identisch mit "257", "512" mit "513" und "1024" mit "1026".
3.09.09 | 05. 12. 2005 | Fehler in MPI-Parallelisierung: In speziellen Situationen konnte eine Inkonsistenz in der Kommunikation zwischen Teilgebieten, die den Auslaufrand teilten, auftreten. Fehler im Colebrook-White-Widerstandsgesetz: Die Rauheitsmodellierung mit diesem Gesetz war während der letzten Versionen quasi deaktiviert.
3.09.04 | 26. 04. 2005 | Fehler in der AVS-UCD-Ausgabe Variablen: ks, dp, ax, Cu, Pe, rot
3.09.01 | 23. 03. 2005 | vollständige Überarbeitung der Eingabedateien
3.09.00 | 21. 02. 2005 | Online-Anwenderdokumentation
3.08.06 | 09. 11. 2004 | erste im Internet frei verfügbare Version
Die Anwenderdokumentation soll einen Einstieg in die Arbeit mit Rismo2D vermitteln, ohne auf die hydrodynamisch-numerischen Hintergründe einzugehen. Ausgangspunkt ist ein Finite-Elemente-Gitter, das zuvor mit einem Preprozessor (Gittergenerator) erstellt wurde. Für die Gittererstellung kommen unterschiedliche Programme in Frage. Mit dem Programm Tiegris ist eine Gittererstellung in begrenztem Umfang möglich. Darüber hinaus gibt es eine ganze Reihe kommerzieller Programme, die speziell für die Finite-Elemente-Gittererstellung entwickelt wurden oder die auch Funktionen zur Erstellung von Finite-Elemente-Gittern beinhalten.

Die folgende Beschreibung erläutert die notwendigen Schritte zur Erstellung sämtlicher Dateien, die für die Durchführung einer Strömungsberechnung erforderlich sind.

Voraussetzungen

  • Ein Finite-Elemente-Gitter mit Geländehöhen wurde bereits erstellt und liegt im AVS-UCD-Format vor. Mit dem Programm RisPP kann dieses Format aus einigen anderen Dateiformaten generiert werden. Folgende Dateiformate werden von RisPP unterstützt.
    Import
    Export
    ASCII AVS-UCD
    X
    X
    Grid-2D
    X
    X
    Gitter-05
    X
    X
    Rismo2D-Daten
    X
    X
    BCE-2D
    X
    X
    BCE-HMO
    X
    Tecplot
    X
    Binär Telemac2D-Selafin
    X
    X

  • Das Gitter darf grundsätzlich beliebig aus Dreiecks- und Viereckselementen bestehen. Eine Gebietszerlegung mit Partis, die für die Nutzung der parallelen MPI-Version des Programms benötigt wird, ist allerdings nur auf Finite-Elemente-Gitter anwendbar, die ausschließlich aus Dreieckselementen bestehen.

Arbeitsschritte vom Gitter zur Simulation
 | 1 | Zuweisung der Element-Materialkennung
 | 2 | Berechnung der Mittenseitenknoten
 | 3 | Erstellung der Kontrollschnitt-Datei (sample-ct.inp)
 | 4 | Elementreihenfolge optimieren (Reordern)
 | 5 | Gebietszerlegung (nur parallele MPI-Version)
 | 6 | Simulation
 |  | 6.1 | Beschreibung der Steuerdatei (sample.ris)
 |  | 6.2 | Beschreibung der Zeitschritt-/Randbedingungsdatei (sample.tm)
 |  | 6.3 | Beschreibung der Materialdatei (sample.tbl)
 |  | 6.4 | Beschreibung der Querschnittsdatei (sample.sec)
 |  | 6.5 | Start der Simulation
 |  | 6.6 | Erläuterungen zu den Ausgabedateien
 | 7 | Gebiete zusammenfügen / Assemblieren (nur parallele MPI-Version)
 | 8 | Auswertung mit RisPP und Tiegris
 | 9 | Aspekte der Modellierung
 |  | 9.1 | Kalibrierung und Validierung
 |  | 9.2 | Sensitivitätsstudien
 | 10 | Literatur
letzte Änderung: Donnerstag, 11. Mai 2006


1. Element-Materialkennung

1. Zuweisung der Element-Materialkennung

Die Festlegung der Materialkennung der Elemente könnte auch zu einem späteren Zeitpunkt (vor Simulationsbeginn) erfolgen. Für eine Festlegung vor der Berechnung der Mittenseitenknoten spricht jedoch, dass sich das Finite-Elemente-Gitter aufgrund der geringeren Anzahl an Knoten in Programmen wie Tiegris performanter bearbeiten lässt.

Die Materialkennung ist eine jedem Element zugewiesene Integerzahl, über die den Elementen die verschiedenen Parameter zur Modellierung der Rauheit, der Turbulenz sowie des Stofftransports zugewiesen werden können. Die Zuordnung von Parametern an die Materialkennung erfolgt über eine Materialdatei (tbl-Datei).

Für die Zuweisung der Materialkennung an die Elemente werden im Folgenden drei Wege beschrieben.

1.1 Zuweisung der Rauheit über Polylinien mit Tiegris

Eine von mir regelmäßig genutzte Möglichkeit ist der Import von Polylinien im Generate-Format, das man mit ArcView/ArcMap (zumindest in neueren Versionen) erzeugen kann. Der gen-Importfilter von Tiegris unterstützt folgendes Format:

703
5478.354, 7496.369
5557.698, 7435.031
...
5478.352, 7496.369
END
702
6297.616, 6920.375
6378.942, 6863.222
...
6297.616, 6920.375
END
END

Die Daten sind durch Komma getrennt. Eine Z-Koordinate kann fehlen (wie im Beispiel), sie wird dann in Tiegris mit Z = 0.0 initialisiert. In der Kopfzeile zu jeder Polylinie steht eine Materialkennung (702 und 703). Sofern diese Materialkennung fehlt, muss die Kennung manuell in Tiegris gesetzt werden. Auch die Polylinien können natürlcih manuell in Tiegris erstellt werden. Dieses Vorgehen soll hier nun etwas ausführlicher erläutert werden:

a) Polylinien zeichnen

Aktivieren Sie in Tiegris das Polylinien-Werkzeug [image] . Es öffnet sich die Dialogbox "Polylinien bearbeiten". Zeichnen Sie nun die Polylinie um den Bereich herum, wo Sie den Elementen eine Materialkennung zuweisen möchten.

  • Das Zeichnen der Polylinie wird durch die Symbolleiste "Fangen" unterstützt.
  • Beenden Sie das Zeichnen durch einen Klick mit der rechten Maustaste.
  • Die Polylinie muss nicht geschlossen sein.

b) Materialkennungen in Tiegris verwalten

Unter dem Menüpunkt "Ansicht>Attribute..." öffnet sich eine Dialogbox, in der Sie u.A. Einstellungen für Materialklassen vornehmen können. Geben Sie in das Textfeld "Nummer" die neue Materialkennung ein (z.B. 702) und weisen Sie der Materialkennung optional eine Bezeichnug und eine Farbe zu.

c) Polylinie mit Materialkennung verknüpfen

Das folgende Bild demonstriert die Vorgehensweise zur Verknüpfung von Polylinien mit einer Materialkennung.

  • Aktivieren Sie das Auswahl-Werkzeug [image] .
  • Wählen Sie die Polyllinie aus;
    durch einen Doppelklick öffnet sich die Dialogbox "Polylinien bearbeiten".
  • Wählen Sie in der Aufklappliste "Verknüpfung mit Materialklasse" die gewünschte Materialkennung (hier: 703 Wiese).
  • Klicken Sie danach auf den Schalter "Übernehmen".

d) Materialkennung an die Elemente zuweisen

Im letzten Schritt weisen Sie nun den Elementen die Materialkennung zu. Dazu öffnen Sie bitte den Dialog unter dem Menüpunkt "Gitter>Material zuweisen..." und führen die Zuweisung der Materialkennung durch. Falls Sie eine Polylinie ausgewählt hatten, als sich der Dialog öffnete, haben Sie die Wahl, ob Sie die Zuweisung für alle Polylinien mit Materialkennung oder nur im Bereich der selektierten Poylinie vornehmen lassen.

1.2 Manuelle Zuweisung mit Tiegris

Neben der Zuweisung der Materialkennung über Polylinien besteht die (aufwändige) direkte Möglichkeit der Zuweiseung über den Element-Auswahl-Dialog, der sich durch einen Doppelklick auf ein Element öffnet:

Daneben besteht die etwas komfortablere Möglichkeit, mit dem Pinsel-Werkzeug [image] die Materialkennung auf Elemente zu übertragen:

  • Aktivieren Sie das Pinsel-Werkzeug.
  • Klicken Sie auf ein Element, das die gewüschte Materialkennung besitzt.
  • Halten Sie die Steuerungstaste gedrückt, während Sie anderen Elementen per Mausklick eine Materialkennung zuweisen.

1.3 Übertragung der Elementkennung mit RisPP aus einem vorhandenen Gitter

Dies ist die einfachste Möglichkeit. Sie setzt voraus, dass Ihnen für das Modellgebiet bereits ein Finite Elemente Gitter zur Verfügung steht, in dem jedes Element bereits eine Materialkennung besitzt. Dieser Fall tritt beispielsweise immer dann auf, wenn Sie an dem Finite Elemente Gitter Änderungen mit einem Programm vornehmen, das keine Materialkennungen unterstützt. Die Übertragung der Materialkennung von einem Gitter auf ein anderes wird mit RisPP durch folgende Befehle realisiert:

ReadUCD  quell.inp  // Quell-Gitter mit Materialkennung lesen
ReadUCD  ziel.inp   // Ziel-Gitter ohne Materialkennung lesen
CopyMat             // Materialkennung auf Zielgitter übertragen
WriteUCD ziel.inp   // Ziel-Gitter mit Materialkennung schreiben
letzte Änderung: Sonntag, 5. März 2006


2. Berechnung der Mittenseitenknoten

Das Finite Elemente Programm verwendet für die interne Berechnung vieler (unabhängiger) Variablen quadratische Interpolations-/Wichtungsfunktionen (z.B. Fließgeschwindigkeiten, Turbulenzgrößen k und ε sowie Stoffkonzentration C). Die quadratischen Interpolationsfunktionen benötigen zusätzliche Knoten auf den Kantenmitten der Elemente, wodurch sich die Diskretisierungsgenauigkeit etwa um den Faktor 3 - 4 vergrößert:

Die Berechnung der Mittenseitenknoten muss vor der Berechnung mit Rismo2D durchgeführt werden. Hierfür stehen alternativ die beiden Programme Tiegris und RisPP zur Verfügung.

2.1 ... mit Tiegris

Importieren Sie das Finite Elemente Gitter und rufen danach den Menüpunkt "Gitter>Mittenseitenknoten>berechnen" auf. Es empfiehlt sich anschließend sowohl die Knoten als auch die Elemente aufsteigend zu nummerieren. Dies bewerkstelligen Sie über die entsprechenden Menüpunkte im Menü "Gitter".

2.2 ... mit RisPP

Die folgende Befehlssequenz erfüllt die gewünschte Funktion:

ReadUCD  gitter.inp     // Gitter ohne Mittenseitenknoten lesen
MkMidsNodes             // Mittenseitenknoten berechnen
WriteUCD gitter-nr.inp  // Gitter mit Mittenseitenknoten schreiben

Anmerkung: Bei mir hat sich die Namenskonvention eingebürgert, die fertigen Finite Elemente Gitter, in denen nur noch eine für den Gleichungslöser "optimale Elementreihenfolge" festgelegt werden muss, mit der Dateiendung -nr.inp zu versehen (nr = not reordered).


3. Erstellung der Kontrollschnitt-Datei

Die Kontrollschnittdatei (Namenskonvention: <name>-ct.inp) hat einerseits die Funktion mit einfachen Mitteln Randbedingungen (Einlauf- und Auslaufquerschnitt) zu definieren. Andererseits wird in Rismo2D für jeden Kontrollschnitt der Durchfluss ermittelt. Diese Informationen können einerseits zur Kontrolle der Simulation, aber auch zur weiteren Auswertung verwendet werden.

Neben dem Programm Lines, das hier nicht weiter dokumentiert werden soll, besteht die Möglichkeit zur Erstellung der Kontrollschnittdatei mit Tiegris:
  • Importieren Sie das Finite Elemente Gitter in Tiegris.
  • Aktivieren Sie das Kontrolllinien-Werkzeug [image].
  • Klicken Sie auf den ersten Knoten der Kontrolllinie.
  • Klicken Sie auf den letzten Knoten der Kontrolllinie.
  • Beenden Sie das Zeichnen der Kontrolllinie mit einem Maus-Rechtsklick.

    Anmerkung: Das Zeichnen der Kontrolllinien kann in mehreren Teilabschnitten erfolgen, falls die von Tiegris gefundene Linie nicht den Erwartungen entspricht. (Die Funktion ist in Tiegris nicht völlig fehlertolerant implementiert. Daher ist beim Zeichnen der einzelnen Stützpunkte unbedingt darauf zu achten, immer nur auf Eckknoten und niemals auf Seitenmitten zu klicken. Falls Sie einige Warnmeldungen erhalten, versuchen Sie die Linie in kleineren Teilschritten zu zeichnen oder ignorieren Sie die Warnungen einfach.)
  • Exportieren Sie nun die Kontrollschnittdatei im AVS-UCD-Format. Nachdem Sie einen Dateinamen gewählt haben, erscheint ein weiterer Dialog, in dem Sie die Ausgabe auf Linienelemente beschränken sollten.


4. Elementreihenfolge optimieren

Die Reihenfolge der Elemente im Datensatz ist insbesondere für die Performanz und den Speicherbedarf des implementierten direkten Gleichungslösers (Frontal Solver) von Bedeutung. Das Maß für Performanz und Speicherbedarf ist die sogenannte maximale bzw. mittlere Frontweite. Die Frontweite ist die beim elementweisen Aufbau des Gleichungssystems auftretende Anzahl der offenen Gleichungen. Eine Beschreibung des Frontal Solvers finden Sie bei HOOD (1976).

Über die Elementreihenfolge wird außerdem die Nummerierung der Gleichungen gesteuert. Damit hat sie auch Einfluss auf den Vorkonditionierer der implementierten iterativen Gleichungslöser (ILU = Incomplete LU Factorization).

Die Optimierung der Elementreihenfolge ("Reordering") erfolgt mit Rismo2D und hat zum Ziel, eine möglichst kurze Frontweite zu erreichen. Für einen Rismo2D-Lauf benötigen Sie die Geometriedatei:

  • Finite-Elemente-Gitter (sample-nr.inp)

sowie die Eingabedateien:

  • Steuerdatei (sample.ris)
  • Querschnittsdatei (sample.sec)

Eine detaillierte Beschreibung der Eingabedateien finden Sie in den Kapiteln 6.1 bis 6.4. Im Folgenden werden kurz die zur Durchführung erforderlichen Einstellungen erläutert.

  • Steuerdatei
    $RISMO2D 30900

    $SECTIONFILE         reorder.sec
    $REGIONFILE          sample-nr.inp

    $REPPORTFILE         reorder.out
    $GEO_UCDFILE         sample-rg.inp

    Angegeben sind hier nur die erforderlichen Dateien, von diesen beinhalten die rot eingefärbten Dateien relevante Informationen für das Reordering. In der Steuerdatei müssen nur die richtigen Dateinamen eingetragen werden. In der Datei $REGIONFILE steht das ungeordnete Finite Elemente Gitter, und in der Datei $GEO_UCDFILE finden Sie nach der Operation das geordnete Finite Elemente Gitter.
    Anmerkung: Die gewählten Endungen der Dateinamen (.ris|.sec|-nr.inp|...) sind willkürlich. Sie geben eine Namenskonvention wieder, die sich bei mir im Laufe der Zeit eingebürgert hat. Es steht Ihnen frei, diese Konvention zu übernehmen oder eine eigene zu verwenden.
  • Zeitschritt-/Randbedingungsdatei
    $RISMO2D 30900

    $TM_CYCLE   95

    Mit diesen Einstellungen wird festgelegt, dass nur ein einziger Programmzyklus bearbeitet wird ($TM_CYCLE 95), in dem die Elementreihenfolge des FE-Gitters verbessert wird (Reordering). Der Algortihmus ist bei KING (1970) beschrieben.

  • Querschnittsdatei
    $RISMO2D 30900

    # 2. Querschnitt   s +---------------------------------+ e
    #                    |                                 |
    # 1. Querschnitt   s +---------------------------------+ e

    #            xs       ys        xe       ye      Wsp
    $SECTION  193.723  283.844   193.133  285.640   99.00
    $SECTION  192.655  283.613   192.950  285.240   99.00
    $SECTION  191.676  284.624   192.937  285.423   99.00
    $SECTION  191.344  285.179   193.527  286.399   99.00
    $SECTION  191.351  285.227   192.117  287.715   99.00
    $SECTION  191.256  285.179   190.917  286.948   99.00
    $SECTION  190.612  284.800   189.927  286.880   99.00
    $SECTION  189.572  284.386   189.101  286.148   99.00
    $SECTION  187.813  284.173   189.067  286.047   99.00
    $SECTION  187.372  285.545   188.992  286.114   99.00

    Die Optimierung der Elementreihenfolge erfolgt mit einem rekursiven Algorithmus. Die Bestimmung der optimalen Reihenfolge würde für größere Finite-Elemente-Gitter einen imensen Rechenaufwand erfordern. Daher ist es erforderlich den Algorithmus mit der Vorgabe einiger "Ordnungsprofile" zu unterstützen. Diese Profile werden üblicherweise wie in Bild 1 dargestellt angeordnet. Die Vorgabe der Profileckpunkte in der Querschnittsdatei erfordert die strikte Einhaltung der dort definierten Reihenfolge und Orientierung.
Bild 1: Querprofile für das Reordering

Der Fortschritt des Reorderings wird kontinuierlich auf dem Bildschrim ausgegeben. Eine Zusammenfassung der Erzielten maximalen und mittleren Frontweite finden Sie in der Reportdatei:

(MODEL::ReorderElem) front width of corner nodes
                     maximum: 56
                     average: 37.49

Die maximale Frontweite (hier: mfc = 56) gibt an, wieviele Eckknoten des Gitters während der elementweisen Lösung des Gleichungssystems maximal offen bleiben (Bild 2). Abhängig vom Typ der Differentialgleichung lässt sich hieraus die maximale Zahl der offenen Gleichungen abschätzen. Es gilt z.B.:

  • Strömungsberechnung (quadratische Interpolation) $TM_CYCLE 1, 2, 3:
    3 Gleichung je Eckknoten und 2 Gleichung je Kante:
    mfw ≥ mfc·3 + (mfc-1)·2    (z.Zt das Maximum)
  • k-ε-Modell (quadratische Interpolation) $TM_CYCLE 81, 82, 83:
    2 Gleichung je Eckknoten und 2 Gleichung je Kante:
    mfw ≥ mfc·2 + (mfc-1)·2
  • Stofftransport (quadratische Interpolation) $TM_CYCLE 50:
    1 Gleichung je Eckknoten und 1 Gleichung je Kante:
    mfw ≥ mfc·1 + (mfc-1)·1
Bild 2: Frontverlauf im Berechnungsgitter


5. Gebietszerlegung

Eine Gebietszerlegung müssen Sie nur dann vornehmen, wenn Sie mit der parallelen Programmversion (Rismo2D_MPI_xxxxx.exe) arbeiten möchten. Sie brauchen dann außerdem eine MPI-Installation auf Ihrem Rechner.

Die Gebietszerlegung kann mit dem Programm Partis durchgeführt werden. Das Programm Partis lässt sich nicht per Doppelklick aufrufen, sondern muss z.B. unter Windows 2000/XP per Tastureingabe aus der Eingabeaufforderung gestartet werden:

Die Gebietszerlegung mit Partis liefert die Ausgabedatei wurm-rg.inp.epart.8, die direkt als Eingabedatei in der Rismo2D-Steuerdatei verwendet werden kann:

$SUBDOMFILE wurm-rg.inp.epart.8

Anmerkung: In der Datei, die die Gebietszerlegung beschreibt, ist jedes Element einem Teilgebiet zugeordnet. Daher darf die Elementreihenfolge in der Geometriedatei nach der Gebietszerlegung nicht mehr verändert werden! Es ist daher unumgänglich, dass die Gebietszerlegung nach dem Optimieren der Elementreihenfolge (Reordering) erfolgt.


6.1 Steuerungsdatei

6. Simulation

6.1 Beschreibung der Steuerungsdatei

6.2 Beschreibung der Zeitschritt-/Randbedingungsdatei

6.3 Beschreibung der Materialdatei

6.4 Beschreibung der Querschnittsdatei

6.5 Start der Simulation

6.6 Erläuterungen zu den Ausgabedateien

Mit der Version 3.09.00 liegen die Eingabedateien

  • sample.ris    // 6.1 Steuerungsdatei
  • sample.tm     // 6.2 Randbedingungs-/Zeitschrittdatei
  • sample.tbl    // 6.3 Materialdatei
  • sample.sec    // 6.4 Querschnittsdatei

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:

$RISMO2D 30900

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.1 Beschreibung der Steuerdatei

Die Steuerdatei ist das Herzstück der Eingabedateien. Sie wird i.A. beim Programmstart als einziger Parameter an Rismo2D übergeben:

Rismo2D sample.ris

Fehlt die Steuerdatei als Übergabeparameter, fragt Rismo2D nach dem Namen dieser Datei:

[RISMO_2D - Release 3.10.01 - Copyright (C) 1992-2006, P.M. Schroeder]

Give name of INPUT file:

Alle weiteren Dateien und Parameter, die für einen Programmlauf benötigt werden, werden aus der Steuerdatei eingelesen.

Im Folgenden finden Sie nun die Beschreibung der Schlüsselworte:

alphabetische Liste

$ALL_UCDFILE | $ASC_INIFILE | $ASC_RESTARTFILE | $BIN_INIFILE
$BIN_RESTARTFILE | $CONTROLFILE | $CONVERGENCE | $CTR_UCDFILE
$DENSITY | $DELTAZLIMIT | $DRYREW | $EARTH_ROTATION
$GEO_UCDFILE | $GPDEGREE | $GRAVITY | $INPUTFILE
$KDBOUNDARY | $KDCONST | $LATITUDE | $MACRO
$MATERIALFILE | $MINMAX | $OPTIONALFILE | $OUTPUTVARS
$REGIONFILE | $RELAX | $REPPORTFILE | $REPPORTLEVEL
$SCALE | $SECTIONFILE | $SMOOTH | $SOLVER
$STA_INIFILE | $STA_OUTFILE | $STA_UCDFILE | $SUBDOMFILE
$SUBDOMPATH | $TEMPERATURE | $TIMESTEPFILE | $VISCOSITY
$VON_KARMAN | $WALL_DISTANCE | $WET_UCDFILE |

Macros

$MACRO <key> <value>

Mit dem Schlüsselwort $MACRO werden Makronamen definiert, die die Benennung der Ein- und Ausgabedateien erleichtern sollen. Die Ersetzung des als <key> definierten Begriffs durch <value> erfolgt in sämtlichen Ein- und Ausgabedateien. In dem Programm Tiegris sind folgende 4 Makros definiert:

<key> Bedeutung
Beispiel: <value>
:name: Rumpfname der Dateien
sample
:no: Laufsnummerierung
_04
:tm: Zeitschrittnummerierung der Ausgabedateien
-%04d
:date: Datum
_2006-03-01

Beispiele für Dateinamen:

:name::no:.ris | sample_04.ris | $INPUTFILE
:name::date:-rg.inp | sample_2006-03-01-rg.inp | $REGIONFILE
:name::no::tm:.end | sample_04-%04d.end | $ASC_RESTARTFILE

Eingabedateien

Steuerungsdatei

$INPUTFILE <sample.ris>

Dieses Schlüsselwort wird von Tiegris benötigt und in die Datei geschrieben. Rismo2D ignoriert das Schlüsselwort einfach.

Zeitschritt- und Randbedingungsdatei

$TIMESTEPFILE <sample.tm>

In der Zeitschritt- und Randbedingungsdatei werden die Einstellungen zur Definition von Randbedingungen sowie zur Steuerung der Zeitschrite vorgenommen. Eine umfassende Beschreibung der Datei finden Sie in Abschnitt 6.2.

Wenn das Schlüsselwort $TIMESTEPFILE fehlt, versucht Rismo die Parameter der Zeitschritt- und Randbedingungsdatei aus der Steuerdatei einzulesen.

Materialdatei

$MATERIALFILE <sample.tbl>

In der Materialdatei erfolgt die Zuordnung zwischen Materialzonen und der verschiedenen bereichsweise definierten Parametern für Sohlrauheit, Bewuchs, Turbulenz und Sediment. Es ist zwingend, dass für jede Materialzone die im Finite-Elemente-Gitter verwendet wird, auch ein Eintrag in der Materialdatei steht. Eine umfassende Beschreibung der Materialdatei finden Sie in Abschnitt 6.3.

Wenn das Schlüsselwort $MATERIALFILE fehlt, versucht Rismo die Parameter der Materialdatei aus der Steuerdatei einzulesen.

Querschnittsdatei

$SECTIONFILE <sample.sec>

Die Querschnittsdatei wird dazu verwendet, zu Beginn einer Berechnung den Wasserspiegel zu initialisieren sowie die Optimierung der Elementreihenfolge zu unterstützen. An die Querschnitte sind abhängig von diesem Verwendungszweck unterschiedliche Anforderungen zu stellen. Nähere Auskunft gibt Abschnitt 6.4.

Wenn das Schlüsselwort $SECTIONFILE fehlt, versucht Rismo die Parameter der Querschnittsdatei aus der Steuerdatei einzulesen.

Finite Elemente Berechnungsgitter

$REGIONFILE <sample-rg.inp>

Das Finite Elemente Gitter des zu berechnenden Strömungsbereichs wird im AVS-UCD-Format eingelesen. Es beinhaltet die Koordinatentriple (x,y,z) der diskreten Knoten- und Kantenpunkte sowie die Topologie des Finite Elemente Gitters. Finite Elemente dürfen Dreiecks- und/oder Viereckselemente sein. Wenn diese Datei fehlt, ist kein Programmlauf möglich.

Kontrolschnittdatei

$CONTROLFILE <sample-ct.inp>

Die Kontrollschnittdatei wird im AVS-UCD-Format eingelesen. Sie enthält nur Linienelemente. Die in der Kontrollschnittdatei definierten Kontrollinien, sind Kanten des Finite Elemente Gitters. Kontrollschnittdatei und Finite Elemente Gitter verwenden die selben Knotennummern.

Die Kontrollinien sind nummeriert. Die Nummer einer Kontrolllinie ist die Materialzone des Linienelements. Für jede Kontrolllinie wird am Ende einer Strömungsberechnung der Durchfluss in die Reportdatei geschrieben. Eine weitere wesentliche Funktion der Kontrolllinien liegt in der Vorgabe von Randbedingungen (insbesondere für den Einlauf- und Auslaufquerschnitt).

Die Kontrollschnittdatei kann mit Tiegris erzeugt werden. Eine Beschreibung hierzu finden Sie in Abschnitt 3.

Initialisierungsdatei (Warmstart)

$ASC_INIFILE <sample.end>     // Datei im ASCII-Format

$BIN_INIFILE <sample.end>     // Datei im BINAER-Format

Eine Initialisierungsdatei steht üblicherweise dann zur Verfügung, wenn Sie mit dem Finite Elemente Gitter bereits zu einem früheren Zeitpunkt eine Berechnung durchgeführt haben. Im einfachsten Fall ist die Initialisierungsdatei mit der Ergebnisdatei dieses früheren Rechenlaufs identisch. Sie können alte Ergebnisdateien direkt verwenden, wenn die Finite Elemente Gitter sich nicht verändert haben. Andernfalls besteht die Möglichkeit mit RisPP die alten Ergebnisse auf das neue Gitter zu interpolieren.

Statistik-Initialisierungsdatei

$STA_INIFILE <sample.sta>

Mit diesem Schlüsselwort kann die Statistikdatei eines früheren Rechenlaufs eingelesen werden, um damit die Statistik des instationären Rechnelaufs fortzusetzen.

Subdomain-Datei

$SUBDOMFILE <sample.dom>

Die Subdomdatei beschreibt die Gebietszerlegung für die parallele Berechnung.

Die Datei kann mit dem Programm Partis generiert werden. Eine Beschreibung zur Erstellung dieser Datei finden Sie auch im Abschnitt 5.
Ausgabedateien

Protokolldatei

$REPORTFILE <sample.out>

In der Protokolldatei werden die einglesenen Parameter sowie der Berechnungslauf protokolliert. Den Umfang der Protokolldatei können Sie über das Schlüsselwort $REPORTLEVEL steuern. Eine umfangreichere Beschreibung der Protokolldatei finden Sie in Abschitt 6.6.

Ergebnisdatei

$ASC_RESTARTFILE <sample-%03d.end>     // Datei im ASCII-Format

$BIN_RESTARTFILE <sample-%03d.end>     // Datei im BINAER-Format

In der Ergebnisdatei werden am Ende eines Zeitschritts, sofern dieser zur Ausgabe vorgesehen ist (vgl. das Schlüsselwort $TM_OUTPUT in der Zeitschritt- und Randbedingungsdatei), die berechneten Strömungsparameter ausgegeben.

Spalte | Variable | Beschreibung
1 | U | Komponente der Fließgeschwindigkeit in X-Richtung
2 | V | Komponente der Fließgeschwindigkeit in y-Richtung
3 | S | Wasserpiegellage
4 | K | Turbulente Kinetische Energie (TKE)
5 | D | Dissipation der Turbulenten Kinetische Energie
6 | C | Stoffkonzentration
7 | dUdt | Zeitgradient der Fließgeschwindigkeit U
8 | dVdt | Zeitgradient der Fließgeschwindigkeit V
9 | dSdt | Zeitgradient der Wasserspiegellage
10 | dZ | Summation der Sohländerungen infolge Stofftransport. Sobald diese Änderungen den Schwellwert $DELTAZLIMIT übersteigen werden Sie als geometrieänderung des Gitters aufgebracht und dZ wird am berteffenden Knoten zu Null gesetzt.

Die Ergebnisdatei kann als Initialisierungsdatei bei einem Neustart bzw. bei einer Forstetzung des Rechenlaufs verwendet werden.

Anmerkung: Der Dateiname enthält (optional) eine Formatbeschreibung für einen Integer-Wert. An die entsprechende Stelle wird die aktuelle Nummer des Zeitschritts eingetragen. Beispiel:

Zeitschritt | vorgegebener Name | generierter Dateiname
5 | sample-%02d.end | sample-05.end
150 | sample-%02d.end | sample-150.end
5 | sample-%04d.end | sample-0005.end
150 | sample-%04d.end | sample-0150.end

Statistikdatei

$STA_OUTFILE <sample.sta>

In der Statistikdatei wird ein instationärer Rechenlauf statistisch protokolliert. D.h. es werden die Summen der Strömungsparameter Fließgeschwindigkeit und Fließtiefe aus den Zeitschritten für jeden Berechnungsknoten des Gitters gebildet. Mit diesen Summen kann dann eine statistische Analyse durchgeführt werden: Mittelwerte, Varianzen und Kovarianzen der Strömungsparameter.

AVS-UCD-Ergebnisdateien

Mit den folgenden Schlüsselworten können Sie Dateinamen angeben, in denen die Berechnungsergebnisse im AVS-UCD-Dateiformat ausgegeben werden. Diese Dateien können dann direkt visualisiert werden, sofern das Visualisierungsprogramm den Import dieses Formats unterstützt (z.B. Tiegris oder auch AVS).

Für die optionale Formatspezifikation im Dateinamen gilt die gleiche Anmerkung wie zu den Ergebnisdateien.

Der Umfang der ausgegebenen Berechnungsergebnisse wird mit dem Schlüsselwort $OUTPUTVARS festgelegt.

$GEO_UCDFILE <sample_%03d-rg.inp>

Finite Elemente Berechnungsgitter (Knoten- und Kantenpunkte), aber ohne Berechnungsergebnisse

Diese Ausgabedatei beinhaltet, einerseits die optimierte Elementreihenfolge nach einem Reordering, und andererseits die Änderungen der Sohle infolge Sedimentation oder Erosion.

$ALL_UCDFILE <sample_%03d.inp>

Finite Elemente Berechnungsgitter mit Berechnungsergebnissen an allen Knotenpunkten (aber keine Kantenpunkte)

$WET_UCDFILE <sample_%03d-dr.inp>

Finite Elemente Berechnungsgitter mit Berechnungsergebnissen an allen Knotenpunkten (aber keine Kantenpunkte), die in der Berechnung aktiv, also nicht trocken waren (vgl. Nass-Trocken-Algorithmus)

$CTR_UCDFILE <sample_%03d-ct.inp>

Kontrollschnittdatei mit Berechnungsergebnissen an allen Knoten- und Kantenpunkten

$STA_UCDFILE <sample_%03d-st.inp>

Finite Elemente Berechnungsgitter mit statistischen Werten (Mittelwerte, Standardabweichungen und Kovarianzen) der Strömungsparameter (U, V, S) an allen Knoten- und Kantenpunkten
Speicherort für Gebietszerlegungsdateien

$SUBDOMPATH <path>

Definiert den Speicherort für Gebietszerlegungsdateien, die während eines parallelen Programmlaufs (MPI) geschrieben werden und mit einer 3-stelligen Prozessnummer beginnen. (z.B. 032_sample.out). Achten Sie darauf, dass der Pfad existiert und der von Ihnen definierte Name <path> mit einem Verzeichnistrennzeichen ("/" unter Unix) endet.
Gleichungslöser

Zur Zeit sind 5 unterschiedliche Gleichungslöser implementiert (<slv> = 1,2,5,6,7). Mit dem $SOLVER-Schlüsselwort können Sie diese Gleichungslöser einer beliebigen Solvernummer <n> zuordnen. Wenn Sie keinen Solver spezifizieren, werden Standardwerte verwendet:

<n> <slv> <prec> <proc> <mceq> <miter> <mdiff>
$SOLVER  1    6      1     -1     90     1000    0.01

Abhängig vom Parameter <slv> werden verschiedene weitere Parameter zur Steuerung des Gleichungslösers eingelesen. Hierbei werden 4 Grundtypen unterschieden:

Typ 1: Direkte Lösung mit Frontal Solver

$SOLVER <n> <slv> <mfw> <size> <path>

slv = 1 | Front-Gleichungslöser (frontal solver, z.Zt. nur seriell) Eine Beschreibung des Verfahrens findet man bei KING (1970).
mfw | maximale Frontweite Die maximale Anzahl der offenen Gleichungen, die beim elementweisen Aufbau des Gleichungssystems auftreten. (s. auch Abschnitt 4)
size | Buffergröße Die Anzahl der Gleichungen, die nach dem Eliminationsprozess im Speicher gehlaten werden, bevor sie auf die temporäre Datei geschrieben werden. Ein Wert size = 0 führt dazu, dass das gesamte Gleichungssystem im Speicher gehalten wird.
path | Pfad zum Schreiben der temporären Datei

Typ 2: Direkte Lösung mit Frontal Solver für Indexmatrizen

$SOLVER <n> <slv> <mceq> <mfw> <size> <path>

slv = 2 Front-Gleichungslöser für Indexmatrizen (z.Zt. nur seriell)
Im Unterschied zum Gleichungslöser slv = 1 wird das Gleichungssystem, wie bei Konjugierte-Gradienten-Lösern, vor der Elimination zunächst in einer Indexmatrix aufgebaut. Der Solver ist daher geeignet im Falle eines Divergierens der Konjugierte-Gradienten-Löser eine Lösung ohne neues Assemblieren des Gleichungssystems zu ermitteln.
mceq maximale Anzahl der verknüpften Gleichungen
Dieser Parameter bestimmt die Breite der Indexmatrix. Er ermittelt sich aus der Anzahl der mit einem Knotenpunkt verknüpften Elemente. Er hat üblicherweise eine maximale Größe von 80 - 90.
Strömungsgleichungen

Knotenpunkte: 3 Gleichungen
1 x Kontinuität + 2 x Impuls

Kantenpunkte: 2 Gleichungen
2 x Impuls
mfw maximale Frontweite
Die maximale Anzahl der offenen Gleichungen, die beim elementweisen Aufbau des Gleichungssystems auftreten. (s. auch Abschnitt 4)
size Buffergröße
Die Anzahl der Gleichungen, die nach dem Eliminationsprozess im Speicher gehlaten werden, bevor sie auf die temporäre Datei geschrieben werden. Ein Wert size = 0 führt dazu, dass das gesamte Gleichungssystem im Speicher gehalten wird.
path Pfad zum Schreiben der temporären Datei

Typ 3: Iterative Lösung mit Konjugierte Gradienten Solver

$SOLVER <n> <slv> <prec> <proc> <mceq> <miter> <mdiff>

slv = 5 Konjugierte Gradienten Gleichungslöser BiCGStab (auch parallel)
Eine umfassende Beschreibung dieses Gleichungslösers ist der Veröffentlichung von VAN DER VORST (1992)
slv = 6 Konjugierte Gradienten Gleichungslöser P-BCGStab (auch parallel)
Diese Adaption des BiCGStab wurde der frei verfügbaren pARMS-Bibliothek entnommen und für den Einsatz in Rismo2D angepasst.

pARMS - Version 0.1; Copyright (C) 2002, the University of Minnesota
http://www-users.cs.umn.edu/~saad/software/pARMS
prec preconditioner 1: ILU(0) | unvollstaendige Dreieckszerlegung
proc Vorgehen bei Versagen des iterativen Solvers:
-1: | Programmabbruch: letztes Ergebnis schreiben
0: | Fehler ignorieren, Berechnung fortsetzen
>0: | Lösung mit anderem Gleichungslöser (Nummer <n>)
mceq maximale Anzahl der verknüpften Gleichungen
Dieser Parameter bestimmt die Breite der Indexmatrix. Er ermittelt sich aus der Anzahl der mit einem Knotenpunkt verknüpften Elemente. Er hat üblicherweise eine maximale Größe von 80 - 90.
Strömungsgleichungen

Knotenpunkte: 3 Gleichungen
1 x Kontinuität + 2 x Impuls

Kantenpunkte: 2 Gleichungen
2 x Impuls
miter maximale Anzahl der Iterationen
Die iterative Lösung wird nach <miter> Iterationen abgebrochen, unabhängig vom Erreichen des Abbruchkriteriums. Der weitere Programmlauf wird nun durch den Parameter <proc> definiert (s.o.).
mdiff Abbruchkriterium - absoluter Fehler
Das Abbruchkriterium definiert die Genauigkeitsanforderung an die Lösung des Gleichungssytems. Eine geringe Genauigkeit von 0.01 - 0.2 ist meist ausreichend im Rahmen der Lösung der Strömungsgleichugen, die aufgrund ihrer Nichtlinearität iterativ mit dem Newton-Raphson-Verfahren gelöst werden. Entscheidend ist dann die Genauigkeit der äußeren Iterationen. Bei linearen Gleichungen wie dem Stofftransport gilt dies nicht. Hier sollten Sie in jedem Fall eine höhere Genauigkeit des Gelichungslösers wählen.

Typ 4: Iterative Lösung mit Gmres Solver

$SOLVER <n> <slv> <prec> <proc> <mceq> <mkyrl> <miter> <mdiff>

slv = 7 Iterativer Gleichungslöser P-FGMRES (auch parallel)
Dieser Flexible GMRES Gleichungslöser wurde der frei verfügbaren pARMS-Bibliothek entnommen und für den Einsatz in Rismo2D angepasst.

pARMS - Version 0.1; Copyright (C) 2002, the University of Minnesota
http://www-users.cs.umn.edu/~saad/software/pARMS
prec preconditioner 1: ILU(0) | unvollstaendige Dreieckszerlegung
proc Vorgehen bei Versagen des iterativen Solvers:
-1: | Programmabbruch: letztes Ergebnis schreiben
0: | Fehler ignorieren, Berechnung fortsetzen
>0: | Lösung mit anderem Gleichungslöser (Nummer <n>)
mceq maximale Anzahl der verknüpften Gleichungen
Dieser Parameter bestimmt die Breite der Indexmatrix. Er ermittelt sich aus der Anzahl der mit einem Knotenpunkt verknüpften Elemente. Er hat üblicherweise eine maximale Größe von 80 - 90.
Strömungsgleichungen

Knotenpunkte: 3 Gleichungen
1 x Kontinuität + 2 x Impuls

Kantenpunkte: 2 Gleichungen
2 x Impuls
mkyrl Dimension des Kyrlov Unterraums
Mit diesem Parameter wird die Anzahl der inneren Iterationen des des Gleichungslöers FGMRES definiert. Der Speicherbedarf sowie die Rechenzeit pro Iteration steigt mit diesem Wert.
miter maximale Anzahl der Iterationen
Die iterative Lösung wird nach <miter> Iterationen abgebrochen, unabhängig vom Erreichen des Abbruchkriteriums. Der weitere Programmlauf wird nun durch den Parameter <proc> definiert (s.o.).
mdiff Abbruchkriterium - absoluter Fehler
Das Abbruchkriterium definiert die Genauigkeitsanforderung an die Lösung des Gleichungssytems. Eine geringe Genauigkeit von 0.01 - 0.2 ist meist ausreichend im Rahmen der Lösung der Strömungsgleichugen, die aufgrund ihrer Nichtlinearität iterativ mit dem Newton-Raphson-Verfahren gelöst werden. Entscheidend ist dann die Genauigkeit der äußeren Iterationen. Bei linearen Gleichungen wie dem Stofftransport gilt dies nicht. Hier sollten Sie in jedem Fall eine höhere Genauigkeit des Gelichungslösers wählen.

Relaxation

$RELAX <method> <rlxMin> <rlxMax> <maxUV> <maxS> <maxKD>

Mit diesem Parameter wählen Sie die Relaxationsmethode, um die iterative Lösung der nichtlinearen Gleichungen für Strömung oder Turbulenz zu stabiliseren. Abhängig von der gewählten Methode werden verschiedene weitere Parameter verwendet.

method = 0 | keine Relaxation (Standardwert)
method = 1 | Relaxation mit <rlxMin> und <rlxMax> Diese Relaxationsmethode entspricht dem gedämpften Newton-Raphson Verfahren und geht davon aus, dass jeder Iterationsschritt zu kleineren Änderungen des Lösungsvektors führen sollte. Sofern nun in einem Iterationsschritt die Norm der Änderungen nicht abnimmt, wird die vorherige Lösung stärker relaxiert. Der erste Schritt wird mit einer Relaxation <rlxMax> begonnen. Dieser Wert wird bis zum Erreichen des unteren Grenzwerts <rlxMin> halbiert, falls die Norm der neu berechneten Lösung nicht kleiner wird.
rlxMin | kleinster Relaxationswert (Standardwert: 0.01)
rlxMax | Startwert für die Relaxation (Standardwert: 1.0)
method = 2 | Relaxation mit <maxUV> <maxS> <maxKD> Abhängig von den in einem Iterationsschritt berechneten maximalen Änderungen des Lösungsvektors wird mit den hier definierten zulässigen Änderungen die Relaxation der Lösung bestimmt: Relaxation = max { maximal zulässige/maximale Änderung, 1.0 }
method = 3 | Relaxation mit <maxUV> <maxS> <maxKD> Zusätzlich zu dem Vorgehen nach Methode 2 wird die Länge des nächsten Zeitschritts festgelegt (vgl. auch den Parameter $TM_INTERVAL in der Zeitschritt- und Randbedingungsdatei). Sofern eine Relaxation von 1.0 ermittelt wurde, wird die Länge des Zeitschritts vergrößert. Andernfalls wird Sie reduziert. Dies ist die stabilste Methode zur Relaxation.
maxUV | maximal zulässige Änderung des Fließgeschwindigkeitsvektors
maxS | maximal zulässige Änderung der Fließtiefe
maxKD | maximal zulässige Änderung der Turbulenzgrößen k und ε
Nass-Trocken-Algorithmus

$DRYREW <method> <freq> <dryLimit> <rewLimit> <rewPasses> <cntDown> <fill>

Mit diesen Parametern treffen Sie die Einstellungen zur Behandlung trockener Bereiche des Finite Elemente Gitters; Bereiche, in denen die Fließtiefe unter dem Grenzwert <dryLimit> liegt. Man spricht bei Nass-Trocken-Algorithmen zumindest bei Modellen für Küstengewässer gelegentlich auch von einer Wattstrategie.

Eine Überprüfung auf trockene Knoten kann entweder explizit durch die Wahl des Programmzyklus $TM_CYCLE = 95 in der Zeitschritt- und Randbedingungsdatei ausgeführt werden oder durch die Wahl der Nass-Trocken-Häufigkeit <freq>.

Abhängig vom gewählten Algorithmus werden verschiedene Parameter verwendet.

method = 0
 keine Überprüfung auf trockene Elemente (Standardwert)
method = 1
 Alle Elemente, in denen mindestens ein Knoten trocken ist, werden aus der Berechnung entfernt. Knoten sind genau dann trocken, wenn die Fließtiefe am Knoten unter das <dryLimit> sinkt. Das Wiederbenetzen der Elemente erfolgt, wenn die Fließtiefe das <rewLimit> im gesamten Element überschreitet. Dieses Benetzen wird in einer Schleife über alle Randelemente ausgeführt; die Anzahl der Schleifendurchläufe wird über <rewPasses> festgelegt.

Der <cntDown> Parameter verhindert, dass Elemente, die gerade trocken gefallen sind, im nächsten Nass-Trocken-Schriitt wieder benetzt werden. Eine Wiederbenetzung ist erst nach <cntDown> Nass-Trocken-Durchläufen möglich.

Diese Methode hat den gravierenden Nachteil, dass die Füllung eines Elements instantan erfolgt, so dass bei einer instationären Berechnung Volumenfehler auftreten können.
method = 2
 Elemente werden nur dann als trockene Elemente ausblockiert, wenn an allen Knoten des Elements die Fließtiefe unter dem <dryLimit> liegt. Mit dem <cntDown> Parameter wird festgelegt, nach wieviel Nass-Trocken-Läufen ein trockengefallener Knoten wieder benetzt wird.

Dies ist derzeit der stabilste Nass-Trocken-Algorithmus mit den zuverlässigsten Ergebnissen. Der einzige Nachteil dieses Ansatzes besteht darin, dass in einem Nass-Trocken-Durchlauf nur die Elemente am Strömungsrand benetzt werden können und somit die Überflutungsgeschwindigkeit eines Bereiches von der Häufigkeit der Nass-Trocken-Durchläufe abhängig ist. Im Zweifelsfall hilft nur die Simulation mit eine kurzen Zeitschrittweite, um die Überflutungsgeschwindigkeit korrekt nachzubilden.
method = 3
 Elemente werden nur dann als trockene Elemente ausblockiert, wenn an allen Knoten des Elements die Fließtiefe unter dem <dryLimit> liegt. Mit dem <cntDown> Parameter wird festgelegt, nach wieviel Nass-Trocken-Läufen ein frisch benetzter Knoten wieder trocken fallen darf.
freq Häufigkeit des Nass-/Trockenchecks innerhalb der iterativen Strömuingsberechnung. Dieser Parameter führt nur dann zu einer Überprüfung auf trockene Knoten, wenn er kleiner ist als die maximale Anzahl der Iterationen in einem Programmzyklus (vgl. $TM_MAXITER in der Zeitschritt- und Randbedingungsdatei).
method = 1, 2, 3
dryLimit Grenzfliesstiefe zum Eliminieren von Knoten
method = 1, 2, 3
rewLimit Grenzfliesstiefe zum Reaktivieren trockener Elemente
method = 1
rewPasses Anzahl der Schleifendurchgänge für das Reaktivieren von Lementen
method = 1
cntDown Zähler für das Aktivieren von Elementen/Knoten
method = 1, 2, 3
fill
Methode zur Benetzung trockener Elemente
fill = 0: | Trockene Elemente mit der Grenztiefe benetzen; zur Simulation instationärer Überflutungen / Dammbrüche
fill = 1: | Trockene Elemente mit angrenzendem Wasserspiegel benetzen; zur schnelleren Berechnung eines stationären Strömungszustands

Weitere Parameter
REPPORTLEVEL

$REPPORTLEVEL <n>          // Standardwert: <n> = 3

Mit dem Parameter <n> wird der Umfang der Reportdatei festgelegt. <n> kann dabei Werte zwischen 0 und 5 annehmen. Ein Reportlevel von 0 entspricht einer minimalen Ausgabe in die Reportdatei, die etwa dem entspricht was auf dem Bildschirm dargestellt wird. Ein Reportlevel von 5 entspricht der maximal möglichen Ausgabe.

Ausgabevariablen

$OUTPUTVARS <liste>

Mit diesem Parameter definieren Sie die Liste der Variablen, für die eine Ausgabe in die AVS-UCD-Dateien erfolgen soll.

Standardliste: UV,S,K,D,C,H,Us,tau,vt

Variable | Dimension | Beschreibung
UV | [m/s] | Fließgeschwindigkeit
S | [mNN] | Wasserspiegel
K | [m2/s2] | turbulente kinetische Energie
D | [m2/s3] | Dissipation von K
C | [-] | Stoffkonzentration
dUVdt | [m/s2] | Zeitgradient von UV
dSdt | [m/s] | Zeitgradient von S (oder H)
Zb | [mNN] | Sohlhoehe
H | [m] | Fließtiefe
Us | [m/s] | skalare Fließgeschwindigkeit
cf | [-] | Rauheitsbeiwert
ks | [m] | Rauheitshoehe
dp | [m] | mittlerer Bewuchsdurchmesser
sp | [m] | mittlerer Bewuchsabstand
tau | [N/m2] | Sohlschubspannung
vt | [m2/s] | Wirbelviskositaet
Exx | [m2/s] | Diffusivitaet in Fliessrichtung
Eyy | [m2/s] | Diffusivitaet quer zur Fliessrichtung
dz | [m] | Sohlaenderung (Erosion/Sedimentation)
Re | [-] | Reynolds-Zahl
Fr | [-] | Froude-Zahl
Pe | [-] | Peclet-Zahl
Cu | [-] | Courant-Zahl
rot | [1/s] | Rotation

Konvergenzkriterien

$CONVERGENCE <UV> <S> <KD>

Festlegung der Konvergenzkriterien für die Variablen. Die iterative Lösung im Newton-Raphson wird abgebrochen, wenn die maximalen Änderungen das Konvergenzkriterien unterschreiten.

Standardwerte
UV Fließgeschwindigkeit
10-3
S Wasserspiegel
10-4
KD Turbulenzparameter k und e
10-4

Grenzwerte für Variablen

$MINMAX <minVT> <minK> <minD> <maxUr> <minC>

Standardwerte
minVt Wirbelviskosität
0.0
minK turbulente kinetische Energie k
0.0
minD Dissipation der turbulenten kintetischen Energie e
0.0
maxUR Fließgeschwindigkeit
100.0
minC Stoffkonzentration
0.0

Filterung von Turbulenzparametern

$SMOOTH <BC> <KD> <VT>

Dieser Parameter ist zur Zeit deaktiviert.

Randbedingungen für k-ε

$KDBOUNDARY <inlet> <outlet> <side>

Dieser Parameter dient zur Definition der Randbedingungen im k-e-Modell. Er hat die folgende Standardbelegung:

            <inlet> <outlet> <side>
$KDBOUNDARY    2        1       1

Typ | Beschreibung | Rand
1 | Neumann-Randbedingung Symmetrieebene: Gradienten in Normalenrichtung verschwinden diffusiver Fluss = Null | outlet
2 | Dirichlet-Randbedingung Berechnung mit algebraischen Modell in Abhängigkeit von Sohlschubspannung und Fließtiefe | side, inlet
3 | Neumann-Randbedingung für k Dirichlet-Randbedingung für e | side
4 | Dirichlet-Randbedingung logarithmisches Wandgesetz für k-e; Gleichgewichtsbedingung für Produktion und Dissipation von Turbulenzenergie | side
5 | Dirichlet-Randbedingung k-e-Werte bleiben unverändert | inlet

GPDEGREE

$GPDEGREE <degree>

Mit dem Parameter legen Sie die Ordnung für die Gausspunktintegration fest. Mögliche Wertesind: 3, 5 und 7. Die Standardeinstellung

$GPDEGREE 5

reicht für die Berechnung mit linearen und quadratischen Ansatzfunktionen aus. Eine höhere Interpolationsordnung (7) bedeutet einen höheren Rechenaufwand und ist evtl. sinnvoll bei der Verwendung krummliniger Elemente. Eine niedrigere Ordnung (3) sollte ausreichen, wenn maximal lineare Ansatzsfunktionen verwendet werden.

DELTAZLIMIT

$DELTAZLIMIT <dzlimit>

Dieser Parameter wird für die Änderung der Sohlhöhe durch Erosion und Sedimentation verwendet. Sobald an einem Knoten des Berechnungsgebietes die akkumulierten Sohländerungen diesen Wert überschreiten werden die Sohländerungen auf das Berechnungsgitter übertragen und es wird in Abhängigkeit von den gewählten Programmzyklen (siehe $TM_CYCLE in der Zeitschritt- und Randbedingungsdatei) eine Neuberechnung des Strömungsfeldes veranlasst. Der Parameter hat folgende Standardwerte:

$DELTAZLIMIT 0,01    // in [m]

Konstanten

Schlüsselwort | Standardwert | Beschreibung
$TEMPERATURE | 15.0 | Temperatur des Wassers T [°C]
$VISCOSITY | 1.31e-6 | Viskosität von Wasser bei T = 10°C
$DENSITY | 1000.0 | Dichte von Wasser r [kg/m³]
$GRAVITY | 9.81 | Schwerebeschleunigung g
$VON_KARMAN | 0.41 | von-Kármán-Konstante k
$WALL_DISTANCE | 0.01 | dimensionsloser Wandabstand dw
$EARTH_ROTATION | 0.0 | Rotationsgeschwindigkeit der Erde w
$LATITUDE | 0.0 | Breitengrad

Sie können die Viskosität von Wasser alternativ als festen Wert oder über die Temperatur nach folgender Formel bestimmen:

nk
=
1,78∙10-6
1,0 + 0,0337∙T + 0,00022∙T2

Der dimensionslose Wandabstand $WALL_DISTANCE ist ein Parameter im logarithmischen Wandgesetz.

Zur Zeit wird noch keine Coriolis-Beschleunigung in den Gleichungen berücksichtigt. Daher bleiben die Parameter $EARTH_ROTATION und $LATITUDE ohne Verwendung.

Konstanten im k-e-Modell

$KDCONST <cm> <cd> <sK> <sD> <c1D> <c2D>

$VON_KARMAN | cm | cd | sK | sD | c1D | c2D
k | cm | cD | sk | se | c1e | c2e
0,41 | 0,09 | 1,00 | 1,20 | 1,20 | 1,43 | 1,92
0,43 | 0,09 | 1,00 | 1,00 | 1,30 | 1,43 | 1,92

Die Standardwerte für die Konstanten des k-e-Modells sind:

         <cm> <cd> <sK> <sD> <c1D> <c2D>
$KDCONST 0.09 1.00 1.20 1.20  1.43  1.92

Es gilt hier zu beachten, dass die Standardwerte nur dann gültig sind, wenn die von-Kármán-Konstante auf einem Wert von k = 0,41 belassen wird. Bei der ebenfalls gebräuchlichen Verwendung k = 0,43 sollten die Konstanten sk und se des k-e-Modells gemäß der letzten Zeile in der Tabelle angepasst werden.

Skalierungsfaktoren

$SCALE 0

$SCALE 1 <lScale> <vScale>

$SCALE 2 <lScale> <hScale> <ksScale>

lScale : Längenmaßtab
vScale : Geschwindigkeitsmaßtab
hScale : Höhenmasstab
kScale : Rauheitshöhe

scaling = 0 : keine Skalierung (Standarwert)

scaling = 1 : skaliere Länge und Geschwindigkeit
z.B.:  lScale = 100.0
       vScale = 10.0

scaling = 2 : skaliere Länge, Höhe und Rauheitshöhe ks (Froude)
z.B.: lScale  = 100.0
      hScale  =  50.0
      ksScale =   8.0

Dieser Parameter hat die Funktion, nach dem Einlesen einer Geometrie und zugehöriger Daten, eine Skalierung der Daten in den Ausgabedateien vorzunehmen. Hierfür stehen die beiden Optionen 1 und 2 zur Verfügung, mit denen z.B. eine Skalierung nach dem Froude-Modell möglich ist.

letzte Änderung: Donnerstag, 11. Mai 2006


6.2 Zeitschritt-/Randbedingungsdatei

6. Simulation

6.1 Beschreibung der Steuerungsdatei

6.2 Beschreibung der Zeitschritt-/Randbedingungsdatei

6.3 Beschreibung der Materialdatei

6.4 Beschreibung der Querschnittsdatei

6.5 Start der Simulation

6.6 Erläuterungen zu den Ausgabedateien

Mit der Version 3.09.00 liegen die Eingabedateien

  • sample.ris    // 6.1 Steuerungsdatei
  • sample.tm     // 6.2 Randbedingungs-/Zeitschrittdatei
  • sample.tbl    // 6.3 Materialdatei
  • sample.sec    // 6.4 Querschnittsdatei

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:

$RISMO2D 30900

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

$TM_BOUND_LINE | $TM_BOUND_NODE | $TM_CYCLE | $TM_INTERVAL
$TM_MAXITER | $TM_OUTPUT | $TM_SOLVER | $TM_STEP_NO
$TM_STEPS | $TM_TURBULENCE | $TM_WEIGHT |

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

Ausgabe zu Zeitschritten

$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
Zeitschrittnummer

$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:
nt | = cm∙cD∙ | k²
 |  | e
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

letzte Änderung: Donnerstag, 11. Mai 2006


6.3 Materialdatei

6. Simulation

6.1 Beschreibung der Steuerungsdatei

6.2 Beschreibung der Zeitschritt-/Randbedingungsdatei

6.3 Beschreibung der Materialdatei

6.4 Beschreibung der Querschnittsdatei

6.5 Start der Simulation

6.6 Erläuterungen zu den Ausgabedateien

Mit der Version 3.09.00 liegen die Eingabedateien

  • sample.ris    // 6.1 Steuerungsdatei
  • sample.tm     // 6.2 Randbedingungs-/Zeitschrittdatei
  • sample.tbl    // 6.3 Materialdatei
  • sample.sec    // 6.4 Querschnittsdatei

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:

$RISMO2D 30900

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.3 Beschreibung der Materialdatei

In der Materialdatei werden den Materialzonen, denen die Elemente des Finite Elemente-Gitters zugeordnet sind (Abschnitt 1), Parameter für Rauheit, Turbulenz und Sediment zugewiesen. Zum Einlesen dieser Datei muss in der Steuerdatei (siehe Abschnitt 6.1) mit dem Schlüsselwort $MATERIALFILE ein Dateiname vorgegeben werden.

Fehlt das Schlüsselwort $MATERIALFILE in der Steuerdatei, versucht Rismo2D die im Folgenden definierten Schlüsselworte aus der Steuerdatei einzulesen:

alphabetische Liste

$ROUGHNESS $TURBULENCE $SEDIMENT

Rauheitsparameter

$ROUGHNESS <no> <typeB> <rB> <typeS> <rS> <dp> <sp> <nDef>

no | Nummer des Materialzone
typeB | Rauheitsgesetz für Sohlberandung
typeS | Rauheitsgesetz für seitliche Berandung
rB | Rauheitsbeiwert für Sohlberandung
rS | Rauheitsbeiwert für seitliche Berandung
dp | mittlerer Durchmesser von ideellen Rauheitselementen
sp | mittlerer Abstand von ideellen Rauheitselementen
nDef | alternativer Manning-Beiwert für flach überströmte Bereiche

a) Sohlrauheit

Programmintern wird der Einfluss der Sohlrauheit über die Sohlschubspannung tso berücksichtigt, die mit dem Rauheitsbeiwert cf berechnet wird:

tso
=
 r∙cf∙(U² + V²)

Der Rauheitsbeiwert cf überlagert den Einfluss von überströmter Rauheit (Tabelle 1), die über den Rauheitsbeiwert <rB> definiert wird, mit dem Einfluss von durchströmter Vegetation, die gemäß DVWK-Merkblatt 220 (1991) aus den Parametern <dp> und <sp> berechnet wird:

cf
=
 cf,Sohle + cf,Bewuchs
=
 cf,Sohle + cWR∙ 4∙h∙dP
sP²

Eine umfassendere Beschreibung der hier verwendeten Rauheitsgesetze ist z.B. dem DFG-Abschlussbericht (Rouvé & Schröder, 1994) zu entnehmen.

Der alternative Manning-Beiwert für flach überströmte Bereiche nDef wird in den Bereichen verwendet, wo die Fließtiefe unter die spezifizierte Rauheitshöhe sinkt und die Widerstandsgesetze nach Colebrook-White bzw. Nikuradse ihre Gültigkeit verlieren. Der alternative Manning-Beiwert kann hier in erster Näherung mit folgender Gleichung aus der Rauheitshöhe ks abgeschätzt werden:

Tabelle 1: Implementierte Rauheitsgesetze für die Sohlberandung

typeB | rB | Gesetz
2 | ks |
3 | ks |
4 | C |
5 | n |

b) Wandrauheit

Tabelle 2: Implementierte Rauheitsgesetze für die seitliche Berandung

typeS | rS | Gesetz
1 | ks | logarithmisches Wandgesetz

Turbulenzparameter

$TURBULENCE <no> <vt> <st> <KDest> <lm>

no | Nummer des Materialzone
vt | konstante Wirbelviskosität
st | turbulente Schmidt-Zahl
KDest | dimensionslose tiefengemittelte Diffusivitaet (k-e-Modell)
lm | Mischweglänge / Smagorinski-Konstante

Stofftransportparameter

$SEDIMENT <no> <estx> <esty> <M> <tauc> <taus> <us> <rhob>

no | Nummer des Materialzone
estx | dimensionslose tiefengemittelte Diffusivität (Hauptströmungsrichtung)
esty | dimensionslose tiefengemittelte Diffusivität (Querströmungsrichtung)
M | Proportionalitätsfaktor für die Erosionsrate [kg/m²/s]
tauc | kritische Sohlschubspannung für Erosion [N/m²]
taus | kritische Sohlschubspannung für Sedimentation [N/m²]
us | Sinkgeschwindigkeit [m/s]
rhob | Dichte des Sediments [kg/m³]
letzte Änderung: Montag, 6. März 2006


6.4 Querschnittsdatei

6. Simulation

6.1 Beschreibung der Steuerungsdatei

6.2 Beschreibung der Zeitschritt-/Randbedingungsdatei

6.3 Beschreibung der Materialdatei

6.4 Beschreibung der Querschnittsdatei

6.5 Start der Simulation

6.6 Erläuterungen zu den Ausgabedateien

Mit der Version 3.09.00 liegen die Eingabedateien

  • sample.ris    // 6.1 Steuerungsdatei
  • sample.tm     // 6.2 Randbedingungs-/Zeitschrittdatei
  • sample.tbl    // 6.3 Materialdatei
  • sample.sec    // 6.4 Querschnittsdatei

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:

$RISMO2D 30900

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.4 Beschreibung der Querschnittsdatei


6.5 Simulation

6. Simulation

6.1 Beschreibung der Steuerungsdatei

6.2 Beschreibung der Zeitschritt-/Randbedingungsdatei

6.3 Beschreibung der Materialdatei

6.4 Beschreibung der Querschnittsdatei

6.5 Start der Simulation

6.6 Erläuterungen zu den Ausgabedateien

6.5 Start der Simulation


6.6 Ausgabedateien

6. Simulation

6.1 Beschreibung der Steuerungsdatei

6.2 Beschreibung der Zeitschritt-/Randbedingungsdatei

6.3 Beschreibung der Materialdatei

6.4 Beschreibung der Querschnittsdatei

6.5 Start der Simulation

6.6 Erläuterungen zu den Ausgabedateien

6.6 Erläuterungen zu den Ausgabedateien


7. Assemblieren

7. Gebiete zusammenfügen / Assemblieren


8. Auswertung mit RisPP und Tiegris


9.1 Kalibrierung und Validierung

9. Aspekte der Modellierung

9.1. Kalibrierung und Validierung

9.2. Sensitivitätsstudien

9.1. Kalibrierung und Validierung


9.2. Sensitivitätsstudien

9. Aspekte der Modellierung

9.1. Kalibrierung und Validierung

9.2. Sensitivitätsstudien

9.2. Sensitivitätsstudien


10. Literatur

HOOD, P. (1976): Frontal Solution Program for Unsymmetric Matrices;
Int. Journal for Numerical Methods in Engineering, Vol. 10, 379-399
KING, I.P. (1970): An Automatic Reordering Scheme for Simulataneous Equations Derived from Network Systems;
Int. Journal for Numerical Methods in Engineering, Vol. 2, 523-533
VAN DER VORST, H.A. (1992): Bi-CGSTAB: A Fast and Smoothly Converging Variant of Bi-CG for the Solution of Nonsymmetric Linear Systems; SIAM Journal on Scientific and Statistical Computing, Vol. 13, No. 2, pp 631-644, March 1992


Formatbeschreibung: AVS-UCD

Formatbeschreibung: AVS-UCD1

1 Das UCD-Format (Unstructured Cell Data) ist ein allgemeines Datenformat für Finite Elemente Gitter das in den Visulaierungsprogrammen der Firma AVS (Advanced Visual Systems) verwendet wird. Die folgende Formatbeschreibung in englischer Sprache wurde einer AVS-Dokumentation entnommen. Von den im AVS-UCD-Format unterstützten Elementtypen (cell-type) werden in Rismo2D die ein- und zweidimensionale Elemente (line, tri und quad) unterstützt.

A) Description of Format

Unstructured Cell Data (UCD) is commonly used in structural analysis and computational fluid dynamics. A UCD data structure consists of an irregular coordinate structure (or "model") made up of cells. Cells may be points, lines, quadrilaterals, triangles, tetrahedrons, pyramids, prisms, or hexahedrons. Each cell has a corresponding number of nodes. Data can be associated with the entire structure, with each cell, and with each node. The data is structured as a set of components. each component can be either a scalar or a vector.

If a UCD file is in ASCII, it has the following format. For a more com-plete description of UCD file formats, as well as a discussion of UCD data in general, see the "Unstructured Cell Data" appendix of the AVS Developer's Guide.

Comments, if present, must precede all data in the file - comments within the data will cause read errors. The general order of the data is:

1. Numbers defining the overall structure, including the number of nodes, the number of cells, and the length of the vector of data associated with the nodes, cells, and the model.

2. For each node, its node-id and the coordinates of that node in space. Node-ids must be integers, but any number including non-sequential numbers can be used. Mid-edge nodes are treated like any other node.

3. For each cell: its cell-id, material, type (hex, prism, pyr, tet, quad, tri, line, pt), and the list of node-ids that correspond to each of the cell's verticies. (The UCD appendix shows the order in which cell verticies are numbered.)

4. For the data vector associated with nodes, how many components that vector is divided into (e.g., a vector of 5 floating point numbers may be treated as 3 components: a scalar, a vector of 3, and another scalar, which would be specified as 3 1 3 1).

5. For each node data component, a component label/unit label pair, sepa-rated by a comma.

6. For each node, the vector of data values associated with it.

That is the end of the node definitions. Cell-based data descriptions, if present, then follow in the same order and format as items 4, 5, and 6.

The single model-based data descriptions, if present, comes last.

The input file cannot contain blank lines or lines with leading blanks. The numbers down the left correspond to the above descriptions and are not part of the ASCII file.

The UCD structure and library will support either integer or character node-, cell-, and model-ids, (referred to in the library documentation as names). However, the read ucd module only accepts integer node-ids, cell-ids, and model-ids. This is shown in the example below. The ids do not have to be consecutively numbered.

Also note that, at present, most of the UCD modules do not make use of cell and model-based data, thus the input data examples all show "0" for and . User-written modules can use the UCD library to manipulate cell- and model-based data.

 | # <comment_1> . . . # <comment n>
1. | <num_nodes> <num_cells> <num_ndata> <num_cdata> <num_mdata>
2. | <node_id 1> <x> <y> <z> <node_id 2> <x> <y> <z> . . <node_id num_nodes> <x> <y> <z>
3. | <cell_id 1> <mat_id> <cell_type> <cell_vert 1> ... <cell_vert n> <cell_id 2> <mat_id> <cell_type> <cell_vert 1> ... <cell_vert n> . . <cell_id num_cells> <mat_id> <cell_type> <cell_vert 1> ... <cell_vert n> Note: valid strings for <cell-type> are: pt, line, tri, quad, tet, pyr, prism, and hex.
4. | <num_comp for node data> <size comp 1> <size comp 2> ... <size comp n>
5. | <node_comp_label 1> , <units_label 1> <node_comp_label 2> , <units_label 2> . . <node_comp_label num_comp> , <units_label num_comp>
6. | <node_id 1> <node_data 1> ... <node_data num_ndata> <node_id 2> <node_data 1> ... <node_data num_ndata> . . <node_id num_nodes> node_data 1> ... <node_data num_ndata>
7. | <num_comp for cell's data> <size comp 1> <size comp 2> ... <size comp n>
8. | <cell-component-label 1> , <units-label 1> <cell-component-label 2> , <units-label 2> . . <cell-component-label n> , <units-label n>
9. | <cell-id 1> <cell-data 1> ... <cell-data num_cdata> <cell-id 2> <cell-data 1> ... <cell-data num_cdata> . . <cell-id num_cells> <cell-data 1> ... <cell-data num_cdata>
10. | <num_comp for model's data> <size comp 1> <size comp 2> ... <size comp n>
11. | <model-component-label 1> , <units-label 1> <model-component-label 2> , <units-label 2> . . <model-component-label n> , <units-label n>
12. | <model-id> <model-data 1> ... <model-data num_mdata>
B) Cells, Nodes and Mid-edge Nodes

The UCD data structure has eight different cell types. In figure each of the cell types is pictured, with its nodes and mid-edge nodes correctly labeled.

Figure UCD Cell Types, Nodes, Mid-Edge Nodes. and Node Numbering
C) Sample UCD File

The following is an example of a simple UCD file. This UCD structure has 8 nodes in 1 hexahedral cell. Associated with each node is a single scalar data value, making up one component that this person labels "stress," and specifies a "lb/in**2" unit label. There is no cell- or model-based data. See the "Unstructured Cell Data" appendix in the Developer's Guide for more examples.

8 1 1 0 0 | 1. 8 nodes, 1 cell, 1 component of node data
1 0.000 0.000 1.000
 2 1.000 0.000 1.000
 3 1.000 1.000 1.000
 4 0.000 1.000 1.000
 5 0.000 0.000 0.000
 6 1.000 0.000 0.000
 7 1.000 1.000 0.000
 8 0.000 1.000 0.000
         2. for each node, its id and node coordinates
1 1 hex 1 2 3 4 5 6 7 8 | 3. cell id, material id, cell type, cell vertices
1 1 | 4. num data components, size of each component
stress, lb/in**2 | 5. component label, units label
1 4999.9999
 2 18749.9999
 3 37500.0000
 4 56250.0000
 5 74999.9999
 6 93750.0001
 7 107500.0003
 8 5000.0001 		6. data vector for each node

letzte Änderung: Montag, 6. März 2006