<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    The standard methodology for this problem is to solve only for the
    displacements (globally).  The stresses are recomputed at the Gauss
    point level.  The needed history that is usually kept at the Gauss
    point level is the plastic strain.  Convergence is strongly tied to
    having a good tangent operator; in this case you need the so-called
    consistent tangent operator (see Simo and Taylor, Computer Methods
    in Applied Mechanics and Engineering, 1985).<br>
    <br>
    Have a look also at the comprehensive and tutorial books by Simo and
    Hughes (Computational Inelasticity) and the 1st and 2nd Volumes of
    Zienkeiwicz and Taylor (The Finite Element Method) now in the 7th
    edition.  These texts provide virtually all of the implementation
    details that you need.<br>
    <br>
    -sg<br>
    <br>
    <div class="moz-cite-prefix">On 9/20/17 1:05 PM, Matthew Knepley
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAMYG4G=5OUbq2CGVS4JNfE+Rz12-5+fU0ptRcMAXQ7acLCp=RQ@mail.gmail.com">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">On Wed, Sep 20, 2017 at 12:57 PM,
            Maximilian Hartig <span dir="ltr"><<a
                href="mailto:imilian.hartig@gmail.com" target="_blank"
                moz-do-not-send="true">imilian.hartig@gmail.com</a>></span>
            wrote:<br>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div style="word-wrap:break-word">
                <div>
                  <blockquote type="cite">
                    <div>On 20. Sep 2017, at 18:17, Matthew Knepley <<a
                        href="mailto:knepley@gmail.com" target="_blank"
                        moz-do-not-send="true">knepley@gmail.com</a>>
                      wrote:</div>
                    <br
                      class="m_820538064167687730Apple-interchange-newline">
                    <div>
                      <div dir="ltr"
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
                        <div class="gmail_extra">
                          <div class="gmail_quote">On Wed, Sep 20, 2017
                            at 11:46 AM, Maximilian Hartig<span
                              class="m_820538064167687730Apple-converted-space"> </span><span
                              dir="ltr"><<a
                                href="mailto:imilian.hartig@gmail.com"
                                target="_blank" moz-do-not-send="true">imilian.hartig@gmail.<wbr>com</a>></span><span
class="m_820538064167687730Apple-converted-space"> </span>wrote:<br>
                            <blockquote class="gmail_quote"
                              style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Hello,<br>
                              <br>
                              I’m trying to implement plasticity using
                              petscFE but I am quite stuck since a
                              while. Here’s what I’m trying to do:<br>
                              <br>
                              I have a TS which solves the following
                              equation:<br>
                              gradient(stress) +Forces =
                              density*acceleration<br>
                              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.<br>
                              I tried doing that first by solving three
                              fields at the same time: displacements,
                              stresses and yield stress. This failed.<br>
                              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.<br>
                              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.<br>
                              <br>
                              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.<br>
                            </blockquote>
                            <div><br>
                            </div>
                            <div>It looks like there are two problems
                              above:</div>
                            <div><br>
                            </div>
                            <div>1) Convergence</div>
                            <div><br>
                            </div>
                            <div>For any convergence question, we at
                              minimum need to see the output of</div>
                            <div><br>
                            </div>
                            <div>  -snes_view -snes_converged_reason
                              -snes_monitor -ksp_monitor_true_residual
                              -snes_linesearch_monitor</div>
                            <div><br>
                            </div>
                            <div>However, this does not seem to be the
                              main issue.</div>
                            <div><br>
                            </div>
                            <div>2) Negative plastic strain</div>
                          </div>
                        </div>
                      </div>
                    </div>
                  </blockquote>
                  <div><br>
                  </div>
                  This is what I’m mainly concerned with.<br>
                  <blockquote type="cite">
                    <div>
                      <div dir="ltr"
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
                        <div class="gmail_extra">
                          <div class="gmail_quote">
                            <div><br>
                            </div>
                            <div>If the system really converged (I
                              cannot tell without other information),
                              then the system formulation is wrong. Of
                              course, its</div>
                            <div>really easy to check by just plugging
                              your solution into the residual function
                              too. I do not understand your explanation
                              above</div>
                            <div>completely however. Do you solve for
                              the plastic strain or the increment?</div>
                          </div>
                        </div>
                      </div>
                    </div>
                  </blockquote>
                  <br>
                  <div>I am trying to find a formulation that works and
                    I think there is a core concept I am just not
                    “getting”. </div>
                  <div>I want to solve for the displacements. </div>
                  <div>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.</div>
                  <div>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.</div>
                </div>
              </div>
            </blockquote>
            <div><br>
            </div>
            <div>First question: Don't you get stress by just applying a
              local operator, rather than a solve?</div>
            <div><br>
            </div>
            <div>  Thanks,</div>
            <div><br>
            </div>
            <div>     Matt</div>
            <div> </div>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div style="word-wrap:break-word">
                <div>
                  <div> 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. </div>
                  <div><br>
                  </div>
                  I’m sure there’s an elegant solution on how to update
                  internal variables but I have not found it.</div>
                <div><br>
                </div>
                <div>Thanks,</div>
                <div>Max<br>
                  <blockquote type="cite">
                    <div>
                      <div dir="ltr"
