2 Kurven statt einer, und ein Workaround


Thomas Wölfer
Thomas Wölfer

07. Mai 2014


Wir hatten kürzlich einen Sonderfall im Plattenteil der Baustatik, den ich gern erklären würde, weil er zwar wohl nur selten vorkommen wird – dann aber reichlich unklar ist.

Es ging um eine Platte mit einem Innenbereich und Außenbereichen am Rand.

Die Außenbereiche haben einen linearen Bettungsverlauf der so angelegt ist, das er am Übergang zum Innenbereich (hier die dicke schwarze Linie) den gleichen Wert hat, wie der Innenbereich. Mit anderen Worten: Der Bettungsverlauf verläuft linear, hat aber am Übergang zum Innenbereich keinen Sprung.

Genau an der Linie dieses Übergangs sind Ergebnislinien definiert, und für diese Linien wurden dann die Ergebnisse angezeigt. (Im Beispiel war das Ved, es spielt aber eigentlich keine Rolle um welche Ergebnisse es sich handelt.).

Bei der Anzeige der Ergebnisse stellte sich heraus, das auf der Ergebnislinie 2 Kurven angezeigt wurden – obwohl dort natürlich nur ein Ergebnis herauskommen kann. Die Frage: Woran liegt das ?

Die kurze Antwort: Das ist kompliziert (Ich mache das nun seit 25 Jahren und bin immer noch überrascht, wie kompliziert manche “so einfach” aussehenden Probleme sein können.)

Eine etwas längere Antwort: Die Darstellung der Ergebnisse in der Platte hat eine ganze Menge an Optionen (und es gibt eine ganze Menge unterschiedlicher Ergebnisse) – und dabei müssen diverse “Geometrie-artige” Parameter berücksichtigt werden. Dazu zählen zum Beispiel sprunghaft veränderliche Dicken (z.b. an Kanten von aneinander anschließenden Platten), veränderte lokale Koordinatensysteme und unterschiedliche Bettungen – um nur eine Handvoll zu nennen.

An solchen “Kanten” müssen dann Dinge beachtet werden: Es entstehen beispielsweise an einem gedachten Punkt mehrere Ergebnisse (das eine zum Beispiel zur “dünneren” Platte auf der einen Seite gehörend, das andere zur “dickeren” auf der anderen Seite), und zwar nicht nur “maximal 2” sondern “maximal so viele, wie Platten zur Kante gehören” – denn das können ja im Prinzip auch beliebig viele werden (Faltwerke…..).

Um das in den Griff zu bekommen, werden die Platten im Rahmen und im Zusammenhang mit der FE-Netzerzeugung in Bereiche aufgeteilt. Diese Bereiche sind dann Bereiche in denen keinerlei sprunghafte Veränderungen stattfinden – nur die Ränder dieser Bereiche müssen auf Bedingungen für sprunghafte Änderungen geprüft werden. Das ist kein Problem für “flächige” Ergebnisse (also solche, die im wesentlichen auf ein FE-Element bezogen sind, denn die FE-Elemente überschneiden keine Grenzen von Plattenbereichen). Es gibt aber auch Ergebnislinien – und die sind eben keinem FE-Element zugeordnet.

Im Beispiel lagen die Ergebnislinien genau auf der Kante zwischen den Plattenbereichen die durch die unterschiedlichen Bettungswerte entstanden waren. Die Tatsache, das sich genau an dieser Kante die “gleichen” Bettungen befanden, weil sich das so aus dem linearen Verlauf ergab, ist zu diesem Zeitpunkt im Programm nicht mehr bekannt. (Auch wenn das so wäre würde das aber nichts ändern, denn schon aufgrund der Rundungsfehler (und einiger anderer Implementierungsdetails) würden trotzdem unterschiedliche Ergebnisse entstehen, je nachdem von welcher Seite man die Kante betrachtet.)

Weil die Ergebnislinie aber genau auf einer Grenze zwischen 2 Bereichen lag, wurden auch 2 Kurven ausgegeben – eine für jeden Bereich. Und weil die Ergebniswerte aufgrund anderer Umstände nicht völlig identisch sind, gibt es eben 2 Kurven die “fast” aber nicht vollständig deckungsgleich sind – und sich darum teilweise überdecken.

Die schlechte Nachricht: Wir können da nicht viel dran ändern, bzw.: das zu ändern mündet in einem Programmieraufwand, den wir schlicht nicht aufbringen können, weil sich das einfach nicht rechnen würde. Sorry, aber wir müssten tatsächlich derart tief an den grundlegenden Vorgehensweisen im Programm ändern, das ich hier mit vielen Mannmonaten Arbeitsaufwand rechne – sicher nicht weniger als ein halbes Jahr, eher deutlich mehr: Diese Zeit investieren wir lieber in Dinge im Programm.

Die gute Nachricht: Es gibt einen Workaround.

Der geht so: Man könnte das Programm dazu bringen, das nur noch eine Kurve angezeigt wird – das geht einfach dadurch, indem man mehrere Platten verwendet: Da man die Sichtbarkeit der Ergebnisse “pro Platte” einstellen kann, könnte man – wenn man statt des Gesamtsystems aus einer Platte mehrere hätte – die Ergebnisdarstellung die “innere” Platte abschalten – und bekommt dann nur noch eine Kurve.

Wie kommt man also beim Beispielsystem zum gewünschten System? Das ist zum Glück (bei diesem Beispiel) ganz einfach:

  1. Man erzeugt graphisch eine Aussparung, die als Rand die Ergebnislinien hat. (Man klickt also einfach die 4 Eckpunkte an).
  2. Man erzeugt ein Duplikat der Gesamtplatte. (Bearbeiten –> Kopieren, Einfügen)
  3. Jetzt kopiert man die Eckpunkte der Aussparung und überschreibt damit die Eckpunkt des Platten-Duplikats.
  4. Jetzt hat man also ein inneres und ein äußeres Plattenelement: Das äußere hat ein Aussparung in dem das innere liegt.
  5. Nun kann man wie beschrieben die Sichtbarkeit getrennt einstellen und bekommt nur noch eine Kurve.