Error in making Video from simulation

Asked by ehsan benabbas on 2019-10-19

Hi everybody,

I am using Ubuntu 18.04, and Yade 2019-08-08.git-775ae74

I coded a simple triaxial problem and want to make a video from its 3d view. But I get the following as the output and no video file. When I click on the "play" button, just and error shows up

***************************
output:

ehsan@ehsan:~/Desktop/mycodes/video$/home/ehsan/yade/install/bin/yade-2019-08-08.git-775ae74 video.py Welcome to Yade 2019-08-08.git-775ae74 Using python version: 3.6.8 (default, Oct 7 2019, 12:59:55) [GCC 8.3.0] TCP python prompt on localhost:9000, auth cookie `aedusk' XMLRPC info provider on http://localhost:21000 Running script video.py <WARNING> SpherePack:242 long int SpherePack::makeCloud(Vector3r, Vector3r, Real, Real, int, bool, Real, const std::vector<double>&, const std::vector<double>&, bool, int, Matrix3r): Exceeded 1000 tries to insert non-overlapping sphere to packing. Only 662 spheres were added, although you requested 2000. Trying again with porosity 0.46. The size distribution is being scaled down <WARNING> SpherePack:242 long int SpherePack::makeCloud(Vector3r, Vector3r, Real, Real, int, bool, Real, const std::vector<double>&, const std::vector<double>&, bool, int, Matrix3r): Exceeded 1000 tries to insert non-overlapping sphere to packing. Only 746 spheres were added, although you requested 2000. Trying again with porosity 0.514. The size distribution is being scaled down <WARNING> SpherePack:242 long int SpherePack::makeCloud(Vector3r, Vector3r, Real, Real, int, bool, Real, const std::vector<double>&, const std::vector<double>&, bool, int, Matrix3r): Exceeded 1000 tries to insert non-overlapping sphere to packing. Only 915 spheres were added, although you requested 2000. Trying again with porosity 0.5626. The size distribution is being scaled down <WARNING> SpherePack:242 long int SpherePack::makeCloud(Vector3r, Vector3r, Real, Real, int, bool, Real, const std::vector<double>&, const std::vector<double>&, bool, int, Matrix3r): Exceeded 1000 tries to insert non-overlapping sphere to packing. Only 1086 spheres were added, although you requested 2000. Trying again with porosity 0.60634. The size distribution is being scaled down <WARNING> SpherePack:242 long int SpherePack::makeCloud(Vector3r, Vector3r, Real, Real, int, bool, Real, const std::vector<double>&, const std::vector<double>&, bool, int, Matrix3r): Exceeded 1000 tries to insert non-overlapping sphere to packing. Only 1305 spheres were added, although you requested 2000. Trying again with porosity 0.645706. The size distribution is being scaled down <WARNING> SpherePack:242 long int SpherePack::makeCloud(Vector3r, Vector3r, Real, Real, int, bool, Real, const std::vector<double>&, const std::vector<double>&, bool, int, Matrix3r): Exceeded 1000 tries to insert non-overlapping sphere to packing. Only 1581 spheres were added, although you requested 2000. Trying again with porosity 0.681135. The size distribution is being scaled down The constructor with a shareWidget is deprecated, use the regular contructor instead. /home/ehsan/yade/install/lib/x86_64-linux-gnu/yade-2019-08-08.git-775ae74/py/yade/plot.py:444: MatplotlibDeprecationWarning: The 'verts' kwarg was deprecated in Matplotlib 3.0 and will be removed in 3.2. Use 'marker' instead. scatter=pylab.scatter(scatterPt[0] if not math.isnan(scatterPt[0]) else 0,scatterPt[1] if not math.isnan(scatterPt[1]) else 0,s=scatterSize,color=line.get_color(),**scatterMarkerKw) <FATAL ERROR> ThreadRunner:30 void ThreadRunner::run(): Exception occured: InsertionSortCollider.verletDist>0, but unable to locate NewtonIntegrator within O.engines. <ERROR> yadeWrapper.cpp:655 void pyOmega::wait(): Simulation error encountered. Traceback (most recent call last): File "/home/ehsan/yade/install/bin/yade-2019-08-08.git-775ae74", line 336, in runScript execfile(script,globals()) File "/usr/lib/python3/dist-packages/past/builtins/misc.py", line 82, in execfile exec_(code, myglobals, mylocals) File "video.py", line 98, in <module> O.run(5000,True) RuntimeError: std::exception [[ ^L clears screen, ^U kills line. F12 controller, F11 3D view (press "h" in 3D view for help), F10 both, F9 generator, F8 plot. ]] In [1]: <FATAL ERROR> ThreadRunner:30 void ThreadRunner::run(): Exception occured: InsertionSortCollider.verletDist>0, but unable to locate NewtonIntegrator within O.engines. ************************* My code is: import numpy as np import math from yade import pack, plot, qt, export, utils from datetime import datetime sp=pack.SpherePack() mn, mx=Vector3(0,0,0), Vector3(10,10,10) sp.makeCloud(minCorner=mn,maxCorner=mx,rRelFuzz=0.2,num=2000,porosity=0.4) O.materials.append(FrictMat(young=15e6,poisson=0.4,frictionAngle=radians(30),density=2600,label='spheres')) O.materials.append(FrictMat(young=15e6,poisson=0.4,frictionAngle=0,density=0,label='frictionless')) O.bodies.append([sphere(center,rad,material='spheres') for center, rad in sp]) walls=aabbWalls(thickness=1e-10,material='frictionless') wallIds=O.bodies.append(walls) triax=TriaxialCompressionEngine( wall_bottom_id=wallIds[2], wall_top_id=wallIds[3], wall_left_id=wallIds[0], wall_right_id=wallIds[1], wall_back_id=wallIds[4], wall_front_id=wallIds[5], internalCompaction=False, sigmaIsoCompaction=-50e3, sigmaLateralConfinement=-50e3, max_vel=10, strainRate=0.01, label="triax", ) O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]), InteractionLoop( [Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()], [Ip2_FrictMat_FrictMat_FrictPhys()], [Law2_ScGeom_FrictPhys_CundallStrack()] ), GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8), triax, NewtonIntegrator(damping=0.4) ] O.engines=O.engines[0:5]+[PyRunner(iterPeriod=20,command='history()',label='recorder')]+O.engines[5:7] #O.engines=O.engines[0:5]+[PyRunner(command='checkUnbalanced()',realPeriod=2)]+O.engines[5:7] O.engines=O.engines[0:5]+[VTKRecorder(fileName='3d-vtk-',recorders=['all'],iterPeriod=1000)]+O.engines[5:7] O.engines=O.engines[0:5]+[qt.SnapshotEngine(fileBase='3d-',iterPeriod=200,label='snapshot')]+O.engines[5:7] O.engines=O.engines[0:5]+[PyRunner(command='finish()',iterPeriod=20000)]+O.engines[5:7] O.dt=.5*PWaveTimeStep() qt.View() def finish(): makeVideo(snapshot.snapshots,'3d.mpeg',fps=10,bps=10000) O.pause() #rr=yade.qt.Renderer() #rr.shape=False #rr.intrPhys=True def history(): plot.addData(unbalanced=unbalancedForce(),i=O.iter,**O.energy, e11=-triax.strain[0], e22=-triax.strain[1], e33=-triax.strain[2], s11=-triax.stress(0)[0], s22=-triax.stress(2)[1], s33=-triax.stress(4)[2], Etot=O.energy.total()) #O.trackEnergy=True def checkUnbalanced(): if unbalancedForce()<.05: O.pause() plot.saveDataTxt('bbb.txt.bz2') for i in O.interactions: id1,id2 = i.id1,i.id2 fn = i.phys.normalForce fs = i.phys.shearForce #plot.plots={'i':('unbalanced'),'i':('s11','s22','s33'),'i':('e11','e22','e33'),'i':(O.energy.keys,None,'Etot')} plot.plots={'i':('unbalanced'),'i ':('s11','s22','s33'),' i':('e11','e22','e33'),'e22':('s22')} plot.labels={'unbalanced':'$F_{UB}$' , 's11':'$\sigma_{11}$' , 's22':'$\sigma_{22}$' , 's33':'$\sigma_{33}$' , 'e11':'$\epsilon_{11}$' , 'e22':'$\epsilon_{22}$' , 'e33':'$\epsilon_{33}\$'}
#plot.saveGnuplot()

Gl1_Sphere.stripes=True

plot.plot()

O.saveTmp()

O.run(5000,True)
plot.saveDataTxt('results')

#print 'stress difference:', (triax.stress[2]-triax.stress[1])
#print 'mean stress:',(triax.stress[2]+triax.stress[1]+triax.stress[0])/3
#print 'porosity:', porosity()

***********************************

Thank you very much for your help.

Question information

Language:
English Edit question
Status:
Solved
For:
Assignee:
No assignee Edit question
Solved by:
ehsan benabbas
Solved:
2019-10-21
Last query:
2019-10-21
2019-10-20
 Robert Caulk (rcaulk) said on 2019-10-20: #1

How does this error/question differ from [1]?

 ehsan benabbas (ehsanben) said on 2019-10-20: #2

This is the same code with that question but a different question. I posted separately as these are different topics.

 Jan Stránský (honzik) said on 2019-10-20: #3

Hi,

> unable to locate NewtonIntegrator within O.engines.

some error messages might be a bit cryptic, but this one is clear - you do not have NewtonIntegrator in O.engines.

you have O.engines = [...] and just after you do some slicing (which in the end deletes NewtonIntegrator, probably not what you wanted).
Normally such slicing done when you need to modify O.engines during the simulation.
In this case, just put all engines directly in O.engines creation:
###
O.engines = [
ForceResetter(...),
...
triax,
NewtonIntegrator(...),
PyRunner(...),
PyRunner(...),
qt.SnapshotEngine(...),
PyRunner(...),
]
###

cheers
Jan

 ehsan benabbas (ehsanben) said on 2019-10-21: #4

Thank you Jan, that sholved my problem