a problem about PFV

Asked by bin deng

Dear all,
I'm trying to simulate a granular seabed under stationary wave pressure by using DEM-PFV model.
But I have a problem when I try to varify my simulation result. I find that the variation of pore pressure with time at different depths inside the seabed is not accurate compared with experimental results. Because the pressure drop along the depth is not obvious, and the pore pressure at the bottom of soil is still large. Maybe there is some parameters need to be set? Or other reasons I don't know.
Here is my code:

*************************************************************************
from yade import pack
from yade import *

num_spheres=5000# number of spheres
young=1.5e7
compFricDegree = 3 # initial contact friction during the confining phase
finalFricDegree = 30 # contact friction during the deviatoric loading
mn,mx=Vector3(0,0,0),Vector3(2,0.75,0.3) # corners of the initial packing
pi=3.1415926

O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=radians(compFricDegree),density=2640,label='spheres'))
O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=0,density=0,label='walls'))
walls=aabbWalls([mn,mx],thickness=0,material='walls')
wallIds=O.bodies.append(walls)
pred=inAlignedBox((0,0,0),(2,0.75,0.3))

sp=pack.randomDensePack(pred,radius=0.025,rRelFuzz=0.1,spheresInCell=num_spheres,returnSpherePack=True)
sp.toSimulation(material='spheres')

newton=NewtonIntegrator(gravity=(0,-9.81,0))

from yade import qt

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()],label="iloop"
 ),
 FlowEngine(label="flow"),
 GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
 newton
]

## ______________ FLOW section _________________
# Activate flow engine and set boundary conditions

while 1:
    flow.defTolerance=0.3
    flow.meshUpdateInterval=200
    flow.useSolver=3
    flow.bndCondIsPressure=[0,0,1,1,0,0]
    flow.bndCondValue=[0,0,500,0,0,0]
    flow.boundaryUseMaxMin=[0,0,0,0,0,0]
    O.run(200, True)
    unb=unbalancedForce()
    if unb<0.001:
        break
print "n=",flow.porosity
flow.bndCondIsPressure=[0,0,0,1,0,0]
flow.meshUpdateInterval=25
flow.waveAction=1
flow.sineAverage=0
t_zero=O.time
def timeDependentPressure():
       t = O.time-t_zero
       A = 288
       T = 1.5
       flow.sineMagnitude=A*cos(2.0*pi*t/T)
       flow.updateBCs()
from yade import plot

## a function saving variables
def history():
   plot.addData(p0=flow.getPorePressure((0,0.49,0.15)),p1=flow.getPorePressure((0,0.39,0.15)),p2=flow.getPorePressure((0,0.29,0.15)),p3=flow.getPorePressure((0,0.19,0.15)),n=flow.porosity,t=O.time-t_zero,a=flow.sineMagnitude)

O.engines=O.engines+[PyRunner(iterPeriod=100,command='history()',label='recorder')]

O.engines=O.engines+[PyRunner(iterPeriod=50,command='timeDependentPressure()')]

O.engines=O.engines+[PyRunner(iterPeriod=100,command='flow.saveVtk()')]

from yade import plot
plot.plots={'t':('p0','p1','p2','p3',),'t ':('n'),'t ':('a')}
plot.plot()
O.saveTmp()
O.timingEnabled=1
from yade import timing
print "starting oedometer simulation"
timing.stats()
*************************************************************************

If you have some ideas I would be more than grateful!
Best,
Deng

Question information

Language:
English Edit question
Status:
Expired
For:
Yade Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:

This question was reopened

Revision history for this message
Robert Caulk (rcaulk) said :
#1

Hello Deng,

Just a thought, have you considered the permeability of the experimental specimen vs the permeability of your numerical specimen[1]?

Cheers,

Robert

[1] https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.FlowEngine.permeabilityFactor

Revision history for this message
bin deng (dengbintju) said :
#2

Hello Robert,

Thanks for your answer very much.
I have tried to add permeability of the experimental specimen by using permeabilityFactor. But when I add "flow. permeabilityFactor=-0.00012"(the permeability of the experimental specimen is 1.2*10-4cm/s), the simulation results are not improved obviously. So I think there are still other reasons in my code.

