← Back to team overview

yade-users team mailing list archive

[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.