Simple PFV case

Asked by mrhappy on 2020-03-12

Hi,

I have some experience with YADE, but this is the first time I am using PFV. I want to experiment with DEM-PFV. I am aware that there is an example by the name Odometer Example. I have 4 spheres. Each sphere is connected to its neighboring sphere. I want to apply fluid pressure at the center of my model (0,0,0) and have the spheres spread outwards due to the pressure. I have made an attempt, but I have no clue what I am doing (the PFV part). I get an error:
0 : Vh==NULL!! id=0 Point=0.5 0.5 0 rad=0.5
1 : Vh==NULL!! id=1 Point=-0.5 0.5 0 rad=0.5
2 : Vh==NULL!! id=2 Point=-0.5 -0.5 0 rad=0.5
3 : Vh==NULL!! id=3 Point=0.5 -0.5 0 rad=0.5
AREA <= 0!!
AREA <= 0!!
AREA <= 0!!
AREA <= 0!!
AREA <= 0!!
AREA <= 0!!
AREA <= 0!!
AREA <= 0!!
I will attach my code. Any help on this would be great.

Thank you soo much!

# MATERIAL PROPERTIES
intR=0.1 # allows near neighbour interaction (can be adjusted for every packing)
DENS=2500 # Density
YOUNG=1800
FRICT=7
ALPHA=0.1
TENS=100
COH=1000
iterMax = 1

O.materials.append(JCFpmMat(type=1,density=DENS,young=YOUNG,poisson=ALPHA,frictionAngle=radians(FRICT),tensileStrength=TENS,cohesion=COH,label='mat1'))

# PARTICLES
O.bodies.append([
  sphere(center=( 0.5, 0.5, 0.0),radius=0.5,material='mat1'),
  sphere(center=(-0.5, 0.5, 0.0),radius=0.5,material='mat1'),
 sphere(center=(-0.5,-0.5, 0.0),radius=0.5,material='mat1'),
 sphere(center=( 0.5,-0.5, 0.0),radius=0.5,material='mat1'),
])

# SIMULATION LOOP
O.engines=[
      ForceResetter(),
      InsertionSortCollider([Bo1_Sphere_Aabb()]),
   InteractionLoop(
      [Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intR)],
     [Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=1)],
     [Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM()]
   ),
      GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=10,timestepSafetyCoefficient=0.5, defaultDt=utils.PWaveTimeStep()),
  NewtonIntegrator(damping=0.1),
 FlowEngine(dead=0,label="flow"),
]

flow.defTolerance=0.3
flow.meshUpdateInterval=200
flow.useSolver=3
flow.permeabilityFactor=1
flow.viscosity=10
flow.bndCondIsPressure=[0,0,1,1,0,0]
flow.bndCondValue=[0,0,1,0,0,0]
flow.boundaryUseMaxMin=[0,0,0,0,0,0]
flow.bndCondIsPressure=[0,0,0,1,0,0]
flow.bndCondValue=[0,0,0,0,0,0]
flow.updateTriangulation=True

i=createInteraction(0,1)
i=createInteraction(1,2)
i=createInteraction(2,3)
i=createInteraction(3,0)
i=createInteraction(0,2)
i=createInteraction(3,1)

#PLOTTING

# SAVE SIMULATION

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
mrhappy
Solved:
2020-03-26
Last query:
2020-03-26
Last reply:
2020-03-25
mrhappy (mrhappy) said : #1

Hi guys,

I have played around with my model and I have added walls to my model. I have read the following thesis [1]. Are there any other reading material that would be usefull? With my new code (below), I get he following error:

infinite K1!
infinite K1!
infinite K1!
infinite K1!
infinite K1!
infinite K1!
infinite K1!
infinite K1!

[1] A pore-scale coupled hydromechanical model for biphasic granular media.

As always, thank you for your help.

My new code:
# MATERIAL PROPERTIES
intR=0.1 # allows near neighbour interaction (can be adjusted for every packing)
DENS=2500 # Density
YOUNG=1800
FRICT=7
ALPHA=0.1
TENS=100
COH=1000
iterMax = 1

