Thomas Woelfers Baustatik Blog

Baustatik-Software und was sonst des Weges kommt

Noch eine Performance-Verbesserung

Ich bin ja in letzter Zeit schon auf einige Performance-Verbesserungen im nächsten Update eingegangen:

Es gibt noch einen weiteren Kandidaten: Abgesehen von der pauschalen Verbesserung die sich auch auf Rahmensysteme auswirkt, haben wir spezielle die Beigedrillknicknachweise verbessert: Der Bemesser für diesen Nachweis wurde ebenfalls parallelisier und skaliert jetzt mit der Anzahl der CPUs. Sie können in etwa ein ähnliches Verhalten wie bei den anderen Fällen erwarten: Mit 4 CPUs sinkt die benötigte Rechenzeit etwa auf 25-30% der ursprünglich benötigten Zeit.

So fügt man eine beliebige Überschrift an einer beliebigen Stelle im Ausdruck ein

… das gilt natürlich nicht nur für Überschriften: Man kann einen beliebigen Text an beliebiger Stelle einfügen – ob der dann als Überschrift oder sonstwie formatiert wird, legt man mit der Definition der Schriftart fest. Das ganze geht so:

In der Ausdrucksteuerung den “Erweitert” Button benutzen und dann aus dem erweiterten Bereich die “Bemerkung” in den “Inhalte” Bereich an die Stelle ziehen, an der der Text im Ausdruck landen soll. Dann bei dem soeben hinzugefügten Element die gewünschte Schriftart auswählen, und den gewünschten Bemerkungstext eintragen. Als Überschrift vor den Eingabedaten sieht das dann so aus:

beispiel_titel

Wenn man so einen Text immer an der ausgewählten Stelle haben möchte, dann kann in der Ausgabesteuerung auf den Reiter “Verwaltung” gehen, und dort den Button “”Aktuelle Einstellungen als Vorlage für neue Dokumente verwenden” klicken: Dann haben zukünftige Ausgabesteuerungen für die aktuelle Dokument-Art automatisch immer ein solches Bemerkungstext-Element.

Für Sonderfälle kann man sich die Sache auch noch stärker automatisieren: Angenommen, es geht um eine Überschrift, in der immer der Dokumenten-Namen und ein beschreibender Kurztext auftauchen sollen. In diesem Fall trägt man vor dem “als Vorlage verwenden” einfach die entsprechenden Makros in den Kommentar-Text ein:

image

Wenn man das dann als Vorlage speichert, steht an der Stelle von {DokumentName} immer automatisch der Name des aktuellen Dokumentes und bei {Text1} immer der Text, der bei den Dokument-Eigenschaften als “Text1” angegeben wurde.

Nochmal Performance

Ich bin in den letzten Tagen ja schon häufiger darauf eingegangen, das die nächste Version der Baustatik deutliche Performanceverbesserungen im Vergleich mit der aktuellen Version aufweisen wird. Heute hatte ich eine Kundendatei vorliegen, bei der ich das natürlich sofort nochmal nachgemessen habe: Es handelte sich um eine recht große Platte mit vielen Lastfällen und mehreren Überlagerungsregeln. Das FE-Netz hatte knapp 100.000 Elemente.

Gemessen habe ich die Zeit von “null” bis zur ersten graphischen Anzeige von Bemessungsergebnissen in der Platte. Die aktuelle Version der Baustatik brauchte etwas über 18 Minuten. Die Version die im nächsten Update drin sein wird brauchte etwas unter 2 Minuten. Die Performance-Arbeiten scheinen sich gelohnt zu haben Smiley

Anwenderstammtisch im Juli

Der nächste Münchner Anwenderstammtisch findet am Dienstag den 19. Juli 2016 statt. Wie immer ab 19:30. Der Ort ist das “Wirtshaus Maxvorstadt”, Gabelsbergerstraße Ecke Augustenstrasse. Wir haben natürlich auch einen Laptop dabei, falls es Fragen gibt – ansonsten kann man auch einfach nur gemütlich ein Bier trinken Smiley

Rechnen Sie mit voller Kraft?

Die Baustatik hat intern 2 Gleichungslöser: Einer ist sehr schnell, hat aber manchmal fehlende Angaben, die bei der Fehlersuche (sehr manchmal Smiley) hilfreich sind. Der andere liefert diese Daten immer, ist aber…. langsam. Sehr langsam, um genau zu sein.

