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.har...@gmail.com <mailto:imilian.har...@gmail.com>> wrote:


    On 20. Sep 2017, at 19:05, Matthew Knepley <knep...@gmail.com
    <mailto:knep...@gmail.com>> wrote:

    On Wed, Sep 20, 2017 at 12:57 PM, Maximilian
    Hartig<imilian.har...@gmail.com
    <mailto:imilian.har...@gmail.com>>wrote:

        On 20. Sep 2017, at 18:17, Matthew Knepley
        <knep...@gmail.com <mailto:knep...@gmail.com>> wrote:

        On Wed, Sep 20, 2017 at 11:46 AM, Maximilian
        Hartig<imilian.har...@gmail.com
        <mailto:imilian.har...@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...@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

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

Reply via email to