yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #28221
[Question #702972]: porosity control
New question #702972 on Yade:
https://answers.launchpad.net/yade/+question/702972
Hello, dear Team. For controlling porosity (0.43), I maintained a constant stress (-4e4) and decrease friction progressively based on recommendation I found here (stress-free packing asked by Sergei Dorofeenko on 2011-04-16). I tried to modify script from tutorial examples (periodic triax). The thing is that strains and stress are zero during simulation. Could you please help me?
from __future__ import print_function
import time
import datetime
import os
from yade import pack, plot, export
import numpy as np
#FIXED PARAMETERS
poisson=0.2
R=1e-3
rate=1e-4
dimcell = 0.03
density= 1e5
young=1e9
frictionAngle=radians(30)
targetPorosity=0.43
#SETTINGS
O.periodic = True
O.cell.hSize = Matrix3(dimcell , 0, 0, 0, dimcell , 0, 0, 0, dimcell )
sp = pack.SpherePack()
sp.makeCloud((0, 0, 0), (dimcell, dimcell, dimcell), rMean=R, rRelFuzz=.1, periodic=True)
pp = O.materials.append(CohFrictMat(
young=young,
poisson=poisson,
frictionAngle=frictionAngle,
density=density,
isCohesive=False,
momentRotationLaw=True,
etaRoll=.1,label='spheres'
))
sp.toSimulation(material='spheres')
O.engines = [
ForceResetter(
),
InsertionSortCollider([Bo1_Sphere_Aabb()]),
InteractionLoop([Ig2_Sphere_Sphere_ScGeom6D()], [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys()],[Law2_ScGeom6D_CohFrictPhys_CohesionMoment(useIncrementalForm=True,always_use_moment_law=True)]),
TriaxialStressController(
stressMask = 7,label='triax'),
NewtonIntegrator(damping=.2),
PyRunner(command='addPlotData()', iterPeriod=500),
]
O.dt = .5 * PWaveTimeStep()
print('time step',O.dt)
triax.goal1=triax.goal2=triax.goal3=-40000
while triax.porosity>targetPorosity:
frictionAngle = 0.95*frictionAngle
setContactFriction(radians(30))
print (frictionAngle," porosity:",triax.porosity)
O.run(500,1)
def addPlotData():
plot.addData(
i=O.iter,
Ezz=log(O.cell.trsf[2,2]),
Eyy=log(O.cell.trsf[1,1]),
Exx=log(O.cell.trsf[0,0]),
szz=utils.getStress()[2,2],
syy=utils.getStress()[1,1],
sxx=utils.getStress()[0,0],
u=utils.porosity()
)
# define what to plot
plot.plots = {
'i ': ('sxx', 'syy', 'szz'),
' i': ('Exx', 'Eyy', 'Ezz'),
' i ':('u')
# energy plot
}
# show the plot
plot.plot()
--
You received this question notification because your team yade-users is
an answer contact for Yade.