New question #687781 on Yade:
https://answers.launchpad.net/yade/+question/687781

Dear all
I'm trying to generate an assembly with PSD and I faced to a problem with 
distributemass. I want to make a pack with porosity of 0.38 (e=0.62) and when I 
try with distributemass=True, it take  less time and I can make a pack with 
e=0.62 easily but when I try with distributemass=False, it take more time. I 
try it with Number of sphere 5000 and distributemass=Flase, it couldn't 
generate pack because it couldn't reach to porosity of 0.38. I'll appreciate if 
somebody can help me.

Thanks.

## Define Parameters
num_spheres=5000
compFricDegree=3
finalFricDegree=28
confiningS=-50000       # [Pa]
graindensity=2600
poissonRatio=0.15
youngModulus=400e6      # [Pa]

psdSizes=[0.075,0.105,0.124,0.146,0.171,0.197,0.231,0.266,0.325,0.353,0.476] 
#(mm)
psdCumm=[0.024,0.034,0.059,0.127,0.244,0.402,0.6,0.768,0.967,0.99,1.0] 
#cumulative
psdSizesArray=np.array(psdSizes)
psdSizesMeter=psdSizesArray*0.001 #Convert the size of particles to meter
sp=pack.SpherePack()
mn,mx=Vector3(0,0,0),Vector3(0.005,0.005,0.005) #initial box size = 5*5*5 mm
sp.makeCloud(minCorner=mn,maxCorner=mx,num=num_spheres,psdSizes=psdSizesMeter,psdCumm=psdCumm,distributeMass=True,seed=True)
sp.psd(bins=50,mass=True)

O.materials.append(FrictMat(young=youngModulus,poisson=poissonRatio,frictionAngle=radians(compFricDegree),density=graindensity,label='spheres'))
O.materials.append(FrictMat(young=youngModulus,poisson=poissonRatio,frictionAngle=0,density=0,label='frictionless'))

walls=aabbWalls((mn,mx),thickness=0,material='frictionless')
wallIds=O.bodies.append(walls)

O.bodies.append([utils.sphere(center,rad,material='spheres') for center,rad in 
sp])

triax=TriaxialStressController(
        internalCompaction=False,
        goal1=confiningS,
        goal2=confiningS,
        goal3=confiningS,
        label="triax"
)

O.trackEnergy=True      #Evaluating energy data for all components in the 
simulation (such as plastic dissipation, damping dissipation,gravity work, 
kinetic energy) can be enabled with trackEnergy

O.engines=[
        ForceResetter(),
        InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
        InteractionLoop(
                [Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
                [Ip2_FrictMat_FrictMat_FrictPhys()],
                [Law2_ScGeom_FrictPhys_CundallStrack(traceEnergy=True)]
        ),
        
GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
        triax,
        NewtonIntegrator(damping=0.4,label="newton"),
]

O.dt=utils.PWaveTimeStep()
O.dynDt=False

while 1:
  O.run(1000,True)
  unb=unbalancedForce()
  if unb<0.1 and abs(confiningS-triax.meanStress)/abs(confiningS)<0.01 and 
e<0.624:
    break



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

_______________________________________________
Mailing list: https://launchpad.net/~yade-users
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp

Reply via email to