A function for nonlinear line hinges is currently not available in the Python High Level Library. However, since it is possible to use user-defined parameters as usual in the method for line hinges, it is also not a problem to generate nonlinear line hinges.
In the example program, two rectangular surfaces with nodal supports are created first, which are connected on Line 6.
The definition of the nonlinear line hinge begins as of Line 39. First, a dictionary p
with the parameters is created. It is necessary to define three displacement degrees of freedom and one rotational degree of freedom. The value 0.0
means that the degree of freedom is free. If a numerical value is written instead, it is interpreted as a spring. Make sure that SI basic units are used here. By using inf
, the degree of freedom is defined as fixed.
There should be a nonlinearity in the y-direction. This is set with the key translational_release_u_y_nonlinearity
. This article describes how to determine the necessary values, such as NONLINEARITY_TYPE_FAILURE_IF_POSITIVE
.
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()