← Back to team overview

yade-users team mailing list archive

Re: [Question #269576]: how detect force applied on beam

 

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

Yor1 posted a new comment:
Hello, 
I integrate in the interaction loop the interaction between the facet (the piston) and the sphere ( the beam).
But i obtain an error message:"Undefined or ambiguous IPhys dispatch for types FrictMat and JCFpmMat".
I define all my objects with JCFpmMat and i don't find the mistake.

PACKING='poutre400_notch'
OUT=PACKING+'_flexion_3_points'

#### Simulation Control
DAMP=0.4 # numerical damping
saveData=100 # data record interval
iterMax=200000 # maximum number of iteration (to be adjusted)
saveVTK=10000 # Vtk files record interval


### Creation de modele ###
X=15
Y=3
Z=2
r=1
xinf=0
yinf=0
zinf=0

xsup=15
ysup=3
zsup=2

#### Material microproperties -> Lac du Bonnet granite (cf. A DEM model for soft and hard rock, Scholtes & Donze, JMPS 2013)
intR=1.5 
DENS=4000 
YOUNG=65e9 
FRICT=10
ALPHA=0.4
TENS=8e6 
COH=160e6
#### material definition
def sphereMat(): return JCFpmMat(type=1,density=DENS,young=YOUNG,poisson = ALPHA,frictionAngle=radians(FRICT),tensileStrength=TENS,cohesion=COH)
def wallMat(): return JCFpmMat(type=0,density=DENS,young=YOUNG,frictionAngle=radians(0))
O.bodies.append(ymport.text(PACKING+'.spheres',scale=1.,shift=Vector3(0,0,0)))

O.reset()

O.bodies.append(geom.facetCylinder(center=(xinf+X/5.,yinf-0.9*r,Z/2.),radius=r,height=Z,orientation=Quaternion((1, 0, 0), 0),segmentsNumber=20,wire=False)) # bas gauche
O.bodies.append(geom.facetCylinder(center=(0.8*X,yinf-0.9*r,Z/2.),radius=r,height=Z,orientation=Quaternion((1, 0, 0), 0),segmentsNumber=20,wire=False)) # bas droite
piston=O.bodies.append(geom.facetCylinder(center=(0.5*X,Y+r,Z/2.),radius=r,height=Z,dynamic=False,orientation=Quaternion((1, 0, 0), 0),segmentsNumber=20,wire=False)) # haut

#### now we construct the surrounding walls with right dimensions
### walls
#mn,mx=Vector3(xinf,yinf,zinf),Vector3(xsup,ysup,zsup)
#walls=utils.aabbWalls(oversizeFactor=1.5,extrema=(mn,mx),thickness=min(X,Y,Z)/100.,material=wallMat)
#wallIds=O.bodies.append(walls)
### packing
O.bodies.append(ymport.text(PACKING+'.spheres',scale=1.,shift=Vector3(0,0,0),material=sphereMat))


### set a color to the spheres
for o in O.bodies:
 if isinstance(o.shape,Sphere):
   o.shape.color=(0.7,0.5,0.3)


#---------------- ENGINES DEFINED HERE

##### simulation piston's movement

for i in range(0,len(piston)):
	O.bodies[piston[i]].state.vel[1]=-1

##### simulation of movement of beam's grains
O.engines=[
        ForceResetter(),
        InsertionSortCollider([Bo1_Box_Aabb(),Bo1_Sphere_Aabb(aabbEnlargeFactor=intR,label='Saabb'),Bo1_Facet_Aabb()]),
	InteractionLoop(
		[Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intR,label='SSgeom'),Ig2_Facet_Sphere_ScGeom()],
		[Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=1,label='interactionPhys')],
		[Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM(recordCracks=True,Key=OUT,label='interactionLaw')]
	),
        
	#ForceEngine(ids=wallIds, force=Vector3(0,-100,0)),
        GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=10,timestepSafetyCoefficient=0.4, defaultDt=0.1*utils.PWaveTimeStep()),
        NewtonIntegrator(damping=DAMP,label="newton"),
        PyRunner(iterPeriod=int(saveData),initRun=True,command='recorder()',label='data'),
        VTKRecorder(iterPeriod=int(saveVTK),initRun=True,fileName=OUT+'-',recorders=['spheres','jcfpm','cracks'],Key=OUT,label='vtk')
]

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


Follow ups