Not able to apply DOF constraints

Asked by Akm on 2020-01-29

Hi all,

I tried to move a sphere(Cpmmat) using a utilsbox acting as a wall(Frictmat). I want to restrain the degrees of freedom in the other two directions but when I do that, the wall tends to fly away after bouncing on the sphere. Here is a MWE of that phenomenon. Kindly help me to understand where I have gone wrong.

########
from yade import pack, qt, export, ymport, plot

O.reset()

concrete_material=CpmMat(
 young = 1e10,
 density=1400,
 poisson = 0.25,
 frictionAngle = radians(40),
 epsCrackOnset = 1e-4,
 relDuctility = 10,
 sigmaT = 1e18,
 label='concrete_mat'
)
mat1=O.materials.append(concrete_material)

#O.materials.append(FrictMat(frictionAngle=0,density=0,label='walls'))

O.bodies.append([
 sphere(center=(0,0,0),radius=.5,fixed=False,material=concrete_material),
])

O.materials.append(FrictMat(frictionAngle=0,density=0,label='walls'))

O.engines=[
    ForceResetter(),
    InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=1,label='bo1s'),Bo1_Facet_Aabb(),Bo1_Wall_Aabb(),Bo1_Box_Aabb()]),
    InteractionLoop(
  [Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=1,label='ig2s'),Ig2_Facet_Sphere_ScGeom(),Ig2_Wall_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
  [Ip2_FrictMat_FrictMat_FrictPhys(), Ip2_CpmMat_CpmMat_CpmPhys(cohesiveThresholdIter=1)],
  [Law2_ScGeom_FrictPhys_CundallStrack(), Law2_ScGeom_CpmPhys_Cpm()]
 ),
    NewtonIntegrator(gravity=(0,0,0),damping=0.5),
    #CpmStateUpdater(iterPeriod=1),
    GlobalStiffnessTimeStepper(active=True,timeStepUpdateInterval=1,timestepSafetyCoefficient=0.8),

]

O.step()

U_box= utils.box((.5,1,-.5),(1,0,.5),fixed=True,wire=False,color=(1,0,0))
O.bodies.append(U_box)

U_box.state.mass=1
U_box.state.inertia = (1,1,1)
U_box.state.blockedDOFs = "xzXYZ"

U_box.state.vel=(0,-0.01,0)

yade.qt.View()

O.saveTmp()

######

Many thanks in advance - Arun

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Last query:
2020-01-29
Last reply:
2020-01-29
Jérôme Duriez (jduriez) said : #1

Hi,

I'm not sure I understood your objective.
The Box body is intended to move at a constant speed, and to provoke sphere movements once the box and the spheres interact ? With the movements of the sphere being not necessarily at constant speed ?

If yes, the best is to have the box completely "fixed" (blockedDOFs = 'xyzXYZ' and you won't need mass and inertia for that body) in my opinon

Akm (arunkumarmurali) said : #2

The box started to disappear after a while when I entered the specific degrees of freedom to be blocked. After your advice to include all the DOFs as blocked, this works perfectly fine. Many thanks.

Robert Caulk (rcaulk) said : #3

Status change: OP indicated question as solved.