Bug in Calculating getSaturation in TwoPhaseFlow Engine
hi there
I had a problem using TwoPhaseFlow Engine
The value of Saturation Degree 'getSaturation(
According to the formula
Porosity=
VoidVolumes=
The volume of Voids containing the air and Water.
We have blocked the way out water by 'bndCondIsPress
And only the volume of air in the ٰVoid decreases
According to the formula
DegreeOfSaturat
while Oedometer loading:
VolumeOfWater > Constant
VolumeOfVoids > Decresed
So DegreeOfSaturation must be Increased while loading but in TwoPhaseFlow Engine , Degree of Saturation No changed!!!
-------
CODE:
import matplotlib; matplotlib.
from yade import pack
import pylab
from numpy import *
utils.readParam
from yade.params import table
seed=table.seed
num_spheres=
compFricDegree = table.compFricD
confiningS=-1e5
psdSizes,
sp=pack.
mn,mx=Vector3(
sp.makeCloud(
O.materials.
O.materials.
walls=aabbWalls
wallIds=
O.bodies.
triax=TriaxialS
internalCompac
goal1=confiningS,
goal2=confiningS,
goal3=confiningS,
max_vel=10,
label="triax"
)
newton=
O.engines=[
ForceResetter(),
InsertionSortC
InteractionLoop(
[Ig2_
[Ip2_
[Law2_
),
GlobalStiffnes
triax,
newton
]
while 1:
O.run(1000,True)
unb=unbalance
if unb<0.01 and abs(triax.
break
#######
## REACH NEW EQU. STATE ###
#######
finalFricDegree = 30 # contact friction during the deviatoric loading
triax.internalC
setContactFrict
while 1:
O.run(1000,True)
unb=unbalance
if unb<0.01 and abs(triax.
break
triax.depth0=
triax.height0=
triax.width0=
O.run(1000,True)
ei0=-triax.
si0=-triax.
from yade import plot
O.engines=
def history():
plot.
s11=
s22=
s33=
pc=
sw=
i=O.iter
)
plot.plots=
plot.plot()
#######
## Drainage Test under oedometer conditions ###
#######
triax.stressMask=2
triax.goal1=
goalTop=
triax.goal2=goalTop
triax.wall_
recorder.dead=0
unsat=TwoPhaseF
meanDiameter=
unsat.bndCondIs
unsat.bndCondVa
unsat.isPhaseTr
unsat.initializ
unsat.surfaceTe
for pg in arange(
unsat.
unsat.invasion()
unsat.
for b in O.bodies:
O.forces.
while 1:
O.run(
unb=
if unb<0.01:
break
print 'PC:',-
print '------
## Oedometer conditions
unsat.bndCondIs
triax.stressMask=2
triax.goal1=
goalTop=
triax.goal2=goalTop
triax.wall_
loadingMatrix=
for i in arange(
triax.
O.run(2000,True)
print 'Load:'
-------
end of code
-------
The answer I see is wrong:
Load: -500000.0 Sw : 0.342644313462 VoidVolume: 416.023513815
Load: -1000000.0 Sw : 0.342644313462 VoidVolume: 397.169630442
Load: -1500000.0 Sw : 0.342644313462 VoidVolume: 379.874928145
Load: -2000000.0 Sw : 0.342644313462 VoidVolume: 364.400131389
Load: -2500000.0 Sw : 0.342644313462 VoidVolume: 349.46032174
Load: -3000000.0 Sw : 0.342644313462 VoidVolume: 336.874781629
-------
It is observed that due to the closure of the water outlet, the volume of Voids decreased but the amount of saturation remained constant during loading, which is incorrect
Question information
- Language:
- English Edit question
- Status:
- Invalid
- For:
- Yade Edit question
- Assignee:
- No assignee Edit question
- Solved by:
- Jérôme Duriez
- Solved:
- Last query:
- Last reply: