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

Description changed to:
Hi guys!

I try to study the displacement of various spheres ( with different
weight ) when they apply the same force, on a surface which previously
has been created and is composed of other spheres.

My problem is the IterPeriod of the PyRunner function that I create for
apply the force on the sphere that I want, in this case, green spheres.

If I put the period = 1 , the force is constantly applied .How I can apply the 
force only once? PyRunner(command='force()',
                ¿?¿?¿?iterPeriod=¿?¿?¿,initRun=True,label='checker'),

My first choice was to put a high period (100000000 for example), but
this way , the green sphere falls on the surface of spheres before the
force is applied . What I need is to apply a force on green particle
when it is "in the air " to describe a parabolic movement to fall on the
surface and stop.

The second PyRunner is to store the position data ( x , y, z) and the
green particle velocity .

Thanks in advance =)

the code:

O.load('/path/spheresurface.yade')

#/////////////////////////////////////////////////////
#////////////////// materials \\\\\\\\\\\\\\\\\\\\\\\
#/////////////////////////////////////////////////////

MatBal=O.materials.append(FrictMat(
        young=27e9,poisson=0.30,density=1000,
        frictionAngle=0.7,label='mat1'))

#/////////////////////////////////////////////////////
#////////////////// green sphere\\\\\\\\\\\\\\\\\\\\
#/////////////////////////////////////////////////////

### green sphere

O.bodies.append(utils.sphere((0.108,0.2289647116,0.7175),0.0199647116,color=(0,1,0),material='mat1'))


#/////////////////////////////////////////////////////
#//////////////// force on green sphere\\\\\\\\\\\\
#/////////////////////////////////////////////////////

def force():
        piedraensayo=[]
                        
###force on green sphere
        for i in range(0,len(O.bodies)):
                b=O.bodies[i]
                if O.bodies[i].shape.color==(0,1,0):
                        piedraensayo.append([i])                        
                        id_ball=i                       
                        fx=1
                        fy=0
                        fz=0
                        O.forces.addF(id_ball, (fx, fy, fz))


#/////////////////////////////////////////////////////
#///////save position and velocity \\\\\\\\\\\\\\\\\
#/////////////////////////////////////////////////////
def guardar():
        if O.iter==0:
                global paso
                matriz1=[]
                for i in range(0,len(O.bodies)):
                        b=O.bodies[i]
                        if O.bodies[i].shape.color==(0,1,0):
                                
matriz1.append([i,b.state.pos[1],b.state.pos[1],b.state.pos[2],b.state.vel.norm()])
                                
np.savetxt('pruebaVERDE.out',matriz1,delimiter=',')
                                
                paso=1

        if paso==1 and O.time>0.2:

                matriz2=[]
                for i in range(0,len(O.bodies)):
                        b=O.bodies[i]
                        if O.bodies[i].shape.color==(0,1,0):
                                
matriz2.append([i,b.state.pos[0],b.state.pos[1],b.state.pos[2],b.state.vel.norm()])
                                
np.savetxt('pruebaVERDE2.out',matriz2,delimiter=',')
                                
                paso=paso+1

        if paso==2 and O.time>0.4:

                matriz3=[]
                for i in range(0,len(O.bodies)):
                        b=O.bodies[i]
                        if O.bodies[i].shape.color==(0,1,0):
                                
matriz3.append([i,b.state.pos[0],b.state.pos[1],b.state.pos[2],b.state.vel.norm()])
                                
np.savetxt('pruebaVERDE3.out',matriz3,delimiter=',')
                                
                paso=paso+1

#/////////////////////////////////////////////////////
#///////////////////// engines \\\\\\\\\\\\\\\\\\\\\\\
#/////////////////////////////////////////////////////

O.engines=[     
        ForceResetter(),
        InsertionSortCollider(
                [Bo1_Sphere_Aabb(),
                        Bo1_Facet_Aabb(),
                        Bo1_Box_Aabb(),
                        Bo1_Wall_Aabb()]),
        InteractionLoop(
                [Ig2_Sphere_Sphere_ScGeom(),
                        Ig2_Facet_Sphere_ScGeom(),
                        Ig2_Wall_Sphere_ScGeom(),
                        Ig2_Box_Sphere_ScGeom()],
                [Ip2_FrictMat_FrictMat_FrictPhys()],
                [Law2_ScGeom_FrictPhys_CundallStrack()]
        ),
        PyRunner(command='force()',
                iterPeriod=1,initRun=True,label='checker'),
        PyRunner(command='guardar()',
                iterPeriod=1,initRun=True,label='checker'),
        NewtonIntegrator(damping=0.5,gravity=(0,-9.81,0),label='newton'),
        yade.qt.SnapshotEngine(fileBase='3d-',iterPeriod=1000,label='snapshot')
]
O.dt=utils.PWaveTimeStep()

-- 
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