''' from __future__ import print_function from __future__ import division from actions.earth_pressure import earth_pressure as ep __author__= "Ana Ortega (AO_O)" __copyright__= "Copyright 2019, AO_O" __license__= "GPL" __version__= "3.0" __email__= "*****@*****.**" soil01=ep.EarthPressureModel(zGround=50, zBottomSoils=[40,30,20,10,-10],KSoils=[1.1,1.2,1.3,1.4,1.5],gammaSoils=[2,2.1,2.2,2.3,2.4], zWater=25, gammaWater=1) pres01_45=soil01.getPressure(45) pres01_40=soil01.getPressure(40) pres01_35=soil01.getPressure(35) pres01_30=soil01.getPressure(30) pres01_25=soil01.getPressure(25) pres01_20=soil01.getPressure(20) pres01_15=soil01.getPressure(15) pres01_10=soil01.getPressure(10) pres01_5=soil01.getPressure(5) pres01_0=soil01.getPressure(0) pres01_45_tg=1.1*2*5 pres01_40_tg=1.1*2*10 pres01_35_tg=pres01_40_tg+1.2*2.1*5
#Self weight. selfWeight= loadCaseManager.setCurrentLoadCase('selfWeight') gravity=9.81 #Aceleración de la gravedad (m/s2) wall.createSelfWeightLoads(rho= 2500,grav= gravity) #Dead load. # Dead load. Earth self weight. gSoil= backFillSoilModel.rho*gravity frontFillDepth= 1.0 deadLoad= loadCaseManager.setCurrentLoadCase('deadLoad') wall.createDeadLoad(heelFillDepth= wall.stemHeight,toeFillDepth= frontFillDepth,rho= backFillSoilModel.rho, grav= gravity) # Dead load. Earth pressure. Ka= backFillSoilModel.Ka() zGroundBackFill= 0.0 #Back fill backFillPressureModel= earth_pressure.EarthPressureModel(K= Ka, zGround= zGroundBackFill, gammaSoil= gSoil, zWater= -1e3, gammaWater= 1000*gravity) wall.createBackFillPressures(backFillPressureModel, Delta= backFillDelta) zGroundFrontFill= zGroundBackFill-wall.stemHeight+frontFillDepth #Front fill frontFillPressureModel= earth_pressure.EarthPressureModel(K= Ka, zGround= zGroundFrontFill, gammaSoil= gSoil, zWater= -1e3, gammaWater= 1000*gravity) wall.createFrontFillPressures(frontFillPressureModel) #Live load. Crowd loading. crowdLoad= loadCaseManager.setCurrentLoadCase('crowdLoad') crowdEarthPressure= earth_pressure.StripLoadOnBackfill(qLoad= 4e3,zLoad= 0.0, distWall= 2.5/2.0, stripWidth= 2.5) wall.createPressuresFromLoadOnBackFill(crowdEarthPressure, Delta= backFillDelta) wall.createLoadOnTopOfStem(xc.Vector([-3e3,0.0,3.6e3])) #Live load. Rail traffic load. distRailCLWall= 4.12 #Distance from the center line of the rail track to the wall. railLoad= loadCaseManager.setCurrentLoadCase('railLoad') railLoadEarthPressure= earth_pressure.StripLoadOnBackfill(qLoad= 62.5e3,zLoad= -0.6, distWall= distRailCLWall, stripWidth= 2.0)
#Actions. loadCaseManager= load_cases.LoadCaseManager(preprocessor) loadCaseNames= ['selfWeight','earthPress','earthPressAcc'] loadCaseManager.defineSimpleLoadCases(loadCaseNames) #Self weight. selfWeight= loadCaseManager.setCurrentLoadCase('selfWeight') wall.createSelfWeightLoads(rho= concrete.density(),grav= gravity) # Earth pressure. (drainage ok) gSoil= backFillSoilModel.rho*gravity earthPress= loadCaseManager.setCurrentLoadCase('earthPress') wall.createDeadLoad(heelFillDepth= wall.stemHeight,toeFillDepth= frontFillDepth,rho= backFillSoilModel.rho, grav= gravity) Ka= backFillSoilModel.Ka() backFillPressureModel= earth_pressure.EarthPressureModel(zGround= zGroundBackFill, zBottomSoils=[-1e3],KSoils= [Ka], gammaSoils= [gSoil], zWater= -1e3, gammaWater= 1000*gravity,qUnif=0) wall.createBackFillPressures(backFillPressureModel, Delta= backFillDelta) zGroundFrontFill= zGroundBackFill-wall.stemHeight+frontFillDepth #Front fill frontFillPressureModel= earth_pressure.EarthPressureModel(zGround= zGroundFrontFill, zBottomSoils=[-1e3],KSoils= [Ka], gammaSoils= [gSoil], zWater= -1e3, gammaWater= 1000*gravity,qUnif=0) wall.createFrontFillPressures(frontFillPressureModel) #Accidental: earth pressure failure drainage system. gSoil= backFillSoilModel.rho*gravity earthPressAcc= loadCaseManager.setCurrentLoadCase('earthPressAcc') wall.createDeadLoad(heelFillDepth= wall.stemHeight,toeFillDepth= frontFillDepth,rho= backFillSoilModel.rho, grav= gravity) Ka= backFillSoilModel.Ka() backFillPressureModelAcc= earth_pressure.EarthPressureModel(zGround= zGroundBackFill, zBottomSoils=[-1e3],KSoils= [Ka], gammaSoils= [gSoil], zWater=zGroundBackFill-stemHeight+HwaterAcc, gammaWater= 1000*gravity,qUnif=0) wall.createBackFillPressures(backFillPressureModelAcc, Delta= backFillDelta) zGroundFrontFill= zGroundBackFill-wall.stemHeight+frontFillDepth #Front fill frontFillPressureModel= earth_pressure.EarthPressureModel(zGround= zGroundFrontFill, zBottomSoils=[-1e3],KSoils= [Ka], gammaSoils= [gSoil], zWater= -1e3, gammaWater= 1000*gravity,qUnif=0) wall.createFrontFillPressures(frontFillPressureModel)
# zGround: global Z coordinate of ground level # zBottomSoils: list of global Z coordinates of the bottom level # for each soil (from top to bottom) # KSoils: list of pressure coefficients for each soil (from top # to bottom) # gammaSoils: list of weight density for each soil (from top to # bottom) # zWater: global Z coordinate of groundwater level # (if zGroundwater<minimum z of model => there is no groundwater) # gammaWater: weight density of water # qUnif: uniform load over the backfill surface (defaults to 0) # vDir: unit xc vector defining pressures direction soil01 = ep.EarthPressureModel(zGround=zList[lastZpos] - 3, zBottomSoils=[-10], KSoils=[KearthPress], gammaSoils=[densSoil * grav], zWater=0, gammaWater=densWater * grav) earthPressLoadWall = loads.EarthPressLoad(name='earthPressLoadWall', xcSet=wall, soilData=soil01, vDir=xc.Vector([0, 1, 0])) earthPressLoadColumn = loads.EarthPressLoad(name='earthPressLoadColumn', xcSet=columnZconcr, soilData=soil01, vDir=xc.Vector([0, 1, 0])) soil02 = ep.EarthPressureModel(zGround=zList[lastZpos], zBottomSoils=[-10], KSoils=[0.001],
murd_z2_set=gridGeom.getSetSurfMultiRegion(lstIJKRange=[gm.IJKRange((pxmnp1,pyhast2,0),(pxmxp1,pyhast2,lastZpos)),gm.IJKRange((pxmnp2,pyhast2,0),(pxmxp2,pyhast2,lastZpos))],setName='murd_z2_set') murd_z3_set=gridGeom.getSetSurfMultiRegion(lstIJKRange=[gm.IJKRange((pxmxp1,pyhast2,0),(pxcarr3-1,pyhast2,lastZpos))],setName='murd_z3_set') murd_z4_set=gridGeom.getSetSurfMultiRegion(lstIJKRange=[gm.IJKRange((pxcarr3-1,pyhast2,0),(pxmnp2,pyhast2,lastZpos))],setName='murd_z4_set') # empuje del terreno zGroundZ1_1=zList[lastZpos]+deckTh/2.0+(Hrell_tali1+Hrell_tald1)/2.0 zGroundZ1_2=zList[lastZpos]+deckTh/2.0+(Hrell_tali2+Hrell_tald2)/2.0 zGroundZ1_3=zList[lastZpos]+deckTh/2.0+(Hrell_tali3+Hrell_tald3)/2.0 zGroundZ2=zList[lastZpos]+deckTh/2.0+(Hrelli+Hrelld)/2.0 zGroundZ3=zList[lastZpos]+deckTh/2.0+Hrelli+Hbali zGroundZ4=zList[lastZpos]+deckTh/2.0+Hrelld+Hbald zGroundZ4_desbalastado=zList[lastZpos]+deckTh/2.0+Hrelld soilZ1_1=ep.EarthPressureModel( zGround=zGroundZ1_1,zBottomSoils=[-10], KSoils=[K0],gammaSoils=[densrell*grav], zWater=-10.0, gammaWater=grav) soilZ1_2=ep.EarthPressureModel(zGround=zGroundZ1_2,zBottomSoils=[-10], KSoils=[K0], gammaSoils=[densrell*grav], zWater=-10.0, gammaWater=grav) soilZ1_3=ep.EarthPressureModel(zGround=zGroundZ1_3, zBottomSoils=[-10], KSoils=[K0],gammaSoils=[densrell*grav], zWater=-10.0, gammaWater=grav) soilZ2=ep.EarthPressureModel(zGround=zGroundZ2, zBottomSoils=[-10], KSoils=[K0],gammaSoils=[densrell*grav], zWater=0, gammaWater=0) soilZ3=ep.EarthPressureModel(zGround=zGroundZ3, zBottomSoils=[-10], KSoils=[K0],gammaSoils=[densrell*grav], zWater=-10, gammaWater=grav) soilZ4=ep.EarthPressureModel(zGround=zGroundZ4, zBottomSoils=[-10], KSoils=[K0],gammaSoils=[densrell*grav], zWater=-10, gammaWater=0) soilZ4_desbal=ep.EarthPressureModel(zGround=zGroundZ4_desbalastado, zBottomSoils=[-10], KSoils=[K0],gammaSoils=[densrell*grav], zWater=-10, gammaWater=grav) ep_muri_z1_1= loads.EarthPressLoad(name= 'ep_muri_z1_1', xcSet=muri_z1_1_set,soilData=soilZ1_1, vDir=xc.Vector([0,1,0])) ep_muri_z1_2= loads.EarthPressLoad(name= 'ep_muri_z1_2', xcSet=muri_z1_2_set,soilData=soilZ1_2, vDir=xc.Vector([0,1,0])) ep_muri_z1_3= loads.EarthPressLoad(name= 'ep_muri_z1_3', xcSet=muri_z1_3_set,soilData=soilZ1_3, vDir=xc.Vector([0,1,0])) ep_muri_z2= loads.EarthPressLoad(name= 'ep_muri_z2', xcSet=muri_z2_set,soilData=soilZ2, vDir=xc.Vector([0,1,0])) ep_muri_z3= loads.EarthPressLoad(name= 'ep_muri_z3', xcSet=muri_z3_set,soilData=soilZ3, vDir=xc.Vector([0,1,0])) ep_muri_z4= loads.EarthPressLoad(name= 'ep_muri_z4', xcSet=muri_z4_set,soilData=soilZ4, vDir=xc.Vector([0,1,0]))
# muro izquierdo muri_z1_set = gridGeom.getSetSurfMultiRegion( lstIJKRange=[gm.IJKRange((0, 0, 0), (lastXpos, 0, lastZpos))], setName='muri_z1_set') # muro derecho murd_z1_set = gridGeom.getSetSurfMultiRegion(lstIJKRange=[ gm.IJKRange((0, lastYpos, 0), (lastXpos, lastYpos, lastZpos)) ], setName='murd_z1_set') # empuje del terreno zGroundZ1 = zList[lastZpos] + deckTh / 2.0 soilZ1 = ep.EarthPressureModel(zGround=zGroundZ1, zBottomSoils=[-10], KSoils=[K0], gammaSoils=[densrell * grav], zWater=-10.0, gammaWater=grav) ep_muri_z1 = loads.EarthPressLoad(name='ep_muri_z1', xcSet=muri_z1_set, soilData=soilZ1, vDir=xc.Vector([0, 1, 0])) ep_murd_z1 = loads.EarthPressLoad(name='ep_murd_z1', xcSet=murd_z1_set, soilData=soilZ1, vDir=xc.Vector([0, -1, 0])) # ***LOAD CASES*** # G1: Peso propio G1 = lcases.LoadCase(preprocessor=prep,
# Attributes: # name: name identifying the load # xcSet: set that contains the surfaces 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 # vDir: unit xc vector defining pressures direction soil01 = ep.EarthPressureModel(zGround=zList[lastZpos] + asphaltTh, zBottomSoils=[-10], KSoils=[KearthPress], gammaSoils=[densSoil * grav], zWater=-10.0, gammaWater=densWater * grav) leftWall = leftDownWall + leftUpWall rightWall = rightDownWall + rightUpWall earthPressLoadleftWall = loads.EarthPressLoad(name='earthPressLoadleftWall', xcSet=leftWall, soilData=soil01, vDir=xc.Vector([1, 0, 0])) earthPressLoadrightWall = loads.EarthPressLoad(name='earthPressLoadrightWall', xcSet=rightWall, soilData=soil01, vDir=xc.Vector([-1, 0, 0])) earthPressLoadmidWall = loads.EarthPressLoad( name='earthPressLoadmidWall', xcSet=midWall,
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', xcSet=zapTrasdos, loadVector=xc.Vector([0, 0, -qunifTerr])) # empuje del terreno soil = ep.EarthPressureModel(K=K0, zGround=zGround, gammaSoil=densrell * grav, zWater=-10.0, gammaWater=grav) qunifTerr = ep.StripLoadOnBackfill(qLoad=qunifTerr, zLoad=zGround, distWall=0, stripWidth=10) ep_aleti = loads.EarthPressLoad(name='ep_aleti', xcSet=aleti, soilData=soil, vDir=xc.Vector([-1, 0, 0])) ep_aletd = loads.EarthPressLoad(name='ep_aletd', xcSet=aletd, soilData=soil, vDir=xc.Vector([1, 0, 0]))
# Attributes: # name: name identifying the load # xcSet: set that contains the surfaces 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 # vDir: unit xc vector defining pressures direction soil01 = ep.EarthPressureModel(K=KearthPress, zGround=zList[lastZpos] + asphaltTh, gammaSoil=densSoil * grav, zWater=-10.0, gammaWater=densWater * grav) leftWall = leftDownWall + leftUpWall rightWall = rightDownWall + rightUpWall earthPressLoadleftWall = loads.EarthPressLoad(name='earthPressLoadleftWall', xcSet=leftWall, soilData=soil01, vDir=xc.Vector([1, 0, 0])) earthPressLoadrightWall = loads.EarthPressLoad(name='earthPressLoadrightWall', xcSet=rightWall, soilData=soil01, vDir=xc.Vector([-1, 0, 0])) earthPressLoadmidWall = loads.EarthPressLoad( name='earthPressLoadmidWall', xcSet=midWall,
#Self weight. selfWeight= loadCaseManager.setCurrentLoadCase('selfWeight') gravity=9.81 #Aceleración de la gravedad (m/s2) wall.createSelfWeightLoads(rho= 2500,grav= gravity) #Dead load. # Dead load. Earth self weight. gSoil= backFillSoilModel.rho*gravity frontFillDepth= 1.0 deadLoad= loadCaseManager.setCurrentLoadCase('deadLoad') wall.createDeadLoad(heelFillDepth= wall.stemHeight,toeFillDepth= frontFillDepth,rho= backFillSoilModel.rho, grav= gravity) # Dead load. Earth pressure. Ka= backFillSoilModel.Ka() zGroundBackFill= 0.0 #Back fill backFillPressureModel= earth_pressure.EarthPressureModel( zGround= zGroundBackFill, zBottomSoils=[-10],KSoils= [Ka],gammaSoils= [gSoil], zWater= -1e3, gammaWater= 1000*gravity) wall.createBackFillPressures(backFillPressureModel, Delta= backFillDelta) zGroundFrontFill= zGroundBackFill-wall.stemHeight+frontFillDepth #Front fill frontFillPressureModel= earth_pressure.EarthPressureModel(zGround= zGroundFrontFill, zBottomSoils=[-10],KSoils= [Ka], gammaSoils= [gSoil], zWater= -1e3, gammaWater= 1000*gravity) wall.createFrontFillPressures(frontFillPressureModel) #Live load. Crowd loading. crowdLoad= loadCaseManager.setCurrentLoadCase('crowdLoad') crowdEarthPressure= earth_pressure.StripLoadOnBackfill(qLoad= 4e3,zLoad= 0.0, distWall= 2.5/2.0, stripWidth= 2.5) wall.createPressuresFromLoadOnBackFill(crowdEarthPressure, Delta= backFillDelta) wall.createLoadOnTopOfStem(xc.Vector([-3e3,0.0,3.6e3])) #Live load. Rail traffic load. distRailCLWall= 4.12 #Distance from the center line of the rail track to the wall. railLoad= loadCaseManager.setCurrentLoadCase('railLoad') railLoadEarthPressure= earth_pressure.StripLoadOnBackfill(qLoad= 62.5e3,zLoad= -0.6, distWall= distRailCLWall, stripWidth= 2.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 # vDir: unit xc vector defining pressures direction soil01=ep.EarthPressureModel(K=KearthPress, zGround=zList[lastZpos]-3, gammaSoil=densSoil*grav, zWater=0, gammaWater=densWater*grav) earthPressLoadWall= loads.EarthPressLoad(name= 'earthPressLoadWall', xcSet=wall,soilData=soil01, vDir=xc.Vector([0,1,0])) earthPressLoadColumn= loads.EarthPressLoad(name= 'earthPressLoadColumn', xcSet=columnZ,soilData=soil01, vDir=xc.Vector([0,1,0])) soil02=ep.EarthPressureModel(K=0.001, zGround=zList[lastZpos], gammaSoil=densSoil*grav, zWater=0.05, gammaWater=densWater*grav) stripL01=ep.StripLoadOnBackfill(qLoad=2e5, zLoad=zList[lastZpos],distWall=1.5, stripWidth=1.2) earthPColumnStrL= loads.EarthPressLoad(name= 'earthPColumnStrL', xcSet=columnZ,soilData=None, vDir=xc.Vector([0,1,0])) earthPColumnStrL.stripLoads=[stripL01] lineL01=ep.LineVerticalLoadOnBackfill(qLoad=1e5, zLoad=zList[lastZpos],distWall=1.0) earthPColumnLinL= loads.EarthPressLoad(name= 'earthPColumnLinL', xcSet=columnZ,soilData=None, vDir=xc.Vector([0,1,0])) earthPColumnLinL.lineLoads=[lineL01] hrzL01=ep.HorizontalLoadOnBackfill(soilIntFi=30, qLoad=2e5, zLoad=zList[lastZpos],distWall=1,widthLoadArea=0.5,lengthLoadArea=1.5,horDistrAngle=45) earthPColumnHrzL=loads.EarthPressLoad(name= 'earthPColumnHrzL', xcSet=columnZ,soilData=None, vDir=xc.Vector([0,1,0]))