Question #688763 on Yade changed:
https://answers.launchpad.net/yade/+question/688763
Status: Answered => Open
nobody is still having a problem:
Hi Robert,
I changed the code as you mentioned, right now there is no error.
but it seems the code is not working, the shaft rotates always in one
direction. which means the ossillation_rotation function doesn't run at all?
#########################
from yade import ymport
from yade import pack,export,geom
import itertools
from numpy import *
import numpy as np
from yade import plot, export, utils
import math
target=0.12
young=4e8
finalcompFricDegree=19.5
rate = 10*(2*pi/60)
############################################# sphere particles material
properties ########################
sphereMat=O.materials.append(CohFrictMat(young=young,poisson=0.3,frictionAngle=radians(finalcompFricDegree),isCohesive=False,alphaKr=0.2,alphaKtw=0,etaRoll=0.5,momentRotationLaw=True,density=2648))
#O.bodies.append(ymport.text("rotation.txt",material = sphereMat))
O.bodies.append([
sphere((0.1,0.1,0.1),.03,color=(0,1,0)),
])
################################################ create the penetrator and
shaft and the cylinder ##############################
facetMat=O.materials.append(FrictMat(young=young,poisson=0.3,frictionAngle=radians(finalcompFricDegree),density=0))
O.materials.append(FrictMat(young=young,poisson=0.3,frictionAngle=0,density=0,label='walls'))
#facets =
O.bodies.append(geom.facetCylinder((200e-3,200e-3,300e-3),200e-3,600e-3,wallMask=6,material='walls',segmentsNumber=100))
x0=0.2;y0=0.2;z0=0.39665
cylinderIDS= O.bodies.append(geom.facetCylinder((x0,y0,z0-0.02),
radius=0.0125,height=0.15,orientation=Quaternion((0, 0, 1),
0),wallMask=5,segmentsNumber=10, angleRange=None,material=facetMat))
coneIDS= O.bodies.append(geom.facetCone((x0,y0,z0-0.085825-0.02),
radiusTop=0.0125,radiusBottom=0.0,height=0.02165,orientation=Quaternion((0, 0,
1), 0),wallMask=6,segmentsNumber=10, angleRange=None,material=facetMat))
cylinder =O.bodies[-2].id
conecheck=O.bodies[-1].id
################################################ set the global engine for the
simulation##############################
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Facet_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys(),Ip2_CohFrictMat_CohFrictMat_CohFrictPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack(),Law2_ScGeom6D_CohFrictPhys_CohesionMoment(useIncrementalForm=True,always_use_moment_law=True,label='cohesiveLaw')]
),
GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=10,timestepSafetyCoefficient=0.8),
NewtonIntegrator(gravity=(0,0,-9.81),damping=0.7),
HelixEngine(angularVelocity=rate,linearVelocity=-0.05,rotateAroundZero=True,zeroPoint=(x0,y0,z0),rotationAxis=(0,0,1),ids=cylinderIDS,label
="cylinderRot"),
HelixEngine(angularVelocity=rate,linearVelocity=-0.05,rotateAroundZero=True,zeroPoint=(x0,y0,z0),rotationAxis=(0,0,1),ids=coneIDS,label
= "coneRot"),
PyRunner(command='stop_loading()',iterPeriod=10000),
PyRunner(command ="ossillation_rotation()",iterPeriod = 10),
]
def ossillation_rotation():
for b in O.bodies:
if isinstance(b.shape,Facet):
rotationAngle = b.state.rot().norm()
if rotationAngle > 0 and rotationAngle <= math.pi:
cylinderRot.angularVelocity=rate
coneRot.angularVelocity=rate
b.state.refOri=b.state.ori
elif b.state.rot().norm() > 0 and b.state.rot().norm()
<= math.pi:
cylinderRot.angularVelocity=-1*rate
coneRot.angularVelocity=-1*rate
b.state.refOri=b.state.ori
########################## stop the simulation
###################################################################
def stop_loading():
if
((O.bodies[conecheck].state.pos[2]-O.bodies[conecheck].state.refPos[2])*(-1))>target:
O.pause()
#O.run()
#O.saveTmp()
##################
can you help me to check why this function doesn't work?
thanks,
Yong
--
You received this question notification because your team yade-users is
an answer contact for Yade.
_______________________________________________
Mailing list: https://launchpad.net/~yade-users
Post to : [email protected]
Unsubscribe : https://launchpad.net/~yade-users
More help : https://help.launchpad.net/ListHelp