Matlab-Femset

MATLAB-Interface-Routine Syswbc_m zu den FEMSET-Funktionen, die die
Systemsteifigkeitsbeziehung (einschließlich Einbau der vorgeschriebenen Verschiebungen) aufbauen

Die MATLAB-Interface-Routine Syswbc_m (“MexFunction”) liefert mit Hilfe mehrerer FEMSET-Funktionen die Systemsteifigkeitsbeziehung eines Finite-Elemente-Modells ab. Die Möglichkeiten des Aufrufs aus MATLAB wird im Kommentar am Anfang der Interface-Funktion beschrieben:

/* ************************************************************************* */
/*  ###  Finite-Elemente-Baukasten FEMSET  ###                               */
/*                                                                           */
/*  Aufbau der Systemsteifigkeitsbeziehung                                   */
/*  ======================================                                   */
/*                                                                           */
/*  Es wird die komplette Systemsteifigkeitsbeziehung (einschliesslich       */
/*  Einbau der Randbedingungen) aufgebaut.                                   */
/*                                                                           */
/*  Input:     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 ein Element beschreiben      */
/*             ne  -  Elementanzahl                                          */
/*             nk  -  Knotenanzahl                                           */
/*             xy  -  Knotenkoordinaten                  (0)                 */
/*             km  -  Koinzidenzmatrix                   (1)                 */
/*             ep  -  Elementparameter                   (2)                 */
/*             kr  -  Randbedingungen                    (3)                 */
/*             bk  -  Knotenlasten                       (4)                 */
/*             sc  -  Federsteifigkeiten                 (5)                 */
/*             li  -  Identische Verschiebungen          (6)                 */
/*             pu  -  Vorgeschriebene Verschiebungen     (7)                 */
/*             et  -  Element-Typen                      (8)                 */
/*             la  -  Lager unter Winkel                 (9)                 */
/*             aa  -  Winkel fuer Lager                 (10)                 */
/*                                                                           */
/*  Output:    succ = 1 --> Erfolg, die Systemsteifigkeitsbeziehung wurde    */
/*                          aufgebaut                                        */
/*                    0 --> Misserfolg                                       */
/*                                                                           */
/*  Es sind grundsaetzlich zwei Typen von Funktionsaufrufen moeglich, die    */
/*  in ihren jeweils kuerzesten Varianten so aussehen:                       */
/*                                                                           */
/*  Der "einfache Syswbc_m-Aufruf"                                           */
/*                                                                           */
/*               [succ ksys fsys] = syswbc_m (xy,km,ep,kr,bk)                */
/*                                                                           */
/*  ermittelt die Parameter kx, kf, ke, kp, ne und nk aus den Dimensionen    */
/*  der uebergebenen Matrizen.                                               */
/*                                                                           */
/*  Der "sichere syswbc_m-Aufruf"                                            */
/*                                                                           */
/*      [succ ksys fsys] = syswbc_m (kx,kf,ke,kp,ne,nk,xy,km,ep,kr,bk)       */
/*                                                                           */
/*  ermoeglicht der Interface-Funktion den Test der Dimensionen der          */
/*  uebergebenen Matrizen mit den Werten auf den ersten 6 Positionen der     */
/*  der Input-Parameterliste. Bei dieser Variante duerfen die Matrizen auch  */
/*  auch als eindimensionale Vektoren uebergeben werden. Nachdruecklich      */
/*  wird jedoch in jedem Fall die Uebergabe der Input-Parameter als          */
/*  Matrizen empfohlen.                                                      */
/*                                                                           */
/*  Formate der Input-Matrizen (die weniger empfehlenswerte Variante in      */
/*  Klammern ist jeweils nur fuer den "sicheren Femalg_m-Aufruf" gueltig):   */
/*                                                                           */
/*  xy - nk*kx-Matrix (oder Vektor mit nk*kx Werten, nacheinander jeweils    */
/*       die kx Werte für einen Knotenpunkt)                                 */
/*  km - ne*ke-Matrix (oder Vektor mit ne*ke Werten, nacheinander jeweils    */
/*       die ke Knotennummern fuer ein Element)                              */
/*  ep - ne*kp-Matrix (oder Vektor mit ne*kp Werten, nacheinander jeweils    */
/*       die kp Parameter fuer ein Element)                                  */
/*  kr - nk*kf-Matrix (oder Vektor mit nk*kf Werten, nacheinander jeweils    */
/*       die kf Indikatoren 0 oder 1 fuer einen Knoten)                      */
/*  bk - nk*kf-Matrix (oder Vektor mit nk*kf Werten, nacheinander jeweils    */
/*       die kf Knotenlasten fuer einen Knoten)                              */
/*                                                                           */
/*  Die nachfolgend fuer den "einfachen Syswbc_m-Aufruf" beschriebenen       */
/*  erweiterten Varianten sind sinngemaess auch für den "sicheren Syswbc_m-  */
/*  Aufruf" moeglich:                                                        */
/*                                                                           */
/*               [succ ksys fsys] = syscom_m (xy,km,ep,kr,bk,sc)             */
/*                                                                           */
/*  sc - nk*kf-Matrix (oder Vektor mit nk*kf Werten, nacheinander jeweils    */
/*       die kf Federsteifigkeiten fuer einen Knoten)                        */
/*                                                                           */
/*               [succ ksys fsys] = syscom_m (xy,km,ep,kr,bk,sc,li)          */
/*                                                                           */
/*  li - nk*kf-Matrix (oder Vektor mit nk*kf Werten, nacheinander jeweils    */
/*       die Spalten der nk*kf-Matrix (Achtung, diese spaltenweise Uebergabe */
/*       der Werte als Vektor unterscheidet sich von den zeilenweise in      */
/*       einen Vektor zu packenden Werte der uebrigen Felder)                */
/*                                                                           */
/*               [succ ksys fsys] = syscom_m (xy,km,ep,kr,bk,sc,li,pu)       */
/*                                                                           */
/*  pu - nk*kf-Matrix (oder Vektor mit nk*kf Werten, nacheinander jeweils    */
/*       die kf vorgeschriebenen Verschiebungen fuer einen Knoten)           */
/*                                                                           */
/*          [succ ksys fsys] = syscom_m (xy,km,ep,kr,bk,sc,li,pu,et)         */
/*                                                                           */
/*  et - ne*5-Matrix (oder Vektor mit nk*5 Werten, nacheinander jeweils      */
/*       die 5 charakteristischen Groessen fuer ein Element)                 */
/*                                                                           */
/*          [succ ksys fsys] = syscom_m (xy,km,ep,kr,bk,sc,li,pu,et,la,aa)   */
/*                                                                           */
/*  la - Vektor mit nk Werten (jeweils die Kennzeichung fuer einen Konten:   */
/*       1 --> spezielles Lager, 0 --> kein spezielles oder gar kein Lager)  */
/*  aa - Vektor mit nk Werten (jeweils der Winkel bezueglich der x-Achse,    */
/*       wenn an diesem Knoten ein spezielles Lager existiert).              */
/*       Weil diese Lagerungsart zunaechst nur fuer zweidimensionale         */
/*       Probleme realisiert ist, ist nur eine Winkelangabe moeglich, obwohl */
/*       das Feld aa intern bereits fuer die Aufnahme von jeweils 3 Werten   */
/*       fuer jeden Knoten vorbereitet ist.                                  */
/*                                                                           */
/*  Autor: J. Dankert                                                        */
/* ************************************************************************* */

Am Beispiel eines einfachen ebenen biege- und dehnsteifen Rahmens wird der  Aufbau der Systemsteifigkeitsbeziehung aus zwei Elementsteifigkeitsbeziehungen und die anschließende Berücksichtigung der vorgeschriebenen Verschiebungen demonstriert (Klicken auf das nebenstehende Bild).

Zum Download verfügbar: DLL Syswbc_m.dll (genügt für den Aufruf aus Matlab).

Für Interessenten, die den Weg zum Erzeugen der DLL nachempfinden wollen, stehen die komplette MexFunction, von der oben nur der Kopf-Kommentar zu sehen ist, als  Syswbc_m.c und die beiden Femset-Libraries femset_f.lib und femtnw_f.lib zur Verfügung.

Homepage MatlabFemset

www.JuergenDankert.de

D

nkert.de