New question #700411 on Yade:
https://answers.launchpad.net/yade/+question/700411
python3.8:
/builds/yade-dev/trunk/deb/yadedaily/pkg/common/InsertionSortCollider.cpp:778:
bool yade::InsertionSortCollider::spatialOverlapPeri(yade::Body::id_t,
yade::Body::id_t, yade::Scene*, yade::Vector3i&) const: Assertion `maxima[3 *
id1 + axis] - minima[3 * id1 + axis] < .99 * dim' failed.
python3.8:
/builds/yade-dev/trunk/deb/yadedaily/pkg/common/InsertionSortCollider.cpp:778:
bool yade::InsertionSortCollider::spatialOverlapPeri(yade::Body::id_t,
yade::Body::id_t, yade::Scene*, yade::Vector3i&) const: Assertion `maxima[3 *
id1 + axis] - minima[3 * id1 + axis] < .99 * dim' failed.
Aborted (core dumped)
I am running a periodic triaxial test using hertz-mindlin contact law. However,
the program abort suddenly as soon as I add the rolling stiffness coefficient
and rolling plastic limit (as shown above). If these values are set to 0, the
simulation can continue.
My code is as follows:
# encoding: utf-8
readParamsFromTable(
num=2500,
)
import glob, os
import numpy as np
from yade.params import table
from yade import pack, plot
isBatch=runningInBatch() #check if run in batch mode
if isBatch:
print('Running: '+O.tags['description']) #mark the current simulation
num = table.num # number of soil particles
dScaling = 1e3 # density scaling to increase crticial time step
sigmac= -10 # confining pressure
rate = 0.1 # strain rate
damp = 0.5 # damping coefficient
stabilityRatio = 1.e-3 # threshold for quasi-static condition
stressTolRatio = 1.e-3 # tolerance for stress goal
# corners to define specimen size
m_1=0.004*pow(num/2500,1/3)
m_2=0.008*pow(num/2500,1/3)
mn,mx=Vector3.Zero,Vector3(m_1,m_1,m_2)
# Soil sphere parameters
E=7e9 # micro Young's modulus
v=0.3 # micro Poisson's ratio
kr=0.5 # rolling/bending stiffness coefficient
eta=0.5 # rolling/bending plastic limit
mu = 26 # contact friction angle
rho = 2650*dScaling # soil density
# create materials
spMat = O.materials.append(
FrictMat(young=E,poisson=v,frictionAngle=radians(mu),density=rho))
# create a cloud of ramdomly positioned spheres
O.periodic = True
O.cell.hSize = Matrix3(mx[0],0,0, 0,mx[1],0, 0,0,mx[2])
sp=pack.SpherePack()
sizes=[.00015,.000225,.0003,.0003625,.00045,.0006,0.00118]
cumm=[0,.215,.3807312826,.601,.8865351132,.9965177017,1]
sp.makeCloud(mn,mx,psdSizes=sizes,psdCumm=cumm,distributeMass=True,seed=1,num=num)
# load spheres to simulation
spIds=sp.toSimulation(material=spMat)
#define engines
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_MindlinPhys(
krot=kr,
ktwist=kr,
eta=eta
)],
[Law2_ScGeom_MindlinPhys_Mindlin(includeMoment=True)]
),
PeriTriaxController(label='triax',
goal=(sigmac,sigmac,sigmac),
# whether they are strains or stresses
stressMask=7,
# type of servo-control
dynCell=True,
maxStrainRate=(10*rate,10*rate,10*rate),
# wait until the unbalanced force goes below this value
maxUnbalanced=stabilityRatio,
relStressTol=stressTolRatio,
doneHook='compactionFinished()'
),
NewtonIntegrator(damping=damp,label='newton'),
PyRunner(iterPeriod=500,command='addPlotData()',label='data')
]
O.dt=.3*PWaveTimeStep()
def compactionFinished():
if unbalancedForce()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