> On 20. Sep 2017, at 19:05, Matthew Knepley <[email protected]> wrote: > > On Wed, Sep 20, 2017 at 12:57 PM, Maximilian Hartig <[email protected] > <mailto:[email protected]>> wrote: >> On 20. Sep 2017, at 18:17, Matthew Knepley <[email protected] >> <mailto:[email protected]>> wrote: >> >> On Wed, Sep 20, 2017 at 11:46 AM, Maximilian Hartig >> <[email protected] <mailto:[email protected]>> 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? That depends on the type of plasticity. For a linear hardening formulation it is correct that I could just apply a local operator. I’d be happy with that for now. But I’d still need to save stress state and plastic strain to determine whether or not I’m dealing with a plasticity. I don’t know how to do that inside the residual evaluation. Plus DMProjectField seems to have problems evaluating the gradient when boundary conditions are imposed.
Thanks, Max > > 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/ <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/ <http://www.caam.rice.edu/~mk51/>
