← Back to team overview

yade-users team mailing list archive

Re: [Question #670862]: Applying normal strain rates in PeriTriaxController engine

 

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

Chareyre proposed the following answer:
Would 1000/sec for one iter not simply exceed the target 0.1 strain?
Why this would be related to sample size is unclear to me.
B

Le sam. 28 juil. 2018 02:22, Mehdi Pouragha <
question670862@xxxxxxxxxxxxxxxxxxxxx> a écrit :

> Question #670862 on Yade changed:
> https://answers.launchpad.net/yade/+question/670862
>
> Mehdi Pouragha posted a new comment:
> Here is a simple example. 2D though. As long as the maxStrain rate is
> 0.5, it is maintained. But if I increase it to 1000 then the current
> rate changes.
>
> Of course these rates are meaningless when we have such a small sample.
> As the sample becomes larger, the maximum rate at which the strain rate
> follows the maxStrainRate drastically decreases.
>
>
> Mehdi
> ----------------------------------------------------
> from yade import pack,qt
> from yade import plot
> import numpy as np
>
>
> ## computing sample size
> num_spheres=500# number of spheres
> key='_shearTest_'
> compFricDegree = 10
> finalFricDegree = 30
> stabilityThreshold=0.01
> young=1e6
> max_Strainrate = 0.5
>
> rMin,rMax = 0.5e-3,1.0e-3
> vSol = num_spheres * pi * ((rMin + rMax)/2.)**2
> volTot = vSol / (1-0.9)
> size = volTot**(1./2.)
>
>
>
> O.materials.append(FrictMat(young=young,poisson=1,frictionAngle=radians(compFricDegree),density=2600,label='spheres'))
>
> O.periodic=True
> #O.cell.setBox(size,size,1)
> O.cell.hSize=Matrix3(size,0,0, 0,size,0, 0,0,1)
> sp=pack.SpherePack()
> radius=(rMin + rMax)/2.
> num=sp.makeCloud((0,0,0.5),(size,size,0.5),radius,.2,num_spheres,periodic=True)
> # min,max,radius,rRelFuzz,spheresInCell,periodic
> #O.bodies.append([sphere(s[0],s[1]) for s in sp])
> sp.toSimulation(material='spheres')
>
> for k in O.bodies:
>  if isinstance(k.shape, Sphere): k.state.blockedDOFs='zXY'
>
>
> O.engines=[
>         ForceResetter(),
>         InsertionSortCollider([Bo1_Sphere_Aabb()],verletDist=.05*radius),
>         InteractionLoop(
>                 [Ig2_Sphere_Sphere_ScGeom()],
>                 [Ip2_FrictMat_FrictMat_FrictPhys()],
>                 [Law2_ScGeom_FrictPhys_CundallStrack()]
>         ),
>
> PeriTriaxController(dynCell=True,mass=0.2,maxUnbalanced=0.01,relStressTol=0.001,globUpdate=5,maxStrainRate=[max_Strainrate,max_Strainrate,max_Strainrate],label='triax'),
>         NewtonIntegrator(damping=.2),
> ]
>
> O.dt=PWaveTimeStep()
> ## compaction
> conf = -5 #kPa
> triax.stressMask=3
> triax.goal = [conf,conf,0]
> stabilityThreshold = 1e-2
>
> while 1:
>   O.run(1000, True)
>   #the global unbalanced force on dynamic bodies, thus excluding
> boundaries, which are not at equilibrium
>   unb=unbalancedForce()
>   print 'unbalanced force:',unb,' xx stress: ',triax.stressTensor[0,0]
>   if unb<stabilityThreshold and
> abs((conf-triax.stressTensor[0,0])/conf)<0.01 and
> abs((conf-triax.stressTensor[1,1])/conf)<0.01:
>     break
>
>
> triax.stressMask=4 ## stress controlled along z
> deps = -0.1
> eps_xx, eps_yy = triax.strain[0], triax.strain[1]
> triax.goal=[eps_xx+deps, eps_yy+deps ,0]
> O.run(2,True)
> print 'current maxStrainRate=', triax.maxStrainRate
> print 'current strain rates: xx=', O.cell.velGrad[0,0], '
> yy=',O.cell.velGrad[1,1], '  zz=', O.cell.velGrad[2,2]
>
> ps_xx, eps_yy = triax.strain[0], triax.strain[1]
> triax.goal=[eps_xx+deps, eps_yy+deps ,0]
> print 'setting triax.maxStrainRate=1000'
> triax.maxStrainRate = [1000,1000,1000]
> O.run(2,True)
> print 'current maxStrainRate=', triax.maxStrainRate
> print 'current strain rates: xx=', O.cell.velGrad[0,0], '
> yy=',O.cell.velGrad[1,1], '  zz=', O.cell.velGrad[2,2]
>
> --
> 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.