yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #14459
[Bug 1809688] [NEW] JCFpmMat
Public bug reported:
When i trying to replace my spheres in a triaxial test by clumps with
the material of JCFpmMat, i encounter this error:
RuntimeError: Body #14: Body::material type JCFpmMat doesn't correspond
to Body::state type State (should be JCFpmState instead).
Please note that with no replacement with clumps, there is no problem.
The other point is that if i reduce the Rmean to generate more spheres,
then the script would not be run. I think it is a bug for this contact
model and it should be modified from the source.
the MWE is as following:
from yade import pack,plot
from yade import export, ymport
import random
from yade import utils
############################################
### DEFINING VARIABLES AND MATERIALS ###
############################################
key='_Triax-J2_'
intRadius= 1
mn,mx=Vector3(0,0,0),Vector3(.1,.1,.1) # corners of the initial packing
## create materials for spheres and plates
id_Mat=O.materials.append(JCFpmMat())
Mat=O.materials[id_Mat]
#frictionless walls
O.materials.append(FrictMat(label='walls'))
## create walls around the packing
walls=aabbWalls([mn,mx],thickness=0,material='walls')
wallIds=O.bodies.append(walls)
## use a SpherePack object to generate a random loose particles packing
sp=pack.SpherePack()
sp.makeCloud(minCorner=mn,maxCorner=mx,rMean=.029,rRelFuzz=0.0,periodic=False,num=5000)
O.bodies.append([sphere(c,r,material=Mat) for c,r in sp])
relRadList1=[1,1]
relPosList1=[[0,0,0],[.5,.5,.5]]
templates= []
templates.append(clumpTemplate(relRadii=relRadList1,relPositions=relPosList1))
O.bodies.replaceByClumps(templates,[1.0], discretization=5)
###########################
## DEFINING ENGINES ###
###########################
triax=TriaxialStressController(
thickness = 0,
stressMask = 7,
internalCompaction=False,
)
newton=NewtonIntegrator(damping=.2, gravity=[0,0,0])
########################################
#Modified engine
##################################
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=intRadius),Bo1_Box_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intRadius),Ig2_Box_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys(),Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=10, label='jcf')],
[Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM(smoothJoint=True,label='interactionLaw', recordCracks=True),Law2_ScGeom_FrictPhys_CundallStrack()]
),
GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.5),
triax,
TriaxialStateRecorder(iterPeriod=100,file='J2_Triaxial,'+key),
newton
]
triax.goal1=triax.goal2=triax.goal3=-150000
O.step()
** Affects: yade
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of Yade
developers, which is subscribed to Yade.
https://bugs.launchpad.net/bugs/1809688
Title:
JCFpmMat
Status in Yade:
New
Bug description:
When i trying to replace my spheres in a triaxial test by clumps with
the material of JCFpmMat, i encounter this error:
RuntimeError: Body #14: Body::material type JCFpmMat doesn't
correspond to Body::state type State (should be JCFpmState instead).
Please note that with no replacement with clumps, there is no problem.
The other point is that if i reduce the Rmean to generate more
spheres, then the script would not be run. I think it is a bug for
this contact model and it should be modified from the source.
the MWE is as following:
from yade import pack,plot
from yade import export, ymport
import random
from yade import utils
############################################
### DEFINING VARIABLES AND MATERIALS ###
############################################
key='_Triax-J2_'
intRadius= 1
mn,mx=Vector3(0,0,0),Vector3(.1,.1,.1) # corners of the initial
packing
## create materials for spheres and plates
id_Mat=O.materials.append(JCFpmMat())
Mat=O.materials[id_Mat]
#frictionless walls
O.materials.append(FrictMat(label='walls'))
## create walls around the packing
walls=aabbWalls([mn,mx],thickness=0,material='walls')
wallIds=O.bodies.append(walls)
## use a SpherePack object to generate a random loose particles packing
sp=pack.SpherePack()
sp.makeCloud(minCorner=mn,maxCorner=mx,rMean=.029,rRelFuzz=0.0,periodic=False,num=5000)
O.bodies.append([sphere(c,r,material=Mat) for c,r in sp])
relRadList1=[1,1]
relPosList1=[[0,0,0],[.5,.5,.5]]
templates= []
templates.append(clumpTemplate(relRadii=relRadList1,relPositions=relPosList1))
O.bodies.replaceByClumps(templates,[1.0], discretization=5)
###########################
## DEFINING ENGINES ###
###########################
triax=TriaxialStressController(
thickness = 0,
stressMask = 7,
internalCompaction=False,
)
newton=NewtonIntegrator(damping=.2, gravity=[0,0,0])
########################################
#Modified engine
##################################
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=intRadius),Bo1_Box_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intRadius),Ig2_Box_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys(),Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=10, label='jcf')],
[Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM(smoothJoint=True,label='interactionLaw', recordCracks=True),Law2_ScGeom_FrictPhys_CundallStrack()]
),
GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.5),
triax,
TriaxialStateRecorder(iterPeriod=100,file='J2_Triaxial,'+key),
newton
]
triax.goal1=triax.goal2=triax.goal3=-150000
O.step()
To manage notifications about this bug go to:
https://bugs.launchpad.net/yade/+bug/1809688/+subscriptions
Follow ups