If the PeriodicFlowEngine can simulate the oedometer test

Asked by Gao Xiang

Hello, all,
  I want to reproducing the simulation of oedometer test in examples through PeriodicFlowEngine [1], first, I want to modify the script in the previous question[2] to get the permeability , but it seems to be difficult, I want to know how to apply the periodic boundary condition to form the grad and calculate the permeability of the periodic cell. And I refer to other answers [3], learn that the periodic boundary condition has not a real boundary.
Therefore, I have some questions:
Q1: flow.bndCondIsPressure() and flow.bndCondValue() are not meaningful for periodic problems, what are the alternative methods for applying grad boundary conditions, flow.gradP?or flow.imposePressure() ?
Q2:how to get the permeability in a periodic cell?flow.getBoundaryFlux() is also not meaningful now, can flow.averageVelocity() achieve it or not.
Q3: finally, I want to know, in theory, if the PeriTriaxController and PeriodicFlowEngine can reproduce the oedometer test as TriaxialStressController and FlowEngine[1], and make a good agreement with the analytical solution.

The script of FlowEngine[2]:
#B. Activate flow engine and set boundary conditions in order to get permeability
flow.dead=0
flow.defTolerance=0.3
flow.meshUpdateInterval=200
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]
O.dt=0.1e-3
O.dynDt=False

O.engines=O.engines+[PyRunner(command='flow.saveVtk()',iterPeriod=1)]
O.run(1,1)
Qin = flow.getBoundaryFlux(2)
Qout = flow.getBoundaryFlux(3)
permeability = abs(Qin)/1.e-4 #size is one, we compute K=V/∇H
print ("Qin=",Qin," Qout=",Qout," permeability=",permeability)

[1]trunk\examples\FluidCouplingPFV\oedometer.py
[2]https://answers.launchpad.net/yade/+question/681146
[3]https://answers.launchpad.net/yade/+question/685707

Thank you!
Looking forward to your help
Xiang GAO

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Bruno Chareyre
Solved:
Last query:
Last reply:
Revision history for this message
Bruno Chareyre (bruno-chareyre) said :
#1

Hi,

Q1." flow.gradP?or flow.imposePressure() ?" both work and they are compatible with each other. Typically, you can assign P somewhere and its derivative at the macroscale (the gradient).

Q2. "flow.averageVelocity() achieve it or not.". Yes. The average velocity is the output if you assign gradP as input.

Q3. "if the PeriTriaxController and PeriodicFlowEngine can reproduce the oedometer test"
Easy answer: "no". The oedometer is a diffusion problem and a diffusion problem is not periodic in general.
Tedious answer: in fact you could impose fluid pressure along a plane cutting through the period, and impose the average effective stress with PeriTriax (how exactly, I'm not sure). That would somehow approach an oedometer situation, and it would be consistent with the general theory of consolidation. But in fact it would only make things more complex, and in the end you would just simulate the periodic superposition of independent consolidating layers. I don't see a clear progress.

Revision history for this message
Gao Xiang (gaoxiang22) said :
#2

Hello, Bruno,
Thanks for your answer, if I want to generate a periodic RVE for multiscale problems by PeriTriaxController and PeriodicFlowEngine, and the RVE is homogeneous with gradP=0?
Furthermore, I want to simulate the hydraulic condition of RVE, such as the pressure and permeability, and obtain the mechanical response(stress). Therefore, the questions are:

Q1. In the periodic RVE that is subjected to different pressure and loading conditions, could the setting of pressure be applied by flow.imposePressure()?

Q2. The permeability of the periodic RVE can be obtained by flow.averageVelocity(). Sorry to repeat the question Q1 and Q2 again, I just want to make sure I figure out it.

Q3. if flow.getPorePressure returns a pressure value of a specific position, how to calculate the pressure of RVE with homogeneous assumption.

Q4. The stress of PeriTriaxController (triax.stress) is the total stress or effective stress

I hope I made my question clear, looking forwards to your reply.

Thank you again!

Xiang GAO

Revision history for this message
Jérôme Duriez (jduriez) said :
#3

[Q3: Flow engine works from a non uniform pressure field, so if you really want a unique value I think you will need to make an average somehow]

Q4: this is the stress stemming from interparticle interaction (contact) forces [*]. So, effective stress.

[*] https://gitlab.com/yade-dev/trunk/-/blob/master/pkg/dem/PeriIsoCompressor.cpp#L142

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

Q1. " could the setting of pressure be applied by flow.imposePressure()?"
Yes, it could.

Q2. Yes.

Q3. Take the average of the pressure in all pores?

Q4. It is very unclear what it is since a consolidating volume is never homogeneous (first problem), and the stress definition at the microscale is assuming a system of forces in equilibrium (not the case here since there are drag forces not counted in the stress, second problem).
That's why I would really refrain from simulating consolidation with periodic boundaries.

Revision history for this message
Gao Xiang (gaoxiang22) said :
#5

Thanks Bruno Chareyre, that solved my question.