Problems in script-session1.py in Yadedaily 1.12

Asked by Fu zuoguang

Dear Prof. Chareyre:

    After updating the Yadedaily from 1.10 to 1.12, I now find some hurdles in running the ‘script-session1.py’ task in examples folder. This running can also be composed in two parts as before. The first is the ‘Isotropic consolidation’ and the second is the ‘Deviatoric loading’. There is nothing strange in the first part (Fig.1). But when the second stage starts, I am lost in its results (Fig.2). The left and the right walls are moving backward to each other in lateral direction, as well as the front and the back walls. All the codes are just in ‘script-session1.py’ and I condense and provide them at the end of this section. I am afraid that there are something updating in the Yade’s internal from its old vision to the current one. Please help me to check them.

Seeking your help!

Fig.1 http://s1287.photobucket.com/user/fzgkkk/media/01_zps2387ab09.png.html
Fig.2 http://s1287.photobucket.com/user/fzgkkk/media/02_zpsbca3108b.png.html

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Fu zuoguang
Solved:
Last query:
Last reply:
Revision history for this message
Fu zuoguang (zgfu1985) said :
#1

# -*- coding: utf-8 -*-
from yade import pack

nRead=readParamsFromTable(
 num_spheres=1000,# number of spheres
 compFricDegree = 30, # contact friction during the confining phase
 key='_triax_base_', # put you simulation's name here
 unknownOk=True
)
from yade.params import table

num_spheres=table.num_spheres# number of spheres
key=table.key
targetPorosity = 0.43
compFricDegree = table.compFricDegree
finalFricDegree = 30
rate=0.02
damp=0.2
stabilityThreshold=0.01
young=5e6
mn,mx=Vector3(0,0,0),Vector3(1,1,1)

## create materials for spheres and plates
O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=radians(compFricDegree),density=2600,label='spheres'))
O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=0,density=0,label='walls'))

## create walls around the packing
walls=aabbWalls([mn,mx],thickness=0,material='walls')
wallIds=O.bodies.append(walls)

## use a SpherePack object to generate a random loose particles packing
sp=pack.SpherePack()

clumps=False #turn this true for the same example with clumps
if clumps:
 ## approximate mean rad of the futur dense packing for latter use
 volume = (mx[0]-mn[0])*(mx[1]-mn[1])*(mx[2]-mn[2])
 mean_rad = pow(0.09*volume/num_spheres,0.3333)
 ## define a unique clump type (we could have many, see clumpCloud documentation)
 c1=pack.SpherePack([((-0.2*mean_rad,0,0),0.5*mean_rad),((0.2*mean_rad,0,0),0.5*mean_rad)])
 ## generate positions and input them in the simulation
 sp.makeClumpCloud(mn,mx,[c1],periodic=False)
 sp.toSimulation(material='spheres')
 O.bodies.updateClumpProperties()#get more accurate clump masses/volumes/inertia
else:
 sp.makeCloud(mn,mx,-1,0.3333,num_spheres,False, 0.95,seed=1) #"seed" make the "random" generation always the same
 O.bodies.append([sphere(center,rad,material='spheres') for center,rad in sp])
 #or alternatively (higher level function doing exactly the same):
 #sp.toSimulation(material='spheres')

triax=TriaxialStressController(
 maxMultiplier=1.+2e4/young,
 finalMaxMultiplier=1.+2e3/young,
 thickness = 0,
 stressMask = 7,
 internalCompaction=True,
)
newton=NewtonIntegrator(damping=damp)

O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
 InteractionLoop(
  [Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
  [Ip2_FrictMat_FrictMat_FrictPhys()],
  [Law2_ScGeom_FrictPhys_CundallStrack()]
 ),
 GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
 triax,
 TriaxialStateRecorder(iterPeriod=100,file='WallStresses'+table.key),
 newton
]

#Display spheres with 2 colors for seeing rotations better
Gl1_Sphere.stripes=0
if nRead==0: yade.qt.Controller(), yade.qt.View()

