[petsc-users] -snes_fd for problems with residuals with non-continuous first derivative?

Maximilian Hartig imilian.hartig at gmail.com
Wed Jul 5 11:39:31 CDT 2017


I do not clearly understand the discrimination between local and global
plasticity. I do have areas where I expect the behaviour to be elastic and
other areas where I expect elasto-plastic behaviour.
Inertia effects are of importance and hence I need second order temporal
derivatives of my displacements. The only way I have found to implement
this in Petsc is to create a separate velocity field which I use to then
compute ü.
To account for plasticity, in my understanding I need to introduce at least
one additional history variable. In my case this is the effective plastic
strain e_p. I then solve the equation of motion (grad(sigma)-rho*ü+F=0) and
the consistency condition (sigma_eq - sigma_yield = 0) at the same time. Or
try to at least.

Thanks,
Max

2017-06-30 20:49 GMT+02:00 Luv Sharma <luvsharma11 at gmail.com>:

> Hi Max,
>
> I do not understand the equations that you write very clearly.
>
> Are you looking to implement a “local” and “if” type of isotropic
> hardening plasticity? If that is the case, then in my understanding you
> need to solve only 1 field equation for the displacement components or for
> the strain components. You can look at the following code:
> https://github.com/tdegeus/GooseFFT/blob/master/small-
> strain/laminate/elasto-plasticity.py
>
> If you are looking for a PETSc based implementation for plasticity
> (isotropic/anisotropic) you can look at
> https://damask.mpie.de/
> I had presented a talk about the same at the PETSc User Meeting last year.
>
> As I understand it, additional field equations will only be necessary if
> the plasticity or elasticity were “nonlocal”. You may want to look at:
> On the role of moving elastic–plastic boundaries in strain gradient
> plasticity, R H J Peerlings
>
> Best regards,
> Luv
>
> On 30 Jun 2017, at 11:52, Maximilian Hartig <imilian.hartig at gmail.com>
> wrote:
>
> Hi Luv,
>
> I’m modelling linear hardening(sigma_y = sigma_y0 +
> K_iso*epsilon_plast_eqiv) with isotropic  plasticity only. So I should not
> need to use an iterative method to find the point on the yield surface. I
> have three fields and 7 unknowns in total:
> Field 0: 3 displacement components
> Field 1: 3 velocity components
> Field 2: 1 equivalent plastic strain
>
> It is the solver for these three fields that is not converging. I am using
> PetscFE. As residuals for the plastic case (sigma_vM > sigma_yield) I have:
>
> Field 0 (displacement):
> f0[i] = rho*u_t[u_Off[1]+i]
> f1[i*dim+j] = sigma_tr[i*dim+j] - 2*mu*sqrt(3/2)*u_t[uOff[2]]*N[i*dim+j]
>
> where sigma_tr is the trial stress, mu is the shear modulus and N is the
> unit deviator tensor normal to the yield surface.
>
> Field 1 (velocity):
> f0[i] = u[uOff[1]+i]-u_t[i]
> f1[i*dim+j] = 0
>
> Field 2 (effective plastic strain):
> f0[0] = ||s_tr|| -2*mu*sqrt(3/2)*u_t[uOff[2]]-sqrt(2/3)*sigma_y
> f1[i] = 0
> where ||s_tr|| is the norm of the deviator stress tensor.
>
> Field 0 residual is essentially newton’s second law of motion and Field 2
> residual should be the yield criterion. I might have just fundamentally
> misunderstood the equations of plasticity but I cannot seem to find my
> mistake.
>
> Thanks,
> Max
>
>
> On 30. Jun 2017, at 11:09, Luv Sharma <luvsharma11 at gmail.com> wrote:
>
> Hi Max,
>
> Is your field solver not converging or the material point solver ;)?
>
> Best regards,
> Luv
>
> On 30 Jun 2017, at 10:45, Maximilian Hartig <imilian.hartig at gmail.com>
> wrote:
>
> Hello,
>
> I’m trying to implement plasticity and have problems getting the Petsc
> SNES to converge. To check if my residual formulation is correct I tried
> running with -snes_fd for an easy example as the Petsc FAQ suggest. I
> cannot seem to get the solver to converge at any cost.
> I already tried to impose bounds on the solution and moved to vinewtonrsls
> as a nonlinear solver. I checked and rechecked my residuals but I do not
> find an error there. I now have the suspicion that the -snes_fd option is
> not made for handling residuals who’s first derivatives are not continuous
> (e.g. have an “if” condition in them for the plasticity/ flow-condition).
> Can you confirm my suspicion? And is there another way to test my residual
> formulation separate from my hand-coded jacobian?
>
>
> Thanks,
> Max
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20170705/3404adc3/attachment.html>


More information about the petsc-users mailing list