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     : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp

Reply via email to