next up previous contents
Next: Ergebnisse Up: Grundlagen der FVM für Previous: Aufbau des Gleichungssystems

Implementierung

Da bei der programmtechnischen Umsetzung die Gleichungen z.B. immer nur an einer Kontrollvolumenseite ausgewertet werden (in den flux-routinen) und über die Routinen zerlegt sind, ist eine Übersicht aus dem Programm schwer zu erhalten. Deswegen soll eine kurze Erläuterung der Implementierung folgen.
Die neuen, von Elan2 zu berechnenden Größen sind die Verschiebungen vx und vy, die mit V1 und V2 im Programm bezeichnet sind. Damit erhöht sich die Zahl der Variablen von bisher 15 auf 17, was in der einzubindenden Datei /COMMONS/param.inc berücksichtigt ist. Die Temperatur ist dagegen bereits vorgesehen.
Die aus den Verschiebungen abgeleiteten Größen, nämlich Verzerrungen und Spannungen, werden ebenfalls als neue Feldgrößen eingeführt. Die Verzerrungen, die sich direkt aus den Verschiebungen ableiten lassen, sind zellzentriert gespeichert und wie folgt bezeichnet: EPSX, EPSY und EPSXY. Sie sind im globalen x, y- Koordinatensystem formuliert und entsprechen den in Gl. 54 eingeführten Verzerrungsgrößen.
Ebenso werden die Spannungen nach dieser Gleichung in x, y- Koordinaten eingeführt mit den Bezeichnungen: TAUXX, TAUYY und TAUXY. Sie werden nach Gl. 54 mit den Faktoren AA11, AA12, AA22, BB11, BB12, BB22, CC11, CC12 undCC22 aus den Verzerrungen berechnet. Anders als die Spannungen und Verzerrungen sind diese Werte vorerst blockweise konstant, allerdings sind bereits Feldvariablen vorgesehen, die veränderliche Materialeigenschaften ermöglichen werden. Dies sind AAA11, AAA12 ... bis CCC12.
In einer neuen include-Datei structure.inc ist unter anderem die Variable vereinbart, die festlegt, ob es sich bei dem Block j um einen Struktur- oder Strömungsblock handelt, dabei gilt für einen Strömungsblock CALSTR(MNB)=0 oder für einen Strukturblock CALSTR(MNB)=1. Somit muss eine Grenze zwischen Strömung und Struktur immer eine Blockgenze sein!
Im Unterschied zum bisherigen Programm kommen die Materialdaten für Strukturblöcke aus einem neuen file namens MATDAT, so daß das ursprüngliche Eingabefile, FILIN, nur geringfügig zu erweitern war.
Neben den Änderungen in bereits vorhanden Routinen lag der größte Teil der Arbeit bei der Programmierung der neuen Berechnungsroutinen. Es handelt sich um die Unterprogramme bcstruc.f, bcdisp.f, modv1v2.f und bcforce.f zur Behandlung der Randbedingungen, calcdisp.f als Steuerroutine für die Berechnung der Verschiebungen, edgeex.f zur speziellen Behandlung der Eckpunkte, fluxedis.f, fluxndis.f und fluxv1v2hk.f, in denen die Matrixkoeffizienten berechnet werden, force1ebc.f, force1nbc.f, force2ebc.f, force2nbc.f, force3ebc.f, force3nbc.f und epssigma.f zur Berechnung der Spannungen.
In der routine bcstruc.f, die als Kopie der routine bcin.f entstanden ist, werden die Randbedingungsarten eingelesen und eine Kontrolle der Anzahl der Randbedingungen durchgeführt. Abhängig von der Art der Randbedingung werden die routinen bcdisp.f (bei IBOUND=1, reiner Verschiebungsrand) oder bcforce.f (bei IBOUND=8, Rand mit mindestens einer Spannungsvorgabe) aufgerufen.
In der Routine bcdisp.f werden vorgegebene Randnormal- und -tangentialverschiebungen eingelesen und in Verschiebungen in x, y V1 und V2 umgerechnet. Dabei gilt, daß Verschiebungen nach außen positiv sind. Die Tangentialverschiebungen sind positiv im Sinne eines Rechtskoordinatensystemes mit den Normalverschiebungen, wobei die Drehachse aus der Ebene herauskommt und die Tangentialrichtung in die Normalenrichtung zu drehen ist.
Analog dazu liest bcforce.f die Spannungen (nur deren Werte) ein. Die Felder P(IJ) und TE(IJ) finden dafür Verwendung. Je nach vorhandener Kraftrandart (Kontrollparameter IFORCE(MBLOCK,NSIDE)) werden die Werte als Normalspannung und Tangentialverschiebung, als Schubspannung und Normalverschiebung oder als Normal- und Schubspannung interpretiert und ausgewertet.
In der routine calcdisp.f wird die Berechnung der Verschiebungen gesteuert, wobei Aufrufe der Subroutinen zur Berechnung der Eckwerte der Kontrollvolumen und des gesamten Blockes (edgeex.f) als erstes erfolgen. Die eigentliche Berechnung der Faktoren des LGS erfolgt in den aufgerufenen fluxroutinen. Randbedingungen und block-interfaces mit hängenden Knoten werden durch den Aufruf von modv1v2.f behandelt. Nach dem Lösen des LGS werden die berechneten Werte der Verschiebungen zwischen den Blöcken ausgetauscht (excc.f).
In edgeex.f werden die Verschiebungswerte der Blockecken aus sechs Feldwerten extrapoliert, siehe Bild 5.

  figure1631
