Question #246936 on Yade changed:
https://answers.launchpad.net/yade/+question/246936
Status: Answered => Open
Sina Jafari is still having a problem:
Thanks Jan it was helpful, going back to the previous discussion I tried to add
another method to the class created above but the problem is when I try to put
the method as command in pyrunner,only the first method mentioned in pyrunner
is taken into account and the others give no output which is weird! why is this
happening?
here is the end of my script concerning the output of simulations:
class StressChecker(): #To check whether we've reached specific stress levels
dStress=nextStress=20
def check(self):
stress=(triax.stress(triax.wall_right_id)[0]+triax.stress(triax.wall_top_id)[1]+triax.stress(triax.wall_front_id)[2])/3
if abs(stress) > self.nextStress:
self.nextStress += self.dStress
snapshoter()
def avgcoord(self):
stress=(triax.stress(triax.wall_right_id)[0]+triax.stress(triax.wall_top_id)[1]+triax.stress(triax.wall_front_id)[2])/3
if abs(stress) > self.nextStress:
self.nextStress += self.dStress
plot.addData(ACN=utils.avgNumInteractions(),
P=stress,e=utils.voxelPorosityTriaxial(triax)/(1-utils.voxelPorosityTriaxial(triax)))
plot.saveDataTxt('results C-MAO')
def numint(self):
f= open('%s.txt'%"interactions of each body",'w')
stress=(triax.stress(triax.wall_right_id)[0]+triax.stress(triax.wall_top_id)[1]+triax.stress(triax.wall_front_id)[2])/3
if abs(stress) > self.nextStress:
self.nextStress += self.dStress
i=O.iter
f.write('%s\n'%' ')
f.write('%s\n'%' ')
f.write('%s\n'%' ')
f.write('%s\n'%int(i))
f.write('%s\n'%float(triax.meanStress))
f.write('%s\t'%str('bodyid'))
f.write('%s\t'%str(" "))
f.write('%s\t'%str('Radius'))
f.write('%s\t'%str(" "))
f.write('%s\n'%str('NumInteractions'))
for m in O.bodies:
intrs=m.intrs()
nintrs=len(intrs)
bodyid=m.id
if isinstance(m.shape,Sphere):
radii=m.shape.radius
else:
radii="NaN"
f.write('%s\t'%int(bodyid))
f.write('%s\t'%str(" "))
f.write('%s\t'%float(radii))
f.write('%s\t'%str(" "))
f.write('%s\n'%int(nintrs))
f.close()
checker=StressChecker()
# include a periodic engine calling that function in the simulation loop
O.engines=O.engines[0:5]+[PyRunner(iterPeriod=25000,command='cntctforce()')]+[PyRunner(iterPeriod=50000,command='Sintrhisto()')]+[PyRunner(iterPeriod=50000,command='Intrhisto()')]+[PyRunner(iterPeriod=50,command='checker.avgcoord()')]+[PyRunner(iterPeriod=50,command='checker.check()')]+[PyRunner(iterPeriod=50,command='checker.numint()')]+O.engines[5:13]
and here is my O.engines container:
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_MindlinPhys()],
[Law2_ScGeom_MindlinPhys_Mindlin()]
),
GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=10,timestepSafetyCoefficient=0.8),
triax,
TriaxialStateRecorder(iterPeriod=100,file='WallStresses.dat'),
newton,
qt.SnapshotEngine(fileBase='Force
Network-',counter=1,iterPeriod=0,label='snapshoter'),
]
for example in the script above, only checker.avgcoord() works and the
other two methods give no out put. what is wrong here? Thank you so much
for your cooperation.
--
You received this question notification because you are a member of
yade-users, which 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