Die MATLAB-Interface-Routine zum FEMSET-Solver ("Mex-Function") beschreibt am Anfang im nachfolgend zu sehenden Kommentar die unterschiedlichen Möglichkeiten des Aufrufs aus MATLAB und die jeweils erwarteten Eingabewerte:
/* ************************************************************************* */
/* ### Finite-Elemente-Baukasten FEMSET ### */
/* */
/* Aufbau einer Elementsteifigkeitsbeziehung bzw. der */
/* Elementsteifigkeitsmatrix und der Elementmassenmatrix */
/* ===================================================== */
/* */
/* Es wird eine durch Knotenkoordinaten und Elementparameter beschriebene */
/* Elementbeziehung (Fall a) oder die ie-te Elementbeziehung eines */
/* FEM-Modells (Fall b) abgeliefert. */
/* */
/* Fuer Elemente, die fuer elastostatische Berechnungen vorgesehen sind, */
/* werden Elementsteifigkeitsmatrix und Elementbelastungsvektor */
/* abgeliefert, fuer Elemente fuer die Eigenschwingungsberechnung sind es */
/* die Elementsteifigkeitsmatrix und die Elementmassenmatrix. */
/* */
/* Fall a: */
/* ------- */
/* */
/* Es muessen genau 3 Input-Parameter uebergeben werden. */
/* */
/* Input: kf - Anzahl der Freiheitsgrade pro Elementknoten */
/* xy - Matrix der Knotenkoordinaten (Reihenfolge der Knoten */
/* muss der Elementknotennummerierung entsprechen) */
/* ep - Vektor der Elementparameter */
/* */
/* Aufruf: [em eb] = elemat_m (kf , xy , ep) */
/* */
/* Output: em - Elementsteifigkeitsmatrix */
/* eb - Elementbelastungsvektor bzw. Elementmassenmatrix */
/* */
/* Es wird die durch kf, xy und ep beschriebene */
/* Elementbeziehung abgeliefert, wobei elemat_m die */
/* die Information ueber den Elementtyp aus kf und den Formaten der */
/* Matrix xy und des Vektors ep entnimmt. Wenn damit ein nicht in FEMSET */
/* vorgesehener Elementtyp beschrieben wird, liefert elemat_m */
/* Nullmatrizen ab. */
/* */
/* Wenn der zweite Output-Parameter weggelassen wird, wird nur die */
/* die Elementsteifigkeitsmatrix abgeliefert. */
/* */
/* */
/* Fall b: */
/* ------- */
/* */
/* Es wird die ie-te Elementbeziehung des FEM-Modells */
/* abgeliefert. Die Knotennummern muessen in der ie-ten Zeile der */
/* Koinzidenzmatrix km stehen, die das Element beschreibenden Parameter */
/* in der ie-ten Zeile der Elementparametermatrix ep. Die Koordinaten */
/* der Elementknoten befinden sich in der Knotenkoordinatenmatrix xy. */
/* Zusaetzlich muss mindestens die Anzahl der Freiheitsgrade pro Knoten */
/* kf als Inputparameter erscheinen, so dass der einfachste Aufruf von */
/* elemat_m fuer Fall b so aussieht: */
/* */
/* [em eb] = elemat_m (ie , kf , xy , km , ep) */
/* */
/* Output: em - Elementsteifigkeitsmatrix */
/* eb - Elementbelastungsvektor bzw. Elementmassenmatrix */
/* */
/* Folgende Modifikationen des elemat_m-Aufrufs sind moeglich: */
/* */
/* - Wenn der zweite Output-Parameter weggelassen wird, wird nur die */
/* die Elementsteifigkeitsmatrix abgeliefert. */
/* */
/* - Die von elemat_m benoetigten Informationen ueber die Element- */
/* Charakteristik (kx, kf, ke, kp) werden (bis auf kf, der immer */
/* als Input-Parameter angegeben werden muss) beim oben gezeigten Aufruf */
/* aus den Dimensionen der Matrizen ermittelt. Man kann diese Parameter */
/* auch alle entsprechend */
/* */
/* [em eb] = elemat_m (ie , kx , kf , ke , kp , xy , km , ep) */
/* */
/* an elemat_m uebergeben, sie werden dann fuer eine Kompatibilitaets- */
/* pruefung benutzt ("sicherer Aufruf"). */
/* */
/* kx - "Dimension" des Problems (1, 2 oder 3) */
/* kf - Maximale Anzahl der Freiheitsgrade pro Knoten */
/* ke - Maximale Knotenanzahl pro Element */
/* kp - Anzahl der Parameter, die das Element beschreiben */
/* */
/* - FEM-Modelle mit unterschiedlichen Elementtypen verwalten diese in */
/* der Elementtypmatrix et, die in jeweils einer Zeile 5 Informationen */
/* fuer das Element enthaelt: */
/* */
/* * Elementtyp, */
/* * Anzahl der Knoten, */
/* * Anzahl der Elementparameter, */
/* * Dimension des Elements (ein-, zwei- oder dreidimensional), */
/* * Anzahl der Freiheitsgrade pro Knoten */
/* */
/* (entspricht einer kompletten "individuellen Element-Charakteristik" */
/* fuer den Elementtyp). */
/* */
/* In diesem Fall muss et als zusaetzlicher Input-Parameter uebergeben */
/* werden: */
/* */
/* [em eb] = elemat_m (ie , kx , kf , ke , kp , xy , km , ep , et) ; */
/* */
/* In diesem Fall sind die Werte der "uebergeordneten Element- */
/* Charakteristik" kx, kf, ke, kp die Maximalwerte aus allen */
/* individuellen Element-Charakteristiken. */
/* */
/* Autor: J. Dankert */
/* ************************************************************************* */
Für den Aufruf der Interface-Funktion elemat_m aus Matlab genügt die Möglichkeit des Zugriffs auf die .dll-Datei (für die 32-Bit-Version) bzw. die .mexw64-Datei (für die 64-Bit-Version), die über die folgenden Links zum Download verfügbar sind:
Die komplette (in C geschriebene) "Mex-Funktion" elemat_m.c im Quelltext und die beiden einzubindenden Libraries für das Erzeugen einer aufrufbaren Interface-Funktion (.dll-Datei bzw. .mexw64-Datei) sind auch für beide Matlab-Varianten verfügbar:
mex elemat_m.c femset_f.lib femtnw_f.lib
und für die 64-Bit-Version mitmex elemat_m.c femset64.lib femtnw64.lib
Diese Kommandos müssen aus dem Matlab-Command-Window heraus gestartet werden. Weitere Hinweise und ein Beispiel findet man auf der Seite "Erzeugen von Mex-Files".Das ist aber wirklich nur für Interessenten, die selbst Mex-Files erzeugen wollen. Für den Aufruf der Interface-Routine aus Matlab genügen die oben zum Download offerierten fertigen Dateien.