On Wed, Sep 20, 2017 at 12:57 PM, Maximilian Hartig < [email protected]> wrote:
> On 20. Sep 2017, at 18:17, Matthew Knepley <[email protected]> wrote: > > On Wed, Sep 20, 2017 at 11:46 AM, Maximilian Hartig <imilian.hartig@gmail. > com> wrote: > >> 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. >> > > It looks like there are two problems above: > > 1) Convergence > > For any convergence question, we at minimum need to see the output of > > -snes_view -snes_converged_reason -snes_monitor > -ksp_monitor_true_residual -snes_linesearch_monitor > > However, this does not seem to be the main issue. > > 2) Negative plastic strain > > > This is what I’m mainly concerned with. > > > If the system really converged (I cannot tell without other information), > then the system formulation is wrong. Of course, its > really easy to check by just plugging your solution into the residual > function too. I do not understand your explanation above > completely however. Do you solve for the plastic strain or the increment? > > > I am trying to find a formulation that works and I think there is a core > concept I am just not “getting”. > I want to solve for the displacements. > This works fine in an elastic case. When plasticity is involved, I need to > determine the actual stress for my residual evaluation and I have not found > a way to do that. > All formulations for stress I found in literature use strain increments so > I tried to just solve for increments each timestep and then add them > together in tspoststep. But I still need to somehow evaluate the stress for > my displacement increment residuals. So currently, I have auxiliary fields > with the stress and the plastic strain. > First question: Don't you get stress by just applying a local operator, rather than a solve? Thanks, Matt > I evaluate the current trial stress by adding a stress increment assuming > elastic behaviour. If the trial stress lies beyond the yield stress I > calculate the corrected stress to evaluate my residual for the > displacements. But now I somehow need to update my plastic strain and the > stress in the auxiliary fields. So in tspoststep I created another SNES to > now calculate the stress and plastic strain while the displacement is the > auxiliary field. > > I’m sure there’s an elegant solution on how to update internal variables > but I have not found it. > > Thanks, > Max > > > Thanks, > > Matt > > >> Thanks, >> Max > > > > > -- > What most experimenters take for granted before they begin their > experiments is infinitely more interesting than any results to which their > experiments lead. > -- Norbert Wiener > > http://www.caam.rice.edu/~mk51/ > > > -- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener http://www.caam.rice.edu/~mk51/