Der schnelle Gleichungslöser ist natürlich derjenige, der von Haus aus verwendet wird. In Einzelfällen, eigentlich nur dann, wenn unser Support dazu auffordert, kann man die Sache über die Optionen umschalten:

image

Hier sollte “Ja” ausgewählt sein… Nun ist uns bei einigen Kunden aufgefallen, das dort eben nicht “Ja” steht – was die Berechnungen zum Teil doch stark in die Länge zog. Der Grund dafür ist natürlich der, das diese Option einmal in der Vergangenheit für einen speziellen Zweck umgestellt worden war – aber nie mehr zurück.

Darum funktioniert das ab dem nächsten Update anders: Diese Option ist dann in die Dokumenteneigenschaften gewandert: Man stellt den “langsamen” Gleichungslöser dann, wenn überhaupt, nur noch für ein einzelnes Dokument ein. (Und man kann auch nicht vergessen, ihn für das nächste Dokument wieder auszuschalten.)

Happy Birthday, Baustatik

Wir die Zeit vergeht: Heute vor 9 Jahren haben wir die erste Version der Baustatik veröffentlicht.

image

Der Plan damals: Einerseits die Berechnung kompletter Bauwerke in einem 3D-Modell zu ermöglichen, andererseits alle 2D Bauteile ebenfalls zu einem kompletten Gebäudemodell verknüpfen zu können. Mit dem nächsten Update wird das weitgehend (um im Rest des Jahres vollständig) abgeschlossen sein. Manche Dinge brauchen eben etwas länger Smiley

So halten wir die Performance im Auge

Ich habe ja schon häufiger darauf hingewiesen, das wir jeden Tag einige Tausend Dokumente jeweils mit der 32bit und der 64bit Version der Baustatik durchrechnen, damit sichergestellt ist, das tagesaktuelle Änderungen keine Fehler eingeführt haben. Dabei werden die aktuellen Berechnungen mit Referenzergebnissen verglichen, und die dürfen sich nicht geändert haben – sonst ist was “ungünstiges” passiert.

Diese Testläufe sind aber nicht nur dafür da, Fehler zu vermeiden. Wir prüfen damit auch die Performance und andere Messpunkte der Baustatik.

Für Performance-Optimierungen hat Visual Studio – unser hauptsächliches Entwicklungswerkzeug – einen “Profiler” eingebaut: Damit kann man quasi auf Funktionsebene ausmessen, wo die meiste Zeit bei der Abarbeitung des Programms verwendet wird, und solche Stellen dann genauer untersuchen, um dort Verbesserungen vorzunehmen. Das hilft aber natürlich nicht dabei, die Gesamtperformance im Auge zu behalten. Das tun wir statt dessen mit unseren Testläufen.

Im Normalfall produzieren die jeden Tag einen Report, und aus dem ersten Report kann man dann schon entnehmen, wie viel Zeit der Testlauf benötigt hat. Diese Information kommt einfach als eMail von den Testservern, und sieht in etwa so aus:

image

Damit sieht man natürlich nicht, wie sich das Laufzeitverhalten verändert hat: Man bekommt aber sofort mit, wenn irgendwas dramatisches passiert ist: Brauchen irgendwelche Testfälle plötzlich mehr als ein paar Minuten, ist mit recht großer Sicherheit irgendwas nicht in Ordnung.

Um das genauer anzusehen, gibt es weitere Diagramme. Eines davon gibt Ausschluss darüber, wie lange die einzelnen Testläufe der letzten Tage benötigt haben. Das sieht dann ungefähr so aus:

image

Hier sind kleinere Schwankungen immer zu erwarten: Der Testserver braucht ja nur irgend ein Update zu installieren während die Tests laufen – schon dauert der Testlauf etwas länger. Auf dem Testserver von dem die Graphik stammt laufen die Testfälle mit nur einer CPU und einer relativ langsamen Festplatte und brauchen dann immer so um die 60 Minuten. Wenn hier Ausreißer auftreten, kann man sofort sehen, das irgendwas nicht in Ordnung ist – und auch, ab welchem Tag in der Vergangenheit das passiert ist. So einen Fall gibt es in dieser Graphik nicht. Was man aber sehen kann ist, das die Testfälle in der Anfangsperiode grundsätzlich über 60 Minuten gebraucht haben – größenordnungsmäßig waren die so um die 65 Minuten. In den letzten Durchläufen hingegen ist die Laufzeit immer unter 60 Minuten, so ungefähr bei 58: Der Grund ist hier eine Optimierung von vor circa einer Woche. (Die meisten Optimierungen der letzten Zeit betrafen die Parallelisierung, die auf dem Single-Core Testserver nicht durchschlägt. Man kann halt keine Arbeit auf mehrere CPUs verteilen, wenn man nur eine hat Smiley )

