yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #17108
[Question #667812]: RotationEngine on a clump
New question #667812 on Yade:
https://answers.launchpad.net/yade/+question/667812
Dear all,
I have been struggling recently to apply the RotationEngine on a clump of spheres.
My goal is basically to let the clump roll over the floor, as a wheel would do. The forward movement comes from the traction between the wheel and the floor, so the TranslationEngine is not used.
My questions are:
- what am I doing wrong? I tried several things: apply the rotation engine on the individual spheres or on the clump ID, rotate around the center of mass, ...
- Is the same thing possible with a clump of facets?
Here's an example:
I'm using Yade 2018.02b-50-e0894fb~xenial
(I want to work with cohesive materials, hence the cohesive physics. I guess this doesn't matter)
## MWE
from yade import plot, utils, pack, geom, ymport, polyhedra_utils, timing
## MATERIALS
CohFrictMat02=CohFrictMat(label='CohMat1',id=2,
density=2.6e3,young=1e6,poisson=1e0,frictionAngle=numpy.pi/2*0.8,
isCohesive=False)
## DEFINE BODIES
# Fixed Reference
sp=pack.regularOrtho(pack.inAlignedBox([-0.4,-0.4,-0.11],[0.4,2.0,0.1]),
radius=0.1,
gap=0.0,
material = CohFrictMat02,
fixed = True)
O.bodies.append(sp)
# Clump to be rotated
sp=pack.regularHexa(pack.inAlignedBox([-0.3,-0.3,0.2],[0.3,0.3,0.8]),
radius=0.1,
gap=0.0,
material = CohFrictMat02,
wire = True,
fixed = False,
)
RotatingClumpID_L = O.bodies.appendClumped(sp) ## APPEND CLUMPED
RotatingClumpID = RotatingClumpID_L[0]
RotatingSpheresID = RotatingClumpID_L[1]
# RotatingSpheresID = O.bodies.append(sp) ## APPEND NOT CLUMPED (for testing)
## dT
dt=O.dt=polyhedra_utils.PWaveTimeStep() #
## MODEL
Gravity = -9.8
# Gravity = 0.0
## Engines
O.timingEnabled=True
EnlargeDetectionRadius = 1.1
RotEngine = RotationEngine(angularVelocity = -10.0,
rotationAxis = (1,0,0),
ids = [RotatingClumpID,],
# ids = RotatingSpheresID,
# ids = [RotatingClumpID,]+RotatingSpheresID,
# ids = [RotatingSpheresID[0],],
rotateAroundZero=1,
zeroPoint=O.bodies[RotatingClumpID].state.pos,
# rotateAroundZero=0,
label = 'RotationTootToot',)
O.engines=[
ForceResetter(),
InsertionSortCollider([
Bo1_Sphere_Aabb(aabbEnlargeFactor = EnlargeDetectionRadius),
]),
InteractionLoop(
[
Ig2_Sphere_Sphere_ScGeom6D(interactionDetectionFactor = EnlargeDetectionRadius),
],
[Ip2_CohFrictMat_CohFrictMat_CohFrictPhys()],
[Law2_ScGeom6D_CohFrictPhys_CohesionMoment(always_use_moment_law = False,
creep_viscosity = 1,
shear_creep = False,
twist_creep = False,
)],
),
NewtonIntegrator(gravity=(0,0,Gravity),damping=0.8), # Gravity
RotEngine,
PyRunner(iterPeriod=1,command="RotEngine.zeroPoint=O.bodies[RotatingClumpID].state.pos"),
]
Thanks
Jan
--
You received this question notification because your team yade-users is
an answer contact for Yade.