How to apply stress?

Asked by William

Hi, I want to know how to apply stress on the box. I used to apply a force directly but I don’t think it’s correct. For example, 100kPa should be applied in the z direction and I write next code(1e7N = 100000Pa * 10m * 10m)

Boxid = O.bodies.append(box((0,0,0),(10,10,1)))
O.forces.setPermF(Boxid,(0,0,1e7))

The force is loaded instantaneously which cause the whole process is not quasi-static. Is there any loading method to overcome the problem? Could I control the loading rate to keep the whole process quasi-static?

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Jan Stránský
Solved:
Last query:
Last reply:
Revision history for this message
Best Jan Stránský (honzik) said (last edit ):
#1

> I used to apply a force directly but I don’t think it’s correct

It is perfectly correct (and IMO the only reasonable) approach.

> Is there any loading method to overcome the problem? Could I control the loading rate to keep the whole process quasi-static?

Yes, of course, just load it "from zero".
E.g. using PyRunner:
###
stress = 1e7 # max stress, Pa
stressRate = 1e8 # stress rate, Pa/s
force = stress * area
forceRate = stressRate * area
def applyForce():
    f = O.time * forceRate # linear increase, can be whatever else
    f = min(f,force) # not to excess max stress
    O.forces.setPermF(Boxid,(0,0,f))

O.engines = [
    ...
    PyRunner(iterPeriod=1,command="applyForce()"),
]
###

Cheers
Jan

Revision history for this message
William (qfxx-123) said :
#2

Hi, Jan
Thanks for your answer.

###
stress = 1e7 # max stress, Pa
rate = 1e8 # stress rate, Pa/s
def applyForce():
    f = O.time * rate # linear increase, can be whatever else
    f = min(f,stress) # not to excess max stress
    O.forces.setPermF(Boxid,(0,0,f))

O.engines = [
    ...
    PyRunner(iterPeriod=1,command="applyForce()"),
]
###

> stress = 1e7 # max stress, Pa
Here what we apply is 'stress(Pa)' rather than 'force(N)'?

Revision history for this message
Jan Stránský (honzik) said :
#3

> Here what we apply is 'stress(Pa)' rather than 'force(N)'?

Yes, of course, sorry, I have edited the code

Cheers
Jan

Revision history for this message
William (qfxx-123) said :
#5

Thanks Jan Stránský, that solved my question.