summaryrefslogtreecommitdiff
path: root/Connections/Shear/Finplate/finPlateCalc.py
diff options
context:
space:
mode:
Diffstat (limited to 'Connections/Shear/Finplate/finPlateCalc.py')
-rw-r--r--Connections/Shear/Finplate/finPlateCalc.py240
1 files changed, 0 insertions, 240 deletions
diff --git a/Connections/Shear/Finplate/finPlateCalc.py b/Connections/Shear/Finplate/finPlateCalc.py
deleted file mode 100644
index 7a8acc9..0000000
--- a/Connections/Shear/Finplate/finPlateCalc.py
+++ /dev/null
@@ -1,240 +0,0 @@
-'''
-Created on 07-Aug-2014
-
-@author: subhrajit
-'''
-
-import math
-from model import *
-from PyQt4.Qt import QString
-import logging
-flag = 1
-logger = None
-
-def module_setup():
-
- global logger
- logger = logging.getLogger("osdag.finPlateCalc")
-
-module_setup()
-
-def finConn(uiObj):
- global flag
- global logger
- '''(Dictionary) --> Dictionary
- '''
-
- beam_sec = uiObj['Member']['beamSection']
- column_sec = uiObj['Member']['columSection']
- connectivity = uiObj['Member']['connectivity']
- f_u = uiObj['Member']['fu(MPa)']
- f_y = uiObj['Member']['fy(MPa)']
-
- F = uiObj['Load']['shearForce(kN)']
-
- bolt_dia = uiObj['Bolt']['diameter(mm)']
- bolt_type = uiObj["Bolt"]["type"]
- bolt_grade = uiObj['Bolt']['grade']
-
- plate_thk = uiObj['Plate']['thickness(mm)']
- plate_width = uiObj['Plate']['width(mm)']
- plate_len = uiObj['Plate']['height(mm)']
-
- weld_thk = uiObj["Weld"]['size(mm)']
- FOS_u = 1.25
- FOS_n = 1.1
- k_b = 0.5
- dictbeamdata = get_beamdata(beam_sec)
- print dictbeamdata
- t_wb = float(dictbeamdata[QString("tw")])
- d_web_b = float(dictbeamdata[QString("D")])
- mu_f = 0.55
-
- #------- tw of beamt_wb = 8.9 # Thickness of web of the connected member ISMB 400
- #-----D of beam d_web_b = 380 #column Clear depth of web of the connected member ISMB 400
- no_row_b = 3
- no_col_b = 1
-#------------------------------------------------------------------------------
- #---------------------------------------------------------- # Fin plate data
- #------------------------------------------------------------ plate_thk = 10
- #--------------------------------------------------------- plate_width = 100
- #----------------------------------------------------------- plate_len = 300
-#------------------------------------------------------------------------------
- #------------------------------------------------------------------- F = 140
- # your calculations
- '''
- Design of bolts
- '''
- logger.info("Starting Design Calculations ")
- # Shearing capacity of bolt
- V_dsb = (0.78*math.pi*bolt_dia**2/4 * math.floor(float(bolt_grade))*100)/(math.sqrt(3)*1000*FOS_u)
- V_dsb = round(V_dsb,3)
-
-
- # Bearing capacity of bolt
- V_dpb = 2.5*k_b*bolt_dia*t_wb*f_u/(FOS_u*1000)
- V_dpb = round(V_dpb,3)
- if V_dsb > V_dpb:
- V_db = V_dpb
- else:
- V_db = V_dsb
-
- #number of bolts
- no_b = math.ceil(F/V_db)
- if no_b <= 2:
- no_b = 3
-
- # Hole diameter
- if bolt_dia == 12 or bolt_dia == 14:
- dia_h = bolt_dia + 1
- elif bolt_dia == 16 or bolt_dia == 18 or bolt_dia == 20 or bolt_dia == 22 or bolt_dia == 24:
- dia_h = bolt_dia + 2
- else:
- dia_h = bolt_dia + 3
-
- # End and edge distance
- d_edge = 2 * dia_h
- d_end = 2 * dia_h
- if d_edge < 50 or d_end < 50:
- d_edge = 50
- d_end = 50
- else:
- d_edge = math.ceil(d_edge)
- d_end = math.ceil(d_end)
-
- # Web side plate length and width input
- if plate_len == 0:
- plate_len = d_web_b - 60
- elif plate_len > d_web_b - 60:
- logger.error("The length of the plate is more than the available depth of %2.2f mm " % (plate_len))
- print('Re-enter Length')
- plate_width_min = 2*d_end
- if plate_width == 0:
- plate_width_min = 2*d_end
- if plate_width < plate_width_min:
- logger.error(" Plate width is less than the minimum width required of %2.2f mm " % (plate_width_min))
- #print('Re-enter Width')
- #.......................................................................
-
- plate_len_b = plate_len - 2*d_edge # Length available for bolt group
- pitch_min = 1.5*bolt_dia
- pitch = plate_len_b/(no_b-1)
- pitch = round(pitch,3)
- if no_col_b == 1:
- gauge = 0
- else:
- gauge = 50
-
- # Deciding on arrangement of bolts
- no_b_oneline = (plate_len_b//pitch_min) + 1
-
-
-
- if pitch < pitch_min:
- logger.warning("Pitch distance is less than the minimum required")
- #print('Pitch distance is insufficient')
-
-
-
-
- #.......................................................................
- '''
- Web side plate design
- '''
-
- #if plate_len > d_web_b:
- #print('Reselect the length of plate less than depth of the connected web')
-
- thk_min = round((5*F*1000)/(f_y*plate_len),3)
-
- if thk_min > plate_thk:
- logger.error("The selected thickness of finplate is less than the minimun required")
- flag = 0
- #print('Thickness of fin plate is insufficient')
-
- #d_clear = 20
- x = int(no_b//2)
- M_ext = 0
- for i in range(1,x+1):
- if no_b%2 == 1:
- M_ext += 2*(i*(pitch**2)/pitch)*V_dsb
- elif no_b%2 == 0:
- M_ext = i*((pitch/2)**2)/(pitch/2)*V_dsb
- M_ext = round(M_ext/1000,3)
- #print(M_ext)
-
- M_cap = 1.2*(f_y/FOS_n)*(plate_thk*plate_len**2)/(6*1000)
- M_cap = round(M_cap/(1000),3)
- #print(M_cap)
-
- if M_cap < M_ext:
-
- logger.error("The flexural moment capacity of the finplate is less than the external moment")
- flag = 0
- #print('The plate design is OK')
- #flag = False
-
- '''
- Weld Design
- '''
- # Resultant shear on weld
- l_eff_w = plate_len - 2*weld_thk
- #print(l_eff_w)
- H_sh = (M_ext*6000)/(2*(l_eff_w**2))
- #print(H_sh)
- V_sh = F/float(2*l_eff_w)
- #print(V_sh)
- R_sh = math.sqrt(H_sh**2 + V_sh**2)
- R_sh = round(R_sh,3)
- #print(R_sh)
-
- t_w_ductility = 0.6 * plate_thk / 0.7
- #print(t_w_ductility)
-
- if weld_thk < t_w_ductility:
- thk_weld = int(t_w_ductility)
- else:
- thk_weld = weld_thk
-
- #print(weld_thk)
-
- # Weld strength
- f_wd = f_u/float(math.sqrt(3)*FOS_u)
- #print(f_wd)
- R_nw = f_wd*0.7*weld_thk/1000
- R_nw = round(R_nw,3)
- # End of calculation
-
- outputObj = {}
- outputObj['Bolt'] ={}
- outputObj['Bolt']['shearcapacity'] = V_dsb
- outputObj['Bolt']['bearingcapacity'] = V_dpb
- outputObj['Bolt']['boltcapacity'] = V_db
- outputObj['Bolt']['numofbolts'] = no_b
- outputObj['Bolt']['boltgrpcapacity'] = 0.0
- outputObj['Bolt']['numofrow'] = no_row_b
- outputObj['Bolt']['numofcol'] = no_col_b
- outputObj['Bolt']['pitch'] = pitch
-
- outputObj['Bolt']['enddist'] = d_end
-
- outputObj['Bolt']['edge'] = d_edge
- outputObj['Bolt']['gauge'] = gauge
-
- outputObj['Weld'] = {}
- outputObj['Weld']['thickness'] = thk_weld
- outputObj['Weld']['resultantshear'] = R_sh
- outputObj['Weld']['weldstrength'] = R_nw
-
- outputObj['Plate'] = {}
- outputObj['Plate']['height'] = 0
- outputObj['Plate']['width'] = 0
- outputObj['Plate']['externalmoment'] = M_ext
- outputObj['Plate']['momentcapacity'] = M_cap
-
- if flag != 0:
- logger.info("Design is safe")
- else:
- logger.error("Design is not safe")
- return outputObj
-