Ubuntu 12.04 Precise Pangolin
CalculiX ist ein frei verfügbares Finite Elemente Programm zur Simulation von Strukturmechanik. FE-Berechnungen werden unter anderem im Ingenieurswesen eingesetzt, um partielle Differentialgleichungen auf komplexen Geometrien numerisch zu lösen (z.B. eine Karosserie im Automobilbereich). CalculiX teilt sich hierbei in den Solver ccx und den Pre- und Postprocessor cgx auf. Mit einem Preprocessor werden Geometrien aus CAD-Programmen eingelesen und durch Vernetzen in ein mathematisches Modell umgewandelt. Diese werden dann mit dem Solver gelöst und anschließend wieder mit dem Postprocessor analysiert. CalculiX verwendet zu großen Teilen das proprietäre Abaqus-Eingabeformat. Daher lassen sich zahlreiche Prä- und Postprozessoren nutzen. Die Berechnungen stehen jedoch in keiner Verbindung zu Abaqus.
Wie eingangs erwähnt, teilt sich CalculiX in zwei "Unterprogramme" auf. In der Pre- und Postprocessor cgx sowie den Solver ccx. Da beide Unterprogramme nicht in den offiziellen Paketquellen enthalten sind, kann man auf ein "Personal Packages Archiv" (PPA) [1] ausweichen.
Adresszeile zum Hinzufügen des PPAs:
ppa:cae-team/ppa
Zusätzliche Fremdquellen können das System gefährden.
Ein PPA unterstützt nicht zwangsläufig alle Ubuntu-Versionen. Weitere Informationen sind der PPA-Beschreibung des Eigentümers/Teams cae-team zu entnehmen.
Damit Pakete aus dem PPA genutzt werden können, müssen die Paketquellen neu eingelesen werden.
Nach dem Aktualisieren der Paketquellen kann man den Solver ccx sowie den Pre/Postprocessor cgx über die folgenden Pakete installieren [2]:
calculix-ccx (ppa)
calculix-cgx (ppa)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install calculix-ccx calculix-cgx
sudo aptitude install calculix-ccx calculix-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:
cgx -b test.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
:
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 des Fensters und wählt "Frame". Jetzt sollte ein Punkt in der Mitte des Anzeigefensters zu sehen sein. Mit dem Befehl:
plot pa all
zeigt cgx zusätzlich die Punktnummern an. Mit dem Befehl:
qlin
lässt sich eine Linie zwischen beiden Punkten erzeugen. Dazu fährt man mit dem Mauszeiger in das Plotfeld und drückt
R ; nachdem man die Maus ein klein wenig bewegt hat, drückt man erneut
R . Nun sollte statt des Mauszeigers ein Rechteck erscheinen. Dessen Größe lässt sich beliebig durch Drücken von
R ändern. Um nun eine Linie erzeugen zu können, muss sich der p1 innerhalb des Rechtecks befinden. Durch Drücken der
B Taste legt man den Anfang der Linie fest. Jetzt fährt man mit dem Mauszeiger zu Punkt p2 und drückt
G für generate
. Um die Eingabe zu beenden, ist ein
Q vonnöten. Nach Eingabe von:
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:
qadd set1
Wieder kann man hier mit der 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 L wird die Linie dem set1 hinzugefügt. Die Eingabe wird wieder mit Q beendet. Jetzt kann die Linie zu einem Rechteck erweitert werden:
swep set1 set2 tra 0 0 50
Mit:
plus sa all
wird die Fläche A001 sichtbar. Diese lässt sich jetzt vernetzen. Als Element wird ein 8-knotiges Plattenelement (qu8) verwendet:
elty all qu8 mesh all plot m all
Nun färbt sich der Quader grau. Um das Netz sehen zu können, klickt 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:
plot na all qadd boundary
Durch Drücken von A lassen sich mehrere Punkte dem Set hinzufügen. Um die richtige Seite sehen zu können, wählt man "orientation -> -y-view". Mit R erzeugt man wieder ein Rechteck, in welches alle unteren Punkte passen und drückt "n" für Nodes:
plus n boundary y
Verlassen wird der Befehl wieder mit Q . Nun kann das Netz abgespeichert werden und die Eingabedatei für den Solver erstellt werden.
send all abq #Erstellt die Knoten- und Elementdatei im Arbeitsverzeichnis send boundary abq nam #Erstellt die Knotendatei für die Einspannung
Nun kann cgx beendet werden.
Anschließend wird im selben Verzeichnis mit den all.msh und boundary.nam Dateien eine Datei Balken.inp mit einem geeigneten Editor [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.
ccx Balken
Nach einer kurzen Berechnungszeit ist im Arbeitsverzeichnis eine Datei Balken.frd entstanden.
cgx Balken.frd
Durch Auswahl von "Datasets -> Stress und erneut Datasets -> -Entity- -> Mises" wird die von Mises Vergleichsspannung dargestellt.
Da das Zeichnen der Geometrien in CalculiX eher umständlich ist, ist es sinnvoller, die Zeichnungen mit einem externen Programm zu erzeugen (z.B. ProE) und diese dann in CalculiX einzulesen. CalculiX versteht hierbei leider nur das Format .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 gmsh oder netgen zurückzugreifen.
Diese Revision wurde am 19. März 2015 15:55 von aasche erstellt.