Different stress values from different Yade versions when running PeriodicFlowEngine
I’m working on a Fluid-DEM coupling simulation script and trying to export two things : (1) the total stress acting at the boundary and (2) the effective stress with changing pore water pressure.
What the script will do :
State I : Execute an iso-compression using PeriTriaxController engine
State II : The PeriTriaxController engine is switched off, the PeriodicFlowEngine is then applied with fluid pressure increasing by stepping value Delta_P = 100 kPa after every 1000 iterations. Once the fluid pressure reaches 500 kPa , the simulation stops and a stress plot will be given.
The script runs fine without any technical error ; however, when running with YADE 2018.02b (installed from Ubuntu repo), the output stress is calculated as it’s supposed to be : the boundary stress is constant while the effective stress decreases according to the imposed fluid pressure; but when running with Yadedaily (version Yade 20200701-
Can you please tell me what changes have been made in YADE between the two versions that produces such different results on the same script? What modification should be done in latest Yade version to obtain the result given in YADE 2018.2b?
More info:
1) I’m running Ubuntu 18.04.04
2) useSolver was set to zero because Yade 2018.2b gives me error about not-compiled CHOLMOD when I used 3, but I think I should ask in another question about this issue.
The MWE script is below:
from __future__ import print_function
from yade import pack,plot,
import math
sp=pack.
O.periodic=True
# dimensions of sample (fixed by particle size such as L/D~X)
DIAMETER =1.e-1
RADIUS =0.5*DIAMETER
length =10*(DIAMETER)
height =length
width =length
thickness =length/100.
# microproperties
DENS =2600
E =1.e9
P =0.25
compFRIC =1.
FRIC =30.
TENS =0.
COH =0.
# boundary conditions
PI =1.e5 # for sample preparation: isotropic compaction up to PI pressure
PC =PI # confining pressure for assembly preparation
SN =5.e6 # normal stress
# simulation control
DAMPSHEAR =0.
ITER =1e6
OUT ='test'
#### create sample and loading boxes
O.cell.
O.materials.
O.materials.
upBox = utils.box(
lowBox = utils.box(
O.bodies.
sp.makeCloud(
O.bodies.
effCellVol=
volRatio=
#### engines
flow=PeriodicFl
isActivated=0 # no flow calculation if this is False
,useSolver=0 # value 3 not work with YADE 2018.2b package version
,defToleran
,meshUpdate
,duplicateT
,boundaryUs
,wallIds=
,wallThickn
,bndCondIsP
,permeabili
,viscosity=1e-3
,fluidBulkM
,label=
)
O.engines=[
ForceResetter()
,InsertionS
,Interactio
)
,flow
,PeriTriaxC
,GlobalStif
,NewtonInte
,PyRunner(
]
inputP=0
def dataRecorder():
global inputP
h=vol=
h=O.
vol=
contactStre
for o in O.bodies:
if isinstance(
nb_s += 1
vol_s += 4.*pi/3.
n = 1-vol_s/vol
for i in O.interactions:
if i.isReal and i.phys.
plot.addData(
iter=O.iter
,pf=inputP
,height=h
,volume=vol
,porosity=n
)
phase=0
def triaxDone():
global phase
volRatio=
if phase==0:
Rmin=1e6
for o in O.bodies:
if isinstance(
if o.shape.
if o.shape.
n = 1-vol_s/vol
phase+=1
elif phase==1:
O.pause()
#### Initialization
print('SAMPLE PREPARATION!')
O.run(1000000,1)
O.step()
#### Applying normal stress
print('NORMAL LOADING! iter =',O.iter)
stage=0
stiff=fnPlaten=
def servo():
global stage,stiff,
if stage==0:
if ( (abs(currentSN-
for i in O.interactions.
if stage==1:
O.engines = O.engines[
O.run(1000000,1)
recData.dead=False
O.run(1,1)
#### injecting fluid
print('FLUID! iter =',O.iter)
flowEng.
flowEng.
flowEng.
newton.damping=0.
O.run(1,1)
# automatic
iter0=O.iter
iterMax=5e3
deltaP=1e5
while O.iter<
O.run(1000,True)
inputP+=deltaP
flowEng.
flowEng.
print('updateBCs! inputP=',inputP)
O.run(1,1)
plot.plots=
plot.plot()
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 Hien N.G. NGUYEN for more information if necessary.