def getFlangeBoltedPlate(self, boltSteel, plateSteel=ASTM_materials.A36, lbls=None): ''' Return a suitable bolted plate for the beam flange. :param boltSteel: steel type of the bolts that connect the plate with the flange. :param plateSteel: steel type of the bolted plate. ''' flangeStrength = self.shape.getFlangeYieldStrength() bolt = self.shape.getFlangeMaximumBolt(steelType=boltSteel) numberOfBolts = bolt.getNumberOfBoltsForShear(flangeStrength, numberOfRows=2, threadsExcluded=True) spacing = self.shape.getFlangeWidth() / 2.0 boltArray = ASTM_materials.BoltArray(bolt, nRows=2, nCols=int(numberOfBolts / 2), dist=spacing) thicknessRatio = max(self.shape.steelType.fy / plateSteel.fy, self.shape.steelType.fu / plateSteel.fu) plateThickness = round( thicknessRatio * self.shape.getFlangeThickness() * 1000, 0) / 1000 retval = ASTM_materials.BoltedPlate(boltArray, width=self.shape.getFlangeWidth(), thickness=plateThickness, steelType=plateSteel) print('plate thickness: ', plateThickness * 1e3, ' mm') return retval
def setFromDict(self, dct): ''' Read member values from a dictionary.''' self.N = dct['N'] self.offsetN = dct['offsetN'] self.B = dct['B'] self.offsetB = dct['offsetB'] self.t = dct['t'] steelClassName = dct['steelClassName'] + '()' self.steel = eval(steelClassName) self.steel.setFromDict(dct['steel']) if dct['steelShapeClassName'] == "materials.astm_aisc.ASTM_materials.IShape": shape = dct['steelShape']['shape'] bf = shape['b'] tf = shape['tf'] tw = shape['tw'] hw = shape['hi'] name = shape['name'] steelShapeClassName = f"{dct['steelShapeClassName']}({bf}, {tf}, {tw}, {hw}, steel=self.steel, name='{name}')" else: steelShapeClassName = dct['steelShapeClassName'] + '()' self.steelShape = eval(steelShapeClassName) self.steelShape.setFromDict(dct['steelShape']) self.anchorGroup = ASTM_materials.AnchorGroup(steel=None, diameter=0.0, positions=[]) self.anchorGroup.setFromDict(dct['anchorGroup']) xyz = dct['origin'] self.origin = geom.Pos3d(xyz[0], xyz[1], xyz[2]) self.fc = dct['fc'] self.nShearBolts = dct['nShearBolts']
def apply_nonPrismatic_section(sets, bf, tf, tw, hw_min, hw_max, \ material, prep, element_handler): # dia_bounds = { # 'x': ['dia_bound.x', 'l_center.x', 'bnd.getZMin'], # 'y': ['dia_bound.y', 'l_center.y', 'bnd.getZMin'], # 'z': ['dia_bound.z', 'l_center.z', 'bnd.getZMin'], # } dhw = hw_max - hw_min for Set in sets: bnd = Set.lines.getBnd() dz = bnd.diagonal.z zmin = bnd.getZMin for line in Set.getLines: z_line = line.getCentroid().z percent = abs(z_line - zmin) / dz average_hw = hw_min + percent * dhw assert average_hw > 0 # lines_len += l isection = ASTM_materials.IShape(bf, tf, tw, average_hw, material, f"Wisection{line.tag}") xc_material= isection.defElasticShearSection3d(prep) element_handler.defaultMaterial = xc_material.name element_handler.newElement('ElasticBeam3d', xc.ID([0,0])) line.genMesh(xc.meshDir.I) for e in line.getElements: e.setProp('crossSection',isection) Set.fillDownwards()
def getFilletMaximumLeg(self, otherThickness): ''' Return the minimum leg size for a fillet bead according to table J2.4 of AISC 360. :param otherThickness: thickness of the other part to weld. ''' return ASTM_materials.getFilletWeldMaximumLegSheets(self.t, otherThickness)
def getBoltedPlateTemplate(self): ''' Return the blocks corresponding to the plate bolted to the gusset plate. ''' # Create bolted plate. boltedPlate = ASTM_materials.BoltedPlate() boltedPlate.setFromDict(self.boltedPlateTemplate.getDict()) boltedPlate.eccentricity = geom.Vector2d(.025, 0.0) boltedPlate.length += .05 return boltedPlate
def getAnchorGroup(steel, diameter, squareSide, xCenter=0.0, yCenter=0.0): ''' Return four anchors in the corners of the square.''' delta = squareSide / 2.0 origin = geom.Pos3d(xCenter, yCenter, 0.0) positions = list() positions.append(origin + geom.Vector3d(delta, delta, 0.0)) positions.append(origin + geom.Vector3d(-delta, delta, 0.0)) positions.append(origin + geom.Vector3d(-delta, -delta, 0.0)) positions.append(origin + geom.Vector3d(delta, -delta, 0.0)) return ASTM_materials.AnchorGroup(steel, diameter, positions)
def setFromDict(self,dct): ''' Read member values from a dictionary.''' self.N= dct['N'] self.offsetN= dct['offsetN'] self.B= dct['B'] self.offsetB= dct['offsetB'] self.t= dct['t'] steelShapeClassName= dct['steelShapeClassName']+'()' self.steelShape= eval(steelShapeClassName) self.steelShape.setFromDict(dct['steelShape']) self.anchorGroup= ASTM_materials.AnchorGroup(steel= None, diameter= 0.0, positions= []) self.anchorGroup.setFromDict(dct['anchorGroup']) steelClassName= dct['steelClassName']+'()' self.steel= eval(steelClassName) self.steel.setFromDict(dct['steel']) xyz= dct['origin'] self.origin= geom.Pos3d(xyz[0],xyz[1],xyz[2]) self.fc= dct['fc'] self.nShearBolts= dct['nShearBolts']
kip2kN = 1.0 / kN2kips foot2meter = 0.3048 m2Toin2 = 1.0 / inch2meter**2 # Problem type steelBeam = xc.FEProblem() steelBeam.title = 'Example G.1A' preprocessor = steelBeam.getPreprocessor nodes = preprocessor.getNodeHandler #Materials ## Steel material steel = ASTM_materials.A992 steel.gammaM = 1.00 ## Profile geometry shape = ASTM_materials.WShape(steel, 'W24X62') xcSection = shape.defElasticShearSection2d(preprocessor) # Model geometry ## Points. span = 35.0 * foot2meter pointHandler = preprocessor.getMultiBlockTopology.getPoints p0 = pointHandler.newPntFromPos3d(geom.Pos3d(0.0, 0.0, 0.0)) p1 = pointHandler.newPntFromPos3d(geom.Pos3d(span, 0.0, 0.0)) ## Lines lineHandler = preprocessor.getMultiBlockTopology.getLines l1 = lineHandler.newLine(p0.tag, p1.tag) l1.nDiv = 10
N=N, t=t, steelShape=steelShape, anchorGroup=anchorGroup, steel=steel, fc=fc, origin=p) self.nShearBolts = len(positions) # Use welded washers # Materials steel_W = ASTM_materials.A36 #steel support W shapes steel_W.fy = 240e6 steel_W.gammaM = 1.00 # steelShape= ASTM_materials.WShape(steel_W,'W18X192') steelShape = ASTM_materials.IShape(.2, .012, .008, .2, steel_W, name="W18X76") fc = 25e6 # Minimum concrete compressive strength # Anchors boltDiameter = 24e-3 ## Positions positions = list() x1 = .075 y1 = .05 positions.append(geom.Pos3d(x1, y1, 0.0)) positions.append(geom.Pos3d(x1, -y1, 0.0)) positions.append(geom.Pos3d(-x1, -y1, 0.0)) positions.append(geom.Pos3d(-x1, y1, 0.0)) rodMaterial = ASTM_materials.F1554gr36 #rodMaterial= ASTM_materials.F1554gr55
kip2kN = 1.0 / kN2kips foot2meter = 0.3048 m2Toin2 = 1.0 / inch2meter**2 # Problem type steelBeam = xc.FEProblem() steelBeam.title = 'Example F.2-1B' preprocessor = steelBeam.getPreprocessor nodes = preprocessor.getNodeHandler #Materials ## Steel material steel = ASTM_materials.A36 steel.gammaM = 1.00 ## Profile geometry shape = ASTM_materials.CShape(steel, 'C15X33.9') xcSection = shape.defElasticShearSection2d(preprocessor) # Model geometry ## Points. span = 25.0 * foot2meter pointHandler = preprocessor.getMultiBlockTopology.getPoints p0 = pointHandler.newPntFromPos3d(geom.Pos3d(0.0, 0.0, 0.0)) p1 = pointHandler.newPntFromPos3d(geom.Pos3d(span, 0.0, 0.0)) ## Lines lineHandler = preprocessor.getMultiBlockTopology.getLines l1 = lineHandler.newLine(p0.tag, p1.tag) l1.nDiv = 10
for p in newPnts: pntTags.append(p.tag) pFace = surfaces.newPolygonalFacePts(pntTags) return pFace p1 = geom.Pos3d(-1.5950, -2.0450, 0) p2 = geom.Pos3d(-1.4376, -2.0450, 0) p3 = geom.Pos3d(-1.4376, -1.8140, 0) p4 = geom.Pos3d(-1.5290, -1.7734, 0) p5 = geom.Pos3d(-1.5950, -1.7734, 0) bolts = list() boltDiameter = 0.016 bolts.append( ASTM_materials.BoltFastener(diameter=boltDiameter, pos3d=geom.Pos3d(-1.4909, -1.8724, 0.0))) bolts.append( ASTM_materials.BoltFastener(diameter=boltDiameter, pos3d=geom.Pos3d(-1.4706, -1.8267, 0.0))) bolts.append( ASTM_materials.BoltFastener(diameter=boltDiameter, pos3d=geom.Pos3d(-1.5163, -1.8064, 0.0))) bolts.append( ASTM_materials.BoltFastener(diameter=boltDiameter, pos3d=geom.Pos3d(-1.5366, -1.8521, 0.0))) # Test paving routine inside XC modeler. ## Problem type feProblem = xc.FEProblem() preprocessor = feProblem.getPreprocessor
__author__= "Ana Ortega (AO_O) and Luis C. Pérez Tato (LCPT)" __copyright__= "Copyright 2020, AO_O and LCPT" __license__= "GPL" __version__= "3.0" __email__= " [email protected], [email protected]" from materials.astm_aisc import ASTM_materials in2m= 0.0254 MPa2ksi= 0.145038 kN2kips= 0.2248 kNm2kipsft= 0.737562121169657 m2Toin2= 1.0/in2m**2 steel= ASTM_materials.A500 hss= ASTM_materials.HSSShape(steel,'HSS8X8X3/16') connection= ASTM_materials.MemberConnection(L= 3.5052) member= ASTM_materials.MemberWithEndConnections(hss,connection) Pd= -258.9561299844e3 k= member.connection.getEffectiveBucklingLengthCoefficientRecommended() lambda_r= member.shape.getLambdaRCompression() bClassification= member.shape.getBClassification() hClassification= member.shape.getHClassification() h_eff= member.shape.getReducedEffectiveH() b_eff= member.shape.getReducedEffectiveB() A_eff= member.shape.getEffectiveArea() sr= member.getSlendernessRatio() Fe= member.getElasticBucklingStress() Fcr= member.getCriticalStress() Pn= member.getNominalCompressiveStrength()
from __future__ import division from __future__ import print_function ''' Steel bolts according to AISC 360-16 verification test. Based on the: Example – Design of a Bolted Tension Bearing-Type Connection of the course: Design of Bolts in Shear-BearingConnections per AISC LRFD 3rdEdition (2001) ''' in2m = 25.4e-3 kip2N = 4448.2216 import math from materials.astm_aisc import ASTM_materials bolt = ASTM_materials.BoltFastener(0.75 * in2m, steelType=ASTM_materials.A325) # group A boltArray = ASTM_materials.BoltArray(bolt, nRows=2, nCols=2) boltedPlate = ASTM_materials.BoltedPlate(boltArray, thickness=20e-3, steelType=ASTM_materials.A36) Pd = 121.6 * kip2N CFShear = boltArray.getDesignShearEfficiency(Pd, doubleShear=True) CFCenterDist = boltArray.checkDistanceBetweenCenters() CFthickness = boltedPlate.checkThickness(Pd) minPlateWidth = boltedPlate.getMinWidth() ratio1 = abs(CFShear - 0.85024866348) / 0.85024866348 ratio2 = abs(CFCenterDist - 0.762) / 0.762 ratio3 = abs(CFthickness - 0.867667222586) / 0.867667222586 ''' print('Pd= ', Pd/1e3, 'kN')
from materials.astm_aisc import ASTM_materials in2m = 25.4e-3 kip2N = 4448.2216 psi2Pa = 6894.757 # Concrete fc = 4000 * psi2Pa # Loads Nua = 40 * kip2N # Factored axial load. # Bolt AB105 = ASTM_materials.F1554gr105 anchor = ASTM_materials.AnchorBolt(name='ExampleA4', steel=AB105, diameter=1.125 * in2m) h_ef = 17.57 * in2m d = anchor.diameter Ase = anchor.getTensionEffectiveCrossSectionalArea() ratio1 = abs(Ase - 492.433431069e-6) / 492.433431069e-6 Nsa = anchor.getNominalTensileStrength() ratio2 = abs(Nsa - 424.477617581e3) / 424.477617581e3 # Concrete breakout strenght calculated using # equation (D-8) instead of (D-7) see note # in the example. Ncb = anchor.getNominalConcreteBreakoutStrength(h_ef, fc) ratio3 = abs(Ncb - 534.510669747e3) / 534.510669747 # Concrete pullout strength. Np = anchor.getNominalPulloutStrength(fc)
kip2kN = 1.0 / kN2kips foot2meter = 0.3048 m2Toin2 = 1.0 / inch2meter**2 # Problem type steelBeam = xc.FEProblem() steelBeam.title = 'Example F.6' preprocessor = steelBeam.getPreprocessor nodes = preprocessor.getNodeHandler #Materials ## Steel material steel = ASTM_materials.A500 steel.gammaM = 1.00 ## Profile geometry shape = ASTM_materials.HSSShape(steel, 'HSS3-1/2X3-1/2X1/8') xcSection = shape.defElasticShearSection2d(preprocessor) # Model geometry ## Points. span = 7.0 * foot2meter + 6.0 * inch2meter pointHandler = preprocessor.getMultiBlockTopology.getPoints p0 = pointHandler.newPntFromPos3d(geom.Pos3d(0.0, 0.0, 0.0)) p1 = pointHandler.newPntFromPos3d(geom.Pos3d(span, 0.0, 0.0)) ## Lines lineHandler = preprocessor.getMultiBlockTopology.getLines l1 = lineHandler.newLine(p0.tag, p1.tag) l1.nDiv = 10
from actions import combinations as combs from solution import predefined_solutions # from postprocess import output_handler # Problem type steelColumn = xc.FEProblem() steelColumn.title = 'AISC 360-16 benchmark problem Case 1 (3D PDelta formulation)' preprocessor = steelColumn.getPreprocessor nodes = preprocessor.getNodeHandler #Materials ## Steel material steel = ASTM_materials.A992 steel.gammaM = 1.00 ## Profile geometry shape = ASTM_materials.WShape(steel, 'W14X48') xcSection = shape.defElasticShearSection3d(preprocessor) # Model geometry ## Points. height = 8.53 pointHandler = preprocessor.getMultiBlockTopology.getPoints p0 = pointHandler.newPntFromPos3d(geom.Pos3d(0.0, 0.0, 0.0)) p1 = pointHandler.newPntFromPos3d(geom.Pos3d(0.0, 0.0, height)) ## Lines lineHandler = preprocessor.getMultiBlockTopology.getLines l1 = lineHandler.newLine(p0.tag, p1.tag) l1.nDiv = 6
# -*- coding: utf-8 -*- ''' Test based on example II.A-17 SINGLE-PLATE CONNECTION (CONVENTIONAL – BEAM-TO-COLUMN FLANGE) from the document: Design examples version 14.0. American Institute of Steel Construction. 2011 ''' from __future__ import division from __future__ import print_function in2m = 25.4e-3 kip2N = 4448.2216 import xc_base import geom from materials.astm_aisc import ASTM_materials bolt = ASTM_materials.BoltFastener(0.75 * in2m, steelType=ASTM_materials.A325) # group A boltArray = ASTM_materials.BoltArray(bolt, nRows=4, nCols=1, dist=3 * in2m) eccentr = (4.5 / 2.0 - 1.25) * in2m finPlate = ASTM_materials.FinPlate(boltArray, width=11.5 * in2m, length=4.5 * in2m, thickness=0.25 * in2m, steelType=ASTM_materials.A36, eccentricity=geom.Vector2d(eccentr, 0.0)) Rd = 49.6 * kip2N ## Check bolt strength CFShear = boltArray.getDesignShearEfficiency(Rd, doubleShear=False) loadDir = geom.Vector2d(0.0, -1.0) CF = finPlate.getDesignEfficiency(geom.Vector2d(0.0, -Rd), Ubs=1.0)
kip2kN = 1.0 / kN2kips foot2meter = 0.3048 m2Toin2 = 1.0 / inch2meter**2 # Problem type steelBeam = xc.FEProblem() steelBeam.title = 'Example F.7B' preprocessor = steelBeam.getPreprocessor nodes = preprocessor.getNodeHandler #Materials ## Steel material steel = ASTM_materials.A500 steel.gammaM = 1.00 ## Profile geometry shape = ASTM_materials.HSSShape(steel, 'HSS10X6X3/16') xcSection = shape.defElasticShearSection2d(preprocessor) # Model geometry ## Points. span = 21.0 * foot2meter pointHandler = preprocessor.getMultiBlockTopology.getPoints p0 = pointHandler.newPntFromPos3d(geom.Pos3d(0.0, 0.0, 0.0)) p1 = pointHandler.newPntFromPos3d(geom.Pos3d(span, 0.0, 0.0)) ## Lines lineHandler = preprocessor.getMultiBlockTopology.getLines l1 = lineHandler.newLine(p0.tag, p1.tag) l1.nDiv = 10
of the course: Design of Bolts in Shear-BearingConnections per AISC LRFD 3rdEdition (2001) ''' __author__ = "Luis C. Pérez Tato (LCPT) and Ana Ortega (AOO)" __copyright__ = "Copyright 2020, LCPT and AOO" __license__ = "GPL" __version__ = "3.0" __email__ = "*****@*****.**" in2m = 25.4e-3 kip2N = 4448.2216 import math from materials.astm_aisc import ASTM_materials bolt = ASTM_materials.BoltFastener(0.75 * in2m, steelType=ASTM_materials.A325) # group A designShearStrength = 2.0 * bolt.getDesignShearStrength() # double shear designShearStrengthRef = 159.042810002e3 #31.8*kip2N ratio1 = abs(designShearStrength - designShearStrengthRef) / designShearStrengthRef Pd = 121.6 * kip2N n = math.ceil(Pd / designShearStrength) centersDist = bolt.getRecommendedDistanceBetweenCenters() minEdgeDist = bolt.getMinimumEdgeDistance() minWidth = 2.0 * minEdgeDist + centersDist netWidth = minWidth - 2.0 * bolt.getNominalHoleDiameter() # Yielding in the gross section. minThicknessA = Pd / 0.9 / ASTM_materials.A36.fy / minWidth # Tension fracture in the net section. minThicknessB = Pd / 0.75 / ASTM_materials.A36.fu / netWidth
def getLegMaxSize(self): ''' Return the maximum leg size of the weld.''' t1 = self.memberToWeld.getProp('thickness') t2 = self.face.getProp('thickness') return ASTM_materials.getFilletWeldMaximumLegSheets(t1, t2)
from model import predefined_spaces from actions import load_cases from solution import predefined_solutions # Problem type steelBeam = xc.FEProblem() steelBeam.title = 'Self weight test' preprocessor = steelBeam.getPreprocessor nodes = preprocessor.getNodeHandler #Materials ## Steel material steel = ASTM_materials.A992 steel.gammaM = 1.00 ## Profile geometry shape = ASTM_materials.WShape(steel, 'W18X50') xcSection = shape.defElasticShearSection3d(preprocessor) # Model geometry ## Points. span = 10.0 pointHandler = preprocessor.getMultiBlockTopology.getPoints p0 = pointHandler.newPntFromPos3d(geom.Pos3d(0.0, 0.0, 0.0)) p1 = pointHandler.newPntFromPos3d(geom.Pos3d(span, 0.0, 0.0)) ## Lines lineHandler = preprocessor.getMultiBlockTopology.getLines l1 = lineHandler.newLine(p0.tag, p1.tag) l1.nDiv = 2
kip2kN = 1.0 / kN2kips foot2meter = 0.3048 m2Toin2 = 1.0 / inch2meter**2 # Problem type steelBeam = xc.FEProblem() steelBeam.title = 'Example F.5' preprocessor = steelBeam.getPreprocessor nodes = preprocessor.getNodeHandler #Materials ## Steel material steel = ASTM_materials.A992 steel.gammaM = 1.00 ## Profile geometry shape = ASTM_materials.WShape(steel, 'W12X58') xcSection = shape.defElasticShearSection2d(preprocessor, majorAxis=False) # Model geometry ## Points. span = 15.0 * foot2meter pointHandler = preprocessor.getMultiBlockTopology.getPoints p0 = pointHandler.newPntFromPos3d(geom.Pos3d(0.0, 0.0, 0.0)) p1 = pointHandler.newPntFromPos3d(geom.Pos3d(span, 0.0, 0.0)) ## Lines lineHandler = preprocessor.getMultiBlockTopology.getLines l1 = lineHandler.newLine(p0.tag, p1.tag) l1.nDiv = 10
__author__ = "Ana Ortega (AO_O) and Luis C. Pérez Tato (LCPT)" __copyright__ = "Copyright 2020, AO_O and LCPT" __license__ = "GPL" __version__ = "3.0" __email__ = " [email protected], [email protected]" from materials.astm_aisc import ASTM_materials in2m = 0.0254 MPa2ksi = 0.145038 kN2kips = 0.2248 kNm2kipsft = 0.737562121169657 m2Toin2 = 1.0 / in2m**2 steel = ASTM_materials.A500 shape = ASTM_materials.HSSShape(steel, 'HSS8X8X3/16') # Effective section (AISC-360-16 section F7). Ieff = shape.getEffectiveInertia(majorAxis=True) IeffRef = 2.12077901769e-05 Seff = shape.getEffectiveSectionModulus(majorAxis=True) SeffRef = 0.000200922945777 ## Flange local buckling (F7.2) Mn = shape.getFlangeLocalBucklingLimit(majorAxis=True) MnRef = 63.2907279198e3 ratio1 = abs(Ieff - IeffRef) / IeffRef ratio2 = abs(Seff - SeffRef) / SeffRef ratio3 = abs(Mn - MnRef) / MnRef ''' print('Fy= ', steel.fy/1e6,' MPa (',steel.fy/1e6*MPa2ksi,' ksi)')
newPnts.append(points.newPntFromPos3d(v)) pntTags= list() for p in newPnts: pntTags.append(p.tag) pFace= surfaces.newPolygonalFacePts(pntTags) return pFace p1= geom.Pos3d(-1.595,-1.4046,0) p2= geom.Pos3d(-1.4376,-0.7453,0) p3= geom.Pos3d(-1.529,-0.7047,0) p4= geom.Pos3d(-1.595,-0.7527,0) bolts= list() boltDiameter= 0.016 bolts.append(ASTM_materials.BoltFastener(diameter= boltDiameter, pos3d= geom.Pos3d(-1.4909,-0.8037,0.0))) bolts.append(ASTM_materials.BoltFastener(diameter= boltDiameter, pos3d= geom.Pos3d(-1.4706,-0.7580,0.0))) bolts.append(ASTM_materials.BoltFastener(diameter= boltDiameter, pos3d= geom.Pos3d(-1.5163,-0.7377,0.0))) bolts.append(ASTM_materials.BoltFastener(diameter= boltDiameter, pos3d= geom.Pos3d(-1.5366,-0.7834,0.0))) ## Problem type feProblem= xc.FEProblem() preprocessor= feProblem.getPreprocessor nodes= preprocessor.getNodeHandler modelSpace= predefined_spaces.StructuralMechanics3D(nodes) ### Define k-points. points= modelSpace.getPointHandler() #### Exterior contour
kip2N = kip2kN * 1e3 foot2meter = 0.3048 m2Toin2 = 1.0 / inch2meter**2 # Problem type steelBeam = xc.FEProblem() steelBeam.title = 'Example G.4' preprocessor = steelBeam.getPreprocessor nodes = preprocessor.getNodeHandler #Materials ## Steel material steel = ASTM_materials.A500 steel.gammaM = 1.00 ## Profile geometry shape = ASTM_materials.HSSShape(steel, 'HSS6X4X3/8') xcSection = shape.defElasticShearSection2d(preprocessor) # Model geometry ## Points. span = 35.0 * foot2meter pointHandler = preprocessor.getMultiBlockTopology.getPoints p0 = pointHandler.newPntFromPos3d(geom.Pos3d(0.0, 0.0, 0.0)) p1 = pointHandler.newPntFromPos3d(geom.Pos3d(span, 0.0, 0.0)) ## Lines lineHandler = preprocessor.getMultiBlockTopology.getLines l1 = lineHandler.newLine(p0.tag, p1.tag) l1.nDiv = 10
import matplotlib.pyplot as plt from model import predefined_spaces from materials import typical_materials from materials.astm_aisc import ASTM_materials from helper_funcs import getHoleAsPolygonalSurface #from postprocess import output_handler p1 = geom.Pos3d(-1.82, -1.82, 0) p2 = geom.Pos3d(-2.27, -1.82, 0) p3 = geom.Pos3d(-2.27, -2.27, 0) p4 = geom.Pos3d(-1.82, -2.27, 0) bolts = list() bolts.append( ASTM_materials.BoltFastener(diameter=.0452, pos3d=geom.Pos3d(-2.115, -2.115, 0.0))) bolts.append( ASTM_materials.BoltFastener(diameter=.0452, pos3d=geom.Pos3d(-2.115, -1.975, 0.0))) bolts.append( ASTM_materials.BoltFastener(diameter=.0452, pos3d=geom.Pos3d(-1.975, -1.975, 0.0))) bolts.append( ASTM_materials.BoltFastener(diameter=.0452, pos3d=geom.Pos3d(-1.975, -2.115, 0.0))) ## Problem type feProblem = xc.FEProblem() preprocessor = feProblem.getPreprocessor nodes = preprocessor.getNodeHandler
T= -60*kip2N*in2m # service load torque (60 kip-in) FEcase= xc.FEProblem() preprocessor=FEcase.getPreprocessor prep=preprocessor #short name nodes= prep.getNodeHandler elements= prep.getElementHandler elements.dimElem= 3 modelSpace= predefined_spaces.StructuralMechanics3D(nodes) #Defines the grid=gm.GridModel(prep,xList=[0,L/2,L],yList=[0],zList=[0]) grid.generatePoints() steel_W=astm.A992 #steel W shapes beam=grid.genLinOneXYZRegion([(0,0,0),(L,0,0)],'beam') beam_mat= astm.HSSShape(steel_W,'HSS10X6X1/2') beam_mat.defElasticShearSection3d(prep) beam_mesh= fem.LinSetToMesh(linSet=beam,matSect=beam_mat,elemSize=0.25,vDirLAxZ=xc.Vector([0,1,0]), elemType='ElasticBeam3d') beam_mesh.generateMesh(prep) J= beam_mat.J() Jcomp= 176/(m2in**4) ratio0= abs(J-Jcomp)/Jcomp G= steel_W.G() Gcomp= 11200.0/Pa2ksi ratio1= abs(G-Gcomp)/Gcomp #boundary conditions extr1= grid.getPntXYZ((0,0,0))
__author__ = "Ana Ortega (AO_O) and Luis C. Pérez Tato (LCPT)" __copyright__ = "Copyright 2020, AO_O and LCPT" __license__ = "GPL" __version__ = "3.0" __email__ = " [email protected], [email protected]" from materials.astm_aisc import ASTM_materials in2m = 0.0254 MPa2ksi = 0.145038 kN2kips = 0.2248 m2Toin2 = 1.0 / in2m**2 steel = ASTM_materials.A500 hss = ASTM_materials.HSSShape(steel, 'HSS12X8X3/16') connection = ASTM_materials.MemberConnection(L=30 * 0.3048, rotI='fixed', transI='fixed', rotJ='free', transJ='fixed') member = ASTM_materials.ConnectedMember(hss, connection) k = member.connection.getEffectiveBucklingLengthCoefficientRecommended() lambda_r = member.shape.getLambdaRCompression() bClassification = member.shape.getBClassification() hClassification = member.shape.getHClassification() h_eff = member.shape.getReducedEffectiveH() b_eff = member.shape.getReducedEffectiveB() A_eff = member.shape.getEffectiveArea() sr = member.getSlendernessRatio()
from materials.astm_aisc import AISC_limit_state_checking as aisc 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)')
__license__= "GPL" __version__= "3.0" __email__= "*****@*****.**" # Testing hinge development in a cantilever. from materials.astm_aisc import ASTM_materials from materials.sections.structural_shapes import aisc_metric_shapes #Materials ## Steel material steel= ASTM_materials.A572 steel.gammaM= 1.00 ## Profile geometry (the example on the book says W690X170 but uses ## the values of an W690X140). shape= ASTM_materials.WShape(steel,aisc_metric_shapes.getUSLabel('W690X140')) ## Probable plastic moment at plastic hinge according ## to clause 2.4.3 of AISC-358. Mpr= shape.getProbableMaxMomentAtPlasticHinge(majorAxis= True) ratio1= abs(Mpr-1989e3)/1989e3 ## Force in the flanges (conservative value). leverArm= shape.h() F_flange= Mpr/leverArm ratio2= abs(F_flange-2908e3)/2908e3 ## Maximum bolt diameter. db= shape.getFlangeMaximumBoltDiameter() tmpBolt= ASTM_materials.getBoltForHole(db) ratio3= (tmpBolt.getName()=='M24')