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

Hi,
I use the PeriodicFlowEngine to simulate the erosion, I get such warning:
CHOLMOD warning: matrix not positive definite. file: 
../Supernodal/t_cholmod_super_numeric.c line: 911
something went wrong in Cholesky factorization, use LDLt as fallback this time1
Segmentation fault (core dumped)

I am looking forward to your help ? Thanks a lot !
My code is shown as follow:
##______________ First section, generate sample_________

from __future__ import print_function
from yade import pack, qt, plot
from math import *

nRead=readParamsFromTable(
        ## model parameters
        num_spheres=100,
        targetPorosity= .4,
        confiningPressure=-100000,
        ## material parameters
        compFricDegree=15,#contact friction during the confining phase
        finalFricDegree=30,#contact friction during the deviatoric loading
        young=2e8,
        poisson=.2,
        density=2600,
        alphaKr=7.5,
        alphaKtw=0,
        competaRoll=.22,
        finaletaRoll=.22,
        etaTwist=0,
        normalCohesion=0,
        shearCohesion=0,
        ## fluid parameters
        fluidDensity=1000,
        dynamicViscosity=.001,
        ## control parameters
        damp=0,
        stabilityThreshold=.001,
        ## output specifications
        filename='suffusion',
        unknowOk=True
)

from yade.params.table import *

O.periodic=True
O.cell.hSize=Matrix3(1,0,0, 0,1,0, 0,0,1)
# create materials for spheres
#shear strength is the sum of friction and adhesion, so the 
momentRotationLaw=True
O.materials.append(CohFrictMat(alphaKr=alphaKr,alphaKtw=alphaKtw,density=density,etaRoll=competaRoll,etaTwist=etaTwist,frictionAngle=radians(compFricDegree),momentRotationLaw=True,normalCohesion=normalCohesion,poisson=poisson,shearCohesion=shearCohesion,young=young,label='spheres'))

# generate particles packing
sp=pack.SpherePack()
sp.makeCloud((0,0,0),(1,1,1),-1,0.3333,num_spheres,False, 0.95,seed=1)
sp.toSimulation(material='spheres')

O.engines=[
        ForceResetter(),
        InsertionSortCollider([Bo1_Sphere_Aabb()]),
        InteractionLoop(
            [Ig2_Sphere_Sphere_ScGeom6D()],
            
[Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(label='contact',setCohesionNow=False,setCohesionOnNewContacts=False)],
            
[Law2_ScGeom6D_CohFrictPhys_CohesionMoment(useIncrementalForm=True,always_use_moment_law=True)],
        ),
        PeriodicFlowEngine(dead=1,label="flow"),#introduced as a dead engine 
for the moment, see 2nd section
        
GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
        PeriTriaxController(label='triax',
            # specify target values and whether they are strains or stresses
            goal=(confiningPressure,confiningPressure,confiningPressure), 
stressMask=7,
            # type of servo-control, the strain rate isn't determined, it 
shloud check the unbalanced force
            dynCell=True,maxStrainRate=(10,10,10),
            # wait until the unbalanced force goes below this value
            maxUnbalanced=stabilityThreshold,relStressTol=1e-3,
            doneHook='compactionFinished()'
            ),
        NewtonIntegrator(damping=0)
]


import sys
def compactionFinished():
    # after sample preparation, save the state
    O.save('compactedState'+filename+'.yade.gz')
    print('Compacted state saved', 'porosity', porosity())
    # next time, called python command
    triax.doneHook=''
    O.pause()
O.run()
O.wait()


#B. Activate flow engine 
flow.dead=0
flow.defTolerance=-1
flow.meshUpdateInterval=-1
flow.useSolver=3
flow.permeabilityFactor=1
flow.viscosity=10
flow.gradP=Vector3(0,1,0)
flow.duplicateThreshold=0.3 
flow.updateTriangulation=True
O.run(2,1)
csdList=flow.getConstrictionsFull()
print(len(O.bodies),len(csdList),'finished')
flow.dead=1
print(O.bodies[10].shape.radius)
for i in range(10,80):
    O.bodies.erase(i)
print(len(O.bodies))
O.run(1000,True)
O.engines=O.engines[0:3]+O.engines[4:]
O.step()
O.step()
O.engines=O.engines[0:3]+[PeriodicFlowEngine(dead=0,label="flow")]+O.engines[3:]
flow.defTolerance=-1
flow.meshUpdateInterval=-1
flow.useSolver=3
flow.permeabilityFactor=1
flow.viscosity=10
flow.gradP=Vector3(0,1,0)
flow.duplicateThreshold=0.3
flow.updateTriangulation=True

O.run(2,1)
csdList1=flow.getConstrictionsFull()
print(len(csdList1))


 

-- 
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     : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp

Reply via email to