style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
                        <div class="gmail_extra">
                          <div class="gmail_quote">
                            <div><br>
                            </div>
                            <div> <span
                                class="m_820538064167687730Apple-converted-space"> </span>Thanks,</div>
                            <div><br>
                            </div>
                            <div>     Matt</div>
                            <div> </div>
                            <blockquote class="gmail_quote"
                              style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Thanks,<br>
                              Max</blockquote>
                          </div>
                          <br>
                          <br clear="all">
                          <span class="HOEnZb"><font color="#888888">
                              <div><br>
                              </div>
                              --<span
                                class="m_820538064167687730Apple-converted-space"> </span><br>
                              <div
                                class="m_820538064167687730gmail_signature"
                                data-smartmail="gmail_signature">
                                <div dir="ltr">
                                  <div>What most experimenters take for
                                    granted before they begin their
                                    experiments is infinitely more
                                    interesting than any results to
                                    which their experiments lead.<br>
                                    -- Norbert Wiener</div>
                                  <div><br>
                                  </div>
                                  <div><a
                                      href="http://www.caam.rice.edu/%7Emk51/"
                                      target="_blank"
                                      moz-do-not-send="true">http://www.caam.rice.edu/~<wbr>mk51/</a></div>
                                </div>
                              </div>
                            </font></span></div>
                      </div>
                    </div>
                  </blockquote>
                </div>
                <br>
              </div>
            </blockquote>
          </div>
          <br>
          <br clear="all">
          <div><br>
          </div>
          -- <br>
          <div class="gmail_signature" data-smartmail="gmail_signature">
            <div dir="ltr">
              <div>What most experimenters take for granted before they
                begin their experiments is infinitely more interesting
                than any results to which their experiments lead.<br>
                -- Norbert Wiener</div>
              <div><br>
              </div>
              <div><a href="http://www.caam.rice.edu/%7Emk51/"
                  target="_blank" moz-do-not-send="true">http://www.caam.rice.edu/~mk51/</a><br>
              </div>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
-------------------------------------------------------------------
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
<a class="moz-txt-link-abbreviated" href="mailto:s_g@berkeley.edu">s_g@berkeley.edu</a>
<a class="moz-txt-link-freetext" href="http://faculty.ce.berkeley.edu/sanjay">http://faculty.ce.berkeley.edu/sanjay</a>
-------------------------------------------------------------------

Books:  

Engineering Mechanics of Deformable 
Solids: A Presentation with Exercises
<a class="moz-txt-link-freetext" href="http://www.oup.com/us/catalog/general/subject/Physics/MaterialsScience/?view=usa&ci=9780199651641">http://www.oup.com/us/catalog/general/subject/Physics/MaterialsScience/?view=usa&ci=9780199651641</a>
<a class="moz-txt-link-freetext" href="http://ukcatalogue.oup.com/product/9780199651641.do">http://ukcatalogue.oup.com/product/9780199651641.do</a>
<a class="moz-txt-link-freetext" href="http://amzn.com/0199651647">http://amzn.com/0199651647</a>

Engineering Mechanics 3 (Dynamics) 2nd Edition
<a class="moz-txt-link-freetext" href="http://www.springer.com/978-3-642-53711-0">http://www.springer.com/978-3-642-53711-0</a>
<a class="moz-txt-link-freetext" href="http://amzn.com/3642537111">http://amzn.com/3642537111</a>

Engineering Mechanics 3, Supplementary Problems: Dynamics 
<a class="moz-txt-link-freetext" href="http://www.amzn.com/B00SOXN8JU">http://www.amzn.com/B00SOXN8JU</a>

-----------------------------------------------
</pre>
  </body>
</html>