nodes = preprocessor.getNodeHandler #Materials ## Steel material steel = ASTM_materials.A992 steel.gammaM = 1.00 ## Profile geometry shape = ASTM_materials.WShape(steel, 'W18X50') 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 # Mesh modelSpace = predefined_spaces.StructuralMechanics2D(nodes) trfs = preprocessor.getTransfCooHandler lin = trfs.newLinearCrdTransf2d("lin") seedElemHandler = preprocessor.getElementHandler.seedElemHandler seedElemHandler.defaultMaterial = xcSection.name seedElemHandler.defaultTransformation = lin.name elem = seedElemHandler.newElement("ElasticBeam2d", xc.ID([0, 0]))
modelSpace = predefined_spaces.StructuralMechanics2D(nodes) nodes.newSeedNode() # Materials definition scc = typical_materials.defElasticSection2d(preprocessor, "scc", area, Es, Iz) pd = modelSpace.newPDeltaCrdTransf("pd") seedElemHandler = preprocessor.getElementHandler.seedElemHandler seedElemHandler.defaultTransformation = "pd" seedElemHandler.defaultMaterial = "scc" seedElemHandler.defaultTag = 1 #Tag for next element. beam2d = seedElemHandler.newElement("ElasticBeam2d", xc.ID([0, 0])) points = preprocessor.getMultiBlockTopology.getPoints pt1 = points.newPntIDPos3d(1, geom.Pos3d(0.0, 0.0, 0)) pt2 = points.newPntIDPos3d(2, geom.Pos3d(0.0, H, 0)) pt3 = points.newPntIDPos3d(3, geom.Pos3d(B, 0.0, 0)) pt4 = points.newPntIDPos3d(4, geom.Pos3d(B, H, 0)) pt5 = points.newPntIDPos3d(5, geom.Pos3d(offset, 0.0, 0)) pt6 = points.newPntIDPos3d(6, geom.Pos3d(offset, H, 0)) pt7 = points.newPntIDPos3d(7, geom.Pos3d(offset + B, 0.0, 0)) pt8 = points.newPntIDPos3d(8, geom.Pos3d(offset + B, H, 0)) lines = preprocessor.getMultiBlockTopology.getLines l = lines.newLine(1, 2) l.nDiv = nDivLines l = lines.newLine(2, 4) l.nDiv = nDivLines * 2 l = lines.newLine(4, 3) l.nDiv = nDivLines
import math import os from model import model_inquiry as mi __author__= "Luis C. Pérez Tato (LCPT)" __copyright__= "Copyright 2014, LCPT" __license__= "GPL" __version__= "3.0" __email__= "*****@*****.**" feProblem= xc.FEProblem() preprocessor= feProblem.getPreprocessor # Defining nodes pts= preprocessor.getCad.getPoints ptA= pts.newPntIDPos3d(1,geom.Pos3d(0.0,0.0,3.0)) ptB= pts.newPntIDPos3d(2,geom.Pos3d(0.0,0.0,4.0)) trfs= preprocessor.getCad.getGeometricTransformations transl= trfs.newTransformation("translation") v= ptB.getPos-ptA.getPos transl.setVector(v) ptTrfA= pts.newPntIDPos3d(10,transl.getTrfPos(ptA.getPos)) ptTrfB= pts.newPntIDPos3d(11,transl.getTrfPos(ptB.getPos)) ''' for p in pts: pos= p.getPos print "id: ",p.getNombre," x= ",pos.x,," y= ",pos.y,," z= ",pos.z '''
feProblem = xc.FEProblem() preprocessor = feProblem.getPreprocessor nodes = preprocessor.getNodeHandler modelSpace = predefined_spaces.SolidMechanics3D(nodes) # Define materials elast = typical_materials.defElasticMaterial(preprocessor, "elast", 3000) seedElemHandler = preprocessor.getElementHandler.seedElemHandler seedElemHandler.defaultMaterial = elast.name seedElemHandler.dimElem = 3 # Dimension of element space seedElemHandler.defaultTag = 1 #Tag for the next element. truss = seedElemHandler.newElement("Truss", xc.ID([0, 0])) truss.sectionArea = 10.0 points = preprocessor.getMultiBlockTopology.getPoints pt = points.newPntIDPos3d(1, geom.Pos3d(0.0, 0.0, 0.0)) pt = points.newPntIDPos3d(2, geom.Pos3d(CooMax, CooMax, CooMax)) pt = points.newPntIDPos3d(3, geom.Pos3d(CooMax / 2, CooMax / 2, CooMax / 2)) lines = preprocessor.getMultiBlockTopology.getLines lines.defaultTag = 1 l1 = lines.newLine(1, 2) l1.nDiv = NumDiv l1.splitAtPoint(points.get(3)) kpoints1 = l1.getKPoints() l2 = lines.get(2) kpoints2 = l2.getKPoints() ratio1 = (kpoints1[0] - 1) + (kpoints1[1] - 3) ratio2 = (kpoints2[0] - 3) + (kpoints2[1] - 2)
import xc_base import geom import xc from model import predefined_spaces from materials import typical_materials import math from postprocess.quick_inquiry import nodal_reactions from solution import predefined_solutions feProblem= xc.FEProblem() preprocessor= feProblem.getPreprocessor nodes= preprocessor.getNodeHandler p1= geom.Pos3d(0,0,0) p2= geom.Pos3d(1,0,0) p3= geom.Pos3d(1,1,0) p4= geom.Pos3d(0,1,0) # Problem type modelSpace= predefined_spaces.StructuralMechanics3D(nodes) n1= nodes.newNodeXYZ(p1.x,p1.y,p1.z) n2= nodes.newNodeXYZ(p2.x,p2.y,p2.z) n3= nodes.newNodeXYZ(p3.x,p3.y,p3.z) n4= nodes.newNodeXYZ(p4.x,p4.y,p4.z) pA= geom.Pos3d(0.5,0.5,0.0) nA= nodes.newNodeXYZ(pA.x,pA.y,pA.z) # Materials definition
modelSpace = predefined_spaces.SolidMechanics3D(nodes) # Material elast = typical_materials.defElasticMaterial(preprocessor, "elast", 3000) nodes.newSeedNode() seedElemHandler = preprocessor.getElementHandler.seedElemHandler seedElemHandler.dimElem = 3 #Bars defined in a three dimensional space. seedElemHandler.defaultMaterial = "elast" seedElemHandler.defaultTag = 1 #Number for the next element will be 1. truss = seedElemHandler.newElement("Truss", xc.ID([1, 2])) truss.area = 10 points = preprocessor.getMultiBlockTopology.getPoints points.defaultTag = 1 pt = points.newPntFromPos3d(geom.Pos3d(0, 0, 0)) pt = points.newPntFromPos3d(geom.Pos3d(CooMax, CooMax, CooMax)) lines = preprocessor.getMultiBlockTopology.getLines lines.defaultTag = 1 l = lines.newLine(1, 2) l.nDiv = NumDiv setTotal = preprocessor.getSets.getSet("total") setTotal.genMesh(xc.meshDir.I) mesh = feProblem.getDomain.getMesh nnod = mesh.getNumNodes() nelem = mesh.getNumElements() # nIter= mesh.getNodeIter
import math import os from model import model_inquiry as mi __author__ = "Luis C. Pérez Tato (LCPT)" __copyright__ = "Copyright 2014, LCPT" __license__ = "GPL" __version__ = "3.0" __email__ = "*****@*****.**" feProblem = xc.FEProblem() preprocessor = feProblem.getPreprocessor # Defining nodes points = preprocessor.getMultiBlockTopology.getPoints pt1 = points.newPntIDPos3d(1, geom.Pos3d(0, 0, 0)) pt2 = points.newPntIDPos3d(2, geom.Pos3d(0, 0, 1)) pt3 = points.newPntIDPos3d(3, geom.Pos3d(1, 0, 0)) eje = geom.Recta3d(pt1.getPos, pt2.getPos) ang = math.pi / 2.0 trfs = preprocessor.getMultiBlockTopology.getGeometricTransformations rot1 = trfs.newTransformation("rotation") rot1.setAxisAng(eje, -ang) pt4 = points.newPntIDPos3d(4, rot1.getTrfPos(geom.Pos3d(0.0, 1.0, 0.0))) dist34 = mi.distance_2points(preprocessor, 3, 4) #print "dist(3,4)= ",dist34 import os
trafQLoadLane1HwSit2a = loads.NodalLoad( name='trafQLoadLane1HwSit2a', lstNod=CoordTrainLoads(fleetAngle, 0.5 + deltaX, yList[YposLane1HwSit2[0]] + deltaY, zList[lastZpos]), loadVector=xc.Vector([0, 0, -alphQ1hw * Qk1wheel, 0, 0, 0])) trafQLoadLane1SrSit12b = loads.NodalLoad( name='trafQLoadLane1SrSit12b', lstNod=CoordTrainLoads(fleetAngle, xList[lastXpos] / 2.0 + deltaX, yList[YposLane1Sr[0]] + deltaY2, zList[zPosDownDeck]), loadVector=xc.Vector([0, 0, -alphQ1sr * Qk1wheel, 0, 0, 0])) points = [ geom.Pos3d(xList[lastXpos] / 2.0, (yList[YposLane1HwSit1[0]] + yList[YposLane1HwSit1[1]]) / 2.0 + xList[lastXpos] / 2.0 / math.tan(fleetAngle), zList[lastZpos]) ] trafBrakingHwSit1 = loads.NodalLoad( name='trafBrakingHwSit1', lstNod=sets.get_lstNod_from_lst3DPos(prep, points), loadVector=xc.Vector([ -brakingQhw * math.sin(fleetAngle), -brakingQhw * math.cos(fleetAngle), 0, 0, 0, 0 ])) points = [ geom.Pos3d(xList[lastXpos] / 2.0, (yList[YposLane1HwSit2[0]] + yList[YposLane1HwSit2[1]]) / 2.0 + xList[lastXpos] / 2.0 / math.tan(fleetAngle), zList[lastZpos]) ]
feProblem = xc.FEProblem() preprocessor = feProblem.getPreprocessor # Materials definition concrete = typical_materials.defElasticIsotropic3d(preprocessor, "concrete3d", 28.3e9, 0.2, 0.0) # Geometry width = 6 * 0.0254 length = 4 * 0.3048 height = 12 * 0.0254 ## Block topology points = preprocessor.getMultiBlockTopology.getPoints pt1 = points.newPntFromPos3d(geom.Pos3d(0.0, 0.0, 0.0)) pt2 = points.newPntFromPos3d(geom.Pos3d(width, 0.0, 0.0)) pt3 = points.newPntFromPos3d(geom.Pos3d(width, length, 0.0)) pt4 = points.newPntFromPos3d(geom.Pos3d(0.0, length, 0.0)) pt5 = points.newPntFromPos3d(geom.Pos3d(0.0, 0.0, height)) pt6 = points.newPntFromPos3d(geom.Pos3d(width, 0.0, height)) pt7 = points.newPntFromPos3d(geom.Pos3d(width, length, height)) pt8 = points.newPntFromPos3d(geom.Pos3d(0.0, length, height)) bodies = preprocessor.getMultiBlockTopology.getBodies b1 = bodies.newBlockPts(pt1.tag, pt2.tag, pt3.tag, pt4.tag, pt5.tag, pt6.tag, pt7.tag, pt8.tag) k_points_ref = [(1, [0, 3, 2, 1]), (2, [0, 1, 5, 4]), (3, [1, 2, 6, 5]), (4, [2, 3, 7, 6]), (5, [0, 4, 7, 3]), (6, [4, 5, 6, 7])] k_points = list()
# Problem type mainBeam = xc.FEProblem() mainBeam.title = 'Warehouse main beams' preprocessor = mainBeam.getPreprocessor nodos = preprocessor.getNodeHandler modelSpace = predefined_spaces.StructuralMechanics3D(nodos) #Materials S235JR = EC3_materials.S235JR S235JR.gammaM = 1.00 IPE450A = EC3_materials.IPEShape(S235JR, 'IPE_A_450') fs3dIPE450 = IPE450A.defElasticShearSection3d(preprocessor, S235JR) points = preprocessor.getMultiBlockTopology.getPoints pt = dict() pt[0] = points.newPntIDPos3d(0, geom.Pos3d(8.64308749, 0.0, 10.22679239)) pt[1] = points.newPntIDPos3d(1, geom.Pos3d(8.73795117, 0.0, 10.20466246)) pt[2] = points.newPntIDPos3d(2, geom.Pos3d(10.9911389, 0.0, 9.67903555)) pt[3] = points.newPntIDPos3d(3, geom.Pos3d(13.41396022, 0.0, 9.11383628)) pt[4] = points.newPntIDPos3d(4, geom.Pos3d(13.55101619, 0.0, 9.12256754)) pt[5] = points.newPntIDPos3d(5, geom.Pos3d(16.56769638, 0.0, 9.31474758)) pt[6] = points.newPntIDPos3d(6, geom.Pos3d(19.70712774, 0.0, 9.51474758)) pt[7] = points.newPntIDPos3d(7, geom.Pos3d(22.8465591, 0.0, 9.71474758)) pt[8] = points.newPntIDPos3d(8, geom.Pos3d(25.98599046, 0.0, 9.91474758)) pt[9] = points.newPntIDPos3d(9, geom.Pos3d(29.00267066, 0.0, 10.10692762)) pos10 = geom.Pos3d(29.11111701, 0.0, 10.11383628) pt[10] = points.newPntIDPos3d(10, pos10) pt[21] = points.newPntIDPos3d(21, pos10)
feProblem = xc.FEProblem() preprocessor = feProblem.getPreprocessor nodes = preprocessor.getNodeHandler modelSpace = predefined_spaces.SolidMechanics2D(nodes) elast = typical_materials.defElasticMaterial(preprocessor, "elast", 3000) elast2d = typical_materials.defElasticIsotropicPlaneStress( preprocessor, "elast2d", E, nu, rho) seedElemHandler = preprocessor.getElementHandler.seedElemHandler seedElemHandler.defaultMaterial = elast2d.name elem = seedElemHandler.newElement("FourNodeQuad", xc.ID([0, 0, 0, 0])) points = preprocessor.getMultiBlockTopology.getPoints pt1 = points.newPntFromPos3d(geom.Pos3d(0.0, 0.0, 0.0)) pt2 = points.newPntFromPos3d(geom.Pos3d(CooMaxX / 3.0, 0.0, 0.0)) pt3 = points.newPntFromPos3d(geom.Pos3d(CooMaxX * 2 / 3.0, 0.0, 0.0)) pt4 = points.newPntFromPos3d(geom.Pos3d(CooMaxX, 0.0, 0.0)) pt5 = points.newPntFromPos3d(geom.Pos3d(0.0, CooMaxY, 0.0)) pt6 = points.newPntFromPos3d(geom.Pos3d(CooMaxX / 3.0, CooMaxY, 0.0)) pt7 = points.newPntFromPos3d(geom.Pos3d(CooMaxX * 2 / 3.0, CooMaxY, 0.0)) pt8 = points.newPntFromPos3d(geom.Pos3d(CooMaxX, CooMaxY, 0.0)) surfaces = preprocessor.getMultiBlockTopology.getSurfaces s1 = surfaces.newQuadSurfacePts(pt1.tag, pt2.tag, pt6.tag, pt5.tag) s1.nDivI = 1 s1.nDivJ = 1 # print("s1 nDivI= ", s1.nDivI) # print("s1 nDivJ= ", s1.nDivJ)
feProblem = xc.FEProblem() preprocessor = feProblem.getPreprocessor nodes = preprocessor.getNodeHandler modelSpace = predefined_spaces.SolidMechanics3D(nodes) # Materials definition elast = typical_materials.defElasticMaterial(preprocessor, "elast", 3000) seedElemHandler = preprocessor.getElementHandler.seedElemHandler seedElemHandler.dimElem = 3 #Bars defined in a three dimensional space. seedElemHandler.defaultMaterial = elast.name seedElemHandler.defaultTag = 1 #Number for the next element will be 1. truss = seedElemHandler.newElement("Truss", xc.ID([0, 0])) truss.sectionArea = 10 points = preprocessor.getMultiBlockTopology.getPoints pt = points.newPntIDPos3d(1, geom.Pos3d(0.0, 0.0, 0.0)) pt = points.newPntIDPos3d(2, geom.Pos3d(CooMax / 3, CooMax / 3, CooMax / 3)) pt = points.newPntIDPos3d( 3, geom.Pos3d(2 * CooMax / 3, 2 * CooMax / 3, 2 * CooMax / 3)) pt = points.newPntIDPos3d(4, geom.Pos3d(CooMax, CooMax, CooMax)) lines = preprocessor.getMultiBlockTopology.getLines lines.defaultTag = 3 l3 = lines.newLine(1, 2) # print("name: ",name," p1:",p1.name," p2:",p2.name) lines.defaultTag = 2 l2 = lines.newLine(4, 3) # print("name: ",name," p1:",p1.name," p2:",p2.name) lines.defaultTag = 1 l1 = lines.newLine(2, 3)
# Test raw paving routine. def getPoints(lstPos, nDiv): retval = list() p0 = lstPos[0] for p in lstPos[1:]: sg = geom.Segment3d(p0, p) retval.extend(sg.Divide(nDiv)[:-1]) p0 = p sg = geom.Segment3d(lstPos[-1], lstPos[0]) retval.extend(sg.Divide(nDiv)[:-1]) return retval p1 = geom.Pos3d(0, 0, 0) p2 = geom.Pos3d(10, 0, 0) p3 = geom.Pos3d(10, 10, 0) p4 = geom.Pos3d(0, 10, 0) pH0 = geom.Pos3d(4, 4, 0) pH1 = geom.Pos3d(5, 4, 0) pH2 = geom.Pos3d(5, 5, 0) pH3 = geom.Pos3d(4, 5, 0) corners = [p1, p2, p3, p4] holeCorners = [pH0, pH1, pH2, pH3] points = getPoints(corners, nDiv=10) holePoints = getPoints(holeCorners, nDiv=1) '''
from materials.sections import section_properties from postprocess.xcVtk import vtk_graphic_base from postprocess import output_handler # *********Problem definition********* feProblem = xc.FEProblem() preprocessor = feProblem.getPreprocessor modelSpace = predefined_spaces.StructuralMechanics3D( preprocessor.getNodeHandler) # *********geometry********* L = 8.0 #8.0 inPlane = True #False points = preprocessor.getMultiBlockTopology.getPoints # Point container. if (inPlane): pt0 = points.newPoint(geom.Pos3d(0.0, 0.0, 0.0)) pt1 = points.newPoint(geom.Pos3d(0.0, 1.0, 0.0)) pt2 = points.newPoint(geom.Pos3d(0.0, 1.0, L)) pt3 = points.newPoint(geom.Pos3d(0.0, 0.0, L)) # Right end else: pt0 = points.newPoint(geom.Pos3d(0.0, 0.0, 0.0)) pt1 = points.newPoint(geom.Pos3d(1.0, 0.0, 0.0)) pt2 = points.newPoint(geom.Pos3d(1.0, 0.0, L)) pt3 = points.newPoint(geom.Pos3d(0.0, 0.0, L)) # Right end surfaces = preprocessor.getMultiBlockTopology.getSurfaces # Face container. face0 = surfaces.newQuadSurfacePts(pt0.tag, pt1.tag, pt2.tag, pt3.tag) #face0.setElemSizeIJ(0.5,0.25) #Element size in (pt0->pt1,pt1->pt2) directions face0.setElemSizeIJ(0.5, 0.5) #Element size in (pt0->pt1,pt1->pt2) directions # Ascii art:
from materials.ehe import EHE_concrete from materials.ehe import EHE_reinforcing_steel __author__= "Luis C. Pérez Tato (LCPT)" __copyright__= "Copyright 2014, LCPT" __license__= "GPL" __version__= "3.0" __email__= "*****@*****.**" prueba= xc.ProblemaEF() preprocessor= prueba.getPreprocessor materiales= preprocessor.getMaterialLoader diagInteg= materiales.newInteractionDiagram("diagInteg") diagInteg.readFrom("/tmp/prueba_diag_interaccion01.dat") ratio1= diagInteg.getCapacityFactor(geom.Pos3d(352877,0,0))-1 ratio2= diagInteg.getCapacityFactor(geom.Pos3d(352877/2.0,0,0))-0.5 ratio3= diagInteg.getCapacityFactor(geom.Pos3d(-574457,41505.4,2.00089e-11))-1.0 ratio4= diagInteg.getCapacityFactor(geom.Pos3d(-978599,-10679.4,62804.3))-1.0 import os os.system("rm -f /tmp/prueba_diag_interaccion01.dat") ''' print "ratio1= ",(ratio1) print "ratio2= ",(ratio2) print "ratio3= ",(ratio3) print "ratio4= ",(ratio4) ''' ''' Como el método con el que se graba el diagrama de interacción no es exacto
fiberSectionRepr = secHA.getFiberSectionRepr() fiberSectionRepr.setGeomNamed("columnGeometry") secHA.setupFibers() fibers = secHA.getFibers() # Create interaction diagram. param = xc.InteractionDiagramParameters() param.concreteTag = concrDiagram.tag param.reinforcementTag = steelDiagram.tag interactionDiagram = materialHandler.calcInteractionDiagram(secHA.name, param) # Compute capacity factor. N = -1570e3 # Axial force at column top My = 392e3 # Y bending moment at column top Mz = 0.0 # Z bending moment at column top CF = interactionDiagram.getCapacityFactor(geom.Pos3d(N, My, Mz)) CFRef = 1.07887046522 # Almost 1.0, no big deal. ratio = abs(CF - CFRef) / CFRef ''' print("CF= ",CF) print("ratio= ",ratio) ''' import os from misc_utils import log_messages as lmsg fname = os.path.basename(__file__) if (abs(ratio) < 1e-8): print("test " + fname + ": ok.") else: lmsg.error(fname + ' ERROR.')
# Define materials elast = typical_materials.defElasticMaterial(preprocessor, "elast", E) nodes.newSeedNode() # Define materials nmb1 = typical_materials.defElasticMembranePlateSection( preprocessor, "memb1", E, nu, 0.0, thickness) seedElemLoader = preprocessor.getElementLoader.seedElemLoader seedElemLoader.defaultMaterial = "memb1" seedElemLoader.defaultTag = 1 elem = seedElemLoader.newElement("ShellMITC4", xc.ID([0, 0, 0, 0])) points = preprocessor.getCad.getPoints pt = points.newPntIDPos3d(1, geom.Pos3d(0.0, 0.0, 0.0)) pt = points.newPntIDPos3d(2, geom.Pos3d(CooMaxX, 0.0, 0.0)) pt = points.newPntIDPos3d(3, geom.Pos3d(CooMaxX, CooMaxY, 0.0)) pt = points.newPntIDPos3d(4, geom.Pos3d(0.0, CooMaxY, 0.0)) surfaces = preprocessor.getCad.getSurfaces surfaces.defaultTag = 1 s = surfaces.newQuadSurfacePts(1, 2, 3, 4) s.nDivI = NumDivI s.nDivJ = NumDivJ # Constraints f1 = preprocessor.getSets.getSet("f1") f1.genMesh(xc.meshDir.I) lados = s.getEdges #Edge iterator for l in lados:
nodes= preprocessor.getNodeHandler modelSpace= predefined_spaces.SolidMechanics3D(nodes) # Materials definition elast= typical_materials.defElasticMaterial(preprocessor, "elast",3000) nodes.newSeedNode() seedElemHandler= preprocessor.getElementHandler.seedElemHandler seedElemHandler.defaultMaterial= "elast" seedElemHandler.dimElem= 3 # Dimension of element space seedElemHandler.defaultTag= 1 #Tag for the next element. truss= seedElemHandler.newElement("Truss",xc.ID([0,0])) truss.area= 10.0 points= preprocessor.getMultiBlockTopology.getPoints pt1= points.newPntIDPos3d(1,geom.Pos3d(R,0.0,0.0)) pt2= points.newPntFromPos3d(geom.Pos3d((R*cos45),(R*sin45),0.0)) pt3= points.newPntFromPos3d(geom.Pos3d(0.0,R,0.0)) lines= preprocessor.getMultiBlockTopology.getLines lines.defaultTag= 1 l= lines.newCircleArc(1,2,3) l.nDiv= NumDiv th1= l.getTheta1() th2= l.getTheta2() long= l.getLong() xC= l.getCenter().x yC= l.getCenter().y zC= l.getCenter().z xi= l.getPInic().x yi= l.getPInic().y
# xc.Vector([Fx,Fy,Fz,Mx,My,Mz]). # cargas puntuales tren de carreteras def trafficPointLoads(centerTruck): xc=centerTruck.x yc=centerTruck.y zc=centerTruck.z p1=geom.Pos3d(xc-lejesCarr,yc-lruedCarr/2.0,zc) p2=geom.Pos3d(xc-lejesCarr,yc+lruedCarr/2.0,zc) p3=geom.Pos3d(xc,yc-lruedCarr/2.0,zc) p4=geom.Pos3d(xc,yc+lruedCarr/2.0,zc) p5=geom.Pos3d(xc+lejesCarr,yc-lruedCarr/2.0,zc) p6=geom.Pos3d(xc+lejesCarr,yc+lruedCarr/2.0,zc) nodLst=sets.get_lstNod_from_lst3DPos(preprocessor=prep,lst3DPos=[p1,p2,p3,p4,p5,p6]) return nodLst centTr=geom.Pos3d(xList[0]+(xList[-1]-xList[0])/2.0,yList[0]+(yList[-1]-yList[0])/2.0,zList[0]) qp_carr=loads.NodalLoad(name='qp_carr',lstNod=trafficPointLoads(centTr),loadVector=xc.Vector([0,0,-qpCarr,0,0,0])) # Earth pressure applied to shell or beam elements # Attributes: # name: name identifying the load # xcSet: set that contains the elements to be loaded # EarthPressureModel: instance of the class EarthPressureModel, with # the following attributes: # K:Coefficient of pressure # zGround:global Z coordinate of ground level # gammaSoil: weight density of soil # zWater: global Z coordinate of groundwater level # (if zGroundwater<minimum z of model => there is no groundwater) # gammaWater: weight density of water
materiales = preprocessor.getMaterialHandler secHA = materiales.newMaterial("fiber_section_3d", "secHA") fiberSectionRepr = secHA.getFiberSectionRepr() fiberSectionRepr.setGeomNamed("geomSecHA") secHA.setupFibers() fibras = secHA.getFibers() param = xc.InteractionDiagramParameters() param.concreteTag = EHE_materials.HA25.matTagD param.reinforcementTag = EHE_materials.B500S.matTagD diagIntsecHA = materiales.calcInteractionDiagram("secHA", param) diagIntsecHA.writeTo("/tmp/interaction_diagram_test_02.dat" ) # Used in test_interaction_diagram04 FCs = [] FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(2185.5e3, 0, 0))) FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(1595.8e3, 0, 186.5e3))) FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(1006.2e3, 0, 380.2e3))) FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(416.6e3, 0, 565.9e3))) FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-173e3, 0, 739.3e3))) FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-762.6e3, 0, 870.8e3))) FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-1352.2e3, 0, 962.2e3))) FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-1941.9e3, 0, 1004.1e3))) FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-2531.5e3, 0, 1021.9e3))) FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-3121.1e3, 0, 950.7e3))) FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-3710.7e3, 0, 872.1e3))) FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-4300.3e3, 0, 782.8e3))) FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-4889.9e3, 0, 678.1e3))) FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-5479.6e3, 0, 551.8e3))) FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-6069.2e3, 0, 394.6e3))) FCs.append(diagIntsecHA.getCapacityFactor(geom.Pos3d(-6658.8e3, 0, 230.7e3)))
m = b * h * dens NumDiv = 10 # Problem type feProblem = xc.FEProblem() preprocessor = feProblem.getPreprocessor nodes = preprocessor.getNodeLoader modelSpace = predefined_spaces.StructuralMechanics3D(nodes) # Define materials elast = typical_materials.defElasticMembranePlateSection( preprocessor, "elast", EMat, nuMat, espChapa * dens, espChapa) points = preprocessor.getCad.getPoints pt1 = points.newPntIDPos3d(1, geom.Pos3d(0.0, 0.0, 0)) pt2 = points.newPntIDPos3d(2, geom.Pos3d(b, 0.0, 0)) pt3 = points.newPntIDPos3d(3, geom.Pos3d(b, L, 0)) pt4 = points.newPntIDPos3d(4, geom.Pos3d(0, L, 0)) surfaces = preprocessor.getCad.getSurfaces surfaces.defaultTag = 1 s = surfaces.newQuadSurfacePts(1, 2, 3, 4) s.nDivI = 1 s.nDivJ = NumDiv nodes.newSeedNode() seedElemLoader = preprocessor.getElementLoader.seedElemLoader seedElemLoader.defaultMaterial = "elast" seedElemLoader.defaultTag = 1 elem = seedElemLoader.newElement("ShellMITC4", xc.ID([0, 0, 0, 0]))
pos = nodPos[i] qx.append(pos.x) qy.append(pos.y) plg.append((qx, qy)) plt.figure() for p in plg: xs = p[0] ys = p[1] #plt.scatter(xs, ys) plt.fill(xs, ys) plt.axis('equal') plt.show() 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) corners = [p1, p2, p3, p4] #corners= [geom.Pos3d(-1.5950,-1.333,0), geom.Pos3d(-1.5779,-1.333,0), geom.Pos3d(-1.4376,-0.7453,0), geom.Pos3d(-1.529,-0.7047,0), 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)))
# http://www.pfsteco.com/techtips/pdf/tt_plywooddesigncapacities structuralPanelGeom= AWCNDS_materials.PlywoodPanelSection('TECO 32/16', b=1.0, h= 0.594*0.0254, shear_constant= 3) plywood= typical_materials.MaterialData(name='TECO 32/16',E=4161501119.15,nu=0.2,rho=500) section= structuralPanelGeom.defElasticShearSection2d(preprocessor,plywood) EI= section.sectionProperties.EI() EIRef= 126500*4.44822*(0.0254)**2/0.3048 ratio0= abs((EI-EIRef)/EIRef) thickness= structuralPanelGeom.h deflectionSpan= (32-1.5+0.25)*0.0254 internalForcesSpan= 32*0.0254 # 32 span= internalForcesSpan pointHandler= preprocessor.getMultiBlockTopology.getPoints pt1= pointHandler.newPntFromPos3d(geom.Pos3d(0.0,0.0,0.0)) pt2= pointHandler.newPntFromPos3d(geom.Pos3d(span,0.0,0.0)) pt3= pointHandler.newPntFromPos3d(geom.Pos3d(2.0*span,0.0,0.0)) pt4= pointHandler.newPntFromPos3d(geom.Pos3d(3.0*span,0.0,0.0)) lines= preprocessor.getMultiBlockTopology.getLines l1= lines.newLine(pt1.tag,pt2.tag) l2= lines.newLine(pt2.tag,pt3.tag) l3= lines.newLine(pt3.tag,pt4.tag) infSet= preprocessor.getSets.defSet("inf") infSet.getLines.append(l1) infSet.getLines.append(l2) infSet.getLines.append(l3) # Mesh
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 # Mesh modelSpace= predefined_spaces.StructuralMechanics3D(nodes) ## Geometric transformations cooTrf= modelSpace.newPDeltaCrdTransf("pd",xc.Vector([1,0,0])) seedElemHandler= preprocessor.getElementHandler.seedElemHandler seedElemHandler.defaultMaterial= xcSection.name
# -*- coding: utf-8 -*- '''Home cooked test.''' from __future__ import division from __future__ import print_function __author__ = "Luis C. Pérez Tato (LCPT) and Ana Ortega (AOO)" __copyright__ = "Copyright 2015, LCPT and AOO" __license__ = "GPL" __version__ = "3.0" __email__ = "*****@*****.**" import xc_base import geom vPoint = geom.Pos3d(0, 0, 100) L = 10 skew = 0.999 p1 = geom.Pos3d(L, 0, 0) p2 = geom.Pos3d(2 * L, 0, skew * L) p3 = geom.Pos3d(2 * L, L, skew * L) p4 = geom.Pos3d(L, L, 0) skew = 1.001 p11 = geom.Pos3d(L, 0, 0) p12 = geom.Pos3d(2 * L, 0, skew * L) p13 = geom.Pos3d(2 * L, L, skew * L) p14 = geom.Pos3d(L, L, 0) plgA = geom.Polygon3d([p1, p2, p3, p4]) plgAK = plgA.getKVector() plgAOrientation = plgA.orientation(vPoint)
n = nodes.newNodeXYZ(i, 0, 0) # Materials definition elast = typical_materials.defElasticMaterial(preprocessor, "elast", 2.1e6) elements = preprocessor.getElementHandler elements.defaultMaterial = "elast" elements.dimElem = 2 # Dimension of element space elements.defaultTag = 1 #Tag for the next element. for i in range(1, numElements): truss = elements.newElement("Truss", xc.ID([i, i + 1])) truss.area = 1 mesh = feProblem.getDomain.getMesh # print "creados ",nnod," nodes.\n" start_time = time.time() tg = mesh.getNearestElement(geom.Pos3d(50.51, 0, 0)).tag lapso = time.time() - start_time ''' print "element tag: ",tg print "lapse: ",lapse ''' import os from miscUtils import LogMessages as lmsg fname = os.path.basename(__file__) if ((tg == 50)): print "test ", fname, ": ok." else: lmsg.error(fname + ' ERROR.')
# Geometric transformation(s) lin= modelSpace.newLinearCrdTransf("lin",xc.Vector([0,0,1])) # Seed element definition seedElemHandler= preprocessor.getElementHandler.seedElemHandler seedElemHandler.defaultMaterial= scc.name seedElemHandler.defaultTransformation= lin.name seedElemHandler.defaultTag= 1 #Tag for the next element. beam3d= seedElemHandler.newElement("ElasticBeam3d",xc.ID([0,0])) beam3d.rho= m points= preprocessor.getMultiBlockTopology.getPoints pt1= points.newPntIDPos3d(1,geom.Pos3d(0.0,0.0,0.0)) pt2= points.newPntIDPos3d(2,geom.Pos3d(L*math.cos(theta),L*math.sin(theta),0.0)) lines= preprocessor.getMultiBlockTopology.getLines lines.defaultTag= 1 l= lines.newLine(1,2) l.nDiv= NumDiv setTotal= preprocessor.getSets.getSet("total") setTotal.genMesh(xc.meshDir.I) tagN1= pt1.getNode().tag tagN2= pt2.getNode().tag # Constraints constraints= preprocessor.getBoundaryCondHandler
# -*- coding: utf-8 -*- from __future__ import print_function import xc_base import geom svd1 = geom.SlidingVectorsSystem3d() ptoAplic = geom.Pos3d(1, 1, 0) vectorDir = geom.Vector3d(0, 0, 1) vec = geom.SlidingVector3d(ptoAplic, vectorDir) svd1 += vec ptoAplic = geom.Pos3d(-1, 1, 0) vec = geom.SlidingVector3d(ptoAplic, vectorDir) svd1 += vec ptoAplic = geom.Pos3d(-1, -1, 0) vec = geom.SlidingVector3d(ptoAplic, vectorDir) svd1 += vec ptoAplic = geom.Pos3d(1, -1, 0) vec = geom.SlidingVector3d(ptoAplic, vectorDir) svd1 += vec Res = svd1.getResultant() Mom = svd1.getMoment() #It seems there is a bug in svd.getResultant() it returns a SlidingVectorsSystem3d instead of a Vector3d. #print('type<Res>= ', type(Res)) #print('Res= ', Res) import os fname = os.path.basename(__file__) if Res.x == 0 and Res.y == 0 and Res.z == 4 and Mom.x == 0 and Mom.y == 0 and Mom.z == 0: print("test ", fname, ": ok.") else:
Mass) ''' We define nodes at the points where loads will be applied. We will not compute stresses so we can use an arbitrary cross section of unit area.''' # Seed element definition seedElemHandler = preprocessor.getElementHandler.seedElemHandler seedElemHandler.defaultMaterial = cable.name seedElemHandler.dimElem = 2 # Dimension of element space seedElemHandler.defaultTag = 1 #Tag for the next element. truss = seedElemHandler.newElement("CorotTruss", xc.ID([0, 0])) truss.sectionArea = area # seed element definition ends points = preprocessor.getMultiBlockTopology.getPoints pt = points.newPntIDPos3d(1, geom.Pos3d(0.0, 0.0, 0.0)) pt = points.newPntIDPos3d(2, geom.Pos3d(l, 0.0, 0.0)) lines = preprocessor.getMultiBlockTopology.getLines lines.defaultTag = 1 l = lines.newLine(1, 2) l.nDiv = NumDiv l1 = preprocessor.getSets.getSet("l1") l1.genMesh(xc.meshDir.I) # Constraints predefined_spaces.ConstraintsForLineExtremeNodes(l1, modelSpace.fixNode000) predefined_spaces.ConstraintsForLineInteriorNodes(l1, modelSpace.fixNodeFF0) Nstep = 10 # apply load in 10 steps DInc = 1. / Nstep # first load increment
import xc_base import geom import xc __author__= "Luis C. Pérez Tato (LCPT)" __copyright__= "Copyright 2014, LCPT" __license__= "GPL" __version__= "3.0" __email__= "*****@*****.**" feProblem= xc.FEProblem() preprocessor= feProblem.getPreprocessor # Definimos geometria points= preprocessor.getMultiBlockTopology.getPoints pt1= points.newPntIDPos3d(1, geom.Pos3d(0.0,0.0,5.0) ) pt2= points.newPntIDPos3d(2, geom.Pos3d(0.0,0.0,10.0) ) pt3= points.newPntIDPos3d(3, geom.Pos3d(5.0,0.0,10.0) ) pt4= points.newPntIDPos3d(4, geom.Pos3d(0.0,5.0,10.0) ) lines= preprocessor.getMultiBlockTopology.getLines l1= lines.newLine(1,2) l2= lines.newLine(1,3) l3= lines.newLine(1,4) l4= lines.newLine(2,4) l5= lines.newLine(2,3) l6= lines.newLine(4,3) fName= "/tmp/dibuja_edges.tiff" import os pth= os.path.dirname(__file__)