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

    Status: Answered => Open

Fedor is still having a problem:
Hello,
thank you for reply. But when I put some iterations there is another issue File 
"<string>", line 1, in <module>
NameError: name 'addPlotData' is not defined
Please look at my script below
##########################################################
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=-10000

while 1:
  O.run(1000, 1)
  unb=unbalancedForce()
  if abs(10000-getStress().trace() / 3.)/10000<0.1:
        O.cell.velGrad=Matrix3(0,0,0,0,0,0,0,0,0)
        break

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