Abbildung 5: Extrapolation der Blockecken

Extrapoliert wird mit einem vollständig bilinearem Interpolationspolynom durch die sechs Punkte mit quadratischen Anteilen in x und y :

V(x,y) = a + bx + cy + dxy + ex2 + fy2&sp;,

wobei die Koefizienten aus einem LGS bestimmt werden, das mittels eines Lösers aus der SCILIB gelöst wird. Dabei findet eine Verschiebung des Koordinatenursprungs in den Punkt ie statt, so daß der Faktor a dem gesuchten Wert entspricht.
fluxedis.f und fluxndis.f berechnen nach dem Schema der bisherigen Fluxroutinen die impliziten und expliziten Anteile der Koeffizienten und rechten Seite. Die Bezeichnungen sind denen der anderen Fluxroutinen ebenfalls sehr ähnlich.
Die Fluxroutine für hängende Knoten heißt fluxv1v2hk.f. In ihr werden ebenfalls nach vertrautem Verfahren die Verschiebungen entlang non-matching block interfaces berechnet. Die Materialwerte dafür sind ebenfalls aus beiden angrenzenden Blöcken nach Maßgabe der Interpolationsabstände gemittelt.
Benötigt wird dieses Unterprogramm in modv1v2.f, wo die Randbedingungen Eingang finden. Auch die Kraftrandbedingungen werden über Verschiebungen, die in entsprechenden force-routinen berechnet werden, erfüllt.
Die force-routinen sind nach folgender Nomenklatur benannt: Die Nummer steht für die Art der Randbedingung und der Buchstabe e oder n für die Randart. bc steht für boundary condition. Die Randarten unterteilen sich in 1: Normalspannungs- und Tangentialverschiebungsvorgabe, 2: Schubspannungs- und Normalverschiebungsvorgabe und 3: Normal- und Schubspannungsvorgabe. Aus den vorgegebenen Randspannungen errechnen sich nach Transformation in x, y die Verschiebungen am Rand. Vorgehensweise ist dabei immer, daß ein Ausdruck für die Randspannung in Abhängigkeit der Verschiebungen am Rand und der Nachbarvolumen gebildet wird, wodurch lange Ausdrücke mit den Transformationswinkeln und Materialparametern entstehen. Die Randverschiebungen werden dann als freie Variable behandelt und nach Vorgabe der Spannung in Abhängigkeit all der anderen Verschiebungen bestimmt. Dieses Vorgehen ist bei den gemischten Randbedingungen notwendig, bei den reinen Krafträndern ist als Alternative die direkte Vorgabe der Koeffizienten für das LGS gewählt worden, da hier die Spannungen und somit die Koeffizienten bekannt sind und sich die Verschiebungen frei einstellen können.
Als letzte subroutine sei epssigma.f genannt. In ihr erfolgt die Berechnung der Verzerrungen und Spannungen im Feld mittels zentraler Differenzen.


next up previous contents
Next: Ergebnisse Up: Grundlagen der FVM für Previous: Aufbau des Gleichungssystems

Ulf Bunge
Wed Jan 5 17:56:47 CET 2000