New question #626580 on Yade:
https://answers.launchpad.net/yade/+question/626580

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


-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

_______________________________________________
Mailing list: https://launchpad.net/~yade-users
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp

Reply via email to