# xc.Vector([Fx,Fy,Fz,Mx,My,Mz]). def trafficPointLoads(centerTruck): xc = centerTruck.x yc = centerTruck.y #p1=geom.Pos3d(xc-1,yc-0.6,0.0) p2 = geom.Pos3d(xc + 1, yc - 0.6, 0.0) #p3=geom.Pos3d(xc-1,yc+0.6,0.0) p4 = geom.Pos3d(xc + 1, yc + 0.6, 0.0) nodLst = sets_mng.get_lstNod_from_lst3DPos(preprocessor=prep, lst3DPos=[p2, p4]) return nodLst centTr = geom.Pos2d(0.5, 1.5 * cantileverWidth) Q1p_liveLoadA = loads.NodalLoad(name='Q1p_liveLoadA', lstNod=trafficPointLoads(centTr), loadVector=xc.Vector( [0, 0, -Qpoint1_Trafmod1, 0, 0, 0])) centTr = geom.Pos2d(2.4 - 0.2, 1.5 * cantileverWidth) Q1p_accidental = loads.NodalLoad(name='Q1p_accidental', lstNod=trafficPointLoads(centTr), loadVector=xc.Vector( [0, 0, -Qpoint1_Trafmod1, 0, 0, 0])) # ***LOAD CASES*** GselfWeight = lcases.LoadCase(preprocessor=prep, name="GselfWeight", loadPType="default", timeSType="constant_ts") GselfWeight.create() GselfWeight.addLstLoads([selfWeight])
vAccel=xc.Vector([0.0, 0.0, -grav])) # Point load acting on one or several nodes # name: name identifying the load # lstNod: list of nodes on which the load is applied # loadVector: xc.Vector with the six components of the load: # xc.Vector([Fx,Fy,Fz,Mx,My,Mz]). nodPLoad = sets.get_lstNod_from_lst3DPos( preprocessor=prep, lst3DPos=[ geom.Pos3d(0, yList[lastYpos] / 2.0, zList[lastZpos]), geom.Pos3d(xList[lastXpos], yList[lastYpos] / 2.0, zList[lastZpos]) ]) QpuntBeams = loads.NodalLoad(name='QpuntBeams', lstNod=nodPLoad, loadVector=xc.Vector([0, 0, -Qbeam, 0, 0, 0])) # Uniform loads applied on shell elements # name: name identifying the load # xcSet: set that contains the surfaces # loadVector: xc.Vector with the six components of the load: # xc.Vector([Fx,Fy,Fz,Mx,My,Mz]). # refSystem: reference system in which loadVector is defined: # 'Local': element local coordinate system # 'Global': global coordinate system (defaults to 'Global) unifLoadDeck1 = loads.UniformLoadOnSurfaces(name='unifLoadDeck1', xcSet=decklv1, loadVector=xc.Vector( [0, 0, -qdeck1, 0, 0, 0]),
#boundary conditions extr1= grid.getPntXYZ((0,0,0)) modelSpace.fixNode000_0FF(extr1.getNode().tag) extr2= grid.getPntXYZ((L,0,0)) modelSpace.fixNodeF00_0FF(extr2.getNode().tag) #out.displayFEMesh() xcTotalSet= modelSpace.getTotalSet() testElem= xcTotalSet.elements[0] elementTorsionalStiffness= testElem.getTangentStiff()(3,3) elementLength= testElem.getLength(True) #load midPoint= grid.getPntXYZ((L/2.,0,0)) midNode= midPoint.getNode() torsBeam= loads.NodalLoad(name='torsBeam',lstNod=[midNode],loadVector=xc.Vector([0,0,0,T,0,0])) LC= lcases.LoadCase(preprocessor=prep,name="LC",loadPType="default",timeSType="constant_ts") LC.create() LC.addLstLoads([torsBeam]) modelSpace.addLoadCaseToDomain("LC") modelSpace.analyze(calculateNodalReactions=True) rot= midNode.getDisp[3] #refRot= 0.09*(T*L)/(G*J) # radians refRot= (T/2.0*L/2.0)/(G*J) # radians ratio2= abs(rot-refRot)/-refRot ''' print('beam G= ', testElem.sectionProperties.G/1e6) print('beam J= ', testElem.sectionProperties.J)
# 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 # if EarthPressureModel==None no earth thrust is considered
points = [ geom.Pos3d(x1, y1, z), geom.Pos3d(x2, y2, z), geom.Pos3d(x3, y3, z), geom.Pos3d(x4, y4, z) ] return sets.get_lstNod_from_lst3DPos(prep, points) deltaX = 3 deltaY = 3 deltaY2 = 4 trafQLoadLane1HwSit1a = loads.NodalLoad( name='trafQLoadLane1HwSit1a', lstNod=CoordTrainLoads(fleetAngle, 0.2 + deltaX, yList[YposLane1HwSit1[0]] + deltaY, zList[lastZpos]), loadVector=xc.Vector([0, 0, -alphQ1hw * Qk1wheel, 0, 0, 0])) trafQLoadLane2HwSit1a = loads.NodalLoad( name='trafQLoadLane2HwSit1a', lstNod=CoordTrainLoads(fleetAngle, 0.2 + deltaX, yList[YposLane2HwSit1[0]] + deltaY, zList[lastZpos]), loadVector=xc.Vector([0, 0, -alphQ2hw * Qk2wheel, 0, 0, 0])) trafQLoadLane1HwSit1b = loads.NodalLoad( name='trafQLoadLane1HwSit1b', lstNod=CoordTrainLoads(fleetAngle, xList[lastXpos] / 2.0 + deltaX, yList[YposLane1HwSit1[0]] + deltaY2, zList[lastZpos]), loadVector=xc.Vector([0, 0, -alphQ1hw * Qk1wheel, 0, 0, 0])) trafQLoadLane2HwSit1b = loads.NodalLoad(
for x in xCoordNeopr ] nodesAp = [p.getNode() for p in ptsAp] nodesNeop = [ nodes.newNodeXYZ(n.getCoo[0], n.getCoo[1] + excNeop, n.getCoo[2]) for n in nodesAp ] for i in range(len(nodesAp)): modelSpace.setRigidBeamBetweenNodes(nodesAp[i].tag, nodesNeop[i].tag) #resLoadCases=[G1,G2,Q1a_1,Q1a_2,Q1b_1,Q1b_2,Q1c,Q1d,Q1e,Q1f,W1,W2,Q1b_fren,Q1e_fren,Q1d_fren] #Cargas tablero #G1 G1_n1 = loads.NodalLoad('G1_n1', [nodesAp[0]], xc.Vector(React['G1']['Restr1_n1']) * (-1)) G1_n2 = loads.NodalLoad('G1_n2', [nodesAp[1]], xc.Vector(React['G1']['Restr1_n2']) * (-1)) G1_n3 = loads.NodalLoad('G1_n3', [nodesAp[2]], xc.Vector(React['G1']['Restr1_n3']) * (-1)) G1_n4 = loads.NodalLoad('G1_n4', [nodesAp[3]], xc.Vector(React['G1']['Restr1_n4']) * (-1)) G1_loads = [G1_n1, G1_n2, G1_n3, G1_n4] #G2 G2_n1 = loads.NodalLoad('G2_n1', [nodesAp[0]], xc.Vector(React['G2']['Restr1_n1']) * (-1)) G2_n2 = loads.NodalLoad('G2_n2', [nodesAp[1]], xc.Vector(React['G2']['Restr1_n2']) * (-1)) G2_n3 = loads.NodalLoad('G2_n3', [nodesAp[2]], xc.Vector(React['G2']['Restr1_n3']) * (-1))
def CoordTrainLoads(xmin, ymin, z): xmax = xmin + 1.20 ymax = ymin + 2.0 points = [ geom.Pos3d(xmin, ymin, z), geom.Pos3d(xmin, ymax, z), geom.Pos3d(xmax, ymin, z), geom.Pos3d(xmax, ymax, z) ] return sets.get_lstNod_from_lst3DPos(prep, points) # trafQLoadLane1Sit1a = loads.NodalLoad( name='trafQLoadLane1Sit1a', lstNod=CoordTrainLoads(0.2, yList[3] + 0.2, zList[lastZpos]), loadVector=xc.Vector([0, 0, -alphQ1act * Qk1wheel, 0, 0, 0])) trafQLoadLane2Sit1a = loads.NodalLoad( name='trafQLoadLane2Sit1a', lstNod=CoordTrainLoads(0.2, yList[4] + 0.2, zList[lastZpos]), loadVector=xc.Vector([0, 0, -alphQ2act * Qk2wheel, 0, 0, 0])) trafQLoadLane1Sit1b = loads.NodalLoad( name='trafQLoadLane1Sit1b', lstNod=CoordTrainLoads(xList[lastXpos] / 2.0 - 0.6, yList[3] + 0.2, zList[lastZpos]), loadVector=xc.Vector([0, 0, -alphQ1act * Qk1wheel, 0, 0, 0])) trafQLoadLane2Sit1b = loads.NodalLoad( name='trafQLoadLane2Sit1b', lstNod=CoordTrainLoads(xList[lastXpos] / 2.0 - 0.6, yList[4] + 0.2, zList[lastZpos]), loadVector=xc.Vector([0, 0, -alphQ2act * Qk2wheel, 0, 0, 0]))
def CoordTrainLoads(xmin, ymin, z): xmax = xmin + 1.20 ymax = ymin + 2.0 points = [ geom.Pos3d(xmin, ymin, z), geom.Pos3d(xmin, ymax, z), geom.Pos3d(xmax, ymin, z), geom.Pos3d(xmax, ymax, z) ] return sets.get_lstNod_from_lst3DPos(prep, points) # trafQLoadLane1HwSit1a = loads.NodalLoad( name='trafQLoadLane1HwSit1a', lstNod=CoordTrainLoads(0.2, yList[YposLane1HwSit1[0]] + 0.2, zList[lastZpos]), loadVector=xc.Vector([0, 0, -alphQ1hw * Qk1wheel, 0, 0, 0])) trafQLoadLane2HwSit1a = loads.NodalLoad( name='trafQLoadLane2HwSit1a', lstNod=CoordTrainLoads(0.2, yList[YposLane2HwSit1[0]] + 0.2, zList[lastZpos]), loadVector=xc.Vector([0, 0, -alphQ2hw * Qk2wheel, 0, 0, 0])) trafQLoadLane1HwSit1b = loads.NodalLoad( name='trafQLoadLane1HwSit1b', lstNod=CoordTrainLoads(xList[lastXpos] / 2.0 - 0.6, yList[YposLane1HwSit1[0]] + 0.2, zList[lastZpos]), loadVector=xc.Vector([0, 0, -alphQ1hw * Qk1wheel, 0, 0, 0])) trafQLoadLane2HwSit1b = loads.NodalLoad( name='trafQLoadLane2HwSit1b', lstNod=CoordTrainLoads(xList[lastXpos] / 2.0 - 0.6,