Hello,

I’m trying to implement plasticity using petscFE but I am quite stuck since a 
while. Here’s what I’m trying to do:

I have a TS which solves the following equation:
gradient(stress) +Forces = density*acceleration
where at the moment stress is a linear function of the strain and hence the 
gradient of the displacement. This works fine. Now I want to compare the stress 
to a reference value and if it lies above this yield stress, I have to 
reevaluate the stress at the respective location. Then I need to update the 
plastic strain / yield stress  at this location.
I tried doing that first by solving three fields at the same time: 
displacements, stresses and yield stress. This failed.
Then, I tried solving only for displacement increments, storing the 
displacements, stresses and yield stress from the past time step in an 
auxiliary field. The auxiliary fields are updated after each time step with a 
second SNES, using the displacement increments from the current, converged time 
step. This also failed.
In both cases the code had problems converging and when it did, I ended up with 
negative plastic strain. This is not possible and I don’t know how it happens 
because I explicitly only increment the plastic strain when the increment is 
positive.

I am sure there is an easy solution to how I can update the internal variables 
and determine the correct stress for the residual but I just cannot figure it 
out. I’d be thankful for any hints.

Thanks,
Max

Reply via email to