← Back to team overview

yade-users team mailing list archive

[Question #274781]: Unable to run a CapillaryTriaxialTest

 

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

Hello everyone,

I successfully ran a triaxial compression test using the TriaxialTest() preprocessor. However, if I try to add capillary physics the simulation does not appear to work.

The only differences between my working TriaxialTest() script and CapillaryTriaxialTest() are as follows:
1) Change "TriaxialTest" to "CapillaryTriaxialTest"
2) Change "radiusStdDev" to "Rdispersion"
3) Add "collider.verletDist=0" (I added this because the collider complained about not finding NewtonIntegrator)

I have capillary pressure at 0 as I am currently just trying to get it working. The particle packing does not appear to happen at all, I just get a porosity of 1.0. I tried it with Yade1.07 as well as the daily 1.20 build. 

I confess to being a novice, am I missing something obvious? 

Below is my script

Thanks,
Gary

############################################
###   DEFINING VARIABLES AND MATERIALS   ###
############################################

num_spheres=7000# number of spheres
key='_triax_base_'
compFricDegree = 15 # initial contact friction during the confining phase
finalFricDegree = 15 # contact friction during the deviatoric loading
rate=25.0 # loading rate (strain rate)
damp=0.2 # damping coefficient
young=50.0e6 # contact stiffness
mn,mx=Vector3(0,0,0),Vector3(0.00004,0.00004,0.00004) # corners of the initial packing
confinement_p = 10000.0
triaxial_p = 1.0e4
cap_p = 10000.0

############################
###   Triaxial Test   ###
############################

ttest=CapillaryTriaxialTest(
	Key=key,
	boxYoungModulus=young,
	compactionFrictionDeg=compFricDegree,
#	capillaryPressure=cap_p,
	dampingForce=damp,
	finalMaxMultiplier=1.+2e3/young, # spheres growing factor (slow growth)	
#	internalCompaction=True,
	lowerCorner=mn,
	maxMultiplier=1.+2e4/young, # spheres growing factor (fast growth)
	numberOfGrains=num_spheres,
	radiusMean=0.0000008,
	Rdispersion=0.1,
	recordIntervalIter=200,	
	sigmaIsoCompaction=confinement_p,
	sigmaLateralConfinement=triaxial_p,
	sphereFrictionDeg=finalFricDegree,
	sphereYoungModulus=young,
	strainRate=rate,
	timeStepUpdateInterval=100,
	upperCorner=mx,
#	water=False,
)

ttest.load()

triax=typedEngine('TriaxialCompressionEngine')
recorder=typedEngine('TriaxialStateRecorder')
newton=typedEngine('NewtonIntegrator')
collider=typedEngine('InsertionSortCollider')

collider.verletDist=0
#####################################################
###               Record and plot data            ###
#####################################################

from yade import plot
from yade import timing

## a function saving variables
def history():
  	plot.addData(e11=triax.strain[0], e22=triax.strain[1], e33=triax.strain[2],
  		    ev=-triax.strain[0]-triax.strain[1]-triax.strain[2],
		    s11=triax.stress(triax.wall_top_id)[0],
		    s22=triax.stress(triax.wall_right_id)[1],
		    s33=triax.stress(triax.wall_front_id)[2],
		    i=O.iter)

O.engines=O.engines[0:5]+[PyRunner(iterPeriod=200,command='history()',label='recorder')]+O.engines[5:7]

O.timingEnabled=True
totalTime=0
import sys 
for i in range(0,1000):
	O.run(100,True)
	totalTime+=sum([e.execTime for e in O.engines])
	print '\r Total time: %g s'%(totalTime/1e9)," state:",triax.currentState," progress:",(i/10.0),"%\r",
	timing.reset()
	sys.stdout.flush()

O.save('finalState'+key+'.yade.gz')
print "\n###      Final state saved      ###"

plot.plots={'i':('e11','e22','e33',None,'s11','s22','s33')}

plot.plot()
plot.saveDataTxt('results'+key)
plot.saveGnuplot('plotScript'+key)

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.