I also consider if the viscosity of fluid is a reason, and try add it to code some times, but don't resolve the problem.

Look forward to your kind reply. Thanks for your advice again!

Best,
Deng

Revision history for this message
Robert Caulk (rcaulk) said :
#3

If I were you I would calibrate the specimen permeability using a positive permeabilityFactor. If you use flow.debug=True you can see some flow statistics that might come in handy, but you might also consider setting up a flow-through test to measure permeability directly.

Revision history for this message
Bruno Chareyre (bruno-chareyre) said :
#4

Hi,
I don't understand the problem described.
The fact that the simulation does not match experiments says nothing, you need to compare with a theoretical solution.
Bruno

Revision history for this message
bin deng (dengbintju) said :
#5

Dear Robert and Bruno,

Thanks for your answers, that solved my question.
Can I ask another question? Whether the particles in PFV model simulate the actual particles or just representative particles(not match the actual particle size)? This question is confusing me.

Thanks again.

Best,
Deng

Revision history for this message
Robert Caulk (rcaulk) said :
#6

Hello,

Maybe Bruno should answer this since he is one of the creators of yade's PFV, but I might as well share my understanding of how it works. PFV simulates a network of pores with connecting channels. The triangulation of the pore network is controlled by the locations of the discrete elements. Permeability between pores is computed using the "actual" particle sizes and locations, and poromechanical behavior of the packing is simulated using the "actual" particle sizes and locations. Maybe that answers your question? The PFV implementation in yade is well documented in [1] and [2] for further reading.

Cheers,

Robert

[1]Catalano, E., Chareyre, B., & Barthélemy, 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.

[2]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.

Revision history for this message
bin deng (dengbintju) said :
#7

Dear Robert,

Thanks for your reply.
I just take into account the actual particle size is very small, so the calculation is very large. Did you try to simulate experiment with the actual particle size?
There is another problem in my simulation. I find that the variations of pore pressure with time at different depths are the same phase, It is also not reasonable. The pressure curves should have a phase difference.

Look forward to your kind reply. Thanks for your advice again.

Best,
Deng

Revision history for this message
Robert Caulk (rcaulk) said :
#8

Hello,

>I just take into account the actual particle size is very small, so the calculation is very large. Did you try to >simulate experiment with the actual particle size?

In some cases you can use DEM as a discretization of space. In other cases, you can let the DE represent the actual particles. Of course, if your particles are very small you won't be able to simulate a large volume without incurring great computational costs as you mention. PFV doesn't discriminate between the two cases, it simply creates a pore network based on the packing you give it.

>There is another problem in my simulation. I find that the variations of pore pressure with time at different >depths are the same phase, It is also not reasonable. The pressure curves should have a phase difference.

Have you calibrated the packing permeability?

Best,

Robert

Revision history for this message
Bruno Chareyre (bruno-chareyre) said :
#9

>The pressure curves should have a phase difference.

This really depends on many parameters (compressibility of the fluid, permeability of the porous medium, stiffness and stability of the solid,... ). Not possible to judge with the info you give.
B

Revision history for this message
Bruno Chareyre (bruno-chareyre) said :
#10

Just a note: if you set the permeabilityFactor negative then the value is used as a Darcy conductivity (probably not a perfect equality but very similar order of magnitude). It implies that in this case conductivity becomes independent of particle sizes and of fluid viscosity.
It can help if you want to use particle size just as a discretization parameter.
B

Revision history for this message
bin deng (dengbintju) said :
#11

Dear Bruno,

Thanks for your advice, that is helpful for me. And I‘m sorry to reply so late.
I have been trying to simulate the dynamic response of the soil under wave action by using DEM-PFV modle. Although there are some scripts written, but there are always inappropriate mistakes. You is one of the creators of yade's PFV, I have seen you many papers. Could you please share a related script? Let me learn how to write more correctly.

Thanks again.

Best,
Deng

Revision history for this message
Launchpad Janitor (janitor) said :
#12

This question was expired because it remained in the 'Open' state without activity for the last 15 days.