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).

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.

-sg

On 9/20/17 1:05 PM, Matthew Knepley 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?

  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/>

--
-------------------------------------------------------------------
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
[email protected]
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

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

Reply via email to