[petsc-users] Hints for using petscfe for plasticity -- how to update/access internal variables?
Matthew Knepley
knepley at gmail.com
Wed Sep 20 12:05:27 CDT 2017
On Wed, Sep 20, 2017 at 12:57 PM, Maximilian Hartig <
imilian.hartig at gmail.com> wrote:
> On 20. Sep 2017, at 18:17, Matthew Knepley <knepley at gmail.com> wrote:
>
> On Wed, Sep 20, 2017 at 11:46 AM, Maximilian Hartig <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?
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/
>
>
>
--
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/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20170920/cac20b19/attachment.html>
More information about the petsc-users
mailing list