triax.goal1=triax.goal2=triax.goal3=10000
O.run(3000, True)

##We move to deviatoric loading, let us turn internal compaction off to keep particles sizes constant
triax.internalCompaction=False
setContactFriction(radians(finalFricDegree))

##set stress control on x and z, we will impose strain rate on y
triax.stressMask = 5
##now goal2 is the target strain rate
triax.goal2=-rate
## we define the lateral stresses during the test, here the same 10kPa as for the initial confinement.
triax.goal1=10000
triax.goal3=10000
newton.damping=0.1
O.run(200, True)

Revision history for this message
Chareyre (bruno-chareyre-9) said :
#2

Hi Fu,
Could you tell us which version you use exactly (printed at startup) and
where you found the session1.py script?
Bruno

Revision history for this message
Fu zuoguang (zgfu1985) said :
#3

Dear Prof. Chareyre:

    It was yesterday that I updated my ubuntu system from 12.04 to 14.04 and then reinstalled Yadedaily using the following codes in terminal:

sudo bash -c 'echo "deb http://www.yade-dem.org/packages/ trusty/" >> /etc/apt/sources.list'
wget -O - http://www.yade-dem.org/packages/yadedev_pub.gpg | sudo apt-key add -
sudo apt-get update
sudo apt-get install yadedaily

There was nothing error in this process. After it was finished. I started yadedaily in terminal then and It was printed yadedaily-1.12.

After that, I downloaded the source codes of yade-1.12.0.tar.gz from the page:
https://launchpad.net/yade/
And then picked out session1.py script from the this target and tried to run. It brought me that trouble.

Do you mean that yadedaily can not accept this py script without some new signs in TriaxialStressController() ?

Seeking your help!

Revision history for this message
Chareyre (bruno-chareyre-9) said :
#4

On 03/12/14 12:46, Fu zuoguang wrote:
> Do you mean that yadedaily can not accept this py script without some new signs in TriaxialStressController() ?
I think the problem in on our side, not yours. Yes most probably an
incomplete update after changing the signs, the script needs a fix.
Note that there is non need to download the sources to find the scripts.
They are part of yadedaily-doc package (and that way they are always
synchronized with yadedaily).

Bruno

Revision history for this message
Eduardo Martín (martin-eduardoluis) said :
#5

Dear Fu Zuoguang:
Changes have been made a few days ago on the TriaxialStressController engine. Stress-strain attributes of TriaxialStressController are now positive in tension.
Maybe you can read the examples at [1] to understand the updates you need to make on your scripts.
Hope it helps you.

Eduardo

[1] https://github.com/yade/trunk/commit/19e81a785b19a8eab2718ebb5ad5eb9456355818

Revision history for this message
Jérôme Duriez (jduriez) said :
#6

Hi,

As far as I am concerned, I do not think there is any problem on our side. I think you mix new code, and old scripts. You have such line in your script:

triax.goal1=triax.goal2=triax.goal3=10000
(see end of your answer #1)

This does not exist in updated scripts since I did the sign changes, see https://github.com/yade/trunk/blob/master/examples/triax-tutorial/script-session1.py#L128

Other command show clearly your script does not correspond to (updated, at least) script-session1.py. E.g. "O.run(3000, True)" does not exist in https://github.com/yade/trunk/blob/master/examples/triax-tutorial/script-session1.py.

Jerome

Revision history for this message
Fu zuoguang (zgfu1985) said :
#7

Thanks for your explanation, there is nothing wrong now!

@ Eduardo Martín: The signs used in traditional geomechanics have been changed to those in classical continuum. It may provide a more regular framework to all users.

@ Chareyre and Jérôme Duriez: Sorry, it is my fault. I have never checked the differences between the two and always thought that the example pys just in source codes are the same as those in daily package. It is no need to do such a surplus thing.

Revision history for this message
Bruno Chareyre (bruno-chareyre) said :
#8

Thanks Jérôme for noticing the version problem.