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

Hello, 
I cannot reach the target porosity. The script based on periodical triaxial 
test tutorial example. After isotropic stage finished, the simulation stopped 
as well so that the porosity condition could not be satisfied. Maybe I am wrong 
with O.run command. 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-2
dimcell = 0.03
density= 1e9
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)]),
        PeriTriaxController(goal=(-1e4,-1e4,-1e4),
                                relStressTol=1e-3,
                                stressMask=7, 
                                maxStrainRate=(rate, rate, rate), 
                                dynCell=True,
                                maxUnbalanced=.1, 
                                label='triax', 
                                doneHook = 'triaxDone()'
                                ),
        NewtonIntegrator(damping=.2),
        PyRunner(command='addPlotData()', iterPeriod=500),
        ]

O.dt = .5 * PWaveTimeStep()
print('time step',O.dt)



def triaxDone():
        frictionAngle=radians(30)
        while utils.porosity>targetPorosity:
                frictionAngle = 0.7*frictionAngle
                setContactFriction(frictionAngle)
                print (frictionAngle," porosity:",utils.porosity())
                O.run(500000,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