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

Jan Stránský proposed the following answer:
And if you need the color information not directly in simulation but for
postprocessing, another option is to export displacement information to vtk
files and use paraview for the postprocessing
cheers
Jan


2016-05-29 12:07 GMT+02:00 Jan Stránský <[email protected]>:

> Hi Clinton,
>
> There could be several problems, why you don't see the spheres colored:
> - the PyRynner is called not very often
> - the scale is wrong (too small or too large)
>
> follows your first example, for me works ok (particles goes from green to
> yellow and to green again)
> #########################################
> readParamsFromTable(rMean=.05,rRelFuzz=.3,maxLoad=1e6,minLoad=1e4)
> from yade.params.table import *
>
> from yade import pack, plot
> O.bodies.append(geom.facetBox((.5,.5,.5),(.5,.5,.5),wallMask=31))
> sp=pack.SpherePack()
> sp.makeCloud((0,0,0),(1,1,1),rMean=rMean,rRelFuzz=rRelFuzz)
> sp.toSimulation()
>
> O.engines=[
> ForceResetter(),
>
> InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb(),Bo1_Wall_Aabb()]),
> InteractionLoop(
>
> [Ig2_Sphere_Sphere_L3Geom(),Ig2_Facet_Sphere_L3Geom(),Ig2_Wall_Sphere_L3Geom()],
> [Ip2_FrictMat_FrictMat_FrictPhys()],
> [Law2_L3Geom_FrictPhys_ElPerfPl()]
> ),
> NewtonIntegrator(gravity=(0,0,-9.81),damping=0.5),
> PyRunner(command='checkUnbalanced()',realPeriod=2,label='checker'),
> PyRunner(command='ccc()',iterPeriod=10,label='checker'),
> ]
> O.dt=.5*PWaveTimeStep()
> def checkUnbalanced():
> print O.iter
> if O.iter<5000: return
> if unbalancedForce()>.1: return
> O.bodies.append(wall(max([b.state.pos[2]+b.shape.radius for b in O.bodies
> if isinstance(b.shape,Sphere)]),axis=2,sense=-1))
> global plate
> plate=O.bodies[-1]
> plate.state.vel=(0,0,-.1)
> O.engines=O.engines+[PyRunner(command='addPlotData()',iterPeriod=200)]
> checker.command='unloadPlate()'
>
> def unloadPlate():
> if abs(O.forces.f(plate.id)[2])>maxLoad:
> plate.state.vel*=-1
> checker.command='stopUnloading()'
>
> def stopUnloading():
> if abs(O.forces.f(plate.id)[2])<minLoad:
> plot.saveDataTxt(O.tags['d.id']+'.txt')
> O.pause()
>
> def addPlotData():
> if not isinstance(O.bodies[-1].shape,Wall):
> plot.addData(); return
> Fz=O.forces.f(plate.id)[2]
>
> plot.addData(Fz=Fz,w=plate.state.pos[2]-plate.state.refPos[2],unbalanced=unbalancedForce(),i=O.iter)
>
> def ccc():
> for s in O.bodies:
> s.shape.color=scalarOnColorScale(s.state.displ().norm(),0,1)
>
> O.run()
> #########################################
>
>
> cheers
> Jan
>
> PS: when posting a code, try to make it minimal - deleting functions,
> lines and comments, that are not important (like plots)
>
>
> 2016-05-29 5:16 GMT+02:00 Clinton Schramm <
> [email protected]>:
>
>> Question #294531 on Yade changed:
>> https://answers.launchpad.net/yade/+question/294531
>>
>> Clinton Schramm gave more information on the question:
>> Sorry for just spamming the code.
>>
>> I'm not sure how else to explain it.
>>
>> Cheers
>>
>> --
>> 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     : [email protected]
>> Unsubscribe : https://launchpad.net/~yade-users
>> More help   : https://help.launchpad.net/ListHelp
>>
>
>

-- 
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     : [email protected]
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp

Reply via email to