[[Vorlage(Archiviert)]] {{{#!vorlage Wissen [:Paketquellen_freischalten/PPA: Verwenden eines PPAs] [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Texteditor öffnen] }}} [[Inhaltsverzeichnis(1)]] [[Bild(calculix.png, 48, align=left)]] [http://www.calculix.de/ CalculiX] {en} ist ein freies und quelloffenes [wikipedia:Finite-Elemente-Methode:Finite-Elemente-Programm] zur Simulation von [wikipedia:Strukturmechanik:]. FE-Berechnungen werden unter anderem im Ingenieurswesen eingesetzt, um [wikipedia:Partielle Differenzialgleichung:partielle Differentialgleichungen] auf komplexen Geometrien numerisch zu lösen (z. B. eine Karosserie im Automobilbereich). CalculiX teilt sich hierbei in den Solver ccx (CalculiX CrunchiX) und den Prä- und Postprozessor cgx (CalculiX GraphiX) auf. Mit dem [wikipedia:Präprozessor:] werden Geometrien aus [:CAD:CAD-Programmen] eingelesen und durch Vernetzen in ein mathematisches Modell umgewandelt. Diese werden dann mit dem [wikipedia:Solver:] gelöst und anschließend wieder mit dem [wikipedia:Postprozessor:] analysiert. CalculiX verwendet zu großen Teilen das proprietäre Abaqus-Eingabeformat. Daher lassen sich zahlreiche andere Prä- und Postprozessoren nutzen. Die Berechnungen stehen jedoch in keiner Verbindung zu Abaqus. CalculiX ist unter [https://www.gnu.org/licenses/old-licenses/gpl-2.0.de.html GPL 2.0] {de} lizensiert. = Installation = Ab Ubuntu 16.04 ist nur der Solver ccx in den offiziellen Paketquellen. Ab Ubuntu 16.10 kann CalculiX vollständig aus den offiziellen Paketquellen installiert werden: [2] {{{#!vorlage Paketinstallation calculix-ccx, universe calculix-cgx, universe }}} Die Testdateien und die Dokumentation von ccx sowie die Beispieldateien von cgx sind in zusätzliche Pakete ausgelagert: {{{#!vorlage Paketinstallation calculix-ccx-test, universe calculix-ccx-doc, universe calculix-cgx-examples, universe }}} == Manuell == Steht CalculiX nicht in einer Paketquelle zur Verfügung oder möchte man eine aktuellere Version des Programms einsetzen, dann können auf der [http://www.dhondt.de/ Downloadseite] {en} des Projekts vorkompilierte, ausführbare Dateien (''„a Linux executable“'') von cgx und ccx für 64-Bit-Systeme heruntergeladen werden. [[Vorlage(Fremd, Quelle, "")]] Die heruntergeladenen Archive müssen [:Archivmanager:entpackt] und die entpackten Dateien [:chmod:ausfühbar] gemacht werden. Für ccx muss dann zusätzlich folgendes Paket installiert werden: {{{#!vorlage paketinstallation libgfortran3, main }}} Und für den vollen Funktionsumfang von cgx werden folgende Pakete empfohlen: {{{#!vorlage paketinstallation imagemagick, main psutils, universe gv,universe gnuplot,universe netgen,universe }}} Im Terminal [3] wechselt man in das Verzeichnis, in dem die beiden ausführbaren Dateien liegen, und kann dort beide direkt aufrufen: {{{#!vorlage befehl ./cgx_VERSION ./ccx_VERSION }}} = Benutzung = == Prä-/Postprozessor cgx == Um mit cgx eine neue Eingabedatei erzeugen zu können, muss cgx im Build-Modus durch Eingabe folgenden Befehls im Terminal [3] gestartet werden: {{{#!vorlage Befehl cgx -b dummy.fbd }}} Dabei öffnet sich ein neues Fenster. Dieses Fenster sollte sich immer im Vordergrund befinden, da von cgx die Befehle sonst nicht akzeptiert werden. Um mit der Eingabe von Punkten zu beginnen, eignet sich der Befehl `pnt`: {{{#!vorlage Befehl pnt p1 0 0 0 pnt p2 100 0 0 }}} Hierbei handelt es sich um den Punkt p1 mit den x,y und z Koordinaten gleich 0, sowie p2 (100|0|0). Meist ist jetzt noch nichts zu sehen. Um den Plot auf den Bildschirmbereich einzupassen, klickt man in das linke freie Feld [[Vorlage(Tasten, lmb)]] des Fensters und wählt ''"Frame"''. Jetzt sollte ein Punkt in der Mitte des Anzeigefensters zu sehen sein. Mit dem Befehl: {{{#!vorlage Befehl plot pa all }}} zeigt cgx zusätzlich die Punktnummern an. Mit dem Befehl: {{{#!vorlage Befehl qlin }}} lässt sich eine Linie zwischen beiden Punkten erzeugen. Dazu fährt man mit dem Mauszeiger in das Plotfeld und drückt [[Vorlage(Tasten, r)]]; nachdem man die Maus ein klein wenig bewegt hat, drückt man erneut [[Vorlage(Tasten, r)]]. Nun sollte statt des Mauszeigers ein Rechteck erscheinen. Dessen Größe lässt sich beliebig durch Drücken von [[Vorlage(Tasten, r)]] ändern. Um nun eine Linie erzeugen zu können, muss sich der p1 innerhalb des Rechtecks befinden. Durch Drücken der [[Vorlage(Tasten, b)]] Taste legt man den Anfang der Linie fest. Jetzt fährt man mit dem Mauszeiger zu Punkt p2 und drückt [[Vorlage(Tasten, g)]] für `generate`. Um die Eingabe zu beenden, ist ein [[Vorlage(Tasten, q)]] vonnöten. Nach Eingabe von: {{{#!vorlage Befehl plus la all }}} sollte die Linie L001 erscheinen. Die Linie lässt sich zu einem Rechteck erweitern, welches man vernetzen kann. Dazu muss man die Linie zu einem Set hinzufügen: {{{#!vorlage Befehl qadd set1 }}} Wieder kann man hier mit der [[Vorlage(Tasten, r)]]-Taste ein Rechteck erzeugen. Um die Linie hinzufügen zu können, muss sich der Name der Linie im Rechteck befinden. Durch Drücken von [[Vorlage(Tasten, l)]] wird die Linie dem set1 hinzugefügt. Die Eingabe wird wieder mit [[Vorlage(Tasten, q)]] beendet. Jetzt kann die Linie zu einem Rechteck erweitert werden: {{{#!vorlage Befehl swep set1 set2 tra 0 0 50 }}} Mit: {{{#!vorlage Befehl plus sa all }}} wird die Fläche A001 sichtbar. Diese lässt sich jetzt vernetzen. Als [http://www.bconverged.com/calculix/doc/cgx/html/node140.html Element] {en} wird ein 8-knotiges Plattenelement (qu8) verwendet: {{{#!vorlage Befehl elty all qu8 mesh all plot m all }}} Nun färbt sich der Quader grau. Um das Netz sehen zu können, klickt [[Vorlage(Tasten, lmb)]] man in das linke freie Feld und wählt ''"Viewing"'' → ''"LINES"''. Nun sollte das vernetzte Rechteck sichtbar sein. Nun wird ein Punkteset erzeugt, welches später die Einspannung sein soll: {{{#!vorlage Befehl plot na all qadd boundary }}} Durch Drücken von [[Vorlage(Tasten, a)]] lassen sich mehrere Punkte dem Set hinzufügen. Um die richtige Seite sehen zu können, wählt man ''"Orientation"'' → ''"-y-view"''. Mit [[Vorlage(Tasten, r)]] erzeugt man wieder ein Rechteck, in welches alle unteren Punkte passen und drückt [[Vorlage(Tasten, n)]] für Nodes: {{{#!vorlage Befehl plus n boundary y }}} Verlassen wird der Befehl wieder mit [[Vorlage(Tasten, q)]]. Nun kann das Netz abgespeichert werden und die Eingabedatei für den Solver erstellt werden. {{{#!vorlage Befehl send all abq # Erstellt die Knoten- und Elementdatei 'all.msh' send boundary abq nam # Erstellt die Knotendatei für die Einspannung 'boundary.nam' }}} Nun kann cgx beendet werden. == Solver ccx == Anschließend wird im selben Verzeichnis mit den Dateien '''all.msh''' und '''boundary.nam''' eine Datei '''balken.inp''' mit einem Texteditor [4] erstellt. {{{ **Einbinden der Netz- und Lagerdateien *include, input=all.msh *include, input=boundary.nam **Festlegung des Materials *MATERIAL, NAME=Al *ELASTIC 70000,0.3 **Beschreibung der Plattenelemente und Festlegung der Dicke *SHELL SECTION, MATERIAL=Al, ELSET=Eall 1 **Freiheitsgrade der Einspannung *BOUNDARY Nboundary,1,6 *STEP *STATIC **Lastaufbringung *CLOAD 4, 3, -1000 *NODE PRINT,NSET=Nall U *EL PRINT,ELSET=Eall S E *NODE FILE, output=3D u rf *EL FILE S, E *END STEP }}} Diese erstellte Datei wird im Terminal mit ccx aufgerufen, allerdings ohne die Dateiendung, da ccx sonst die Datei nicht findet. [[Bild(mises.png, 400, right)]] {{{#!vorlage Befehl ccx balken }}} Nach einer kurzen Berechnungszeit ist im Arbeitsverzeichnis eine Datei '''balken.frd''' entstanden. {{{#!vorlage Befehl cgx balken.frd }}} Durch Auswahl von ''"Datasets"'' → ''"Stress"'' und ''"Datasets"'' → ''"-Entity-"'' → ''"Mises"'' wird die [wikipedia:Vergleichsspannung#Gestalt.C3.A4nderungshypothese_.28von_Mises.29:Mises-Vergleichsspannung] dargestellt. == Geometrien aus externen Vernetzern == Da das Zeichnen der Geometrien in CalculiX eher umständlich ist, kann es sinnvoller sein die Zeichnungen mit einem externen Programm zu erzeugen (z.B. [wikipedia_en:PTC_Creo_Elements/Pro:]) und diese dann einzulesen. CalculiX versteht hierbei leider nur das Format [wikipedia:STL-Schnittstelle:STL], welches aber einen Kompromiss darstellt, da die Geometrien mithilfe von Dreiecken beschrieben werden und somit Rundungen nicht dargestellt werden. Besser ist hier auf einen externen Vernetzer wie [http://geuz.org/gmsh/ gmsh] {en} ('''gmsh''' (''universe'')) oder [https://ngsolve.org/ netgen] {en} ('''netgen''' (''universe'')) zurückzugreifen. = Links = * [http://www.calculix.de/ Projektseite von CalculiX] {en} * [http://www.bconverged.com/content/calculix/doc/GettingStarted.pdf Gute Anleitung für Einsteiger (PDF)] {en} {dl} * [http://www.csc.fi/english/pages/elmer Elmer] {en} - Alternative freie FEM-Anwendung * [http://www.caelinux.com Caelinux] {en} - Live-DVD mit Software für den CAD, FEM, CFD-Bereich #tag: Bildung, FEM, Wissenschaft, Forschung