Skip to content

Commit d8246ac

Browse files
unittest
1 parent cb51dbe commit d8246ac

3 files changed

Lines changed: 75 additions & 2 deletions

File tree

RFEM/TypesForMembers/memberSpring.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,40 @@ def __init__(self,
99
definition_type = MemberSpringType.PARTIAL_ACTIVITY,
1010
parameters: list = [[PartialActivityAlongType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 0.0], [PartialActivityAlongType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 0.0]],
1111
axial_stiffness: float = 0.0,
12-
self_weight: list = [MemberSpringSelfWeightDefinition.MASS],
12+
self_weight: list = [MemberSpringSelfWeightDefinition.MASS_PER_LENGTH, 1],
1313
name: str = None,
1414
comment: str = '',
1515
params: dict = None,
1616
model = Model):
1717

1818
'''
1919
Args:
20+
no (int): Member Spring Tag
21+
members (str): Assigned Members
22+
definition_type (enum): Member Spring Type Enumeration
23+
parameters (list of lists): List of Parameters for Spring Nonlinearity
24+
for definition_type == 'PARTIAL_ACTIVITY':
25+
parameters = [negative zone, positive zone]
26+
for negative/positive zone[0] == PartialActivityAlongType.PARTIAL_ACTIVITY_TYPE_COMPLETE:
27+
negative/positive zone = [negative/positive zone type (enum), slippage (float)]
28+
for negative/positive zone[0] == PartialActivityAlongType.PARTIAL_ACTIVITY_TYPE_FIXED:
29+
negative/positive zone = [negative/positive zone type (enum), slippage (float), displacement (float)] (Note: Displacement must be greater than slippage)
30+
for negative/positive zone[0] == PartialActivityAlongType.PARTIAL_ACTIVITY_TYPE_FAILURE_FROM_FORCE/PARTIAL_ACTIVITY_TYPE_YIELDING_FROM_FORCE:
31+
negative/positive zone = [negative/positive zone type (enum), slippage (float), force (float)]
32+
for definition_type == 'DIAGRAM':
33+
parameters = [[symmetric(bool), LineReleaseDiagram Enumeration(start), LineReleaseDiagram Enumeration(end)], [[displacement, force],...]]
34+
axial_stiffness (float): Axial Stiffness
35+
self_weight (list): Self Weight Parameters List
36+
for self_weight[0] == 'MASS':
37+
self_weight = [MemberSpringSelfWeightDefinition.MASS, mass (float)]
38+
for self_weight[0] == 'MASS_PER_LENGTH':
39+
self_weight = [MemberSpringSelfWeightDefinition.MASS_PER_LENGTH, mass_per_length (float)]
40+
for self_weight[0] == 'SPECIFIC_WEIGHT':
41+
self_weight = [MemberSpringSelfWeightDefinition.SPECIFIC_WEIGHT, specific_weight (float), section_area (float)]
42+
name (str, option): User Defined Design Support Name
43+
comment (str, optional): Comment
44+
params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
45+
model (RFEM Class, optional): Model to be edited
2046
'''
2147

2248
# Client model | Member Hinge
@@ -124,3 +150,4 @@ def __init__(self,
124150

125151
# Add Member Spring to client model
126152
model.clientModel.service.set_member_spring(clientObject)
153+

UnitTests/test_member.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,4 +357,4 @@ def test_member_spring():
357357
member = Model.clientModel.service.get_member(1)
358358

359359
assert round(member.analytical_length, 5) == 5.19615
360-
assert member.type == "TYPE_SPRING"
360+
assert member.type == "TYPE_SPRING"

UnitTests/test_memberSpring.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import sys
2+
import os
3+
PROJECT_ROOT = os.path.abspath(os.path.join(
4+
os.path.dirname(__file__),
5+
os.pardir)
6+
)
7+
sys.path.append(PROJECT_ROOT)
8+
from RFEM.enums import MemberSpringType, PartialActivityAlongType, MemberSpringSelfWeightDefinition, MemberSpringDiagramType
9+
from RFEM.initModel import Model
10+
from RFEM.BasicObjects.material import Material
11+
from RFEM.BasicObjects.node import Node
12+
from RFEM.BasicObjects.member import Member
13+
from RFEM.TypesForMembers.memberSpring import MemberSpring
14+
15+
if Model.clientModel is None:
16+
Model()
17+
18+
def test_DesignSituation():
19+
20+
Model.clientModel.service.delete_all()
21+
Model.clientModel.service.begin_modification()
22+
23+
Material(1, 'S235')
24+
25+
Node(1, 0, 0, 0)
26+
Node(2, 10, 0, 0)
27+
Node(3, 20, 0, 0)
28+
29+
Member.Spring(1, 1, 2)
30+
31+
MemberSpring(1, '1', MemberSpringType.PARTIAL_ACTIVITY, [[PartialActivityAlongType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 0.1], \
32+
[PartialActivityAlongType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.15, 0.25]], 110, [MemberSpringSelfWeightDefinition.MASS_PER_LENGTH, 5], 'Spring 1')
33+
MemberSpring(2, '', MemberSpringType.DIAGRAM, [[True, MemberSpringDiagramType.DIAGRAM_ENDING_TYPE_FAILURE], \
34+
[[0.01, 1000], [0.02, 1100], [0.035, 500]]], 20, [MemberSpringSelfWeightDefinition.SPECIFIC_WEIGHT, 1500, 0.012], 'Spring 2')
35+
36+
Member.Spring(2, 2, 3, spring_type=2)
37+
38+
Model.clientModel.service.finish_modification()
39+
40+
ms1 = Model.clientModel.service.get_member_spring(1)
41+
assert ms1.assigned_to == '1'
42+
assert ms1.mass_per_length == 5
43+
44+
ms2 = Model.clientModel.service.get_member_spring(2)
45+
assert ms2.name == 'Spring 2'
46+
assert ms2.axial_stiffness == 20

0 commit comments

Comments
 (0)