From e716ec048dada7a33a9b12e8f0187e7da8e0a4b9 Mon Sep 17 00:00:00 2001 From: KaratasD Date: Thu, 28 Apr 2022 16:59:19 +0200 Subject: [PATCH 1/3] Updated MemberStiffnessModification --- Examples/Cantilever/demo2.py | 65 +++ .../memberDefinableStiffness.py | 85 +++- RFEM/TypesForMembers/memberEccentricity.py | 88 ++++ RFEM/TypesForMembers/memberHinge.py | 418 +++++++++++++++++- RFEM/TypesForMembers/memberNonlinearity.py | 26 +- .../memberResultIntermediatePoints.py | 25 +- .../memberStiffnessModification.py | 82 +++- RFEM/enums.py | 89 ++++ 8 files changed, 867 insertions(+), 11 deletions(-) create mode 100644 Examples/Cantilever/demo2.py diff --git a/Examples/Cantilever/demo2.py b/Examples/Cantilever/demo2.py new file mode 100644 index 00000000..785a025d --- /dev/null +++ b/Examples/Cantilever/demo2.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +import os +import sys +baseName = os.path.basename(__file__) +dirName = os.path.dirname(__file__) +print('basename: ', baseName) +print('dirname: ', dirName) +sys.path.append(dirName + r'/../..') + +from RFEM.enums import MemberHingeDiagramType, MemberHingeNonlineartiy, MemberHingePartialActivityType, NodalSupportType, LoadDirectionType +from RFEM.initModel import Model, Calculate_all +from RFEM.BasicObjects.material import Material +from RFEM.BasicObjects.section import Section +from RFEM.BasicObjects.node import Node +from RFEM.BasicObjects.member import Member +from RFEM.TypesForNodes.nodalSupport import NodalSupport +from RFEM.TypesForMembers.memberHinge import MemberHinge +from RFEM.TypesForMembers.memberResultIntermediatePoints import MemberResultIntermediatePoint + + +Model(True, "Demo3") +Model.clientModel.service.begin_modification() + +Node(1, 0,0,0) +Node(2, 5,0,0) +Material(1, "S235") +Section(1, "IPE 200", 1) +Member(1, 1, 2, 0, 1, 1) + +# MemberHinge(1, "Local", "", 4000, translational_release_n_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 8000], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 9000]]) +# MemberHinge(2, "Local", "", 2000, translational_release_n_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.004], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.005]]) +# #MemberHinge(3, "Local", "", 0, translational_release_n_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_TEARING, 3000, 0.004], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_YIELDING, 5000, 0.006]]) +# MemberHinge(4, "Local", "", 0, translational_release_n_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_DIAGRAM, [MemberHingeDiagramType.DIAGRAM_ENDING_TYPE_CONTINUOUS, MemberHingeDiagramType.DIAGRAM_ENDING_TYPE_CONTINUOUS, [[1,2, 3], [3,4, 5]]]]) +# MemberHinge(5, "Local", "", 0, translational_release_n_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1, [0.5]]) +# MemberHinge(6, "Local", "", 0, translational_release_n_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1_2, [0.6]]) +# MemberHinge(7, "Local", "", 0, translational_release_n_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_2, [0.7]]) +# MemberHinge(8, "Local", "", 0, translational_release_n_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1_PLUS_2, [0.8, 0.9]]) + +# MemberHinge(1, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 8000], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 9000]]) +# MemberHinge(2, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.004], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.005]]) +# #MemberHinge(3, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_TEARING, 3000, 0.004], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_YIELDING, 5000, 0.006]]) +# MemberHinge(4, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_DIAGRAM, [MemberHingeDiagramType.DIAGRAM_ENDING_TYPE_CONTINUOUS, MemberHingeDiagramType.DIAGRAM_ENDING_TYPE_CONTINUOUS, [[1,2, 3], [3,4, 5]]]]) +# MemberHinge(5, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1, [0.5]]) +# MemberHinge(6, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1_2, [0.6]]) +# MemberHinge(7, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_2, [0.7]]) +# MemberHinge(8, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1_PLUS_2, [0.8, 0.9]]) + +# MemberHinge(1, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 8000], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 9000]]) +# MemberHinge(2, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.004], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.005]]) +# #MemberHinge(3, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_TEARING, 3000, 0.004], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_YIELDING, 5000, 0.006]]) +# MemberHinge(4, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_DIAGRAM, [MemberHingeDiagramType.DIAGRAM_ENDING_TYPE_CONTINUOUS, MemberHingeDiagramType.DIAGRAM_ENDING_TYPE_CONTINUOUS, [[1,2, 3], [3,4, 5]]]]) +# MemberHinge(5, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1, [0.5]]) +# MemberHinge(6, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1_2, [0.6]]) +# MemberHinge(7, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_2, [0.7]]) +# MemberHinge(8, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1_PLUS_2, [0.8, 0.9]]) + + +# MemberResultIntermediatePoint(1, "", 5) +## MemberResultIntermediatePoint(2, "", 2, False, [[0.3], [0.6]]) + + + +Model.clientModel.service.finish_modification() + diff --git a/RFEM/TypesForMembers/memberDefinableStiffness.py b/RFEM/TypesForMembers/memberDefinableStiffness.py index f158002a..7ee9877f 100644 --- a/RFEM/TypesForMembers/memberDefinableStiffness.py +++ b/RFEM/TypesForMembers/memberDefinableStiffness.py @@ -1,13 +1,52 @@ -from RFEM.initModel import Model, clearAtributes + +from RFEM.initModel import Model, clearAtributes, ConvertToDlString class MemberDefinableStiffness(): def __init__(self, no: int = 1, + name: list = [False], + members: str = "1", + torsional_stiffness: int = 0.0, + bending_stiffness_y: int = 0.0, + bending_stiffness_z: int = 0.0, + axial_stiffness: int = 0.0, + shear_stiffness_y: int = 0.0, + shear_stiffness_z: int = 0.0, + specific_weight: int = 0.0, + section_area: int = 0.0, + rotation: int = 0.0, + thermal_expansion_alpha: int = 0.0, + thermal_expansion_width: int = 0.0, + thermal_expansion_height: int = 0.0, comment: str = '', - params: dict = None): + params: dict = None, + model = Model): + """ + Args: + no (int): Member Definable Stiffness Tag + name (list): User Defined Name + if name[0] == True: + name[1] == Uer Defined Name + members (str): Assigned Members + torsional_stiffness (int): Torsional Stiffness + bending_stiffness_y (int): Bending Stiffness in Y Direction + bending_stiffness_z (int): Bendign Stiffness in Z Direction + axial_stiffness (int): Axial Stiffness + shear_stiffness_y (int): Shear Stiffness in Y Direction + shear_stiffness_z (int): Shear Stiffness in Z Direction + specific_weight (int): Specific Weight + section_area (int): Section Area + rotation (int): Rotation + thermal_expansion_alpha (int): Thermal Expansion Alpha Coefficient + thermal_expansion_width (int): Thermal Expansion Witdh Coefficient + thermal_expansion_height (int): Thermal Expansion Height Coefficient + comment (str, optional): Comment + params (dict, optional): Parameters + model (class, optional): Model instance + """ # Client model | Member Definable Stffness - clientObject = Model.clientModel.factory.create('ns0:member_definable_stiffness') + clientObject = model.clientModel.factory.create('ns0:member_definable_stiffness') # Clears object atributes | Sets all atributes to None clearAtributes(clientObject) @@ -15,6 +54,44 @@ def __init__(self, # Member Definable Stffness No. clientObject.no = no + # User Defined Name + if name[0]: + clientObject.user_defined_name_enabled = True + clientObject.name = name[1] + else: + clientObject.user_defined_name_enabled = False + + # Assigned Members (e.g. '5 6 7 12') + clientObject.assigned_to = ConvertToDlString(members) + + # Torsional Stiffness + clientObject.torsional_stiffness = torsional_stiffness + + # Bending Stiffnesses + clientObject.bending_stiffness_y = bending_stiffness_y + clientObject.bending_stiffness_z = bending_stiffness_z + + # Axial Stiffness + clientObject.axial_stiffness = axial_stiffness + + # Shear Stiffnesses + clientObject.shear_stiffness_y = shear_stiffness_y + clientObject.shear_stiffness_z = shear_stiffness_z + + # Specific Weight + clientObject.specific_weight = specific_weight + + # Section Area + clientObject.section_area = section_area + + # Rotation + clientObject.rotation = rotation + + # Thermal Expansions + clientObject.thermal_expansion_alpha = thermal_expansion_alpha + clientObject.thermal_expansion_width = thermal_expansion_width + clientObject.thermal_expansion_height = thermal_expansion_height + # Comment clientObject.comment = comment @@ -24,4 +101,4 @@ def __init__(self, clientObject[key] = params[key] # Add Member Definable Stffness to client model - Model.clientModel.service.set_member_definable_stiffness(clientObject) + model.clientModel.service.set_member_definable_stiffness(clientObject) diff --git a/RFEM/TypesForMembers/memberEccentricity.py b/RFEM/TypesForMembers/memberEccentricity.py index 8ac28672..0fc582a1 100644 --- a/RFEM/TypesForMembers/memberEccentricity.py +++ b/RFEM/TypesForMembers/memberEccentricity.py @@ -1,10 +1,43 @@ +from http import client from RFEM.initModel import Model, clearAtributes +from RFEM.enums import * class MemberEccentricity(): def __init__(self, no: int = 1, + name: list = [False], + eccentricity_type = MemberEccentricitySpecificationType.TYPE_RELATIVE, + eccentricity_parameters = [MemberEccentricityHorizontalSectionAlignment.ALIGN_MIDDLE, MemberEccentricityVerticalSectionAlignment.ALIGN_MIDDLE], + transverse_offset_type = MemberEccentricityTransverseOffsetType.TRANSVERSE_OFFSET_TYPE_NONE, + transverse_offset_parameters = None, + axial_offset_active: bool = False, + hinge_location_at_node: bool = False, comment: str = '', params: dict = None): + """ + Args: + no (int): Eccentricity Tag + name (list): User Defined Name + eccentricity_type (enum): Eccentricity Type Enumeration Item + if eccentricity_type == MemberEccentricitySpecificationType.TYPE_RELATIVE: + eccentricity_parameters (list): [horizontal_section_alignment, vertical_section_alignment] + elif eccentricity_type == MemberEccentricitySpecificationType.TYPE_ABSOLUTE: + eccentricity_parameters (list): [coordinate_system, offset_x, offset_y, offset_z] + elif eccentricity_type == MemberEccentricitySpecificationType.TYPE_RELATIVE_AND_ABSOLUTE: + eccentricity_parameters (list): [coordinate_system, offset_x, offset_y, offset_z, horizontal_section_alignment, vertical_section_alignment] + transverse_offset_type (enum): Transverse Offset Type Enumeration Item + if transverse_offset_type == MemberEccentricityTransverseOffsetType.TRANSVERSE_OFFSET_TYPE_NONE: + transverse_offset_parameters (list): None + elif transverse_offset_type == MemberEccentricityTransverseOffsetType.TRANSVERSE_OFFSET_TYPE_FROM_SURFACE_THICKNESS: + transverse_offset_parameters (list): [transverse_offset_reference_surface, transverse_offset_vertical_alignment] + elif transverse_offset_type == MemberEccentricityTransverseOffsetType.TRANSVERSE_OFFSET_TYPE_FROM_MEMBER_SECTION: + transverse_offset_parameters (list): [transverse_offset_reference_member, transverse_offset_member_reference_node, + transverse_offset_horizontal_alignment, transverse_offset_vertical_alignment] + axial_offset_active (bool): Axial Offset Option + hinge_location_at_node (bool): Hinge Location at Node Option + comment (str, optional): Comment + params (dict, optional): Parameters + """ # Client model | Member Eccentricity clientObject = Model.clientModel.factory.create('ns0:member_eccentricity') @@ -15,6 +48,61 @@ def __init__(self, # Member Eccentricity No. clientObject.no = no + # User Defined Name + if name[0]: + clientObject.user_defined_name_enabled = False + else: + clientObject.user_defined_name_enabled = True + clientObject.name = name[1] + + # Eccentricity Specification Type + clientObject.specification_type = eccentricity_type.name + + if eccentricity_type.name == "TYPE_RELATIVE": + clientObject.horizontal_section_alignment = eccentricity_parameters[0].name + clientObject.vertical_section_alignment = eccentricity_parameters[1].name + + elif eccentricity_type.name == "TYPE_ABSOLUTE": + clientObject.coordinate_system = eccentricity_parameters[0] + clientObject.offset_x = eccentricity_parameters[1] + clientObject.offset_y = eccentricity_parameters[2] + clientObject.offset_z = eccentricity_parameters[3] + + elif eccentricity_parameters.name == "TYPE_RELATIVE_AND_ABSOLUTE": + clientObject.coordinate_system = eccentricity_parameters[0] + clientObject.offset_x = eccentricity_parameters[1] + clientObject.offset_y = eccentricity_parameters[2] + clientObject.offset_z = eccentricity_parameters[3] + clientObject.horizontal_section_alignment = eccentricity_parameters[4].name + clientObject.vertical_section_alignment = eccentricity_parameters[5].name + + else: + print("WARNING: Invalid eccentricity type.") + + # Transverse Offset Reference Type + clientObject.transverse_offset_reference_type = transverse_offset_type.name + + if transverse_offset_type.name == "TRANSVERSE_OFFSET_TYPE_NONE": + pass + + elif transverse_offset_type.name == "TRANSVERSE_OFFSET_TYPE_FROM_SURFACE_THICKNESS": + clientObject.transverse_offset_reference_surface = transverse_offset_parameters[0] + clientObject.transverse_offset_vertical_alignment = transverse_offset_parameters[1].name + + elif transverse_offset_type.name == "TRANSVERSE_OFFSET_TYPE_FROM_MEMBER_SECTION": + clientObject.transverse_offset_reference_member = transverse_offset_parameters[0] + clientObject.transverse_offset_member_reference_node = transverse_offset_parameters[1] + clientObject.transverse_offset_horizontal_alignment = transverse_offset_parameters[2].name + clientObject.transverse_offset_vertical_alignment = transverse_offset_parameters[3].name + else: + print("WARNING: Invalid transverse offset type.") + + # Axial Offset Option + clientObject.axial_offset_active = axial_offset_active + + # Hinge Location at Node Option + clientObject.hinge_location_at_node = hinge_location_at_node + # Comment clientObject.comment = comment diff --git a/RFEM/TypesForMembers/memberHinge.py b/RFEM/TypesForMembers/memberHinge.py index 9629a5cb..34c809fb 100644 --- a/RFEM/TypesForMembers/memberHinge.py +++ b/RFEM/TypesForMembers/memberHinge.py @@ -1,17 +1,25 @@ -from RFEM.initModel import Model, clearAtributes +from RFEM.enums import MemberHingeNonlineartiy +from RFEM.initModel import ConvertToDlString, Model, clearAtributes from RFEM.dataTypes import inf class MemberHinge(): def __init__(self, no: int = 1, coordinate_system: str = "Local", + member : str = "", translational_release_n: float = inf, translational_release_vy: float = inf, translational_release_vz: float = inf, rotational_release_mt: float = inf, rotational_release_my: float = 0.0, - rotational_release_mz: float = inf, - comment: str = 'Rotational Release My', + rotational_release_mz: float = 0.0, + translational_release_n_nonlinearity = [MemberHingeNonlineartiy.NONLINEARITY_TYPE_NONE], + translational_release_vy_nonlinearity = [MemberHingeNonlineartiy.NONLINEARITY_TYPE_NONE], + translational_release_vz_nonlinearity = [MemberHingeNonlineartiy.NONLINEARITY_TYPE_NONE], + rotational_release_mt_nonlinearity = [MemberHingeNonlineartiy.NONLINEARITY_TYPE_NONE], + rotational_release_my_nonlinearity = [MemberHingeNonlineartiy.NONLINEARITY_TYPE_NONE], + rotational_release_mz_nonlinearity = [MemberHingeNonlineartiy.NONLINEARITY_TYPE_NONE], + comment: str = '', params: dict = None): # Client model | Member Hinge @@ -20,9 +28,12 @@ def __init__(self, # Clears object atributes | Sets all atributes to None clearAtributes(clientObject) - # Memeber Hinge No. + # Member Hinge No. clientObject.no = no + # Assigned Member + clientObject.members = ConvertToDlString(member) + # Coordinate System clientObject.coordinate_system = coordinate_system @@ -44,6 +55,405 @@ def __init__(self, # Rotational Release/Spring [kNm/rad] Mz clientObject.moment_release_mz = rotational_release_mz + # Translational Release N Nonlinearity + + # Nonlinearity Types None, Fixed if Negative N, Fixed if Positive N + if translational_release_n_nonlinearity[0].name == "NONLINEARITY_TYPE_NONE" \ + or translational_release_n_nonlinearity[0].name == "NONLINEARITY_TYPE_FAILURE_IF_NEGATIVE" \ + or translational_release_n_nonlinearity[0].name == "NONLINEARITY_TYPE_FAILURE_IF_POSITIVE" : + clientObject.axial_release_n_nonlinearity = translational_release_n_nonlinearity[0].name + + # Partial Activity + elif translational_release_n_nonlinearity[0].name == "NONLINEARITY_TYPE_PARTIAL_ACTIVITY": + clientObject.axial_release_n_nonlinearity = translational_release_n_nonlinearity[0].name + + # Negative Zone + clientObject.partial_activity_along_x_negative_type = translational_release_n_nonlinearity[1][0].name + + if translational_release_n_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_COMPLETE": + clientObject.partial_activity_along_x_negative_slippage = translational_release_n_nonlinearity[1][1] + + elif translational_release_n_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_FIXED": + clientObject.partial_activity_along_x_negative_displacement = translational_release_n_nonlinearity[1][1] + + elif translational_release_n_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_TEARING": + clientObject.partial_activity_along_x_negative_force = translational_release_n_nonlinearity[1][1] + clientObject.partial_activity_along_x_negative_slippage = translational_release_n_nonlinearity[1][2] + + elif translational_release_n_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_YIELDING": + clientObject.partial_activity_along_x_negative_force = translational_release_n_nonlinearity[1][1] + clientObject.partial_activity_along_x_negative_slippage = translational_release_n_nonlinearity[1][2] + + # Positive Zone + clientObject.partial_activity_along_x_positive_type = translational_release_n_nonlinearity[2][0].name + + if translational_release_n_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_COMPLETE": + clientObject.partial_activity_along_x_positive_slippage = translational_release_n_nonlinearity[2][1] + + elif translational_release_n_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_FIXED": + clientObject.partial_activity_along_x_positive_displacement = translational_release_n_nonlinearity[2][1] + + elif translational_release_n_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_TEARING": + clientObject.partial_activity_along_x_positive_force = translational_release_n_nonlinearity[2][1] + clientObject.partial_activity_along_x_positive_slippage = translational_release_n_nonlinearity[2][2] + + elif translational_release_n_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_YIELDING": + clientObject.partial_activity_along_x_positive_force = translational_release_n_nonlinearity[2][1] + clientObject.partial_activity_along_x_positive_slippage = translational_release_n_nonlinearity[2][2] + + elif translational_release_n_nonlinearity[0].name == "NONLINEARITY_TYPE_DIAGRAM": + clientObject.axial_release_n_nonlinearity = translational_release_n_nonlinearity[0].name + clientObject.diagram_along_x_start = translational_release_n_nonlinearity[1][0].name + clientObject.diagram_along_x_end = translational_release_n_nonlinearity[1][1].name + + clientObject.diagram_along_x_table = Model.clientModel.factory.create('ns0:member_hinge.diagram_along_x_table') + + for i,j in enumerate(translational_release_n_nonlinearity[1][2]): + mlvlp = Model.clientModel.factory.create('ns0:member_hinge_diagram_along_x_table') + mlvlp.no = i+1 + mlvlp.displacement = translational_release_n_nonlinearity[1][2][i][0] + mlvlp.force = translational_release_n_nonlinearity[1][2][i][1] + mlvlp.spring = translational_release_n_nonlinearity[1][2][i][2] + mlvlp.note = None + + clientObject.diagram_along_x_table.member_hinge_diagram_along_x_table.append(mlvlp) + + elif translational_release_n_nonlinearity[0].name == "NONLINEARITY_TYPE_FRICTION_DIRECTION_1" \ + or translational_release_n_nonlinearity[0].name == "NONLINEARITY_TYPE_FRICTION_DIRECTION_2" \ + or translational_release_n_nonlinearity[0].name == "NONLINEARITY_TYPE_FRICTION_DIRECTION_1_2": + clientObject.axial_release_n_nonlinearity = translational_release_n_nonlinearity[0].name + clientObject.friction_coefficient_x = translational_release_n_nonlinearity[1][0] + + elif translational_release_n_nonlinearity[0].name == "NONLINEARITY_TYPE_FRICTION_DIRECTION_1_PLUS_2": + clientObject.axial_release_n_nonlinearity = translational_release_n_nonlinearity[0].name + clientObject.friction_coefficient_xy = translational_release_n_nonlinearity[1][0] + clientObject.friction_coefficient_xz = translational_release_n_nonlinearity[1][1] + + # Translational Release Vy Nonlinearity + if translational_release_vy_nonlinearity[0].name == "NONLINEARITY_TYPE_NONE" \ + or translational_release_vy_nonlinearity[0].name == "NONLINEARITY_TYPE_FAILURE_IF_NEGATIVE" \ + or translational_release_vy_nonlinearity[0].name == "NONLINEARITY_TYPE_FAILURE_IF_POSITIVE" : + clientObject.axial_release_vy_nonlinearity = translational_release_vy_nonlinearity[0].name + + # Partial Activity + elif translational_release_vy_nonlinearity[0].name == "NONLINEARITY_TYPE_PARTIAL_ACTIVITY": + clientObject.axial_release_vy_nonlinearity = translational_release_vy_nonlinearity[0].name + + # Negative Zone + clientObject.partial_activity_along_y_negative_type = translational_release_vy_nonlinearity[1][0].name + + if translational_release_vy_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_COMPLETE": + clientObject.partial_activity_along_y_negative_slippage = translational_release_vy_nonlinearity[1][1] + + elif translational_release_vy_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_FIXED": + clientObject.partial_activity_along_y_negative_displacement = translational_release_vy_nonlinearity[1][1] + + elif translational_release_vy_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_TEARING": + clientObject.partial_activity_along_y_negative_force = translational_release_vy_nonlinearity[1][1] + clientObject.partial_activity_along_y_negative_slippage = translational_release_vy_nonlinearity[1][2] + + elif translational_release_vy_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_YIELDING": + clientObject.partial_activity_along_y_negative_force = translational_release_vy_nonlinearity[1][1] + clientObject.partial_activity_along_y_negative_slippage = translational_release_vy_nonlinearity[1][2] + + # Positive Zone + clientObject.partial_activity_along_y_positive_type = translational_release_vy_nonlinearity[2][0].name + + if translational_release_vy_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_COMPLETE": + clientObject.partial_activity_along_y_positive_slippage = translational_release_vy_nonlinearity[2][1] + + elif translational_release_vy_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_FIXED": + clientObject.partial_activity_along_y_positive_displacement = translational_release_vy_nonlinearity[2][1] + + elif translational_release_vy_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_TEARING": + clientObject.partial_activity_along_y_positive_force = translational_release_vy_nonlinearity[2][1] + clientObject.partial_activity_along_y_positive_slippage = translational_release_vy_nonlinearity[2][2] + + elif translational_release_vy_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_YIELDING": + clientObject.partial_activity_along_y_positive_force = translational_release_vy_nonlinearity[2][1] + clientObject.partial_activity_along_y_positive_slippage = translational_release_vy_nonlinearity[2][2] + + elif translational_release_vy_nonlinearity[0].name == "NONLINEARITY_TYPE_DIAGRAM": + clientObject.axial_release_vy_nonlinearity = translational_release_vy_nonlinearity[0].name + clientObject.diagram_along_y_start = translational_release_vy_nonlinearity[1][0].name + clientObject.diagram_along_y_end = translational_release_vy_nonlinearity[1][1].name + + clientObject.diagram_along_y_table = Model.clientModel.factory.create('ns0:member_hinge.diagram_along_y_table') + + for i,j in enumerate(translational_release_vy_nonlinearity[1][2]): + mlvlp = Model.clientModel.factory.create('ns0:member_hinge_diagram_along_y_table') + mlvlp.no = i+1 + mlvlp.displacement = translational_release_vy_nonlinearity[1][2][i][0] + mlvlp.force = translational_release_vy_nonlinearity[1][2][i][1] + mlvlp.spring = translational_release_vy_nonlinearity[1][2][i][2] + mlvlp.note = None + + clientObject.diagram_along_y_table.member_hinge_diagram_along_y_table.append(mlvlp) + + elif translational_release_vy_nonlinearity[0].name == "NONLINEARITY_TYPE_FRICTION_DIRECTION_1" \ + or translational_release_vy_nonlinearity[0].name == "NONLINEARITY_TYPE_FRICTION_DIRECTION_2" \ + or translational_release_vy_nonlinearity[0].name == "NONLINEARITY_TYPE_FRICTION_DIRECTION_1_2": + clientObject.axial_release_vy_nonlinearity = translational_release_vy_nonlinearity[0].name + clientObject.friction_coefficient_y = translational_release_vy_nonlinearity[1][0] + + elif translational_release_vy_nonlinearity[0].name == "NONLINEARITY_TYPE_FRICTION_DIRECTION_1_PLUS_2": + clientObject.axial_release_vy_nonlinearity = translational_release_vy_nonlinearity[0].name + clientObject.friction_coefficient_yx = translational_release_vy_nonlinearity[1][0] + clientObject.friction_coefficient_yz = translational_release_vy_nonlinearity[1][1] + + # Translational Release Vz Nonlinearity + if translational_release_vz_nonlinearity[0].name == "NONLINEARITY_TYPE_NONE" \ + or translational_release_vz_nonlinearity[0].name == "NONLINEARITY_TYPE_FAILURE_IF_NEGATIVE" \ + or translational_release_vz_nonlinearity[0].name == "NONLINEARITY_TYPE_FAILURE_IF_POSITIVE" : + clientObject.axial_release_vz_nonlinearity = translational_release_vz_nonlinearity[0].name + + # Partial Activity + elif translational_release_vz_nonlinearity[0].name == "NONLINEARITY_TYPE_PARTIAL_ACTIVITY": + clientObject.axial_release_vz_nonlinearity = translational_release_vz_nonlinearity[0].name + + # Negative Zone + clientObject.partial_activity_along_z_negative_type = translational_release_vz_nonlinearity[1][0].name + + if translational_release_vz_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_COMPLETE": + clientObject.partial_activity_along_z_negative_slippage = translational_release_vz_nonlinearity[1][1] + + elif translational_release_vz_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_FIXED": + clientObject.partial_activity_along_z_negative_displacement = translational_release_vz_nonlinearity[1][1] + + elif translational_release_vz_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_TEARING": + clientObject.partial_activity_along_z_negative_force = translational_release_vz_nonlinearity[1][1] + clientObject.partial_activity_along_z_negative_slippage = translational_release_vz_nonlinearity[1][2] + + elif translational_release_vz_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_YIELDING": + clientObject.partial_activity_along_z_negative_force = translational_release_vz_nonlinearity[1][1] + clientObject.partial_activity_along_z_negative_slippage = translational_release_vz_nonlinearity[1][2] + + # Positive Zone + clientObject.partial_activity_along_z_positive_type = translational_release_vz_nonlinearity[2][0].name + + if translational_release_vz_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_COMPLETE": + clientObject.partial_activity_along_z_positive_slippage = translational_release_vz_nonlinearity[2][1] + + elif translational_release_vz_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_FIXED": + clientObject.partial_activity_along_z_positive_displacement = translational_release_vz_nonlinearity[2][1] + + elif translational_release_vz_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_TEARING": + clientObject.partial_activity_along_z_positive_force = translational_release_vz_nonlinearity[2][1] + clientObject.partial_activity_along_z_positive_slippage = translational_release_vz_nonlinearity[2][2] + + elif translational_release_vz_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_YIELDING": + clientObject.partial_activity_along_z_positive_force = translational_release_vz_nonlinearity[2][1] + clientObject.partial_activity_along_z_positive_slippage = translational_release_vz_nonlinearity[2][2] + + elif translational_release_vz_nonlinearity[0].name == "NONLINEARITY_TYPE_DIAGRAM": + clientObject.axial_release_vz_nonlinearity = translational_release_vz_nonlinearity[0].name + clientObject.diagram_along_z_start = translational_release_vz_nonlinearity[1][0].name + clientObject.diagram_along_z_end = translational_release_vz_nonlinearity[1][1].name + + clientObject.diagram_along_z_table = Model.clientModel.factory.create('ns0:member_hinge.diagram_along_z_table') + + for i,j in enumerate(translational_release_vz_nonlinearity[1][2]): + mlvlp = Model.clientModel.factory.create('ns0:member_hinge_diagram_along_z_table') + mlvlp.no = i+1 + mlvlp.displacement = translational_release_vz_nonlinearity[1][2][i][0] + mlvlp.force = translational_release_vz_nonlinearity[1][2][i][1] + mlvlp.spring = translational_release_vz_nonlinearity[1][2][i][2] + mlvlp.note = None + + clientObject.diagram_along_z_table.member_hinge_diagram_along_z_table.append(mlvlp) + + elif translational_release_vz_nonlinearity[0].name == "NONLINEARITY_TYPE_FRICTION_DIRECTION_1" \ + or translational_release_vz_nonlinearity[0].name == "NONLINEARITY_TYPE_FRICTION_DIRECTION_2" \ + or translational_release_vz_nonlinearity[0].name == "NONLINEARITY_TYPE_FRICTION_DIRECTION_1_2": + clientObject.axial_release_vz_nonlinearity = translational_release_vz_nonlinearity[0].name + clientObject.friction_coefficient_z = translational_release_vz_nonlinearity[1][0] + + elif translational_release_vz_nonlinearity[0].name == "NONLINEARITY_TYPE_FRICTION_DIRECTION_1_PLUS_2": + clientObject.axial_release_vz_nonlinearity = translational_release_vz_nonlinearity[0].name + clientObject.friction_coefficient_zx = translational_release_vz_nonlinearity[1][0] + clientObject.friction_coefficient_zy = translational_release_vz_nonlinearity[1][1] + + # Rotational Release Mt Nonlinearity + if rotational_release_mt_nonlinearity[0].name == "NONLINEARITY_TYPE_NONE" \ + or rotational_release_mt_nonlinearity[0].name == "NONLINEARITY_TYPE_FAILURE_IF_NEGATIVE" \ + or rotational_release_mt_nonlinearity[0].name == "NONLINEARITY_TYPE_FAILURE_IF_POSITIVE" : + clientObject.moment_release_mt_nonlinearity = rotational_release_mt_nonlinearity[0].name + + # Partial Activity + elif rotational_release_mt_nonlinearity[0].name == "NONLINEARITY_TYPE_PARTIAL_ACTIVITY": + clientObject.moment_release_mt_nonlinearity = rotational_release_mt_nonlinearity[0].name + + # Negative Zone + clientObject.partial_activity_around_x_negative_type = rotational_release_mt_nonlinearity[1][0].name + + if rotational_release_mt_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_COMPLETE": + clientObject.partial_activity_around_x_negative_slippage = rotational_release_mt_nonlinearity[1][1] + + elif rotational_release_mt_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_FIXED": + clientObject.partial_activity_around_x_negative_displacement = rotational_release_mt_nonlinearity[1][1] + + elif rotational_release_mt_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_TEARING": + clientObject.partial_activity_around_x_negative_force = rotational_release_mt_nonlinearity[1][1] + clientObject.partial_activity_around_x_negative_slippage = rotational_release_mt_nonlinearity[1][2] + + elif rotational_release_mt_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_YIELDING": + clientObject.partial_activity_around_x_negative_force = rotational_release_mt_nonlinearity[1][1] + clientObject.partial_activity_around_x_negative_slippage = rotational_release_mt_nonlinearity[1][2] + + # Positive Zone + clientObject.partial_activity_around_x_positive_type = rotational_release_mt_nonlinearity[2][0].name + + if rotational_release_mt_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_COMPLETE": + clientObject.partial_activity_around_x_positive_slippage = rotational_release_mt_nonlinearity[2][1] + + elif rotational_release_mt_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_FIXED": + clientObject.partial_activity_around_x_positive_displacement = rotational_release_mt_nonlinearity[2][1] + + elif rotational_release_mt_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_TEARING": + clientObject.partial_activity_around_x_positive_force = rotational_release_mt_nonlinearity[2][1] + clientObject.partial_activity_around_x_positive_slippage = rotational_release_mt_nonlinearity[2][2] + + elif rotational_release_mt_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_YIELDING": + clientObject.partial_activity_around_x_positive_force = rotational_release_mt_nonlinearity[2][1] + clientObject.partial_activity_around_x_positive_slippage = rotational_release_mt_nonlinearity[2][2] + + elif rotational_release_mt_nonlinearity[0].name == "NONLINEARITY_TYPE_DIAGRAM": + clientObject.moment_release_mt_nonlinearity = rotational_release_mt_nonlinearity[0].name + clientObject.diagram_around_x_start = rotational_release_mt_nonlinearity[1][0].name + clientObject.diagram_around_x_end = rotational_release_mt_nonlinearity[1][1].name + + clientObject.diagram_around_x_table = Model.clientModel.factory.create('ns0:member_hinge.diagram_around_x_table') + + for i,j in enumerate(rotational_release_mt_nonlinearity[1][2]): + mlvlp = Model.clientModel.factory.create('ns0:member_hinge_diagram_around_x_table') + mlvlp.no = i+1 + mlvlp.displacement = rotational_release_mt_nonlinearity[1][2][i][0] + mlvlp.force = rotational_release_mt_nonlinearity[1][2][i][1] + mlvlp.spring = rotational_release_mt_nonlinearity[1][2][i][2] + mlvlp.note = None + + clientObject.diagram_around_x_table.member_hinge_diagram_around_x_table.append(mlvlp) + + # Rotational Release My Nonlinearity + if rotational_release_my_nonlinearity[0].name == "NONLINEARITY_TYPE_NONE" \ + or rotational_release_my_nonlinearity[0].name == "NONLINEARITY_TYPE_FAILURE_IF_NEGATIVE" \ + or rotational_release_my_nonlinearity[0].name == "NONLINEARITY_TYPE_FAILURE_IF_POSITIVE" : + clientObject.moment_release_my_nonlinearity = rotational_release_my_nonlinearity[0].name + + # Partial Activity + elif rotational_release_my_nonlinearity[0].name == "NONLINEARITY_TYPE_PARTIAL_ACTIVITY": + clientObject.moment_release_my_nonlinearity = rotational_release_my_nonlinearity[0].name + + # Negative Zone + clientObject.partial_activity_around_y_negative_type = rotational_release_my_nonlinearity[1][0].name + + if rotational_release_my_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_COMPLETE": + clientObject.partial_activity_around_y_negative_slippage = rotational_release_my_nonlinearity[1][1] + + elif rotational_release_my_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_FIXED": + clientObject.partial_activity_around_y_negative_displacement = rotational_release_my_nonlinearity[1][1] + + elif rotational_release_my_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_TEARING": + clientObject.partial_activity_around_y_negative_force = rotational_release_my_nonlinearity[1][1] + clientObject.partial_activity_around_y_negative_slippage = rotational_release_my_nonlinearity[1][2] + + elif rotational_release_my_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_YIELDING": + clientObject.partial_activity_around_y_negative_force = rotational_release_my_nonlinearity[1][1] + clientObject.partial_activity_around_y_negative_slippage = rotational_release_my_nonlinearity[1][2] + + # Positive Zone + clientObject.partial_activity_around_y_positive_type = rotational_release_my_nonlinearity[2][0].name + + if rotational_release_my_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_COMPLETE": + clientObject.partial_activity_around_y_positive_slippage = rotational_release_my_nonlinearity[2][1] + + elif rotational_release_my_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_FIXED": + clientObject.partial_activity_around_y_positive_displacement = rotational_release_my_nonlinearity[2][1] + + elif rotational_release_my_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_TEARING": + clientObject.partial_activity_around_y_positive_force = rotational_release_my_nonlinearity[2][1] + clientObject.partial_activity_around_y_positive_slippage = rotational_release_my_nonlinearity[2][2] + + elif rotational_release_my_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_YIELDING": + clientObject.partial_activity_around_y_positive_force = rotational_release_my_nonlinearity[2][1] + clientObject.partial_activity_around_y_positive_slippage = rotational_release_my_nonlinearity[2][2] + + clientObject.diagram_around_y_table = Model.clientModel.factory.create('ns0:member_hinge.diagram_around_y_table') + + elif rotational_release_my_nonlinearity[0].name == "NONLINEARITY_TYPE_DIAGRAM": + clientObject.moment_release_my_nonlinearity = rotational_release_my_nonlinearity[0].name + clientObject.diagram_around_y_start = rotational_release_my_nonlinearity[1][0].name + clientObject.diagram_around_y_end = rotational_release_my_nonlinearity[1][1].name + + for i,j in enumerate(rotational_release_my_nonlinearity[1][2]): + mlvlp = Model.clientModel.factory.create('ns0:member_hinge_diagram_around_y_table') + mlvlp.no = i+1 + mlvlp.displacement = rotational_release_my_nonlinearity[1][2][i][0] + mlvlp.force = rotational_release_my_nonlinearity[1][2][i][1] + mlvlp.spring = rotational_release_my_nonlinearity[1][2][i][2] + mlvlp.note = None + + clientObject.diagram_around_y_table.member_hinge_diagram_around_y_table.append(mlvlp) + + # Rotational Release Mz Nonlinearity + if rotational_release_mz_nonlinearity[0].name == "NONLINEARITY_TYPE_NONE" \ + or rotational_release_mz_nonlinearity[0].name == "NONLINEARITY_TYPE_FAILURE_IF_NEGATIVE" \ + or rotational_release_mz_nonlinearity[0].name == "NONLINEARITY_TYPE_FAILURE_IF_POSITIVE" : + clientObject.moment_release_mz_nonlinearity = rotational_release_mz_nonlinearity[0].name + + # Partial Activity + elif rotational_release_mz_nonlinearity[0].name == "NONLINEARITY_TYPE_PARTIAL_ACTIVITY": + clientObject.moment_release_mz_nonlinearity = rotational_release_mz_nonlinearity[0].name + + # Negative Zone + clientObject.partial_activity_around_z_negative_type = rotational_release_mz_nonlinearity[1][0].name + + if rotational_release_mz_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_COMPLETE": + clientObject.partial_activity_around_z_negative_slippage = rotational_release_mz_nonlinearity[1][1] + + elif rotational_release_mz_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_FIXED": + clientObject.partial_activity_around_z_negative_displacement = rotational_release_mz_nonlinearity[1][1] + + elif rotational_release_mz_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_TEARING": + clientObject.partial_activity_around_z_negative_force = rotational_release_mz_nonlinearity[1][1] + clientObject.partial_activity_around_z_negative_slippage = rotational_release_mz_nonlinearity[1][2] + + elif rotational_release_mz_nonlinearity[1][0].name == "PARTIAL_ACTIVITY_TYPE_YIELDING": + clientObject.partial_activity_around_z_negative_force = rotational_release_mz_nonlinearity[1][1] + clientObject.partial_activity_around_z_negative_slippage = rotational_release_mz_nonlinearity[1][2] + + # Positive Zone + clientObject.partial_activity_around_z_positive_type = rotational_release_mz_nonlinearity[2][0].name + + if rotational_release_mz_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_COMPLETE": + clientObject.partial_activity_around_z_positive_slippage = rotational_release_mz_nonlinearity[2][1] + + elif rotational_release_mz_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_FIXED": + clientObject.partial_activity_around_z_positive_displacement = rotational_release_mz_nonlinearity[2][1] + + elif rotational_release_mz_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_TEARING": + clientObject.partial_activity_around_z_positive_force = rotational_release_mz_nonlinearity[2][1] + clientObject.partial_activity_around_z_positive_slippage = rotational_release_mz_nonlinearity[2][2] + + elif rotational_release_mz_nonlinearity[2][0].name == "PARTIAL_ACTIVITY_TYPE_YIELDING": + clientObject.partial_activity_around_z_positive_force = rotational_release_mz_nonlinearity[2][1] + clientObject.partial_activity_around_z_positive_slippage = rotational_release_mz_nonlinearity[2][2] + + elif rotational_release_mz_nonlinearity[0].name == "NONLINEARITY_TYPE_DIAGRAM": + clientObject.moment_release_my_nonlinearity = rotational_release_mz_nonlinearity[0].name + clientObject.diagram_around_z_start = rotational_release_mz_nonlinearity[1][0].name + clientObject.diagram_around_z_end = rotational_release_mz_nonlinearity[1][1].name + + for i,j in enumerate(rotational_release_mz_nonlinearity[1][2]): + mlvlp = Model.clientModel.factory.create('ns0:member_hinge_diagram_around_z_table') + mlvlp.no = i+1 + mlvlp.displacement = rotational_release_mz_nonlinearity[1][2][i][0] + mlvlp.force = rotational_release_mz_nonlinearity[1][2][i][1] + mlvlp.spring = rotational_release_mz_nonlinearity[1][2][i][2] + mlvlp.note = None + + clientObject.diagram_around_z_table.member_hinge_diagram_around_z_table.append(mlvlp) + # Comment clientObject.comment = comment diff --git a/RFEM/TypesForMembers/memberNonlinearity.py b/RFEM/TypesForMembers/memberNonlinearity.py index a1912dd7..9efbd413 100644 --- a/RFEM/TypesForMembers/memberNonlinearity.py +++ b/RFEM/TypesForMembers/memberNonlinearity.py @@ -1,8 +1,13 @@ -from RFEM.initModel import Model, clearAtributes +from pytest import param +from RFEM.enums import MemberNonlinearityType +from RFEM.initModel import ConvertToDlString, Model, clearAtributes class MemberNonlinearity(): def __init__(self, no: int = 1, + members: str = "", + nonlinearity_type = MemberNonlinearityType.TYPE_FAILURE_IF_TENSION, + parameters = None, comment: str = '', params: dict = None): @@ -15,6 +20,25 @@ def __init__(self, # Member Nonlinearity No. clientObject.no = no + # Assigned Members + clientObject.assigned_to = ConvertToDlString(members) + + # Nonlinearity Type and Parameters + clientObject.type = nonlinearity_type.name + + if type.name == "TYPE_FAILURE_IF_TENSION_WITH_SLIPPAGE" or type.name == "TYPE_FAILURE_IF_COMPRESSION_WITH_SLIPPAGE" or type.name == "TYPE_SLIPPAGE": + clientObject.slippage = parameters[0] + + elif type.name == "TYPE_TEARING_IF_TENSION" or type.name == "TYPE_YIELDING_IF_TENSION": + clientObject.tension_force = parameters[0] + + elif type.name == "TYPE_TEARING_IF_COMPRESSION" or type.name == "TYPE_YIELDING_IF_COMPRESSION": + clientObject.compression_force = parameters[0] + + elif type.name == "TYPE_TEARING" or type.name == "TYPE_YIELDING": + clientObject.compression_force = parameters[0] + clientObject.tension_force = parameters[1] + # Comment clientObject.comment = comment diff --git a/RFEM/TypesForMembers/memberResultIntermediatePoints.py b/RFEM/TypesForMembers/memberResultIntermediatePoints.py index 3d64b1cd..0ebb48f7 100644 --- a/RFEM/TypesForMembers/memberResultIntermediatePoints.py +++ b/RFEM/TypesForMembers/memberResultIntermediatePoints.py @@ -1,8 +1,12 @@ -from RFEM.initModel import Model, clearAtributes +from RFEM.initModel import ConvertToDlString, Model, clearAtributes class MemberResultIntermediatePoint(): def __init__(self, no: int = 1, + members: str = "", + point_count: int = 2, + uniform_distribution: bool = True, + distances = None, comment: str = '', params: dict = None): @@ -15,6 +19,25 @@ def __init__(self, # Member Result Intermediate Point No. clientObject.no = no + # Assigned Members + clientObject.members = ConvertToDlString(members) + + # Point Count + clientObject.uniform_distribution = uniform_distribution + if uniform_distribution: + clientObject.point_count = point_count + + else: + clientObject.distances = Model.clientModel.factory.create('ns0:member_result_intermediate_point.distances') + + for i,j in enumerate(distances): + mlvlp = Model.clientModel.factory.create('ns0:member_result_intermediate_point_distances') + mlvlp.no = i+1 + mlvlp.value = distances[i][0] + mlvlp.note = None + + clientObject.distances.member_result_intermediate_point_distances.append(mlvlp) + # Comment clientObject.comment = comment diff --git a/RFEM/TypesForMembers/memberStiffnessModification.py b/RFEM/TypesForMembers/memberStiffnessModification.py index 160d29f2..aac2b877 100644 --- a/RFEM/TypesForMembers/memberStiffnessModification.py +++ b/RFEM/TypesForMembers/memberStiffnessModification.py @@ -1,10 +1,42 @@ -from RFEM.initModel import Model, clearAtributes +from pytest import param +from RFEM.enums import MemberStiffnessModificationType +from RFEM.initModel import ConvertToDlString, Model, clearAtributes class MemberStiffnessModification(): def __init__(self, no: int = 1, + assigned_structure_modification: str = "", + modification_type = MemberStiffnessModificationType.TYPE_TOTAL_STIFFNESSES_FACTORS, + parameters = [1.0], comment: str = '', params: dict = None): + """ + Args: + no (int): Modification Tag + assigned_structure_modification (str): Assigned Structure Modification + modification_type (enum): Member Stiffness Modification Type Enumeration Item + parameters (list): + if modification_type == "TYPE_TOTAL_STIFFNESSES_FACTORS": + parameters = [total_stiffness_factor] + elif modification_type == "TYPE_PARTIAL_STIFFNESSES_FACTORS": + parameters = [factor_of_axial_stiffness, factor_of_bending_y_stiffness, factor_of_bending_z_stiffness, + partial_stiffness_factor_of_shear_y_stiffness, partial_stiffness_factor_of_shear_z_stiffness, + partial_stiffness_factor_of_torsion_stiffness, partial_stiffness_factor_of_weight] + elif modification_type == "TYPE_CONCRETE_STRUCTURES_ACI": + parameters = [concrete_structure_component_type, factor_of_axial_stiffness, + factor_of_bending_y_stiffness, factor_of_bending_z_stiffness] + elif modification_type == "TYPE_CONCRETE_STRUCTURES_CSA": + parameters = [concrete_structure_component_type, factor_of_axial_stiffness, + factor_of_bending_y_stiffness, factor_of_bending_z_stiffness] + elif modification_type = "TYPE_STEEL_STRUCTURES": + parameters = [steel_structure_determine_tau_b, steel_structure_design_method] + elif modification_type = "TYPE_STEEL_STRUCTURES_CSA": + parameters = [steel_structure_csa_determine_tau_b, factor_of_axial_stiffness, factor_of_bending_z_stiffness, + steel_structure_csa_stiffness_factor_of_shear_y_stiffness, steel_structure_csa_stiffness_factor_of_shear_z_stiffness, + steel_structure_csa_stiffness_factor_of_torsion_stiffness] + comment (str, optional): Comments + params (dict, optional): Parameters + """ # Client model | Member Stiffness Modification clientObject = Model.clientModel.factory.create('ns0:smember_stiffness_modification') @@ -15,6 +47,54 @@ def __init__(self, # Member Stiffness Modification No. clientObject.no = no + # Structure Modification Assignment + clientObject.assigned_to_structure_modification = ConvertToDlString(assigned_structure_modification) + + # Stiffness Modification Type + clientObject.type = modification_type.name + + if modification_type.name == "TYPE_TOTAL_STIFFNESSES_FACTORS": + clientObject.factor_of_axial_stiffness = parameters[0] + clientObject.factor_of_bending_y_stiffness = parameters[0] + clientObject.factor_of_bending_z_stiffness = parameters[0] + clientObject.total_stiffness_factor_of_total_stiffness = parameters[0] + + elif modification_type.name == "TYPE_PARTIAL_STIFFNESSES_FACTORS": + clientObject.factor_of_axial_stiffness = parameters [0] + clientObject.factor_of_bending_y_stiffness = parameters [2] + clientObject.factor_of_bending_z_stiffness = parameters [3] + clientObject.partial_stiffness_factor_of_shear_y_stiffness = parameters [4] + clientObject.partial_stiffness_factor_of_shear_z_stiffness = parameters [5] + clientObject.partial_stiffness_factor_of_torsion_stiffness = parameters [6] + clientObject.partial_stiffness_factor_of_weight = parameters [7] + + elif modification_type.name == "TYPE_CONCRETE_STRUCTURES_ACI": + clientObject.concrete_structure_component_type = parameters[0].name + clientObject.factor_of_axial_stiffness = parameters[1] + clientObject.factor_of_bending_y_stiffness = parameters[2] + clientObject.factor_of_bending_z_stiffness = parameters[3] + + elif modification_type.name == "TYPE_CONCRETE_STRUCTURES_CSA": + clientObject.concrete_structure_component_type = parameters[0].name + clientObject.factor_of_axial_stiffness = parameters[1] + clientObject.factor_of_bending_y_stiffness = parameters[2] + clientObject.factor_of_bending_z_stiffness = parameters[3] + + elif modification_type.name == "TYPE_STEEL_STRUCTURES": + clientObject.steel_structure_determine_tau_b = parameters[0] + + if parameters[0] == "ITERATIVE": + clientObject.steel_structure_design_method = parameters[1] + + elif modification_type.name == "TYPE_STEEL_STRUCTURES_CSA": + clientObject.steel_structure_csa_determine_tau_b = parameters[0].name + clientObject.factor_of_axial_stiffness = parameters[1] + clientObject.factor_of_bending_y_stiffness = parameters[2] + clientObject.factor_of_bending_z_stiffness = parameters[3] + clientObject.steel_structure_csa_stiffness_factor_of_shear_y_stiffness = parameters[4] + clientObject.steel_structure_csa_stiffness_factor_of_shear_z_stiffness = parameters[5] + clientObject.steel_structure_csa_stiffness_factor_of_torsion_stiffness = parameters[6] + # Comment clientObject.comment = comment diff --git a/RFEM/enums.py b/RFEM/enums.py index 5a65ddd5..72033d9f 100644 --- a/RFEM/enums.py +++ b/RFEM/enums.py @@ -1893,3 +1893,92 @@ class DesignSituationType(Enum): DESIGN_SITUATION_TYPE_ULS_STR_GEO_PERMANENT_AND_TRANSIENT, DESIGN_SITUATION_TYPE_ULTIMATE_LIMIT_STATE, DESIGN_SITUATION_TYPE_ULTIMATE_LIMIT_STATE_1, DESIGN_SITUATION_TYPE_ULTIMATE_LIMIT_STATE_2, DESIGN_SITUATION_TYPE_ULTIMATE_LIMIT_STATE_3, DESIGN_SITUATION_TYPE_ULTIMATE_LIMIT_STATE_4, DESIGN_SITUATION_TYPE_ULTIMATE_LIMIT_STATE_5, \ DESIGN_SITUATION_TYPE_UPL_ACCIDENTAL_PSI_1_1, DESIGN_SITUATION_TYPE_UPL_ACCIDENTAL_PSI_2_1, DESIGN_SITUATION_TYPE_UPL_PERMANENT_AND_TRANSIENT, DESIGN_SITUATION_TYPE_UPL_SEISMIC = range( 387) + +class MemberEccentricityHorizontalSectionAlignment(Enum): + ''' + Member Eccentricity Horizontal Section Alignment + ''' + ALIGN_LEFT, ALIGN_MIDDLE, ALIGN_RIGHT = range(3) + +class MemberEccentricitySpecificationType(Enum): + ''' + Member Eccentricity Specification Type + ''' + TYPE_ABSOLUTE, TYPE_RELATIVE, TYPE_RELATIVE_AND_ABSOLUTE = range(3) + +class MemberEccentricityTransverseOffsetType(Enum): + ''' + Member Eccentricity Transverse Offset Reference Type + ''' + TRANSVERSE_OFFSET_TYPE_FROM_MEMBER_SECTION, TRANSVERSE_OFFSET_TYPE_FROM_SURFACE_THICKNESS, TRANSVERSE_OFFSET_TYPE_NONE = range(3) + +class MemberEccentricityTransverseOffsetHorizontalAlignment(Enum): + ''' + Member Eccentricity Transverse Offset Horizontal Alignment + ''' + ALIGN_LEFT, ALIGN_MIDDLE, ALIGN_RIGHT = range(3) + +class MemberEccentricityTransverseOffsetVerticalAlignment(Enum): + ''' + Member Eccentricity Transverse Vertical Alignment + ''' + ALIGN_BOTTOM, ALIGN_MIDDLE, ALIGN_TOP = range(3) + +class MemberEccentricityVerticalSectionAlignment(Enum): + ''' + Member Eccentricity Vertical Section Alignment + ''' + ALIGN_BOTTOM, ALIGN_MIDDLE, ALIGN_TOP = range(3) + +class MemberHingeNonlineartiy(Enum): + ''' + Member Hinge Nonlineartiy + ''' + NONLINEARITY_TYPE_DIAGRAM, NONLINEARITY_TYPE_FAILURE_ALL_IF_NEGATIVE, NONLINEARITY_TYPE_FAILURE_ALL_IF_POSITIVE, NONLINEARITY_TYPE_FAILURE_IF_NEGATIVE, \ + NONLINEARITY_TYPE_FAILURE_IF_POSITIVE, NONLINEARITY_TYPE_FORCE_MOMENT_DIAGRAM, NONLINEARITY_TYPE_FRICTION_DIRECTION_1, NONLINEARITY_TYPE_FRICTION_DIRECTION_1_2, \ + NONLINEARITY_TYPE_FRICTION_DIRECTION_1_PLUS_2, NONLINEARITY_TYPE_FRICTION_DIRECTION_2, NONLINEARITY_TYPE_NONE, NONLINEARITY_TYPE_PARTIAL_ACTIVITY, \ + NONLINEARITY_TYPE_PLASTIC_BILINEAR, NONLINEARITY_TYPE_PLASTIC_DIAGRAM, NONLINEARITY_TYPE_PLASTIC_FEMA_356_ELASTIC, NONLINEARITY_TYPE_PLASTIC_FEMA_356_RIGID, \ + NONLINEARITY_TYPE_STIFFNESS_DIAGRAM = range(17) + +class MemberHingeDiagramType(Enum): + ''' + Member Hinge Diagram Type + ''' + DIAGRAM_ENDING_TYPE_CONTINUOUS, DIAGRAM_ENDING_TYPE_STOP, DIAGRAM_ENDING_TYPE_TEARING, DIAGRAM_ENDING_TYPE_YIELDING = range(4) + +class MemberHingePartialActivityType(Enum): + ''' + Member Hinge Partial Activity Type + ''' + PARTIAL_ACTIVITY_TYPE_COMPLETE, PARTIAL_ACTIVITY_TYPE_FIXED, PARTIAL_ACTIVITY_TYPE_INEFFECTIVNESS, PARTIAL_ACTIVITY_TYPE_TEARING, PARTIAL_ACTIVITY_TYPE_YIELDING = range(5) + +class MemberNonlinearityType(Enum): + ''' + Member Nonlinearity Type + ''' + TYPE_FAILURE_IF_COMPRESSION, TYPE_FAILURE_IF_COMPRESSION_WITH_SLIPPAGE, TYPE_FAILURE_IF_TENSION, TYPE_FAILURE_IF_TENSION_WITH_SLIPPAGE, \ + TYPE_SLIPPAGE, TYPE_TEARING, TYPE_TEARING_IF_COMPRESSION, TYPE_TEARING_IF_TENSION, TYPE_YIELDING, TYPE_YIELDING_IF_COMPRESSION, TYPE_YIELDING_IF_TENSION = range(11) + +class MemberStiffnessModificationType(Enum): + ''' + Member Stiffness Modification Type + ''' + TYPE_CONCRETE_STRUCTURES_ACI, TYPE_CONCRETE_STRUCTURES_CSA, TYPE_PARTIAL_STIFFNESSES_FACTORS, TYPE_STEEL_STRUCTURES, TYPE_STEEL_STRUCTURES_CSA, TYPE_TOTAL_STIFFNESSES_FACTORS = range(6) + +class MemberStiffnessModificationSteelTaub(Enum): + ''' + Member Stiffness Modification Steel Structure tau_b Determination + ''' + ITERATIVE, SET_TO_1 = range(2) + +class MemberStiffnessModificationSteelDesignMethod(Enum): + ''' + Member Stiffness Modification Steel Structure Design Method + ''' + ASD, LRFD = range(2) + +class MemberStiffnessModificationConcreteComponentType(Enum): + ''' + Member Stiffness Modification Concrete Structure Component Type + ''' + COMPONENT_TYPE_BEAMS, COMPONENT_TYPE_COLUMNS = range(2) From c526099f33d0cff4c9671bb9e4e31c5fa6ca25f7 Mon Sep 17 00:00:00 2001 From: KaratasD Date: Fri, 29 Apr 2022 13:33:00 +0200 Subject: [PATCH 2/3] added Types For Members --- Examples/Cantilever/demo2.py | 60 +++++---- RFEM/TypesForMembers/memberEccentricity.py | 5 +- RFEM/TypesForMembers/memberHinge.py | 20 +++ RFEM/TypesForMembers/memberNonlinearity.py | 17 ++- .../memberResultIntermediatePoints.py | 10 ++ .../memberStiffnessModification.py | 2 +- RFEM/TypesForMembers/memberSupport.py | 41 +++++- RFEM/enums.py | 6 + UnitTests/test_typesForMembers.py | 124 ++++++++++++++++++ 9 files changed, 254 insertions(+), 31 deletions(-) create mode 100644 UnitTests/test_typesForMembers.py diff --git a/Examples/Cantilever/demo2.py b/Examples/Cantilever/demo2.py index 785a025d..bd555175 100644 --- a/Examples/Cantilever/demo2.py +++ b/Examples/Cantilever/demo2.py @@ -8,7 +8,7 @@ print('dirname: ', dirName) sys.path.append(dirName + r'/../..') -from RFEM.enums import MemberHingeDiagramType, MemberHingeNonlineartiy, MemberHingePartialActivityType, NodalSupportType, LoadDirectionType +from RFEM.enums import MemberHingeDiagramType, MemberHingeNonlineartiy, MemberHingePartialActivityType, MemberSupportNonlinearity, NodalSupportType, LoadDirectionType from RFEM.initModel import Model, Calculate_all from RFEM.BasicObjects.material import Material from RFEM.BasicObjects.section import Section @@ -17,16 +17,22 @@ from RFEM.TypesForNodes.nodalSupport import NodalSupport from RFEM.TypesForMembers.memberHinge import MemberHinge from RFEM.TypesForMembers.memberResultIntermediatePoints import MemberResultIntermediatePoint +from RFEM.TypesForMembers.memberSupport import MemberSupport +from RFEM.TypesForMembers.memberDefinableStiffness import MemberDefinableStiffness +from RFEM.TypesForMembers.memberEccentricity import MemberEccentricity +from RFEM.TypesForMembers.memberNonlinearity import MemberNonlinearity +from RFEM.dataTypes import inf +from RFEM.TypesForMembers.memberStiffnessModification import MemberStiffnessModification Model(True, "Demo3") Model.clientModel.service.begin_modification() -Node(1, 0,0,0) -Node(2, 5,0,0) -Material(1, "S235") -Section(1, "IPE 200", 1) -Member(1, 1, 2, 0, 1, 1) +# Node(1, 0,0,0) +# Node(2, 5,0,0) +# Material(1, "S235") +# Section(1, "IPE 200", 1) +# Member(1, 1, 2, 0, 1, 1) # MemberHinge(1, "Local", "", 4000, translational_release_n_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 8000], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 9000]]) # MemberHinge(2, "Local", "", 2000, translational_release_n_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.004], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.005]]) @@ -37,29 +43,37 @@ # MemberHinge(7, "Local", "", 0, translational_release_n_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_2, [0.7]]) # MemberHinge(8, "Local", "", 0, translational_release_n_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1_PLUS_2, [0.8, 0.9]]) -# MemberHinge(1, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 8000], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 9000]]) -# MemberHinge(2, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.004], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.005]]) -# #MemberHinge(3, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_TEARING, 3000, 0.004], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_YIELDING, 5000, 0.006]]) -# MemberHinge(4, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_DIAGRAM, [MemberHingeDiagramType.DIAGRAM_ENDING_TYPE_CONTINUOUS, MemberHingeDiagramType.DIAGRAM_ENDING_TYPE_CONTINUOUS, [[1,2, 3], [3,4, 5]]]]) -# MemberHinge(5, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1, [0.5]]) -# MemberHinge(6, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1_2, [0.6]]) -# MemberHinge(7, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_2, [0.7]]) -# MemberHinge(8, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1_PLUS_2, [0.8, 0.9]]) - -# MemberHinge(1, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 8000], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 9000]]) -# MemberHinge(2, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.004], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.005]]) -# #MemberHinge(3, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_TEARING, 3000, 0.004], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_YIELDING, 5000, 0.006]]) -# MemberHinge(4, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_DIAGRAM, [MemberHingeDiagramType.DIAGRAM_ENDING_TYPE_CONTINUOUS, MemberHingeDiagramType.DIAGRAM_ENDING_TYPE_CONTINUOUS, [[1,2, 3], [3,4, 5]]]]) -# MemberHinge(5, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1, [0.5]]) -# MemberHinge(6, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1_2, [0.6]]) -# MemberHinge(7, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_2, [0.7]]) -# MemberHinge(8, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1_PLUS_2, [0.8, 0.9]]) +# MemberHinge(9, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 8000], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 9000]]) +# MemberHinge(10, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.004], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.005]]) +# #MemberHinge(11, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_TEARING, 3000, 0.004], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_YIELDING, 5000, 0.006]]) +# MemberHinge(12, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_DIAGRAM, [MemberHingeDiagramType.DIAGRAM_ENDING_TYPE_CONTINUOUS, MemberHingeDiagramType.DIAGRAM_ENDING_TYPE_CONTINUOUS, [[1,2, 3], [3,4, 5]]]]) +# MemberHinge(13, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1, [0.5]]) +# MemberHinge(14, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1_2, [0.6]]) +# MemberHinge(15, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_2, [0.7]]) +# MemberHinge(16, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1_PLUS_2, [0.8, 0.9]]) + +# MemberHinge(17, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 8000], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 9000]]) +# MemberHinge(18, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.004], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.005]]) +# #MemberHinge(19, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_TEARING, 3000, 0.004], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_YIELDING, 5000, 0.006]]) +# MemberHinge(20, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_DIAGRAM, [MemberHingeDiagramType.DIAGRAM_ENDING_TYPE_CONTINUOUS, MemberHingeDiagramType.DIAGRAM_ENDING_TYPE_CONTINUOUS, [[1,2, 3], [3,4, 5]]]]) +# MemberHinge(21, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1, [0.5]]) +# MemberHinge(22, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1_2, [0.6]]) +# MemberHinge(23, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_2, [0.7]]) +# MemberHinge(24, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1_PLUS_2, [0.8, 0.9]]) # MemberResultIntermediatePoint(1, "", 5) ## MemberResultIntermediatePoint(2, "", 2, False, [[0.3], [0.6]]) +# MemberSupport() +# MemberSupport(2, '', 1,2, [inf, MemberSupportNonlinearity.NONLINEARITY_FAILURE_IF_NEGATIVE_CONTACT_STRESS_Z], 3, 4, 5, 6) + +# MemberEccentricity() + +# MemberNonlinearity() + +MemberStiffnessModification() Model.clientModel.service.finish_modification() diff --git a/RFEM/TypesForMembers/memberEccentricity.py b/RFEM/TypesForMembers/memberEccentricity.py index 0fc582a1..8d474491 100644 --- a/RFEM/TypesForMembers/memberEccentricity.py +++ b/RFEM/TypesForMembers/memberEccentricity.py @@ -50,10 +50,11 @@ def __init__(self, # User Defined Name if name[0]: - clientObject.user_defined_name_enabled = False - else: clientObject.user_defined_name_enabled = True clientObject.name = name[1] + else: + clientObject.user_defined_name_enabled = False + # Eccentricity Specification Type clientObject.specification_type = eccentricity_type.name diff --git a/RFEM/TypesForMembers/memberHinge.py b/RFEM/TypesForMembers/memberHinge.py index 34c809fb..4dfabdd1 100644 --- a/RFEM/TypesForMembers/memberHinge.py +++ b/RFEM/TypesForMembers/memberHinge.py @@ -21,6 +21,26 @@ def __init__(self, rotational_release_mz_nonlinearity = [MemberHingeNonlineartiy.NONLINEARITY_TYPE_NONE], comment: str = '', params: dict = None): + """ + Args: + no (int): Member Hinge Tag + coordinate_system (str): Coordinate System Selection + member (str): Assigned Members + translational_release_n (float): Translational Spring Constant X + translational_release_vy (float): Translational Spring Constant Y + translational_release_vz (float): Translational Spring Constant Z + rotational_release_mt (float): Rotational Spring Constant X + rotational_release_my (float): Rotational Spring Constant Y + rotational_release_mz (float): Rotational Spring Constant Z + translational_release_n_nonlinearity (list): Nonlinearity Options Translational X + translational_release_vy_nonlinearity (list): Nonlinearity Options Translational Y + translational_release_vz_nonlinearity (list): Nonlinearity Options Translational Z + rotational_release_mt_nonlinearity (list): Nonlinearity Options Rotational X + rotational_release_my_nonlinearity (list): Nonlinearity Options Rotational Y + rotational_release_mz_nonlinearity (list): Nonlinearity Options Rotational Z + comment (str, optional): Comment + params (dict, optional): Parameters + """ # Client model | Member Hinge clientObject = Model.clientModel.factory.create('ns0:member_hinge') diff --git a/RFEM/TypesForMembers/memberNonlinearity.py b/RFEM/TypesForMembers/memberNonlinearity.py index 9efbd413..571a9214 100644 --- a/RFEM/TypesForMembers/memberNonlinearity.py +++ b/RFEM/TypesForMembers/memberNonlinearity.py @@ -10,6 +10,15 @@ def __init__(self, parameters = None, comment: str = '', params: dict = None): + """ + Args: + no (int): Member Nonlinearity Tag + members (str): Assigned Members + nonlinearity_type (enum): Nonlinearity Type Enumeration Item + parameters (list): Nonlinearity Parameters + comment (str, optional): Comment + params (dict, optional): Parameters + """ # Client model | Member Nonlinearity clientObject = Model.clientModel.factory.create('ns0:member_nonlinearity') @@ -26,16 +35,16 @@ def __init__(self, # Nonlinearity Type and Parameters clientObject.type = nonlinearity_type.name - if type.name == "TYPE_FAILURE_IF_TENSION_WITH_SLIPPAGE" or type.name == "TYPE_FAILURE_IF_COMPRESSION_WITH_SLIPPAGE" or type.name == "TYPE_SLIPPAGE": + if nonlinearity_type.name == "TYPE_FAILURE_IF_TENSION_WITH_SLIPPAGE" or nonlinearity_type.name == "TYPE_FAILURE_IF_COMPRESSION_WITH_SLIPPAGE" or nonlinearity_type.name == "TYPE_SLIPPAGE": clientObject.slippage = parameters[0] - elif type.name == "TYPE_TEARING_IF_TENSION" or type.name == "TYPE_YIELDING_IF_TENSION": + elif nonlinearity_type.name == "TYPE_TEARING_IF_TENSION" or nonlinearity_type.name == "TYPE_YIELDING_IF_TENSION": clientObject.tension_force = parameters[0] - elif type.name == "TYPE_TEARING_IF_COMPRESSION" or type.name == "TYPE_YIELDING_IF_COMPRESSION": + elif nonlinearity_type.name == "TYPE_TEARING_IF_COMPRESSION" or nonlinearity_type.name == "TYPE_YIELDING_IF_COMPRESSION": clientObject.compression_force = parameters[0] - elif type.name == "TYPE_TEARING" or type.name == "TYPE_YIELDING": + elif nonlinearity_type.name == "TYPE_TEARING" or nonlinearity_type.name == "TYPE_YIELDING": clientObject.compression_force = parameters[0] clientObject.tension_force = parameters[1] diff --git a/RFEM/TypesForMembers/memberResultIntermediatePoints.py b/RFEM/TypesForMembers/memberResultIntermediatePoints.py index 0ebb48f7..3093ce54 100644 --- a/RFEM/TypesForMembers/memberResultIntermediatePoints.py +++ b/RFEM/TypesForMembers/memberResultIntermediatePoints.py @@ -9,6 +9,16 @@ def __init__(self, distances = None, comment: str = '', params: dict = None): + """ + Args: + no (int): Member Result Intermediate Point Tag + members (str): Assigned Members + point_count (int): Assigned Point Number + uniform_distribution (bool): Uniform Distrubition Option + distances (list): Distances Table + comment (str, optional): Comment + params (dict, optional): Parameters + """ # Client model | Member Result Intermediate Point clientObject = Model.clientModel.factory.create('ns0:member_result_intermediate_point') diff --git a/RFEM/TypesForMembers/memberStiffnessModification.py b/RFEM/TypesForMembers/memberStiffnessModification.py index aac2b877..4f20425f 100644 --- a/RFEM/TypesForMembers/memberStiffnessModification.py +++ b/RFEM/TypesForMembers/memberStiffnessModification.py @@ -39,7 +39,7 @@ def __init__(self, """ # Client model | Member Stiffness Modification - clientObject = Model.clientModel.factory.create('ns0:smember_stiffness_modification') + clientObject = Model.clientModel.factory.create('ns0:member_stiffness_modification') # Clears object atributes | Sets all atributes to None clearAtributes(clientObject) diff --git a/RFEM/TypesForMembers/memberSupport.py b/RFEM/TypesForMembers/memberSupport.py index ce85c74b..7f259228 100644 --- a/RFEM/TypesForMembers/memberSupport.py +++ b/RFEM/TypesForMembers/memberSupport.py @@ -1,10 +1,34 @@ -from RFEM.initModel import Model, clearAtributes +from RFEM.enums import MemberSupportNonlinearity +from RFEM.initModel import ConvertToDlString, Model, clearAtributes +from RFEM.dataTypes import inf class MemberSupport(): def __init__(self, no: int = 1, + members: str = '', + spring_translation_x = 0.0, + spring_translation_y = 0.0, + spring_translation_z = [inf, MemberSupportNonlinearity.NONLINEARITY_NONE], + spring_rotation = 0.0, + spring_shear_x = 0.0, + spring_shear_y = 0.0, + spring_shear_z = 0.0, comment: str = '', params: dict = None): + """ + Args: + no (int): Member Support Tag + members (str): Assigned Members + spring_translation_x (float): Translational X Spring Constant + spring_translation_y (float): Translational Y Spring Constant + spring_translation_z (list): [Translational Z Spring Constant, Nonlinearity Type] + spring_rotation (float): Rotational Spring Constant + spring_shear_x (float): Shear X Spring Constant + spring_shear_y (float): Shear Y Spring Constant + spring_shear_z (float): Shear Z Spring Constant + comment (str, optional): Comment + params (dict, optional): Parameters + """ # Client model | Member Support clientObject = Model.clientModel.factory.create('ns0:member_support') @@ -15,6 +39,21 @@ def __init__(self, # Member Support No. clientObject.no = no + # Assigned Members + clientObject.members = ConvertToDlString(members) + + # Spring Translation + clientObject.spring_rotation = spring_rotation + clientObject.spring_translation_x = spring_translation_x + clientObject.spring_translation_y = spring_translation_y + clientObject.spring_translation_z = spring_translation_z[0] + clientObject.nonlinearity = spring_translation_z[1].name + + # Spring Shear + clientObject.spring_shear_x = spring_shear_x + clientObject.spring_shear_y = spring_shear_y + clientObject.spring_shear_z = spring_shear_z + # Comment clientObject.comment = comment diff --git a/RFEM/enums.py b/RFEM/enums.py index 72033d9f..7004470e 100644 --- a/RFEM/enums.py +++ b/RFEM/enums.py @@ -1982,3 +1982,9 @@ class MemberStiffnessModificationConcreteComponentType(Enum): Member Stiffness Modification Concrete Structure Component Type ''' COMPONENT_TYPE_BEAMS, COMPONENT_TYPE_COLUMNS = range(2) + +class MemberSupportNonlinearity(Enum): + ''' + Member Support Nonlinearity + ''' + NONLINEARITY_FAILURE_IF_NEGATIVE_CONTACT_STRESS_Z, NONLINEARITY_FAILURE_IF_POSITIVE_CONTACT_STRESS_Z, NONLINEARITY_NONE = range(3) diff --git a/UnitTests/test_typesForMembers.py b/UnitTests/test_typesForMembers.py new file mode 100644 index 00000000..f9779e71 --- /dev/null +++ b/UnitTests/test_typesForMembers.py @@ -0,0 +1,124 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import sys +import os +PROJECT_ROOT = os.path.abspath(os.path.join( + os.path.dirname(__file__), + os.pardir) +) +sys.path.append(PROJECT_ROOT) + +## Import the relevant Libraries +from RFEM.enums import * +from RFEM.initModel import Model +from RFEM.TypesForMembers.memberHinge import MemberHinge +from RFEM.TypesForMembers.memberResultIntermediatePoints import MemberResultIntermediatePoint +from RFEM.TypesForMembers.memberSupport import MemberSupport +from RFEM.dataTypes import inf +from RFEM.TypesForMembers.memberDefinableStiffness import MemberDefinableStiffness +from RFEM.TypesForMembers.memberEccentricity import MemberEccentricity +from RFEM.TypesForMembers.memberNonlinearity import MemberNonlinearity +from RFEM.TypesForMembers.memberStiffnessModification import MemberStiffnessModification + +if Model.clientModel is None: + Model() + +def test_memberDefinableStiffness(): + + Model.clientModel.service.delete_all() + Model.clientModel.service.begin_modification() + + MemberDefinableStiffness(1, [False], "", 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12) + + memberStiffness_1 = Model.clientModel.service.get_member_definable_stiffness(1) + + assert memberStiffness_1.torsional_stiffness == 1 + Model.clientModel.service.finish_modification() + +def test_memberEccentricity(): + + Model.clientModel.service.delete_all() + Model.clientModel.service.begin_modification() + + MemberEccentricity() + + memberEccentricitiy_1 = Model.clientModel.service.get_member_eccentricity(1) + + assert memberEccentricitiy_1.specification_type == "TYPE_RELATIVE" + Model.clientModel.service.finish_modification() + +def test_memberHinge(): + + Model.clientModel.service.delete_all() + Model.clientModel.service.begin_modification() + + MemberHinge(1, "Local", "", 4000, translational_release_n_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 8000], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 9000]]) + MemberHinge(2, "Local", "", 2000, translational_release_n_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1, [0.5]]) + MemberHinge(3, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_DIAGRAM, [MemberHingeDiagramType.DIAGRAM_ENDING_TYPE_CONTINUOUS, MemberHingeDiagramType.DIAGRAM_ENDING_TYPE_CONTINUOUS, [[1,2, 3], [3,4, 5]]]]) + MemberHinge(4, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.004], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.005]]) + + memberHinge_1 = Model.clientModel.service.get_member_hinge(1) + memberHinge_2 = Model.clientModel.service.get_member_hinge(2) + memberHinge_3 = Model.clientModel.service.get_member_hinge(3) + memberHinge_4 = Model.clientModel.service.get_member_hinge(4) + + assert memberHinge_1.no == 1 + assert memberHinge_2.axial_release_n == 2000 + assert memberHinge_3.axial_release_vy_nonlinearity == "NONLINEARITY_TYPE_DIAGRAM" + assert memberHinge_4.axial_release_vy == inf + + Model.clientModel.service.finish_modification() + +def test_memberNonlinearity(): + + Model.clientModel.service.delete_all() + Model.clientModel.service.begin_modification() + + MemberNonlinearity() + + memberNonlinearity_1 = Model.clientModel.service.get_member_nonlinearity(1) + + assert memberNonlinearity_1.type == "TYPE_FAILURE_IF_TENSION" + Model.clientModel.service.finish_modification() + +def test_memberResultIntermediatePoint(): + + Model.clientModel.service.delete_all() + Model.clientModel.service.begin_modification() + + MemberResultIntermediatePoint(1, "", 5) + + memberResultIntermediatePoint_1 = Model.clientModel.service.get_member_result_intermediate_point(1) + + assert memberResultIntermediatePoint_1.point_count == 5 + Model.clientModel.service.finish_modification() + +def test_memberStiffnessModification(): + + Model.clientModel.service.delete_all() + Model.clientModel.service.begin_modification() + + MemberStiffnessModification() + + memberStiffnessModification_1 = Model.clientModel.service.get_member_stiffness_modification(1) + + assert memberStiffnessModification_1.factor_of_bending_z_stiffness == 1 + Model.clientModel.service.finish_modification() + +def test_memberSupport(): + + Model.clientModel.service.delete_all() + Model.clientModel.service.begin_modification() + + MemberSupport() + MemberSupport(2, '', 1,2, [inf, MemberSupportNonlinearity.NONLINEARITY_FAILURE_IF_NEGATIVE_CONTACT_STRESS_Z], 3, 4, 5, 6) + + memberSupport_1 = Model.clientModel.service.get_member_support(1) + memberSupport_2 = Model.clientModel.service.get_member_support(2) + + assert memberSupport_1.no == 1 + assert memberSupport_2.spring_translation_y == 2 + + Model.clientModel.service.finish_modification() + From e23d203f56d1cf3f20a54dda55c015b92519f610 Mon Sep 17 00:00:00 2001 From: KaratasD Date: Fri, 29 Apr 2022 13:41:44 +0200 Subject: [PATCH 3/3] Types For Members Unit Tests --- Examples/Cantilever/demo2.py | 79 ------------------------------------ 1 file changed, 79 deletions(-) delete mode 100644 Examples/Cantilever/demo2.py diff --git a/Examples/Cantilever/demo2.py b/Examples/Cantilever/demo2.py deleted file mode 100644 index bd555175..00000000 --- a/Examples/Cantilever/demo2.py +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -import os -import sys -baseName = os.path.basename(__file__) -dirName = os.path.dirname(__file__) -print('basename: ', baseName) -print('dirname: ', dirName) -sys.path.append(dirName + r'/../..') - -from RFEM.enums import MemberHingeDiagramType, MemberHingeNonlineartiy, MemberHingePartialActivityType, MemberSupportNonlinearity, NodalSupportType, LoadDirectionType -from RFEM.initModel import Model, Calculate_all -from RFEM.BasicObjects.material import Material -from RFEM.BasicObjects.section import Section -from RFEM.BasicObjects.node import Node -from RFEM.BasicObjects.member import Member -from RFEM.TypesForNodes.nodalSupport import NodalSupport -from RFEM.TypesForMembers.memberHinge import MemberHinge -from RFEM.TypesForMembers.memberResultIntermediatePoints import MemberResultIntermediatePoint -from RFEM.TypesForMembers.memberSupport import MemberSupport -from RFEM.TypesForMembers.memberDefinableStiffness import MemberDefinableStiffness -from RFEM.TypesForMembers.memberEccentricity import MemberEccentricity -from RFEM.TypesForMembers.memberNonlinearity import MemberNonlinearity -from RFEM.dataTypes import inf -from RFEM.TypesForMembers.memberStiffnessModification import MemberStiffnessModification - - -Model(True, "Demo3") -Model.clientModel.service.begin_modification() - -# Node(1, 0,0,0) -# Node(2, 5,0,0) -# Material(1, "S235") -# Section(1, "IPE 200", 1) -# Member(1, 1, 2, 0, 1, 1) - -# MemberHinge(1, "Local", "", 4000, translational_release_n_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 8000], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 9000]]) -# MemberHinge(2, "Local", "", 2000, translational_release_n_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.004], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.005]]) -# #MemberHinge(3, "Local", "", 0, translational_release_n_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_TEARING, 3000, 0.004], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_YIELDING, 5000, 0.006]]) -# MemberHinge(4, "Local", "", 0, translational_release_n_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_DIAGRAM, [MemberHingeDiagramType.DIAGRAM_ENDING_TYPE_CONTINUOUS, MemberHingeDiagramType.DIAGRAM_ENDING_TYPE_CONTINUOUS, [[1,2, 3], [3,4, 5]]]]) -# MemberHinge(5, "Local", "", 0, translational_release_n_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1, [0.5]]) -# MemberHinge(6, "Local", "", 0, translational_release_n_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1_2, [0.6]]) -# MemberHinge(7, "Local", "", 0, translational_release_n_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_2, [0.7]]) -# MemberHinge(8, "Local", "", 0, translational_release_n_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1_PLUS_2, [0.8, 0.9]]) - -# MemberHinge(9, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 8000], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 9000]]) -# MemberHinge(10, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.004], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.005]]) -# #MemberHinge(11, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_TEARING, 3000, 0.004], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_YIELDING, 5000, 0.006]]) -# MemberHinge(12, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_DIAGRAM, [MemberHingeDiagramType.DIAGRAM_ENDING_TYPE_CONTINUOUS, MemberHingeDiagramType.DIAGRAM_ENDING_TYPE_CONTINUOUS, [[1,2, 3], [3,4, 5]]]]) -# MemberHinge(13, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1, [0.5]]) -# MemberHinge(14, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1_2, [0.6]]) -# MemberHinge(15, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_2, [0.7]]) -# MemberHinge(16, "Local", "", translational_release_vy=0, translational_release_vy_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1_PLUS_2, [0.8, 0.9]]) - -# MemberHinge(17, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 8000], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_COMPLETE, 9000]]) -# MemberHinge(18, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.004], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_FIXED, 0.005]]) -# #MemberHinge(19, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_PARTIAL_ACTIVITY, [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_TEARING, 3000, 0.004], [MemberHingePartialActivityType.PARTIAL_ACTIVITY_TYPE_YIELDING, 5000, 0.006]]) -# MemberHinge(20, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_DIAGRAM, [MemberHingeDiagramType.DIAGRAM_ENDING_TYPE_CONTINUOUS, MemberHingeDiagramType.DIAGRAM_ENDING_TYPE_CONTINUOUS, [[1,2, 3], [3,4, 5]]]]) -# MemberHinge(21, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1, [0.5]]) -# MemberHinge(22, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1_2, [0.6]]) -# MemberHinge(23, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_2, [0.7]]) -# MemberHinge(24, "Local", "", translational_release_vz=0, translational_release_vz_nonlinearity=[MemberHingeNonlineartiy.NONLINEARITY_TYPE_FRICTION_DIRECTION_1_PLUS_2, [0.8, 0.9]]) - - -# MemberResultIntermediatePoint(1, "", 5) -## MemberResultIntermediatePoint(2, "", 2, False, [[0.3], [0.6]]) - -# MemberSupport() -# MemberSupport(2, '', 1,2, [inf, MemberSupportNonlinearity.NONLINEARITY_FAILURE_IF_NEGATIVE_CONTACT_STRESS_Z], 3, 4, 5, 6) - -# MemberEccentricity() - -# MemberNonlinearity() - - -MemberStiffnessModification() - -Model.clientModel.service.finish_modification() -