how to control the wall level when the program is running
Hi, I am studying ‘soil structure interaction’ and meeting some questions again.
I have two scripts and they should run in sequence.
The first script is used to generate particles. The particles expand until the wallstress reach 90kPa.
The second script will load the result of the first script. I delete all the walls of the model and four walls were recreated. The front and back walls aren’t recreated and I don’t know if it is correct. All walls are fixed except the top one. I apply force (100kPa) on the top wall. The top wall may slope (such as right higher than left) when add the force. How do I control it to stay level the whole time when the program is running?
The version of ubuntu is 21.10
The first script:
#######
### Defining parameters and variables ###
#######
#Material constants
Density = 3000
FrictionAngle = 1.5
PoissonRatio = 0.5
Young = 300e6
Damp = 0.5
AvgRadius = 0.1
N_particles = 4000
#Wall constants
WDensity = 0
WFrictionAngle = 0.0
WPoissonRatio = 0.5
WYoung = 50e9
#Packing variables
mn = Vector3(1,0,0)
mx = Vector3(101,20,1)
#Confining variables
ConfPress1 = -90000 #pre-compression
ConfPress = -1.0e5
#time calculation
startT = O.time
endT = O.time
timeSpent = endT - startT
#######
#import necessary packages
from yade import pack,plot,os,timing
import matplotlib; matplotlib.
import pylab
#######
### Sample Preparing ###################
#######
#Create materials for spheres and plates
SphereMat = O.materials.
WallMat = O.materials.
#Create walls for packing
wallIds = O.bodies.
sp = pack.SpherePack()
sp.makeCloud(
sp.toSimulation
O.usesTimeStepp
O.trackEnerty=True
#######
#####Defining triaxil engines####
#######
###first step: compression#######
triax1=
wall_
wall_
thickness = 0.001,
maxMultipli
finalMaxMul
internalCom
stressMask = 7,
computeStre
goal1 = ConfPress1,
goal2 = ConfPress1,
)
newton=
###engine
O.engines=[
ForceResett
InsertionSo
Interaction
[Ig2_
[Ip2_
[Law2_
),
GlobalStiff
triax1,
newton,
PyRunner(
]
# Simulation stop conditions defination
def checkUnbalanced():
unb=
if unb<0.001:
O.pause()
the second script:
#Wall constants
WDensity = 0
WFrictionAngle = 0.0
WPoissonRatio = 0.5
WYoung = 50e9
Mat = O.materials.
FrictionAngle = 35
Damp = 0.25
#Confining variables
force = -10.0e7 #force=
#time calculation
startT = O.time
endT = O.time
timeSpent = endT - startT
#restart
O.load(
#######
#import necessary packages
from yade import pack,plot,os,timing
for b in range(6):
O.bodies.
id_box1 = O.bodies.
id_box2 = O.bodies.
id_box3 = O.bodies.
id_box4 = O.bodies.
for b in O.bodies:
if isinstance(
O.forces.
O.engines=[
ForceResett
InsertionSo
Interaction
[Ig2_
[Ip2_
[Law2_
),
GlobalStiff
NewtonInteg
PyRunner(
]
# Simulation stop conditions defination
def endCheck():
unb=
if unb<0.0001:
if O.iter<60000:
return
else:
Hope anyone can help with my question.
Thanks
Xujin
Question information
- Language:
- English Edit question
- Status:
- Solved
- For:
- Yade Edit question
- Assignee:
- No assignee Edit question
- Solved by:
- Jan Stránský
- Solved:
- Last query:
- Last reply: