예제 #1
0
#                 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])
예제 #2
0
                                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]),
예제 #3
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)
예제 #4
0
#  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
예제 #5
0
    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(
예제 #6
0
    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))
예제 #7
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)


#

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]))
예제 #8
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,