yadeusers team mailing list archive

yadeusers team

Mailing list archive

Message #19894
Re: [Question #681180]: How to impose an initial angular velocity on a moving/free particle?
Question #681180 on Yade changed:
https://answers.launchpad.net/yade/+question/681180
Description changed to:
I've tried several ways to impose an initial angular velocity on a free polyhedron but they do not work well as commented in the script and below. Please help me with this. Thanks!
Here are things I've observed: [In the code below, I simulate 2 polyhedrons, poly1 is free and has an initial velocity while poly2 is fixed.]
If I directly use state.angVel or utils.setBodyAngularVelocity to impost an angular velocity on both polyhedrons, nothing happens to poly1, I could observe no rotation but just transnational move. However, I could observe rotation on poly2, which is fixed.
My question is that I want to apply an initial angular velocity on a free polyhedron and see how the initial angular velocity affects its collision with another particle.
If I just fix a polyhedron, and apply both the linear and angular velocity, then I could not observe how it collides with another particle and how the postimpact behavior look like since the fixed one will simply penetrate through another particle, which is not what I want.
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# 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 No rotation for the free one but the fixed one will rotate
#O.bodies[0].state.angVel=Vector3(1,1,0)
#O.bodies[1].state.angVel=Vector3(1,1,0)
## using: "utils.setBodyAngularVelocity"  Not working for nonfixed bodies(poly1) but working for poly2
utils.setBodyAngularVelocity(0,5*Vector3(1,1,1))
utils.setBodyAngularVelocity(1,5*Vector3(1,1,1))
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
from yade import qt
v=qt.View()
O.dt=1.0e8
O.saveTmp()

You received this question notification because your team yadeusers is
an answer contact for Yade.