425x
005368
23. März 2023

Nichtlineares Liniengelenk mit Python erzeugen

Wie kann ich mit einem Python-Programm ein nichtlineares Liniengelenk erzeugen?


Antwort:

Eine Funktion für nichtlineares Liniengelenke ist momentan in der Python High Level Library nicht vorhanden. Da in der Methode für Liniengelenke aber wie üblich benutzerdefinierte Parameter verwendet werden können, ist es kein Problem, auch nichtlineare Liniengelenke zu erzeugen.

Im Beispielprogramm werden zunächst 2 Rechteckflächen mit Knotenlagern erzeugt, die an der Linie 6 verbunden sind.

Ab der Zeile 39 beginnt die Definition des nichtlinearen Liniengelenks. Zunächst wird ein Dictionary p mit den Parametern erzeugt. Es müssen 3 Verschiebungsfreiheitsgrade und ein Verdrehungsfreiheitsgrad definiert werden. Der Wert 0.0 bedeutet, dass der Freiheitsgraf frei ist. Wird statt dessen ein Zahlenwert geschrieben, dann wird dieser als Feder interpretiert. Achten Sie darauf, dass hier SI-Grundeinheiten verwendet werden. Mit inf wird der Freiheitsgrad als fest definiert.

Die y-Richtung soll eine Nichtlinearität erhalten. Diese wird mit dem Key translational_release_u_y_nonlinearity festgelegt. In diesem Artikel ist beschrieben, wie notwendigen Werte wie NONLINEARITY_TYPE_FAILURE_IF_POSITIVE ermittelt werden können.

Benutzerdefinierte Parameter

            

from RFEM.enums import *
from RFEM.initModel import *
from RFEM.BasicObjects.node import Node
from RFEM.BasicObjects.line import Line
from RFEM.BasicObjects.material import Material
from RFEM.BasicObjects.thickness import Thickness
from RFEM.BasicObjects.surface import Surface
from RFEM.TypesForNodes.nodalSupport import NodalSupport
from RFEM.TypesForLines.lineHinge import LineHinge
from RFEM.dataTypes import inf

Model(True, "Line Hinge ")
Model.clientModel.service.begin_modification()

Node(1, 0.0, 0.0, 0.0)
Node(2, 5.0, 0.0, 0.0)
Node(3, 10.0, 0.0, 0.0)
Node(4, 0.0, 4.0, 0.0)
Node(5, 5.0, 4.0, 0.0)
Node(6, 10.0, 4.0, 0.0)

Line(1, '1 2')
Line(2, '2 3')
Line(3, '4 5')
Line(4, '5 6')
Line(5, '1 4')
Line(6, '2 5')
Line(7, '3 6')

Material(1, 'S235')

Thickness(1, material_no=1, uniform_thickness_d=0.050)

Surface(1, '1 6 3 5')
Surface(2, '2 7 4 6')

NodalSupport(1, '1-3 4-6')

p = {
   'translational_release_u_x':0.0,
   'translational_release_u_y':0.0,
   'translational_release_u_y_nonlinearity':'NONLINEARITY_TYPE_FAILURE_IF_POSITIVE',
   'translational_release_u_z':inf,
   'rotational_release_phi_x':inf
}
LineHinge(1, '1/6', params=p)

Model.clientModel.service.finish_modification()
Model.clientModel.service.close_connection()



Autor

Herr Faulstich ist mit der Qualitätssicherung des Programms RFEM betraut und außerdem im Kundensupport tätig.

Links