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.

_______________________________________________
Mailing list: https://launchpad.net/~yade-users
Post to     : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp

Reply via email to