# yade-users team mailing list archive

## [Question #681180]: How to impose an initial angular velocity on a moving/free particle?

 Thread Previous • Date Previous • Date Next • Thread Next

```New question #681180 on Yade:

I've tried three ways to impose an initial angular velocity on a free polyhedron but they do not work well as commented in the script. Please help me with this. Thanks!

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# ENGINES
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Polyhedra_Aabb()],verletDist=0.01),
InteractionLoop(
[Ig2_Polyhedra_Polyhedra_PolyhedraGeom()],
[Ip2_PolyhedraMat_PolyhedraMat_PolyhedraPhys()],
[Law2_PolyhedraGeom_PolyhedraPhys_Volumetric()]
),
NewtonIntegrator(damping=0.0,exactAsphericalRot=True,gravity=[0,0,0]),
]

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# POLYHEDRAL PARTICLES
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

from yade import polyhedra_utils
m = PolyhedraMat()
m.density = 2000 #kg/m^3
m.young = 150e6 #Pa
m.poisson = .4
m.frictionAngle = 3.0 #rad

edge=0.025
vertices=[(-edge, -edge, -edge),
(-edge,  edge, -edge),
( edge, -edge, -edge),
( edge,  edge, -edge),
(-edge, -edge,  edge),
(-edge,  edge,  edge),
( edge, -edge,  edge),
( edge,  edge,  edge)]

# Free
b1 = polyhedra_utils.polyhedra(m,v=vertices)
b1.state.pos = (0,0,0)
O.bodies.append(b1)

# Fixed
b2 = polyhedra_utils.polyhedra(m,v=vertices,fixed=True)
b2.state.pos = (4.*edge,0,0)
O.bodies.append(b2)

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# INITIAL VELOCITY
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

# Initial translational velocity
#O.bodies[0].state.vel=Vector3(1,0,0)

# Initial angular velocity
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
##Directly assigning the angular velocity- Not imposing initial angular velocity
#O.bodies[0].state.angVel=Vector3(1,0,0)

## using: "b.state.angMom" - This could work, but how can I get a specific magnitude of velocity?
#O.bodies[0].state.angMom=Vector3(b.state.inertia[0]*angVelVector[0],1,1)

## using: "utils.setBodyAngularVelocity" - Not working for non-fixed bodies
utils.setBodyAngularVelocity(0,5*Vector3(1,1,1))
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

from yade import qt
v=qt.View()

O.dt=1.0e-8

O.saveTmp()

--