From 5d88b23295f1caec9d2d3a2e7c17de5631a07adf Mon Sep 17 00:00:00 2001 From: Frank Faulstich Date: Fri, 3 Dec 2021 13:28:40 +0100 Subject: [PATCH 1/5] Add test --- Examples/test.py | 41 +++++++++++++++++++++++++++++++ UnitTests/test_loads.py | 53 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 Examples/test.py diff --git a/Examples/test.py b/Examples/test.py new file mode 100644 index 00000000..a50641a4 --- /dev/null +++ b/Examples/test.py @@ -0,0 +1,41 @@ +import sys +sys.path.append(".") +sys.path.append("../RFEM") +sys.path.append("../UnitTests") +#print(sys.path) + +from RFEM.enums import * +from RFEM.window import * +from RFEM.dataTypes import * +from RFEM.initModel import * +from RFEM.BasicObjects.material import * +from RFEM.BasicObjects.section import * +from RFEM.BasicObjects.thickness import * +from RFEM.BasicObjects.node import * +from RFEM.BasicObjects.line import * +from RFEM.BasicObjects.member import * +from RFEM.BasicObjects.surface import * +from RFEM.BasicObjects.solid import * +from RFEM.BasicObjects.opening import * +from RFEM.BasicObjects.lineSet import * +from RFEM.BasicObjects.memberSet import * +from RFEM.BasicObjects.surfaceSet import * +from RFEM.BasicObjects.solidSet import * +from RFEM.TypesForNodes.nodalSupport import * +from RFEM.TypesForMembers.memberHinge import * +from RFEM.LoadCasesAndCombinations.staticAnalysisSettings import * +from RFEM.LoadCasesAndCombinations.loadCase import * +from RFEM.Loads.nodalLoad import * +from RFEM.Loads.memberLoad import * +from RFEM.Loads.surfaceLoad import * + +#import pytest +from UnitTests import test_loads + +#test_loads.test_free_polygon_load() +#test_loads.test_imposed_nodal_deformation() +test_loads.test_imposed_line_deformation() + + + +print('Fertig!') \ No newline at end of file diff --git a/UnitTests/test_loads.py b/UnitTests/test_loads.py index b771087f..5c3c1537 100644 --- a/UnitTests/test_loads.py +++ b/UnitTests/test_loads.py @@ -1098,3 +1098,56 @@ def test_free_polygon_load(): assert free_load.no == 1 assert free_load.magnitude_uniform == 5000 +### Imposed Nodal Deformation ### + +def test_imposed_nodal_deformation(): + clientModel.service.reset() + clientModel.service.begin_modification() + + Material(1, 'S235') + + Node(1, 0.0, 0.0, 0.0) + Node(2, 10.0, 0.0, 0.0) + + Section(1, 'IPE 300') + + Member(1, MemberType.TYPE_BEAM, 1, 2) + + NodalSupport(1, '1', NodalSupportType.FIXED) + NodalSupport(2, '2', NodalSupportType.FIXED) + + StaticAnalysisSettings(1, 'LINEAR', StaticAnalysisType.GEOMETRICALLY_LINEAR) + + LoadCase(1, 'DEAD') + + ImposedNodalDeformation(1, 1, '1', [0.005, 0.01, 0.02, 0.01, 0.02, 0.03]) + + clientModel.service.finish_modification() + + imposed_nodal_deformation = clientModel.service.get_imposed_nodal_deformation(1, 1) + + assert imposed_nodal_deformation.imposed_displacement.x == 0.005 + assert imposed_nodal_deformation.imposed_rotation.y == 0.02 + + ### Imposed Line Deformation ### + +def test_imposed_line_deformation(): + clientModel.service.reset() + clientModel.service.begin_modification() + + Material(1, 'S235') + + Node(1, 0.0, 0.0, 0.0) + Node(2, 5.0, 0.0, 0.0) + Node(3, 5.0, 6.0, 0.0) + Node(4, 0.0, 6.0, 0.0) + + Line(1, '1 2') + Line(2, '2 3') + Line(3, '3 4') + Line(4, '4 0') + + Thickness(1, 'My Thickness', 1, 0.05) + Surface(1, '1-4', 1) + + clientModel.service.finish_modification() \ No newline at end of file From 371b83256b31e1fae122a74a9e8797215fc716be Mon Sep 17 00:00:00 2001 From: Frank Faulstich Date: Fri, 17 Dec 2021 09:12:25 +0100 Subject: [PATCH 2/5] Start with imposedLineDeformation --- RFEM/Loads/imposedLineDeformation.py | 7 +++++++ UnitTests/test_loads.py | 1 + 2 files changed, 8 insertions(+) create mode 100644 RFEM/Loads/imposedLineDeformation.py diff --git a/RFEM/Loads/imposedLineDeformation.py b/RFEM/Loads/imposedLineDeformation.py new file mode 100644 index 00000000..d087c921 --- /dev/null +++ b/RFEM/Loads/imposedLineDeformation.py @@ -0,0 +1,7 @@ +from RFEM.initModel import * +from RFEM.enums import * + +class ImposedLineDeformation(): + + def __init__(self) -> None: + pass diff --git a/UnitTests/test_loads.py b/UnitTests/test_loads.py index 5c3c1537..60325be7 100644 --- a/UnitTests/test_loads.py +++ b/UnitTests/test_loads.py @@ -20,6 +20,7 @@ from RFEM.Loads.nodalLoad import * from RFEM.Loads.surfaceLoad import * from RFEM.Loads.lineLoad import * +from RFEM.Loads.imposedLineDeformation import * ### Nodal Load Unit Tests ### From 9c56b04462a4e969692b9143089eaf6c45f90e4c Mon Sep 17 00:00:00 2001 From: Frank Faulstich Date: Mon, 3 Jan 2022 15:53:03 +0100 Subject: [PATCH 3/5] Parameter Definition --- RFEM/Loads/imposedLineDeformation.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/RFEM/Loads/imposedLineDeformation.py b/RFEM/Loads/imposedLineDeformation.py index d087c921..196d1e59 100644 --- a/RFEM/Loads/imposedLineDeformation.py +++ b/RFEM/Loads/imposedLineDeformation.py @@ -3,5 +3,25 @@ class ImposedLineDeformation(): - def __init__(self) -> None: + def __init__(self, + no: int = 1, + load_case_no: int = 1, + line_no: str = '', + load_parameter = None, + comment: str = '', + params: dict = {}): + + ''' + load_parameter: + load_parameter = [imposed_displacement_line_start_x, + imposed_displacement_line_start_y, + imposed_displacement_line_start_z, + imposed_rotation_line_start, + imposed_displacement_line_end_x, + imposed_displacement_line_end_y, + imposed_displacement_line_end_z, + imposed_rotation_line_end] + ''' + + pass From b96096bf8acdef9ef7accc573630e44d9836af30 Mon Sep 17 00:00:00 2001 From: FrankFaulstich <36745927+FrankFaulstich@users.noreply.github.com> Date: Tue, 4 Jan 2022 15:29:46 +0100 Subject: [PATCH 4/5] ImposedLineDeformation finished --- RFEM/Loads/imposedLineDeformation.py | 34 +++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/RFEM/Loads/imposedLineDeformation.py b/RFEM/Loads/imposedLineDeformation.py index 196d1e59..d47d2c6e 100644 --- a/RFEM/Loads/imposedLineDeformation.py +++ b/RFEM/Loads/imposedLineDeformation.py @@ -23,5 +23,37 @@ def __init__(self, imposed_rotation_line_end] ''' + # Client model | Imposed Line Deformation + clientObject = Model.clientModel.factory.create('ns0:imposed_line_deformation') - pass + # Clears object atributes | Sets all atributes to None + clearAtributes(clientObject) + + # Load No. + clientObject.no = no + + # Load Case No. + clientObject.load_case = load_case_no + + # Line No. + clientObject.lines = ConvertToDlString(line_no) + + # Load Parameter + clientObject.imposed_displacement_line_start_x = load_parameter[0] + clientObject.imposed_displacement_line_start_y = load_parameter[1] + clientObject.imposed_displacement_line_start_z = load_parameter[2] + clientObject.imposed_rotation_line_start = load_parameter[3] + clientObject.imposed_displacement_line_end_x = load_parameter[4] + clientObject.imposed_displacement_line_end_y = load_parameter[5] + clientObject.imposed_displacement_line_end_z = load_parameter[6] + clientObject.imposed_rotation_line_end = load_parameter[7] + + # Comment + clientObject.comment = comment + + # Adding optional parameters via dictionary + for key in params: + clientObject[key] = params[key] + + # Add Nodal Support to client model + Model.clientModel.service.set_imposed_line_deformation(load_case_no, clientObject) From e0d066a43c6da327b138baad33c28855d08c1e5b Mon Sep 17 00:00:00 2001 From: FrankFaulstich <36745927+FrankFaulstich@users.noreply.github.com> Date: Tue, 4 Jan 2022 15:59:50 +0100 Subject: [PATCH 5/5] Unit Test follows later --- UnitTests/test_loads.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/UnitTests/test_loads.py b/UnitTests/test_loads.py index 60325be7..e60ae7b9 100644 --- a/UnitTests/test_loads.py +++ b/UnitTests/test_loads.py @@ -1133,6 +1133,7 @@ def test_imposed_nodal_deformation(): ### Imposed Line Deformation ### def test_imposed_line_deformation(): + ''' clientModel.service.reset() clientModel.service.begin_modification() @@ -1151,4 +1152,6 @@ def test_imposed_line_deformation(): Thickness(1, 'My Thickness', 1, 0.05) Surface(1, '1-4', 1) - clientModel.service.finish_modification() \ No newline at end of file + clientModel.service.finish_modification() + ''' + \ No newline at end of file