Does 'JCFpmPhys' have 'matchmaker'?
Hi, everyone!
I want to simulate the combination of granular particles and rocks. That is to say, one part of a sample is soil particles, and the other part is rock consist of the bonded particles.
Firstly, I import the particle using ‘ymport.text’. Then, I create two types of sphere materials (the tensileStrength and cohesion between the materials are different) and assign them to the particles in percentage terms.
Here is the mats:
mat1=JCFpmMat(
mat_1=O.
mat2=JCFpmMat(
mat_2=O.
How to set the tensileStrength and cohesion between the particles of different mats? For example, is the tensileStrength 10e4, 0 or other value between the particles of mat1 and mat2? Is the ‘matchmaker’ needed in the engine here?
Here is my script.
#### packing (previously constructed)
PACKING=
#### name of output files
OUT=PACKING+
from yade import pack, timing,ymport
#######
### DEFINING VARIABLES AND MATERIALS ###
#######
## Sphere material
Young=300e6
Density=2650
Poisson=0.3
compFricDegree = 0
finalFricDegree = 27
AvgRadius=0.0002
intR=1
TENS=0.1e6
COH=0.45e6
TENS0=0
COH0=0
## wall material
WYoung=600e7
WPoisson=0.5
WDensity=0
WFrictionAngle=0
damp=0.7 # damping coefficient
stabilityThresh
# corners of the initial packing
size=0.05
mn,mx=Vector3(
#mn2,mx2=
O.materials.
#O.materials.
walls=aabbWalls
wallIds=
mat1=JCFpmMat(
mat_1=O.
mat2=JCFpmMat(
mat_2=O.
O.bodies.
sphere1=[]
sphere2=[]
for b in O.bodies:
if not isinstance(
continue
if random.random() < 0.1:
b.mat = mat1
b.shape.color = (1,0,0)
#b.
sphere1.
else:
b.mat = mat2
b.shape.color = (0,1,1)
#b.
sphere2.
R=0
Rmax=0
numSpheres=0.
for o in O.bodies:
if isinstance(
numSpheres+=1
R+=o.
Rmean=R/numSpheres
#######
### DEFINING ENGINES ###
#######
triax=TriaxialS
#wall_
#wall_
thickness = 0,
stressMask = 7,
internalCom
)
newton=
#######
### APPLYING CONFINING PRESSURE ###
#######
#the value of (isotropic) confining stress defines the target stress to be applied in all three directions
#######
### REACHING A SPECIFIED POROSITY PRECISELY ###
#######
triax.goal1=
setContactFrict
O.engines=[
ForceResetter(),
InsertionSortC
InteractionLoop(
[Ig2_
),
GlobalStiffnes
triax,
newton
#PyRunner(
]
while 1:
O.run(1000, True)
#the global unbalanced force on dynamic bodies, thus excluding boundaries, which are not at equilibrium
unb=unbalance
print ('unbalanced force:',unb,' mean stress: ',triax.
if unb<0.000001 and abs(-100000-
break
O.save('2.yade.gz')
O.save(
Question information
- Language:
- English Edit question
- Status:
- Answered
- For:
- Yade Edit question
- Assignee:
- No assignee Edit question
- Last query:
- Last reply:
Can you help with this problem?
Provide an answer of your own, or ask William for more information if necessary.