yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #18966
Re: [Question #678440]: young in PeriTriaxController
Question #678440 on Yade changed:
https://answers.launchpad.net/yade/+question/678440
Status: Open => Answered
Chareyre proposed the following answer:
The «why» is long storry. The «how» is in my first reply to your previous
question. Please check it.
Le sam. 9 févr. 2019 07:08, jamespaul <question678440@xxxxxxxxxxxxxxxxxxxxx>
a écrit :
> New question #678440 on Yade:
> https://answers.launchpad.net/yade/+question/678440
>
> Hi,
>
> That's my other question. (
> https://answers.launchpad.net/yade/+question/678348)
>
> Let me give another example.Copying script from (
> https://yade-dev.gitlab.io/trunk/tutorial-examples.html)
>
> Using my own custom materials.
>
>
> materials.append(FrictMat(young=64e9,poisson=0.12,density=2650,frictionAngle=0.23)
>
> In the second compression, change triax.maxStrainRate=(0,0,0).If I adjust
> young's modulus to young=64e7, it can maintain the stress of the first
> isotropic compression, otherwise the stress becomes 0.
>
> I wonder why young's modulus can cause such a big change? How can I
> adjust:)
>
> Thanks
>
> #####################
> # encoding: utf-8
>
> sigmaIso=-1e5
>
> #import matplotlib
> #matplotlib.use('Agg')
>
> # generate loose packing
> from yade import pack, qt, plot
>
> O.periodic=True
>
>
> sphere=O.materials.append(FrictMat(young=64e9,poisson=0.12,density=2650,frictionAngle=0.23,label='sphere'))
> sp=pack.SpherePack()
> sp.makeCloud((0,0,0),(2,2,2),rMean=.1,rRelFuzz=.3,periodic=True)
> sp.toSimulation()
>
> O.engines=[
> ForceResetter(),
> InsertionSortCollider([Bo1_Sphere_Aabb()]),
> InteractionLoop(
> [Ig2_Sphere_Sphere_ScGeom()],
> [Ip2_FrictMat_FrictMat_FrictPhys()],
> [Law2_ScGeom_FrictPhys_CundallStrack()]
> ),
> PeriTriaxController(label='triax',
> # specify target values and whether they are strains or
> stresses
> goal=(sigmaIso,sigmaIso,sigmaIso),stressMask=7,
> # type of servo-control
> dynCell=True,maxStrainRate=(10,10,10),
> # wait until the unbalanced force goes below this value
> maxUnbalanced=.1,relStressTol=1e-3,
> # call this function when goal is reached and the packing
> is stable
> doneHook='compactionFinished()'
> ),
> NewtonIntegrator(damping=.2),
> PyRunner(command='addPlotData()',iterPeriod=100),
> ]
> O.dt=.5*PWaveTimeStep()
>
> def addPlotData():
> plot.addData(unbalanced=unbalancedForce(),i=O.iter,
>
> sxx=triax.stress[0],syy=triax.stress[1],szz=triax.stress[2],
>
> exx=triax.strain[0],eyy=triax.strain[1],ezz=triax.strain[2],
> # save all available energy data
> Etot=O.energy.total(),**O.energy
> )
>
> # enable energy tracking in the code
> O.trackEnergy=True
>
> # define what to plot
> plot.plots={'i':('unbalanced',),'i ':('sxx','syy','szz'),'
> i':('exx','eyy','ezz'),
> # energy plot
> ' i ':(O.energy.keys,None,'Etot'),
> }
> # show the plot
> plot.plot()
>
> def compactionFinished():
> # set the current cell configuration to be the reference one
> O.cell.trsf=Matrix3.Identity
> # change control type: keep constant confinement in x,y, 20%
> compression in z
> triax.goal=(sigmaIso,sigmaIso,-.2)
> triax.stressMask=3
> # allow faster deformation along x,y to better maintain stresses
> triax.maxStrainRate=(0,0,0)
> # next time, call triaxFinished instead of compactionFinished
> triax.doneHook='triaxFinished()'
> # do not wait for stabilization before calling triaxFinished
> triax.maxUnbalanced=10
>
> def triaxFinished():
> print 'Finished'
> O.pause()
>
> --
> 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 : yade-users@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~yade-users
> More help : https://help.launchpad.net/ListHelp
>
>
--
You received this question notification because your team yade-users is
an answer contact for Yade.