O.materials.append(JCFpmMat(type=1,density=DENS,young=YOUNG,poisson=ALPHA,frictionAngle=radians(FRICT),tensileStrength=TENS,cohesion=COH,label='mat1'))

mn,mx=Vector3(-1,-1,-0.5),Vector3(1,1,0.5) # corners of the initial packing
walls=aabbWalls([mn,mx],thickness=0,material='mat1')
wallIds=O.bodies.append(walls)

# PARTICLES
O.bodies.append([
  sphere(center=( 0.5, 0.5, 0.0),radius=0.5,material='mat1'),
  sphere(center=(-0.5, 0.5, 0.0),radius=0.5,material='mat1'),
 sphere(center=(-0.5,-0.5, 0.0),radius=0.5,material='mat1'),
 sphere(center=( 0.5,-0.5, 0.0),radius=0.5,material='mat1'),
])

# SIMULATION LOOP
O.engines=[
      ForceResetter(),
      InsertionSortCollider([Bo1_Sphere_Aabb()]),
   InteractionLoop(
      [Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intR)],
     [Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=1)],
     [Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM()]
   ),
      GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=10,timestepSafetyCoefficient=0.5, defaultDt=utils.PWaveTimeStep()),
  NewtonIntegrator(damping=0.1),
 FlowEngine(dead=0,label="flow"),
]

flow.defTolerance=0.3
flow.meshUpdateInterval=200
flow.useSolver=3
flow.permeabilityFactor=1
flow.viscosity=10
flow.bndCondIsPressure=[0,0,1,1,0,0]
flow.bndCondValue=[0,0,1,0,0,0]
flow.boundaryUseMaxMin=[0,0,0,0,0,0]
flow.bndCondIsPressure=[0,0,0,1,0,0]
flow.bndCondValue=[0,0,0,0,0,0]
flow.updateTriangulation=True

i=createInteraction(6,7)
i=createInteraction(7,8)
i=createInteraction(8,9)
i=createInteraction(9,6)
i=createInteraction(6,8)
i=createInteraction(7,9)

#PLOTTING

# SAVE SIMULATION

Jérôme Duriez (jduriez) said : #2

Hi,

For reading material, I guess you can check all references by Catalano, Chareyre et al. in https://yade-dem.org/doc/publications.html and scientific literature.

As for your new error, it seems to relate with some "bad" cases for the CGAL triangulation, and zero distances between adjacent cells, hence infinite permeability (I'm out of my YADE confort zone and kind off speculating here..)

See https://gitlab.com/yade-dev/trunk/-/blob/master/lib/triangulation/FlowBoundingSphere.ipp#L717

If I were you, I would definitely shorten your script, and try to focus on this 4 sphere example with default materials and a shorter script.
Critical thinking whether a 4 spheres packing can lead to a sound Triangulation would certainly also help.

Robert Caulk (rcaulk) said : #3

The infinite K1 warning is just that, a warning.

If you have a regular packing like I assume you do here, the voronoi centers of cells may end up directly on top of one another, which is not a problem for triangulation, but is a problem for estimating permeability inversely proportional to distance between voronoi centers...thus the warning. Yade puts an arbitrarily high permeability between those cells.

The best reference is [1][2].

[1]Chareyre, B., Cortis, A., Catalano, E., & Barthélemy, E. (2012). Pore-Scale Modeling of Viscous Flow and Induced Forces in Dense Sphere Packings. Transport in Porous Media, 94(2), 595–615. https://doi.org/10.1007/s11242-012-0057-2

[2Catalano, E., Chareyre, B., & Barthelemy, E. (2014). Pore-scale modeling of fluid-particles interaction and emerging poromechanical effects. International Journal for Numerical and Analytical Methods in Geomechanics, 38(1), 51–71. https://doi.org/10.1002/nag.2198

mrhappy (mrhappy) said : #4

Thank you guys for your help. I will look into this while I get some reading done. If I need any further help, I will be back.

Thank you again and stay safe!