← Back to team overview

yade-users team mailing list archive

Re: [Question #270178]: Stop condition

 

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

    Status: Answered => Open

Seti is still having a problem:
Dear Jan,

Thanks for your answer, it was right , I have fixed the first problem. :) however I have problem to save my  data as txt. when I want to open the saved file , I face with the error which is mentioned " the file you opened has some invalid characters"
Would you please instruct me in this issue?

Cheers,
Seti

Here is my script.
#!/usr/bin/python
from yade import pack,utils#, qt
pred = pack.inAlignedBox((0,0,0),(20,200,20))
#create material
soil1 = CohFrictMat(young=1e10,poisson=0.2,frictionAngle=radians(15),density=2500.0,normalCohesion=1e6, shearCohesion=80e6,label='soil')
#color=(1,0,0) ----red color
#soil1 = FrictMat(young=1e6,poisson=0.4,frictionAngle=radians(30),density=2500.0,label='soil')
O.materials.append(soil1)
O.bodies.append(utils.wall(0,axis=1,sense=1))
O.materials.append(CohFrictMat(young=1e9,poisson=0.1, frictionAngle = radians(15) , label='wallmat'))
wallmat = O.materials[-1]

spheres=SpherePack()
spheres=pack.randomDensePack(pred,radius=1.1,material='soil',spheresInCell=1000,color=(1,0,0),returnSpherePack=True)
spheres.toSimulation()
#O.bodies.append(spheres)
#


#
O.engines=[
             ForceResetter(),#reset forces
             InsertionSortCollider([Bo1_Wall_Aabb(),Bo1_Sphere_Aabb()]),
             InteractionLoop(
                            [Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Wall_Sphere_ScGeom()], # collision geometry
                            [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys()], # collision "physics"
                            [Law2_ScGeom6D_CohFrictPhys_CohesionMoment(),Law2_ScGeom_FrictPhys_CundallStrack()] # contact law -- apply forces
                                            ),
                      # apply gravity force to particles
                            # damping: numerical dissipation of energy
                            NewtonIntegrator(damping=0.5,gravity=(0,-9.81,0)),
                            #qt.SnapshotEngine(fileBase='3d-',iterPeriod=200,label='snapshot'),
   # this engine will be called after 20000 steps, only once
                            #PyRunner(command='finish()',iterPeriod=20000)
                             PyRunner(command='checkUnbalanced()',realPeriod=2,label='checker'),
]

# set timestep to a fraction of the critical timestep
# the fraction is very small, so that the simulation is not too fast
# and the motion can be observed
O.dt=1*utils.PWaveTimeStep()
#makeVideo(snapshot.snapshots,'3d.mpeg',fps=10,bps=10000)


def checkUnbalanced():
   if unbalancedForce()<5e-3:
      print('Reached target , stopping')
      O.pause()


# collect history of data which will be plotted
def addPlotData():
   # each item is given a names, by which it can be the unsed in plot.plots
   # the **O.energy converts dictionary-like O.energy to plot.addData arguments
   plot.addData(i=O.iter,unbalanced=unbalancedForce(),**O.energy)
O.save('Modifiedd.txt.bz2')

#O.save('confinedState'+key+'.yade.gz')
from yade import qt
qt.View()

-- 
You received this question notification because you are a member of
yade-users, which is an answer contact for Yade.