← Back to team overview

yade-users team mailing list archive

Re: [Question #688763]: ossillation_rotation

 

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.