def gen_AISCbeams_from_lineSet(lineSet, mat, beamName): '''Return a list with a single AISCbeam generated from all the lines included in lineSet :param lineSet: set of lines to generate one AISCbeam :param mat: material for all beams :param beamName: beam name ''' lstOneBeam = list() lineSet.fillDownwards() lstLin = [l for l in lineSet.lines] beamLength = 0 for l in lstLin: beamLength += l.getLength() print('Member:' + beamName + ', length=' + str(beamLength)) lstOneBeam.append( aisc.Member(name=beamName, section=mat, unbracedLengthX=beamLength, lstLines=lstLin)) lstOneBeam[-1].installULSControlRecorder("element_prop_recorder") return lstOneBeam
def gen_AISCbeams_from_SetLines(setLines, mat, prefName): '''Return a list of AISCbeams generated from each line in setLines :param setLines: set of lines, each line generates one AISCbeam :param mat: material for all beams :param prefName: prefix for the beam names ''' setMng = setLines.getPreprocessor.getSets lstAISCbeams = list() cont = 0 for l in setLines.lines: nmBeam = prefName + str(cont) beamLength = l.getLength() lstAISCbeams.append( aisc.Member(name=nmBeam, section=mat, unbracedLengthX=beamLength, lstLines=[l])) lstAISCbeams[-1].installULSControlRecorder("element_prop_recorder") print('Member:' + nmBeam + ', length=' + str(beamLength)) cont += 1 return lstAISCbeams
inch2meter= 0.0254 MPa2ksi= 0.145038 kN2kips= 0.2248 N2kips= 0.2248e-3 kip2kN= 1.0/kN2kips foot2meter= 0.3048 m2Toin2= 1.0/inch2meter**2 #Materials ## Steel material steel= ASTM_materials.A500 steel.gammaM= 1.00 ## Shape geometry shape= ASTM_materials.HSSShape(steel,'HSS12X10X3/8') ## Steel column column= aisc.Member('column', shape,20.0*foot2meter, kx= 0.8, ky= 0.8, kz= 0.8) ## Load. Pd= 510*kip2kN ## Compressive strength Pu= column.getDesignCompressiveStrength() PuRef= 2309144.43171 #518*kip2kN*1e3 ratio= abs(Pu-PuRef)/PuRef ''' print('Pd= ',Pd/1e3,' kN / (',Pd*N2kips,'kips)') print('Pu= ',Pu/1e3,' kN / (',Pu*N2kips,'kips)') print('PuRef= ',PuRef/1e3,' kN / (',PuRef*N2kips,'kips)') print('ratio= ',ratio) '''
analysis = predefined_solutions.simple_static_linear(steelBeam) ## Shear strength preprocessor.resetLoadCase() preprocessor.getLoadHandler.addToDomain('combULS01') result = analysis.analyze(1) nodes.calculateNodalReactions(True, 1e-7) VMax = -1e23 VMin = -VMax for e in xcTotalSet.elements: VMax = max(VMax, max(e.getV1, e.getV2)) VMin = min(VMin, min(e.getV1, e.getV2)) VMaxRef = -(1.2 * deadLoad + 1.6 * liveLoad) * span / 2.0 ratio1 = abs((VMax - VMaxRef) / VMaxRef) member = aisc.Member('member', shape, unbracedLengthX=span) Aw = member.shape.getAw() AwRef = 3.46 * inch2meter**2 ratio2 = abs((Aw - AwRef) / AwRef) Vu = member.getDesignShearStrength() VuRef = 0.9 * 0.6 * member.shape.steelType.fy * Aw * 1.0 ratio3 = abs((Vu - VuRef) / VuRef) VuRefText = 0.9 * 95.5e3 * kip2kN ratio4 = abs((Vu - VuRefText) / VuRefText) ''' print('VMax= ',VMax/1e3,' kN (', VMax*kN2kips/1e3, 'kips)') print('VMaxRef= ',VMaxRef/1e3,' kN (', VMaxRef*kN2kips/1e3, 'kips)') print('ratio1= ',ratio1) print('t= ', shape.get('t')/inch2meter, 'in') print('Aw= ',Aw*1e4,' cm2')
hws.append(hw) # size = len(hws) i = hws.index(max(hws)) shape = beamLine[i].getElements[0].getProp('crossSection') if beamLine[i].getCentroid().z < h_col: unbracedLengthX = length unbracedLengthZ = h_col unbracedLengthY = length else: unbracedLengthX = 2 unbracedLengthZ = math.sqrt((span/2) ** 2 + dy ** 2) unbracedLengthY = 2 member= aisc.Member(name= beamName, section= shape, unbracedLengthX=unbracedLengthX, unbracedLengthY= unbracedLengthY, unbracedLengthZ=unbracedLengthZ, lstLines= beamLine) # , sectionClassif= aisc.SectionClassif.noncompact) aiscMembers.append(member) for m in aiscMembers: m.installULSControlRecorder(recorderType="element_prop_recorder") # Prepare to exporting reactions def getPointAxes(p): xAxes= ['A','C','E','G'] yAxes= ['1'] j= '1' i= xAxes[int(round(p.x/25,0))] return (j, i)
result = analysis.analyze(1) nodes.calculateNodalReactions(True, 1e-7) MMax = -1e23 MMin = -MMax for e in xcTotalSet.elements: MMax = max(MMax, max(e.getM1, e.getM2)) MMin = min(MMin, min(e.getM1, e.getM2)) MMaxRef = -(1.2 * deadLoad[1] + 1.6 * liveLoad[1]) * span**2 / 8.0 ratio2 = abs((MMax - MMaxRef) / MMaxRef) # Because the beam is continuously braced and compact, only the # yielding limit state applies. uLx = 0.5 # continuosly braced. beam = aisc.Member(l1.name, shape, unbracedLengthX=uLx, unbracedLengthY=span, unbracedLengthZ=span, lstLines=[l1]) Mu = beam.getDesignFlexuralStrength() MuRef = 6.67e3 * kip2kN * foot2meter ratio3 = abs((Mu - MuRef) / MuRef) ''' print('nDiv= ', l1.nDiv) print('span= ', span, ' m(',span/foot2meter,' ft)') print('Iz= ', Iz, ' m4(',Iz/inch2meter**4,' in4)') print('E= ', E/1e9, ' GPa(',E/1e6*MPa2ksi,' ksi)') print('refD1= ', refD1*1e3, ' mm(',refD1/inch2meter,' in)') print('d1= ', d1*1e3, ' mm(',d1/inch2meter,' in)') print('ratio1= ',ratio1) print('dY= ',d1*1e3,' mm/', d1/inch2meter,' in; ratio= L/', 1/deflection, 'L= ', span, ' m') print('MMaxRef= ',MMaxRef/1e3,' kN m')
## Set combinations to compute. loadCombinations = preprocessor.getLoadHandler.getLoadCombinations ## Limit states to calculate internal forces for. limitStates = [ lsd.normalStressesResistance, # Normal stresses resistance. lsd. shearResistance, # Shear stresses resistance (IS THE SAME AS NORMAL STRESSES, THIS IS WHY IT'S COMMENTED OUT). ] ## Create AISC Member objects. lines = [l1] Lx = l1.getLength() member = aisc.Member(name=l1.name, section=shape, unbracedLengthX=Lx, lstLines=[l1]) aiscMembers = [member] for m in aiscMembers: m.installULSControlRecorder(recorderType="element_prop_recorder") ## Compute internal forces for each combination for ls in limitStates: ls.saveAll(combContainer, xcTotalSet, lstSteelBeams=aiscMembers) outCfg = lsd.VerifOutVars(setCalc=xcTotalSet, appendToResFile='Y', listFile='N', calcMeanCF='Y') limitState = lsd.normalStressesResistance
## Flexural strength preprocessor.resetLoadCase() preprocessor.getLoadHandler.addToDomain('combULS01') result = analysis.analyze(1) nodes.calculateNodalReactions(True, 1e-7) MMax = -1e23 MMin = -MMax for e in xcTotalSet.elements: MMax = max(MMax, max(e.getM1, e.getM2)) MMin = min(MMin, min(e.getM1, e.getM2)) MMaxRef = -1.2 * deadLoad[1] * span**2 / 8.0 - 1.6 * liveLoad[1] * span**2 / 8.0 ratio2 = abs((MMax - MMaxRef) / MMaxRef) beam = aisc.Member(l1.name, shape, unbracedLengthX=l1.getLength(), unbracedLengthY=l1.getLength(), unbracedLengthZ=l1.getLength(), lstLines=[l1]) Mu = beam.getDesignFlexuralStrength(majorAxis=False) MuRef = 165.4965e3 MuRefText = 0.9 * 136e3 * kip2kN * foot2meter ratio3 = abs((Mu - MuRef) / MuRef) ratio4 = abs((Mu - MuRefText) / MuRefText) ''' print('span= ', span, ' m(',span/foot2meter,' ft)') print('Iy= ', Iy, ' m4(',Iy/inch2meter**4,' in4)') print('E= ', E/1e9, ' GPa(',E/1e6*MPa2ksi,' ksi)') print('refD1= ', refD1*1e3, ' mm(',refD1/inch2meter,' in)') print('d1= ', d1*1e3, ' mm(',d1/inch2meter,' in)') print('ratio1= ',ratio1) print('dY= ',d1*1e3,' mm/', d1/inch2meter,' in; ratio= L/', 1/deflection, 'L= ', span, ' m')
kN2kips = 0.2248 N2kips = 0.2248e-3 kip2kN = 1.0 / kN2kips kip2N = 1e3 * kip2kN foot2meter = 0.3048 m2Toin2 = 1.0 / inch2meter**2 #Materials ## Steel material steel = ASTM_materials.A992 steel.gammaM = 1.00 ## Shape geometry shape = ASTM_materials.WShape(steel, 'W14X99') ## Steel column column = aisc.Member('column', shape, unbracedLengthX=14.0 * foot2meter, Cb=1.0) ## Load. Pd = -400.0 * kip2N Mzd = 250.0 * kip2N * foot2meter Myd = 80.0 * kip2N * foot2meter ## Compressive strength CF = column.getBiaxialBendingEfficiency(Nd=Pd, Myd=Myd, Mzd=Mzd) NcRd = CF[1] # available axial strength. NcRdRef = 1130 * kip2N McRdy = CF[2] # available flexural strength minor axis. McRdz = CF[3] # available flexural strength major axis. ratio1 = abs(CF[0] - 0.9233821660167778) / 0.9233821660167778 ratio2 = abs(NcRd - 5059.76358542e3) / 5059.763585423e3
preprocessor.getLoadHandler.addToDomain('combULS01') result= analysis.analyze(1) nodes.calculateNodalReactions(True,1e-7) MMax= -1e23 MMin= -MMax for e in xcTotalSet.elements: MMax= max(MMax,max(e.getM1, e.getM2)) MMin= min(MMin,min(e.getM1, e.getM2)) MMaxRef= -(1.2*deadLoad[1]+1.6*liveLoad[1])*span**2/8.0 ratio1= abs((MMax-MMaxRef)/MMaxRef) Mp= shape.getPlasticMoment() Mu= Mp worstBeam= None for l in [l1,l2,l3]: beam= aisc.Member(l.name, shape, unbracedLengthX= unbracedLength, unbracedLengthY= span, unbracedLengthZ= span, lstLines= [l]) Mui= beam.getDesignFlexuralStrength() if(Mui<Mu): Mu= min(Mu, Mui) worstBeam= beam Fy= shape.steelType.fy Sz= shape.get('Wzel') Lp= shape.getLp(majorAxis= True) Lr= shape.getLr(majorAxis= True) Cb= worstBeam.getLateralTorsionalBucklingModificationFactor() MuRef= 0.9*Cb*(Mp-(Mp-0.7*Fy*Sz)*((unbracedLength-Lp)/(Lr-Lp))) ratio2= abs((Mu-MuRef)/MuRef) MuRefText= 0.9*339e3*kip2kN*foot2meter ratio3= abs((Mu-MuRefText)/MuRefText) ''' print('MMaxRef= ',MMaxRef/1e3,' kN m')
loadCombinations = preprocessor.getLoadHandler.getLoadCombinations ## Limit states to calculate internal forces for. limitStates = [ lsd.normalStressesResistance, # Normal stresses resistance. lsd. shearResistance, # Shear stresses resistance (IS THE SAME AS NORMAL STRESSES, THIS IS WHY IT'S COMMENTED OUT). ] ## Create AISC Member objects. aiscMembers = list() for l in xcTotalSet.getLines: #Lx= l.getLength() Lx = 0.5 # continuously braced. member = aisc.Member(name=l.name, section=shape, unbracedLengthX=Lx, lstLines=[l]) #member.setControlPoints() member.installULSControlRecorder(recorderType="element_prop_recorder") aiscMembers.append(member) ## Compute internal forces for each combination for ls in limitStates: ls.saveAll(combContainer, xcTotalSet, lstSteelBeams=aiscMembers) ## Check limit state outCfg = lsd.VerifOutVars(setCalc=xcTotalSet, appendToResFile='Y', listFile='N', calcMeanCF='Y') limitState = lsd.shearResistance
inch2meter = 0.0254 MPa2ksi = 0.145038 kN2kips = 0.2248 N2kips = 0.2248e-3 kip2kN = 1.0 / kN2kips foot2meter = 0.3048 m2Toin2 = 1.0 / inch2meter**2 #Materials ## Steel material steel = ASTM_materials.A992 steel.gammaM = 1.00 ## Shape geometry shape = ASTM_materials.WShape(steel, 'W14X90') ## Steel column column = aisc.Member('column', shape, 30.0 * foot2meter, kx=0.5, ky=0.5) ## Load. Pd = 840e3 * kip2kN ## Compressive strength Pu = column.getDesignCompressiveStrength() PuRef = 4179269.12295 # 929*kip2kN*1e3 ratio = abs(Pu - PuRef) / PuRef ''' print('Pd= ',Pd/1e3,' kN / (',Pd*N2kips,'kips)') print('Pu= ',Pu/1e3,' kN / (',Pu*N2kips,'kips)') print('PuRef= ',PuRef/1e3,' kN / (',PuRef*N2kips,'kips)') print('ratio= ',ratio) '''
loadCombinations = preprocessor.getLoadHandler.getLoadCombinations ### Limit states to calculate internal forces for. limitState = lsd.vonMisesStressResistance limitState.vonMisesStressId = 'avg_von_mises_stress' limitStates = [limitState] ### Compute internal forces for each combination for ls in limitStates: ls.saveAll(combContainer, setCalc) ### Check material resistance. outCfg = lsd.VerifOutVars(setCalc=setCalc, appendToResFile='N', listFile='N', calcMeanCF='Y') limitState.controller = aisc.VonMisesStressController(limitState.label) average = limitState.runChecking(outCfg) from postprocess import output_handler oh = output_handler.OutputHandler(modelSpace) oh.displayFEMesh() oh.displayField(limitStateLabel=limitState.label, section=None, argument='CF', component=None, setToDisplay=None, fileName=None) oh.displayLoads() #oh.displayDispRot('uY') #oh.displayStrains('epsilon_xx') #oh.displayStresses('sigma_11')
inch2meter = 0.0254 MPa2ksi = 0.145038 kN2kips = 0.2248 N2kips = 0.2248e-3 kip2kN = 1.0 / kN2kips foot2meter = 0.3048 m2Toin2 = 1.0 / inch2meter**2 #Materials ## Steel material steel = ASTM_materials.A992 steel.gammaM = 1.00 ## Shape geometry shape = ASTM_materials.WShape(steel, 'W14X132') ## Steel column column = aisc.Member('column', shape, 30.0 * foot2meter) ## Load. Pd = 840e3 * kip2kN ## Compressive strength Pu = column.getDesignCompressiveStrength() PuRef = 4098332.2632 # 893*kip2kN*1e3 ratio = abs(Pu - PuRef) / PuRef ''' print('Pd= ',Pd/1e3,' kN / (',Pd*N2kips,'kips)') print('Pu= ',Pu/1e3,' kN / (',Pu*N2kips,'kips)') print('PuRef= ',PuRef/1e3,' kN / (',PuRef*N2kips,'kips)') print('ratio= ',ratio) '''