← Back to team overview

yade-users team mailing list archive

Re: [Question #262922]: TorqueEngine, angular acceleration and moment of inertia of Boxes

 

Question #262922 on Yade changed:
https://answers.launchpad.net/yade/+question/262922

    Status: Answered => Open

behzad is still having a problem:
It doesn't work even with exactAsphericalRot=True!

The equations in [1] are fine.

we've got:

body->state->inertia=Vector3r(mass*(4*extents[1]*extents[1]+4*extents[2]*extents[2])/12.,mass*(4*extents[0]*extents[0]+4*extents[2]*extents[2])/12.,mass*(4*extents[0]*extents[0]+4*extents[1]*extents[1])/12.);

It's the correct theoretical equation. However, I don't know why the
answer of this equation is not correct even when
"exactAsphericalRot=True"


[1] https://github.com/yade/trunk/blob/dfbb8dde95d305ed95add159a77d8bcb0b3de935/pkg/dem/Shop_01.cpp#L260


here's the script:

O.reset()
from yade import utils, plot
from yade import pack, qt

#=============================================Engines===============================================================

O.engines=[
ForceResetter(),
TorqueEngine(ids=[0],moment=(0,0,1e5)),
GlobalStiffnessTimeStepper(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb(),Bo1_Facet_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Box_Sphere_ScGeom6D()],
[Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True, setCohesionOnNewContacts=True)],
[Law2_ScGeom6D_CohFrictPhys_CohesionMoment(),Law2_ScGeom_FrictPhys_CundallStrack()]
),
NewtonIntegrator(damping=0.7,gravity=[0,0,0],exactAsphericalRot=True)
]


id_Mat1=O.materials.append(CohFrictMat(normalCohesion= 1e15, shearCohesion= 1e13, isCohesive= True, young=1e5,
density=2000, poisson=0.3, frictionAngle= 0.4))
CohMat=O.materials[id_Mat1]


upper_plate = O.bodies.append(box((0,0,0),(1,1,0.1),fixed=True,material=CohMat))


O.bodies.append(sphere((0,0,1),0.05,fixed=True, material=CohMat))


#=========================================Boundary Conditions=======================================================


O.bodies[upper_plate].aspherical=True



O.engines=O.engines+[PyRunner(iterPeriod=1,command='addPlotData()',label='plotDataCollector')]


plot.plots={'t':('eps',),' t':('rot'),}



def addPlotData():
       yade.plot.addData(t=O.time,pos=O.bodies[upper_plate].state.pos[2],eps=(O.bodies[upper_plate].state.angVel[2])/O.time,
			rot=O.bodies[upper_plate].state.rot()[2])

plot.plot()

-- 
You received this question notification because you are a member of
yade-users, which is an answer contact for Yade.