Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions RFEM/BasicObjects/surface.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from RFEM.enums import SurfaceGeometry, SurfaceLoadTransferDirection, SurfaceType
from RFEM.enums import SurfaceGeometry, SurfaceLoadDistributionDirection, SurfaceType
from RFEM.initModel import Model, clearAtributes, ConvertToDlString

class Surface():
Expand Down Expand Up @@ -288,7 +288,7 @@ def WithoutMemberaneTension(self,
def LoadTransfer(self,
no: int = 1,
boundary_lines_no: str = '1 2 3 4',
load_transfer_direction = SurfaceLoadTransferDirection.LOAD_TRANSFER_DIRECTION_IN_X,
load_transfer_direction = SurfaceLoadDistributionDirection.LOAD_TRANSFER_DIRECTION_IN_X,
surface_weight_enabled: bool = False,
surface_weight: float = None,
excluded_members = None,
Expand Down
65 changes: 65 additions & 0 deletions RFEM/ConcreteDesign/ConcreteServiceabilityConfigurations.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
from RFEM.initModel import Model, clearAtributes, ConvertToDlString
from RFEM.enums import *

class ConcreteServiceabilityConfiguration():

def __init__(self,
no: int = 1,
name: str = 'SLS',
members = '1',
member_sets = '',
surfaces = '',
surface_sets = '',
nodes = '',
comment: str = '',
params: dict = {}):
"""
Args:
no (int): Configuration Tag
name (str): User Defined Name
members (str): Assigned Members
member_sets (str): Assigned Member Sets
surfaces (str): Assigned Surfaces
surface_sets (str): Assigned Surface Sets
nodes (str): Assigned Nodes
comment (str, optional): Comment
params (dict, optional): Parameters
"""

# Client model | Concrete Durabilities
clientObject = Model.clientModel.factory.create('ns0:sls_configuration')

# Clears object atributes | Sets all atributes to None
clearAtributes(clientObject)

# Concrete Durability No.
clientObject.no = no

# User Defined Name
clientObject.user_defined_name_enabled = True
clientObject.name = name

# Assigned Members
clientObject.assigned_to_members = ConvertToDlString(members)

# Assigned Member Sets
clientObject.assigned_to_member_sets = ConvertToDlString(member_sets)

# Assigned Surfaces
clientObject.assigned_to_surfaces = ConvertToDlString(surfaces)

# Assigned Surface Sets
clientObject.assigned_to_surface_sets = ConvertToDlString(surface_sets)

#Assinged Nodes
clientObject.assigned_to_nodes = ConvertToDlString(nodes)

# Comment
clientObject.comment = comment

# Adding optional parameters via dictionary
for key in params:
clientObject[key] = params[key]

# Add Global Parameter to client model
Model.clientModel.service.set_sls_configuration(clientObject)
65 changes: 65 additions & 0 deletions RFEM/ConcreteDesign/ConcreteUltimateConfigurations.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
from RFEM.initModel import Model, clearAtributes, ConvertToDlString
from RFEM.enums import *

class ConcreteUltimateConfiguration():

def __init__(self,
no: int = 1,
name: str = 'ULS',
members = '1',
member_sets = '',
surfaces = '',
surface_sets = '',
nodes = '',
comment: str = '',
params: dict = {}):
"""
Args:
no (int): Configuration Tag
name (str): User Defined Name
members (str): Assigned Members
member_sets (str): Assigned Member Sets
surfaces (str): Assigned Surfaces
surface_sets (str): Assigned Surface Sets
nodes (str): Assigned Nodes
comment (str, optional): Comment
params (dict, optional): Parameters
"""

# Client model | Concrete Durabilities
clientObject = Model.clientModel.factory.create('ns0:uls_configuration')

# Clears object atributes | Sets all atributes to None
clearAtributes(clientObject)

# Concrete Durability No.
clientObject.no = no

# User Defined Name
clientObject.user_defined_name_enabled = True
clientObject.name = name

# Assigned Members
clientObject.assigned_to_members = ConvertToDlString(members)

# Assigned Member Sets
clientObject.assigned_to_member_sets = ConvertToDlString(member_sets)

# Assigned Surfaces
clientObject.assigned_to_surfaces = ConvertToDlString(surfaces)

# Assigned Surface Sets
clientObject.assigned_to_surface_sets = ConvertToDlString(surface_sets)

#Assinged Nodes
clientObject.assigned_to_nodes = ConvertToDlString(nodes)

# Comment
clientObject.comment = comment

# Adding optional parameters via dictionary
for key in params:
clientObject[key] = params[key]

# Add Global Parameter to client model
Model.clientModel.service.set_uls_configuration(clientObject)
1 change: 1 addition & 0 deletions RFEM/ConcreteDesign/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

173 changes: 173 additions & 0 deletions RFEM/TypesforConcreteDesign/ConcreteDurability.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
from RFEM.initModel import Model, clearAtributes, ConvertToDlString
from RFEM.enums import DurabilityStructuralClassType, DurabilityAllowanceDeviationType

class ConcreteDurability():
def __init__(self,
no: int = 1,
name: str = "XC 1",
members_no: str = "1",
member_sets_no: str = "1",
surfaces_no: str = "1",
exposure_classes_reinforcement = [True, False, False, False],
exposure_classes_reinforcement_types = [],
exposure_classes_concrete = [False, False, False],
exposure_classes_concrete_types = [],
structural_class = [DurabilityStructuralClassType.STANDARD, False, False, False, False],
stainless_steel_reduction = [False],
additional_protection_reduction = [False],
allowance_deviation = [DurabilityAllowanceDeviationType.STANDARD, False],
comment: str = '',
params: dict = {}):
"""
Args:
no (int): Concrete Durability Tag
name (str): User Defined Name
members_no (str): Assigned Members
member_sets_no (str): Assigned Member Sets
surfaces_no (str): Assigned Surfaces
exposure_classes_reinforcement (list): Exposure Classes Reinforcement Parameters
exposure_classes_reinforcement_types (list): Exposure Classes Reinforcement Parameters
exposure_classes_concrete (list): Exposure Classes Concrete Parameters
exposure_classes_concrete_types (list): Exposure Classes Concrete Parameters
structural_class (list): Structural Class Parameters
stainless_steel_reduction (list): Stainless Steel Reduction Parameters
additional_protection_reduction (list): Additional Protection Reduction
allowance_deviation (list): Allowance Deviation Parameters
comment (str, optional): Comments
params (dict, optional): Parameters
"""

# Client model | Concrete Durabilities
clientObject = Model.clientModel.factory.create('ns0:concrete_durability')

# Clears object atributes | Sets all atributes to None
clearAtributes(clientObject)

# Concrete Durability No.
clientObject.no = no

# User Defined Name
clientObject.user_defined_name_enabled = True
clientObject.name = name

# Assigned Members
clientObject.members = ConvertToDlString(members_no)

# Assigned Member Sets
clientObject.member_sets = ConvertToDlString(member_sets_no)

# Assigned Surfaces
clientObject.surfaces = ConvertToDlString(surfaces_no)

# Exposure Classes for Reinforcement
clientObject.no_risk_of_corrosion_or_attack_enabled = exposure_classes_reinforcement[0]
clientObject.corrosion_induced_by_carbonation_enabled = exposure_classes_reinforcement[1]
clientObject.corrosion_induced_by_chlorides_enabled = exposure_classes_reinforcement[2]
clientObject.corrosion_induced_by_chlorides_from_sea_water_enabled = exposure_classes_reinforcement[3]

if all(exposure_classes_reinforcement):
raise Exception("WARNING: At least one reinforcement exposure class must be selected.")

for i in exposure_classes_reinforcement:
if not isinstance(i, bool):
raise Exception('WARNING: The type of parameters should be bool. Kindly check list inputs for completeness and correctness.')

if exposure_classes_reinforcement[0]:
clientObject.no_risk_of_corrosion_or_attack = "VERY_DRY"
for i in exposure_classes_reinforcement[1:]:
if i:
raise Exception('WARNING: If No Risk of Corrosion is True, other parameters cannot be selected. Kindly check list inputs for completeness and correctness.')

if exposure_classes_reinforcement[1] :
clientObject.corrosion_induced_by_carbonation = exposure_classes_reinforcement_types[0].name
if exposure_classes_reinforcement[2]:
clientObject.corrosion_induced_by_chlorides = exposure_classes_reinforcement_types[1].name
if exposure_classes_reinforcement[3]:
clientObject.corrosion_induced_by_chlorides_from_sea_water = exposure_classes_reinforcement_types[2].name

# Exposure Classes for Concrete
for i in exposure_classes_concrete:
if not isinstance(i, bool):
raise Exception('WARNING: The type of parameters should be bool. Kindly check list inputs for completeness and correctness.')

if exposure_classes_concrete[0]:
clientObject.freeze_thaw_attack_enabled = True
clientObject.freeze_thaw_attack = exposure_classes_concrete_types[0].name
if exposure_classes_concrete[1]:
clientObject.chemical_attack_enabled = True
clientObject.chemical_attack = exposure_classes_concrete_types[1].name
if exposure_classes_concrete[2]:
clientObject.concrete_corrosion_induced_by_wear_enabled = True
clientObject.concrete_corrosion_induced_by_wear = exposure_classes_concrete_types[2].name

# Structural Class
clientObject.structural_class_type = structural_class[0].name

if structural_class[0].name == "STANDARD":
for i in structural_class[1:]:
if not isinstance(i, bool):
raise Exception('WARNING: The type of last three parameters should be bool. Kindly check list inputs for completeness and correctness.')

clientObject.increase_design_working_life_from_50_to_100_years_enabled = structural_class[1]
clientObject.position_of_reinforcement_not_affected_by_construction_process_enabled = structural_class[2]
clientObject.special_quality_control_of_production_enabled = structural_class[3]
clientObject.air_entrainment_of_more_than_4_percent_enabled = structural_class[4]
elif structural_class[0].name == "DEFINED":
clientObject.userdefined_structural_class = structural_class[1].name

# Stainless Steel Concrete Cover Reduction
clientObject.stainless_steel_enabled = stainless_steel_reduction[0]

if not isinstance(stainless_steel_reduction[0], bool):
raise Exception('WARNING: The type of the first parameter should be bool. Kindly check list inputs for completeness and correctness.')

if stainless_steel_reduction[0]:
clientObject.stainless_steel_type = stainless_steel_reduction[1].name

if stainless_steel_reduction[1].name == "DEFINED":
clientObject.stainless_steel_factor = stainless_steel_reduction[2]

# Additional Protection Concrete Cover Reduction
clientObject.additional_protection_enabled = additional_protection_reduction[0]

if not isinstance(additional_protection_reduction[0], bool):
raise Exception('WARNING: The type of the first parameter should be bool. Kindly check list inputs for completeness and correctness.')

if additional_protection_reduction[0]:
clientObject.additional_protection_type = additional_protection_reduction[1].name

if additional_protection_reduction[1].name == "DEFINED":
clientObject.additional_protection_factor = additional_protection_reduction[2]

# Allowance for Deviation
clientObject.allowance_of_deviation_type = allowance_deviation[0].name

if allowance_deviation[0].name == "STANDARD":
clientObject.concrete_cast_enabled = allowance_deviation[1]

if not isinstance(allowance_deviation[1], bool):
raise Exception('WARNING: The type of the second parameter should be bool. Kindly check list inputs for completeness and correctness.')

if allowance_deviation[1]:
clientObject.concrete_cast = allowance_deviation[2].name

elif allowance_deviation[0].name == "DEFINED":
clientObject.userdefined_allowance_of_deviation_factor = allowance_deviation[1]

# Comment
clientObject.comment = comment

# Adding optional parameters via dictionary
for key in params:
clientObject[key] = params[key]

# Add Global Parameter to client model
Model.clientModel.service.set_concrete_durability(clientObject)








Loading