← Back to team overview

yade-users team mailing list archive

Re: [Question #703498]: Young's modulus or the effect of the wall on the test

 

Question #703498 on Yade changed:
https://answers.launchpad.net/yade/+question/703498

    Status: Needs information => Open

孙灿 gave more information on the question:
The code is as follows:


#Material constants(1) 
Density1 = 1836
FrictionAngle1 = 5
PoissonRatio1 = 0.4
Young1 = 1e8
Damp = 0.5
AvgRadius1 = 0.05
N_particles = 10000

#Material constants(23) 
Density23 = 2000
FrictionAngle23 = 27
PoissonRatio23 = 0.35
Young23 = 1e8
Damp = 0.5
AvgRadius1 = 0.05
N_particles = 10000

#Material constants(28) 
Density28 = 2142
FrictionAngle28 = 1
PoissonRatio28 = 0.3
Young28 = 1e8
Damp = 0.5
AvgRadius = 0.05
N_particles = 10000

#Material constants(37) 
Density37 = 2244
FrictionAngle37 = 1
PoissonRatio37 = 0.3
Young37 = 1e9
Damp = 0.5
AvgRadius = 0.05
N_particles = 10000


#Wall constants
WDensity = 0
WFrictionAngle = 0.0
WPoissonRatio = 0.1
WYoung = 50e9

#time calculation
startT = O.time
endT = O.time
timeSpent = endT - startT

SphereMat37 = O.materials.append(FrictMat(young = Young37, poisson = PoissonRatio37, frictionAngle = radians(FrictionAngle37), density = Density37))
SphereMat28 = O.materials.append(FrictMat(young = Young28, poisson = PoissonRatio28, frictionAngle = radians(FrictionAngle28), density = Density28))
SphereMat23 = O.materials.append(FrictMat(young = Young23, poisson = PoissonRatio23, frictionAngle = radians(FrictionAngle23), density = Density23))
SphereMat1 = O.materials.append(FrictMat(young = Young1, poisson = PoissonRatio1, frictionAngle = radians(FrictionAngle1), density = Density1))


WallMat = O.materials.append(FrictMat(young = WYoung, poisson = WPoissonRatio, frictionAngle = radians(WFrictionAngle)))


from yade import pack,plot
O.bodies.append(geom.facetBox((0.05, 30, 30), (0.3, 30, 30), wallMask=63,material=WallMat))

sp = pack.SpherePack()
sp.makeCloud(Vector3(0.05,0,0),Vector3(0.05,60,46), rMean=0.08, rRelFuzz=0)
sp.toSimulation(material = SphereMat37)

sp = pack.SpherePack()
sp.makeCloud(Vector3(0.05,0,46),Vector3(0.05,60,51), rMean=0.06, rRelFuzz=0)
sp.toSimulation(material = SphereMat28)

sp = pack.SpherePack()
sp.makeCloud(Vector3(0.05,0,51),Vector3(0.05,60,57), rMean=0.03, rRelFuzz=0)
sp.toSimulation(material = SphereMat23)

sp = pack.SpherePack()
sp.makeCloud(Vector3(0.05,0,57),Vector3(0.05,60,60), rMean=0.05, rRelFuzz=0)
sp.toSimulation(material = SphereMat1)


(xdim,ydim,zdim)= aabbDim()

print("Height is ",zdim)

for b in O.bodies:
   if isinstance(b.shape,Sphere):
       b.state.blockedDOFs='ZxY'

       b.shape.color=(0,0,1.)

   
circleRadius=3.14
circleCenter = Vector3(0.05,30,12)
#myEngine.dead = True  
O.engines = [
        ForceResetter(),
        InsertionSortCollider([Bo1_Sphere_Aabb(), Bo1_Facet_Aabb()]),
        InteractionLoop(
                [Ig2_Sphere_Sphere_ScGeom(), Ig2_Facet_Sphere_ScGeom()],
                [Ip2_FrictMat_FrictMat_FrictPhys()],
                [Law2_ScGeom_FrictPhys_CundallStrack()]
        ),
        NewtonIntegrator(gravity=(0, 0, -9.81), damping=0.4),
        PyRunner(command='checkUnbalanced()', realPeriod=2,label="myEngine"),
        PyRunner(command='addPlotData()', iterPeriod=100)
]
O.dt = 0.5 * PWaveTimeStep()
O.trackEnergy = True


def ranse():
	for b in O.bodies:	
		if isinstance(b.shape,Sphere):
			#b.state.blockedDOFs='zxy'
			b.state.vel=(0,0,0)
			b.state.angVel=(0,0,0)
		if b.state.pos[2]<=23:
			b.shape.color=(0,1,1.)	
		if b.state.pos[2]>23 and b.state.pos[2]<=25.5:
		    	b.shape.color=(2.,2.,1.)
		if b.state.pos[2]>28.5 :
		    	b.shape.color=(1,1,0)	
		if b.state.pos[2]>30:
			O.bodies.erase(b.id)                        

def shuju():
	zMax = max(b.state.pos[2] for b in O.bodies if isinstance(b.shape,Sphere))
	print("Z ",zMax)
	ceng = zMax-0.2
	for b in O.bodies:
		if b.state.pos[2]>ceng:
			print(b.id,b.state.pos)
			shuzu.append(b.id)    
	print(shuzu)	                      
                        
def addPlotData():
	plot.addData(i=O.iter, unbalanced=unbalancedForce(), **O.energy)


def duqu():
	for i in shuzu:
		b = O.bodies[i]	
		print("voila",i,b.state.pos)
def wadong1():
	for b in O.bodies:
		d = (b.state.pos - circleCenter).norm()
		if d < circleRadius:
			O.bodies.erase(b.id)

O.saveTmp()

from yade import qt
qt.Controller()
qt.View()

I want to know if Young's modulus and walls cause asymmetry in the
simulation results.

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.