# How to apply stress?

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:
For:
Assignee:
No assignee Edit question
Last query:
 Revision history for this message Jan Stránský (honzik) said on 2022-05-10 #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.

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 on 2022-05-10: #2

Hi, Jan

###
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 on 2022-05-10: #3

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

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

Cheers
Jan