Soweit dient die Sache in erster Linie dazu, das wir plötzlich auftretende Veränderungen im Verhalten der Baustatik bemerken. Es geht aber weiter: Natürlich können wir die Testläufe nicht nur automatisiert auf den Testservern laufen lassen, sondern auch auf unseren normalen Workstations.

Da gibt es dann ein weiteres Tool, das ich gern bei der Performance-Optimierung verwende: Das Werkzeug stellt im Prinzip die gleichen Daten da, wie die, die ich schon abgebildet habe – gibt einem aber bessere Vergleichsmöglichkeiten. Wenn also eine Änderung durchgeführt wurde, kann man einen Testlauf von vor der Änderung mit einem nach der Änderung vergleichen – und überprüfen, ob die Änderung was gebracht hat. Dabei werden Informationen sowohl über die verbrauchte Zeit, als auch über den verbrauchten Speicher angezeigt.

image

Da kann man dann auch reinzoomen, falls man sich nur für einen bestimmten Teil interessiert. So was es bei einer meiner letzten Änderungen: Die betrag die Testfälle rund um die Nummer 500:

image

Vor der Änderung (obere gelbe Kurve) brauchten die Testläufe konsistent 10-20 Sekunden, mit einigen Ausrutschern, die über 60 Sekunden brauchten. Nach der Änderung (obere blaue Kurve) dauert das immer deutlich unter 5 Sekunden: Diese Änderung hat es also gebracht Smiley

Wo bleibt das monatliche Update?

… aus Smiley

Es bleibt zunächst mal aus: Die Compiler-Umstellung war doch deutlich aufwendiger als wir dachten, und deswegen sind ein paar Dinge in Verzug geraten. Nun ist es so, das der Weiterbau der Lastweiterleitung “fast” fertig genug ist, um verwendet zu werden – aber leider eben nur fast. Nachdem es aber sonst (fast) keinen Grund fürs Update gibt (keinen zwingenden zumindest: Die Performance-Verbesserungen sind zwar schön, aber nicht sooo wichtig, das die nicht noch ein bisschen warten könnten.), lassen wir das mit dem Update so lange sein, bis die neue Lastweiterleitung fertig genug ist. Darum: Kein Update zum 1. Mai.

So verwendet man selbst definierte Betonprofile

In der Baustatik gibt es natürlich die normalen Tabellenprofile aber sowohl für Stahl als auch Beton gibt es auch spezielle Editoren, mit denen man das Profil vollständig selbst beschreiben kann. Bei Betonprofilen wird dazu im Wesentlichen ein beliebiger Polygonzug definiert.

Wenn man nun so ein “beliebiges” Betonprofil in einem Unterzug verwenden möchte scheint das auf den ersten Blick nicht zu funktionieren: Im Fenster für die Auswahl der Betonprofile werden nur die normalen Rechteck- und Rundquerschnitte angeboten.

Es geht aber natürlich trotzdem: Man darf nur nicht den Befehl zum anlegen eines “Beton-Unterzuges” verwenden, sondern man muss einen “beliebigen” Unterzug definieren. Der taucht im Menu (blöderweise) mit einem Stahlbausymbol auf. Der Text dazu lautet aber (ab dem nächsten Update) “Stahl/Holz/Beliebig”. Wenn man einen solchen Unterzug anlegt, dann gehen einige Automatismen, die beim “Stahlbeton-Unterzug” gehen, nicht mehr: So muss man zum Beispiel die Exzentrizität selbst angeben, während die im anderen Fall automatisch aus dem Profil ermittelt wird.

Dafür kann man dann aber auch die beliebigen Polygonalen Betonquerschnitte verwenden. Smiley

unterzugbeliebig