diff options
Diffstat (limited to 'Connections/Shear/Finplate/finPlateCalc.py')
-rw-r--r-- | Connections/Shear/Finplate/finPlateCalc.py | 240 |
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 - |