windParams = bw.windParams(v, Kd, Kzt, I, alpha, zg) tankWind = bw.cylindrWind(diam, height, windParams, windComp, zGround, xCent=0, yCent=0) #elems=[e for e in tankwall.getElements] # ***ACTIONS*** #Inertial load (density*acceleration) applied to the elements in a set grav = 9.81 #Gravity acceleration (m/s2) selfWeight = loads.InertialLoad(name='selfWeight', lstMeshSets=[tankwall_mesh], vAccel=xc.Vector([0.0, 0.0, -grav])) #Thermal expansion ## tangential thermExpansTang = loads.StrainLoadOnShells(name='thermExpansTang', xcSet=tankwall, DOFstrain=0, strain=tempRise * steel.alpha) ## vertical thermExpansVert = loads.StrainLoadOnShells(name='thermExpansVert', xcSet=tankwall, DOFstrain=1, strain=tempRise * steel.alpha) #Thermal contraction
matSect=ring_mat, elemSize=0.5, elemType='ShellMITC4') fem.multi_mesh(prep, [ring_mesh]) # Constraints xcTotalSet = modelSpace.getTotalSet() constrainedNodes = list() for n in xcTotalSet.nodes: modelSpace.fixNode000_FFF(n.tag) constrainedNodes.append(n) #out.displayFEMesh() selfWeight = loads.InertialLoad(name='selfWeight', lstSets=[ring], vAccel=xc.Vector([0.0, 0.0, -grav])) # Ana uses -accel D = lcases.LoadCase(preprocessor=prep, name="D", loadPType="default", timeSType="constant_ts") D.create() D.addLstLoads([selfWeight]) modelSpace.addLoadCaseToDomain("D") # Solution result = modelSpace.analyze(calculateNodalReactions=True) #out.displayReactions() zReaction = 0.0
execfile(modelDataScriptDir + "/sets_lines_to_glue.py") #Aux sets (LCPT) deckCenter = prep.getSets.defSet('deckCenter') for e in deck.getElements: c = e.getPosCentroid(True) y = c.y if (y > 5.0 and y < 22.0): deckCenter.getElements.append(e) deckCenter.fillDownwards() # ***ACTIONS*** #Inertial load (density*acceleration) applied to the elements in a set grav = 9.81 #Gravity acceleration (m/s2) selfWeight = loads.InertialLoad(name='selfWeight', lstMeshSets=[deck_mesh, curb_mesh], vAccel=xc.Vector([0.0, 0.0, -grav, 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) deadLoadRoadway = loads.UniformLoadOnSurfaces( name='deadLoadRoadway', xcSet=roadway, loadVector=xc.Vector([0, 0, -unifPavRoad, 0, 0, 0]),
''' #Balasto bal_tali_set=gridGeom.getSetSurfOneRegion(ijkRange=gm.IJKRange([pxmxp1,0,lastZpos],[pxcarr1-1,lastYpos,lastZpos]),setName='bal_tali_set') bal_i_set=gridGeom.getSetSurfOneRegion(ijkRange=gm.IJKRange([pxcarr1-1,0,lastZpos],[pxcarr3-1,lastYpos,lastZpos]),setName='bal_i_set') bal_d_set=gridGeom.getSetSurfOneRegion(ijkRange=gm.IJKRange([pxcarr3-1,0,lastZpos],[pxcarr4+1,lastYpos,lastZpos]),setName='bal_d_set') bal_tald_set=gridGeom.getSetSurfOneRegion(ijkRange=gm.IJKRange([pxcarr4+1,0,lastZpos],[pxmnp2,lastYpos,lastZpos]),setName='bal_tald_set') paseos_set=gridGeom.getSetSurfMultiRegion(lstIJKRange=[gm.IJKRange([pxmnp1,pyhast1,lastZpos],[pxmxp1,pyhast2,lastZpos]),gm.IJKRange([pxmnp2,pyhast1,lastZpos],[pxmxp2,pyhast2,lastZpos])],setName='paseos_set') #Losa cimentación interior marco losc_int_set=gridGeom.getSetSurfOneRegion(ijkRange=gm.IJKRange([0,pyhast1,0],[lastXpos,pyhast2,0]),setName='losc_int_set') ''' #Inertial load (density*acceleration) applied to the elements in a set grav = 9.81 #Gravity acceleration (m/s2) selfWeight = loads.InertialLoad(name='selfWeight', lstMeshSets=[ hastiales_mesh, losCim_mesh, dintel_mesh, murete_i_mesh, murete_d_mesh ], vAccel=xc.Vector([0.0, 0.0, -grav])) # 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) # Camiones prueba de carga sc_cam_eje1 = loads.UniformLoadOnSurfaces(name='sc_cam_eje1', xcSet=surf_eje1_set,
n_col2 = nodes.getDomain.getMesh.getNearestNode(geom.Pos3d(LbeamX, LbeamY, 0)) modelSpace.fixNode('000_FFF', n_col2.tag) n_col3 = nodes.getDomain.getMesh.getNearestNode( geom.Pos3d(LbeamX / 2., LbeamY, 0)) modelSpace.fixNode('FF0_000', n_col3.tag) #out.displayFEMesh() # ***ACTIONS*** #Inertial load (density*acceleration) applied to the elements in a set grav = 9.81 #Gravity acceleration (m/s2) #selfWeight=loads.InertialLoad(name='selfWeight', lstMeshSets=[beamXconcr_mesh,beamY_mesh,columnZconcr_mesh,deck_mesh,wall_mesh,foot_mesh], vAccel=xc.Vector( [0.0,0.0,-grav])) selfWeight = loads.InertialLoad(name='selfWeight', lstMeshSets=[ beamXconcr_mesh, beamY_mesh, columnZconcr_mesh, decklv1_mesh, decklv2_mesh ], 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])
rell_tald1_set=gridGeom.getSetSurfOneRegion(ijkRange=gm.IJKRange([pxmxp2+3,0,lastZpos],[pxmxp2+4,lastYpos,lastZpos]),setName='rell_tald1_set') rell_tald2_set=gridGeom.getSetSurfOneRegion(ijkRange=gm.IJKRange([pxmxp2+2,0,lastZpos],[pxmxp2+3,lastYpos,lastZpos]),setName='rell_tald2_set') rell_tald3_set=gridGeom.getSetSurfOneRegion(ijkRange=gm.IJKRange([pxmxp2+1,0,lastZpos],[pxmxp2+2,lastYpos,lastZpos]),setName='rell_tald3_set') #Balasto bal_tali_set=gridGeom.getSetSurfOneRegion(ijkRange=gm.IJKRange([pxmxp1,0,lastZpos],[pxcarr1-1,lastYpos,lastZpos]),setName='bal_tali_set') bal_i_set=gridGeom.getSetSurfOneRegion(ijkRange=gm.IJKRange([pxcarr1-1,0,lastZpos],[pxcarr3-1,lastYpos,lastZpos]),setName='bal_i_set') bal_d_set=gridGeom.getSetSurfOneRegion(ijkRange=gm.IJKRange([pxcarr3-1,0,lastZpos],[pxcarr4+1,lastYpos,lastZpos]),setName='bal_d_set') bal_tald_set=gridGeom.getSetSurfOneRegion(ijkRange=gm.IJKRange([pxcarr4+1,0,lastZpos],[pxmnp2,lastYpos,lastZpos]),setName='bal_tald_set') paseos_set=gridGeom.getSetSurfMultiRegion(lstIJKRange=[gm.IJKRange([pxmnp1,pyhast1,lastZpos],[pxmxp1,pyhast2,lastZpos]),gm.IJKRange([pxmnp2,pyhast1,lastZpos],[pxmxp2,pyhast2,lastZpos])],setName='paseos_set') #Losa cimentación interior marco losc_int_set=gridGeom.getSetSurfOneRegion(ijkRange=gm.IJKRange([0,pyhast1,0],[lastXpos,pyhast2,0]),setName='losc_int_set') #Inertial load (density*acceleration) applied to the elements in a set grav=9.81 #Gravity acceleration (m/s2) selfWeight= loads.InertialLoad(name='selfWeight', lstMeshSets=[losCimExt_M1_mesh,losCimExt_M2_mesh,losCimExt_M3_mesh,losCimCent_M1_mesh,losCimCent_M2_mesh,losCimCent_M3_mesh,hastIzq_M1_mesh,hastIzq_M2_mesh,hastIzq_M3_mesh,hastDer_M1_mesh,hastDer_M2_mesh,hastDer_M3_mesh,dintExt_M1_mesh,dintExt_M2_mesh,dintExt_M3_mesh,dintCent_M1_mesh,dintCent_M2_mesh,dintCent_M3_mesh,muretes_mesh], vAccel=xc.Vector( [0.0,0.0,-grav])) # 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) # Dead load. #relleno Hrell_tali1=(Hrelli/3.)/2. Hrell_tali2=Hrell_tali1+Hrelli/3. Hrell_tali3=Hrell_tali2+Hrelli/3.
# Regions resting on springs (Winkler elastic foundation) # wModulus: Winkler modulus of the foundation (springs in Z direction) # cRoz: fraction of the Winkler modulus to apply for friction in # the contact plane (springs in X, Y directions) foundationElasticSupports = sprbc.ElasticFoundation(wModulus=winkMod, cRoz=coefHorVerSprings) found = foundExtSlab + foundIntSlab foundationElasticSupports.generateSprings(xcSet=found) # ***** ACTIONS ***** # ***ACTIONS*** #Inertial load (density*acceleration) applied to the elements in a set grav = 9.81 #Gravity acceleration (m/s2) selfWeight = loads.InertialLoad(name='selfWeight', lstMeshSets=allSurfList, vAccel=xc.Vector([0.0, 0.0, -grav])) # 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) deadLoadAsphalt_rg = [ gm.IJKRange([0, 3, zPosDownDeck], [lastXpos, 4, zPosDownDeck]), gm.IJKRange([0, 5, lastZpos], [lastXpos, 9, lastZpos]) ]
else: aletd = aletdZ1 + aletdZ2 + aletdZ3 # ***BOUNDARY CONDITIONS*** # Regions resting on springs (Winkler elastic foundation) # wModulus: Winkler modulus of the foundation (springs in Z direction) # cRoz: fraction of the Winkler modulus to apply for friction in # the contact plane (springs in X, Y directions) cRoz = 0.5 found_wink = sprbc.ElasticFoundation(wModulus=Kbalasto, cRoz=0.2) found_wink.generateSprings(xcSet=zap) # ***ACTIONS*** #Inertial load (density*acceleration) applied to the elements in a set selfWeight = loads.InertialLoad(name='selfWeight', lstMeshSets=lstSups, vAccel=xc.Vector([0.0, 0.0, -grav])) # Peso del relleno sobre la zapata zapTrasdos_rg = gut.def_rg_cooLim(XYZLists, Xmurestr, (yMurEstr, yZap), (0, 0)) zapTrasdos = gridGeom.getSetSurfOneRegion(ijkRange=zapTrasdos_rg, nameSet='zapTrasdos') zapTrasdos.fillDownwards() rell_zap = loads.UniformLoadOnSurfaces( name='rell_zap', xcSet=zapTrasdos, loadVector=xc.Vector( [0, 0, -grav * densrell * (zGround - zZap - cantoZap / 2.)])) SCep_zap = loads.UniformLoadOnSurfaces(name='rell_zap',
# Regions resting on springs (Winkler elastic foundation) # wModulus: Winkler modulus of the foundation (springs in Z direction) # cRoz: fraction of the Winkler modulus to apply for friction in # the contact plane (springs in X, Y directions) foundationElasticSupports = sprbc.ElasticFoundation(wModulus=winkMod, cRoz=coefHorVerSprings) found = foundExtSlab + foundIntSlab foundationElasticSupports.generateSprings(xcSet=found) # ***ACTIONS*** #Inertial load (density*acceleration) applied to the elements in a set grav = 9.81 #Gravity acceleration (m/s2) selfWeight = loads.InertialLoad(name='selfWeight', lstMeshSets=[ leftWall_mesh, rightWall_mesh, foundIntSlab_mesh, foundExtSlab_mesh, deckIntSlab_mesh, deckExtSlab_mesh ], vAccel=xc.Vector([0.0, 0.0, -grav])) # 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) # Dead load. AsphaltSet_rg = gm.IJKRange([0, 2, lastZpos],
foundationElasticSupports.generateSprings(xcSet=losCim) # ***ACTIONS*** # Auxiliary ranges and sets #Balasto bal_tali_set=gridGeom.getSetSurfOneRegion(ijkRange=gm.IJKRange([pxmxp1,0,lastZpos],[pxcarr1-1,lastYpos,lastZpos]),setName='bal_tali_set') bal_i_set=gridGeom.getSetSurfOneRegion(ijkRange=gm.IJKRange([pxcarr1-1,0,lastZpos],[pxcarr3-1,lastYpos,lastZpos]),setName='bal_i_set') bal_d_set=gridGeom.getSetSurfOneRegion(ijkRange=gm.IJKRange([pxcarr3-1,0,lastZpos],[pxcarr4+1,lastYpos,lastZpos]),setName='bal_d_set') bal_tald_set=gridGeom.getSetSurfOneRegion(ijkRange=gm.IJKRange([pxcarr4+1,0,lastZpos],[pxmnp2,lastYpos,lastZpos]),setName='bal_tald_set') paseos_set=gridGeom.getSetSurfMultiRegion(lstIJKRange=[gm.IJKRange([pxmnp1,pyhast1,lastZpos],[pxmxp1,pyhast2,lastZpos]),gm.IJKRange([pxmnp2,pyhast1,lastZpos],[pxmxp2,pyhast2,lastZpos])],setName='paseos_set') #Losa cimentación interior marco losc_int_set=gridGeom.getSetSurfOneRegion(ijkRange=gm.IJKRange([0,pyhast1,0],[lastXpos,pyhast2,0]),setName='losc_int_set') #Inertial load (density*acceleration) applied to the elements in a set grav=9.81 #Gravity acceleration (m/s2) selfWeight= loads.InertialLoad(name='selfWeight', lstMeshSets=[hastIzqInf_mesh,hastIzqCent_mesh,hastIzqSup_mesh,hastDerInf_mesh,hastDerCent_mesh,hastDerSup_mesh,losCimCent_mesh,losCimExt_mesh,dintCent_mesh,dintExt_mesh,murete_i_mesh,murete_d_mesh], vAccel=xc.Vector( [0.0,0.0,-grav])) # 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) # Dead load. #balasto cm_bal_tali=loads.UniformLoadOnSurfaces(name= 'cm_bal_tali',xcSet=bal_tali_set,loadVector= xc.Vector([0,0,-grav*densbal*Hbali/2])) cm_bal_i=loads.UniformLoadOnSurfaces(name= 'cm_bal_i',xcSet=bal_i_set,loadVector= xc.Vector([0,0,-grav*densbal*Hbali,0,0,0])) cm_bal_d=loads.UniformLoadOnSurfaces(name= 'cm_bal_d',xcSet=bal_d_set,loadVector= xc.Vector([0,0,-grav*densbal*Hbald,0,0,0]))