← Back to team overview

yade-users team mailing list archive

Re: [Question #263739]: isotropic compression at controled pressure

 

Question #263739 on Yade changed:
https://answers.launchpad.net/yade/+question/263739

    Status: Open => Answered

Bruno Chareyre proposed the following answer:
Hello,
I don't understand exactly in which sense it is not what you expect. I suggest to forget max_vel, assign a very large value to it so that it does not interfere.

Trying to summarize what to do in your case (assuming
TriaxialStressCOntroller is labeled "triax"):

#stress control in all directions and for all boundaries independently
triax.stressMask = 7 
triax.internalCompaction=False

# if there is gravity, imposing the same stress at the top and bottom boundaries would lead to free fall... block the bottom wall:
triax.wall_bottom_activated=False

#define the target stresses to be applied, if it must be isotropic: 
triax.goal1=triax.goal2=triax.goal3=isoP
#then run
O.run()

This will reach the target isoP very quickly (a few iterations), in fact it could well result in a dynamic compaction at constant applied pressure (exception is if you impose a small max_vel).
If what you want is to increase the isotropic confinement progressively:
for k in range(N):
    triax.goal1=triax.goal2=triax.goal3=isoP*float(k)/float(N)
   O.run(number,True)

The problem is the initial stress under gravity is not isotropic, for
superimposing an isotropic stress to the intitial anisotropic one,
better something like this:

#initialize with current stress
triax.goal1=triax.stress(0)[0]
triax.goal2=-triax.stress(3)[1]
triax.goal3=triax.stress(4)[2]
#and increase progressively
for k in range(N):
   triax.goal1+= isoP/float(N)
   triax.goal2+= isoP/float(N)
   triax.goal3+= isoP/float(N)
   O.run(number,True)

Bruno

-- 
You received this question notification because you are a member of
yade-users, which is an answer contact for Yade.