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

Matthew Knepley knepley at gmail.com
Wed Jul 5 11:46:18 CDT 2017


On Wed, Jul 5, 2017 at 9:39 AM, Maximilian Hartig <imilian.hartig at gmail.com>
wrote:

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

We do have one second order timestepper (Newmark) put in by Lisandro:


http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/TS/TSALPHA2.html


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

Did you look at the DAMASK formulation that Luv suggested?

  Thanks,

    Matt


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


-- 
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/20170705/95c96af6/attachment.html>


More information about the petsc-users mailing list