yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #10938
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.