A problem with 'JCFmpMat'

Asked by William

Hi, everyone. I have a problem with ‘JCFpmMat’.

What’s the difference between ‘JCFpmMat’ and ‘FrictMat’ if we set the tensileStrength and cohesion to 0?

For example, there are two scripts and the difference between them (materials and contact InteractionLoop) is as follows:

Script1:

O.materials.append(FrictMat(young = WYoung , poisson = WPoisson , frictionAngle = radians(WFrictionAngle) , density = WDensity,label='walls'))
O.materials.append(FrictMat(young = Young , poisson = Poisson , frictionAngle = radians(compFricDegree),density = Density,label='spheres'))

O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
 InteractionLoop(
  [Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
  [Ip2_FrictMat_FrictMat_FrictPhys()],
  [Law2_ScGeom_FrictPhys_CundallStrack()]
 ),
 GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
 triax,
 newton
]

#
#
#

Script 2:

O.materials.append(JCFpmMat(type=0,young = WYoung , poisson = WPoisson , frictionAngle = radians(WFrictionAngle) , density = WDensity,label='walls'))
O.materials.append(JCFpmMat(type=1,young = Young , poisson = Poisson , frictionAngle = radians(compFricDegree),density = Density,tensileStrength=TENS,cohesion=COH,label='spheres'))

triax.goal1=triax.goal2=triax.goal3=-100000
setContactFriction(radians(finalFricDegree))
O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Box_Aabb(),Bo1_Sphere_Aabb(aabbEnlargeFactor=intR,label='Saabb')]),
 InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intR,label='SSgeom'),Ig2_Box_Sphere_ScGeom()],
[Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=1,label='interactionPhys')],
[Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM(recordCracks=True,Key=OUT,label='interactionLaw')]),
 GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
 triax,
 newton
]
#
#
#
The two scripts are same except the above content. However, the results of the two triaxal tests differed greatly.

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Luc Scholtès
Solved:
Last query:
Last reply:
Revision history for this message
Best Luc Scholtès (luc) said :
#1

Hello,

It would be good to know about those differences you mention (stiffness, peak value, residual strength, ...) but I can already say this:

The JCFPM defines the equilibrium distance from the initial interparticle centre to centre distance (computed from at the first iteration of the simulation). The Cundall&Strack model (frictmat) defines the equilibrium distance as the actual geometrical contact (centre to centre distance - sum of radii).

Basically, the sample is stress free at the first iteration of a JCFPM simulation.

Also, you can define long range interactions with the JCFPM: intR>1 will create contacts between particles not geometrically in contact.

Luc

Revision history for this message
William (qfxx-123) said :
#2

Hi, Luc. Thanks for your reply.

> Basically, the sample is stress free at the first iteration of a JCFPM simulation.
Sorry, I don't understand what does this mean.

> Also, you can define long range interactions with the JCFPM: intR>1 will create contacts between particles not geometrically in contact.
If I've given the position of the particles beforehand, and they're touching each other, what's the use of 'intR>1' in the engine?

Finally, how should I edit the code if I want that the results of 'JCFpmMat' is same with 'FrictMat'?

William

Revision history for this message
William (qfxx-123) said :
#3

Hi, Luc. I have read your paper and it helped me a lot.

I have understood the meaning of 'aabbEnlargeFactor' and 'interactionDetectionFactor'.

I set the intR to 0 and try again. the results show that the strength of the two methods is identical.

Thanks for your guidance.

Revision history for this message
William (qfxx-123) said :
#4

Thanks Luc Scholtès, that solved my question.