Many errors with PeriodicFlowEngine
After deleting some particles, I encountered a lot of problems in the PeriodicFlowEngine. Such as:
(1) GS did not converge in 20k iterations (maybe because the reference pressure is 0?);
(2) segmentation fault (core dumped);
(3) Periodicity is broken;
(4) CHOLMOD warning: matrix not positive definite. file: ../Supernodal/
something went wrong in Cholesky factorization, use LDLt as fallback this time1
For errors (3) and (4), I have solved it by changing the value of PeriodicFlowEng
For errors (1) and (2), I spent a lot of time and tried a lot, but I still can't solve them. Please help me!
I have searched for the answers about the PeriodicFlowEngine. I concluded that since there is no boundary condition for periodic boundary conditions, the PeriodicFlowEngine does not need to set boundary conditions,that is, it does not need to set the bndCondIsPressure, bndCondValue, boundaryUseMaxMin. As I want to achieve a similar simulation like the paper " A discrete numerical model involving partial fluid-solid coupling to describe suffusion effects in soils "[1], In short, it is to achieve the fluid flow from top to bottom under a certain pressure gradient, and no fluid flows out from the side, and some particles are removed during the calculation. So I just need to apply a macroscopic pressure gradient by flow.gradP=
The errors (1) and (2) still exist, this is my simplified code:
##______________ First section, generate sample_________
from __future__ import print_function
from yade import pack, qt, plot
from math import *
nRead=readParam
## model parameters
## material parameters
young=2e8,
poisson=.2,
alphaKtw=0,
competaRoll=.22,
etaTwist=0,
## fluid parameters
## control parameters
damp=0,
## output specifications
)
from yade.params.table import *
O.periodic=True
O.cell.
# create materials for spheres
#shear strength is the sum of friction and adhesion, so the momentRotationL
O.materials.
# generate particles packing
sp=pack.
sp.makeCloud(
sp.toSimulation
O.engines=[
),
# specify target values and whether they are strains or stresses
# type of servo-control, the strain rate isn't determined, it shloud check the unbalanced force
# wait until the unbalanced force goes below this value
),
]
import sys
def compactionFinis
# after sample preparation, save the state
O.save(
print(
# next time, called python command
triax.
O.pause()
O.run()
O.wait()
#B. Activate flow engine
flow.dead=0
flow.defToleran
flow.meshUpdate
flow.useSolver=0
flow.permeabili
flow.viscosity=10
flow.gradP=
flow.duplicateT
flow.updateTria
O.run(1,1)
csdList=
print(len(
flow.dead=1
print(O.
for i in range(10,90):
O.bodies.
print(len(
O.run(1000,True)
flow.dead=0
flow.defToleran
flow.meshUpdate
flow.useSolver=0
flow.permeabili
flow.viscosity=10
flow.gradP=
flow.duplicateT
flow.updateTria
O.run(3,1)
csdList1=
print(len(
[1]https:/
Question information
- Language:
- English Edit question
- Status:
- Answered
- For:
- Yade Edit question
- Assignee:
- No assignee Edit question
- Last query:
- Last reply:
This question was reopened
- by Zhicheng Gao
- by Zhicheng Gao
Can you help with this problem?
Provide an answer of your own, or ask Zhicheng Gao for more information if necessary.