Not able to apply DOF constraints

Asked by Akm

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:
Last reply:
Revision history for this message
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

Revision history for this message
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.

Revision history for this message
Robert Caulk (rcaulk) said :
#3

Status change: OP indicated question as solved.