[petsc-users] Hints for using petscfe for plasticity -- how to update/access internal variables?

Sanjay Govindjee s_g at berkeley.edu
Wed Sep 20 17:19:34 CDT 2017


Matt,
   There is such a thing as non-local plasticity, one where there is a 
separate field equation to
solve for the plasticity (beyond the balance of momentum).
-sanjay

On 9/20/17 4:51 PM, Matthew Knepley wrote:
> On Wed, Sep 20, 2017 at 3:46 PM, Maximilian Hartig 
> <imilian.hartig at gmail.com <mailto:imilian.hartig at gmail.com>> wrote:
>
>
>>     On 20. Sep 2017, at 19:05, Matthew Knepley <knepley at gmail.com
>>     <mailto:knepley at gmail.com>> wrote:
>>
>>     On Wed, Sep 20, 2017 at 12:57 PM, Maximilian
>>     Hartig<imilian.hartig at gmail.com
>>     <mailto:imilian.hartig at gmail.com>>wrote:
>>
>>>         On 20. Sep 2017, at 18:17, Matthew Knepley
>>>         <knepley at gmail.com <mailto:knepley at gmail.com>> wrote:
>>>
>>>         On Wed, Sep 20, 2017 at 11:46 AM, Maximilian
>>>         Hartig<imilian.hartig at gmail.com
>>>         <mailto:imilian.hartig at 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?
>     That depends on the type of plasticity.
>
>
> What type of plasticity is not local?
>
>     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.
>
>
> I do not know what you mean by this, meaning why you can't just save 
> these as auxiliary fields. Also, it would seem to be enough to have 
> the old displacement and the plastic strain.
>
>     Plus DMProjectField seems to have problems evaluating the gradient
>     when boundary conditions are imposed.
>
>
> There are several examples where we do exactly this. Can you show me 
> what you mean by this?
>
>   Thanks,
>
>     Matt
>
>     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/%7Emk51/>
>>
>>
>>
>>
>>     --
>>     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/%7Emk51/>
>
>
>
>
> -- 
> 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/%7Emk51/>

-- 
-------------------------------------------------------------------
Sanjay Govindjee, PhD, PE
Horace, Dorothy, and Katherine Johnson Professor in Engineering

779 Davis Hall
University of California
Berkeley, CA 94720-1710

Voice:  +1 510 642 6060
FAX:    +1 510 643 5264
s_g at berkeley.edu
http://faculty.ce.berkeley.edu/sanjay
-------------------------------------------------------------------

Books:

Engineering Mechanics of Deformable
Solids: A Presentation with Exercises
http://www.oup.com/us/catalog/general/subject/Physics/MaterialsScience/?view=usa&ci=9780199651641
http://ukcatalogue.oup.com/product/9780199651641.do
http://amzn.com/0199651647

Engineering Mechanics 3 (Dynamics) 2nd Edition
http://www.springer.com/978-3-642-53711-0
http://amzn.com/3642537111

Engineering Mechanics 3, Supplementary Problems: Dynamics
http://www.amzn.com/B00SOXN8JU

-----------------------------------------------

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20170920/93f44bc4/attachment-0001.html>


More information about the petsc-users mailing list