yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #21304
[Question #685944]: Failed in Parametric Studies
New question #685944 on Yade:
https://answers.launchpad.net/yade/+question/685944
I would like to make a parametric studies on periodic triaxial test. To be specific, I just want to generate the different packing with different porosity by control of friction angel ranging from 0 degree to 100 degrees. Then I conduct the axial loading. It should be noted that the friction angel is set to 0.5 in radian before the axial loading phase.
First, isotropic compaction is ended by calling compactionFinished1() until -1e5 is reached in all directions.
Second, by calling compactionFinished2(), isotropic compaction is run again to set the friction angel being 0.5 in radian before the axial loading.
Third, constant-strain deformation along the z-axis while maintaining constant stress (sigmaIso) laterally is ended by calling triaxFinished().
Here are the codes.
=========================
from __future__ import print_function
readParamsFromTable(unknownOk=True,
compFricDegree=0,
noTableOk=True
)
from yade.params.table import *
young=1e7
poisson=0.3
density=1000
sigmaIso=-1e5
#import matplotlib
#matplotlib.use('Agg')
# generate loose packing
from yade import pack, plot
O.materials.append(FrictMat(young=young,poisson=poisson,frictionAngle=radians(compFricDegree),density=density,label='clumps'))
O.periodic=True
sp=pack.SpherePack()
if 0:
## uniform distribution
sp.makeCloud((0,0,0),(2,2,2),rMean=.1,rRelFuzz=.3,periodic=True)
else:
## create packing from clumps
# configuration of one clump
c1=pack.SpherePack([((0,0,0),.03333),((.03,0,0),.017),((0,.03,0),.017)])
# make cloud using the configuration c1 (there could c2, c3, ...; selection between them would be random)
sp.makeClumpCloud((0,0,0),(2,2,2),[c1],periodic=True,num=500)
# setup periodic boundary, insert the packing
sp.toSimulation(material='clumps')
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack()]
),
PeriTriaxController(label='triax',
# specify target values and whether they are strains or stresses
goal=(sigmaIso,sigmaIso,sigmaIso),stressMask=7,
# type of servo-control
dynCell=True,maxStrainRate=(10,10,10),
# wait until the unbalanced force goes below this value
maxUnbalanced=.01,relStressTol=1e-3,
# call this function when goal is reached and the packing is stable
doneHook='compactionFinished1()'
),
NewtonIntegrator(damping=.2),
PyRunner(command='addPlotData1()',iterPeriod=100,label='checker'),
]
O.dt=.5*PWaveTimeStep()
def addPlotData1():
plot.addData(unbalanced=unbalancedForce(),i=O.iter,
sxx=-triax.stress[0],syy=-triax.stress[1],szz=-triax.stress[2],
exx=-triax.strain[0],eyy=-triax.strain[1],ezz=-triax.strain[2],
#DeviatorStress=-triax.stress[2]-(-triax.stress[0]-triax.stress[1])/2,
# save all available energy data
Etot=O.energy.total(),**O.energy
)
plot.saveDataTxt('data1' + O.tags['d.id'] + '.txt')
# enable energy tracking in the code
O.trackEnergy=True
# define what to plot
plot.plots={'i':('unbalanced',),'i ':('sxx','syy','szz'),' i':('exx','eyy','ezz'),
# energy plot
#' i ':(O.energy.keys,None,'Etot')
'ezz':('DeviatorStress',)
}
# show the plot
plot.plot()
def compactionFinished1():
O.materials[0].frictionAngle=.5
# set the current cell configuration to be the reference one
O.cell.trsf=Matrix3.Identity
triax.doneHook='compactionFinished2()'
def compactionFinished2():
# set the current cell configuration to be the reference one
print(O.iter+1, porosity())
# O.materials[0].frictionAngle=.5
O.cell.trsf=Matrix3.Identity
# change control type: keep constant confinement in x,y, 20% compression in z
triax.goal=(sigmaIso,sigmaIso,-.2)
triax.stressMask=3
# allow faster deformation along x,y to better maintain stresses
triax.maxStrainRate=(1.,1.,.1)
# next time, call triaxFinished instead of compactionFinished
triax.doneHook='triaxFinished()'
# do not wait for stabilization before calling triaxFinished
triax.maxUnbalanced=10
O.engines=O.engines[0:5]+[PyRunner(iterPeriod=20, command='addPlotData2()')]
def addPlotData2():
plot.addData(unbalanced=unbalancedForce(),i=O.iter,
sxx=-triax.stress[0],syy=-triax.stress[1],szz=-triax.stress[2],
exx=-triax.strain[0],eyy=-triax.strain[1],ezz=-triax.strain[2],
DeviatorStress=-triax.stress[2]-(-triax.stress[0]-triax.stress[1])/2,
)
plot.saveDataTxt('data2_' + O.tags['d.id'] + '.txt')
def triaxFinished():
print('Finished')
O.pause()
O.saveTmp()
O.run()
=========================
When this code is run using yade, it succeed. However, it failed when run in yade-batch.
Here is parameter table.
=========================
compFricDegree
0
10
20
30
40
50
60
70
80
90
100
=========================
Here is one of the logs.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Welcome to Yade 2019-11-07.git-09bc730
Using python version: 3.6.8 (default, Oct 7 2019, 12:59:55)
[GCC 8.3.0]
Warning: no X rendering available (see https://bbs.archlinux.org/viewtopic.php?id=13189)
XMLRPC info provider on http://localhost:21000
TCP python prompt on localhost:9000, auth cookie `ekaysu'
Running script 06-periodic-triaxial-test-clumps_friP_comp2_batch.py
/usr/lib/python3/dist-packages/matplotlib/__init__.py:831: MatplotlibDeprecationWarning: axes.color_cycle is deprecated and replaced with axes.prop_cycle; please use the latter.
mplDeprecation)
/usr/lib/python3/dist-packages/matplotlib/__init__.py:801: MatplotlibDeprecationWarning: axes.color_cycle is deprecated and replaced with axes.prop_cycle; please use the latter.
mplDeprecation)
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::log::v2_mt_posix::system_error> >'
what(): Failed to set TLS value: Invalid argument
Aborted (core dumped)
=================== JOB SUMMARY ================
id : compFricDegree=10
status : 34304 (FAILED)
duration: 00:00:01
command : YADE_BATCH=compFricDegree.table:3 DISPLAY= /home/zhaorong/myYade/install/bin/yade-2019-11-07.git-09bc730 --threads=1 --nice=10 -x 06-periodic-triaxial-test-clumps_friP_comp2_batch.py> 06-periodic-triaxial-test-clumps_friP_comp2_batch.py.compFricDegree=10.log 2>&1
started : Sun Nov 17 16:20:46 2019
finished: Sun Nov 17 16:20:47 2019
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
How to solve this problem, Thanks!
--
You received this question notification because your team yade-users is
an answer contact for Yade.