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

Maximilian Hartig imilian.hartig at gmail.com
Fri Jul 7 05:19:25 CDT 2017


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

Great, I was not aware of that. I'll try to make use of it as soon as I
resolve this issue.

I have a suspicion that my problem is the fact that I'm updating my plastic
strain during the nonlinear solver iterations for the stress. I tried to
create an auxiliary field for the plastic strain and then update it at the
end of each timestep with PEtscDSSetUpdate. But the update function does
not seem to get called. Do I have to update the auxiliary field in a
TSMonitor context? I couldn't find any examples of how to update an
Auxiliary field.

Thanks,
Max


2017-07-05 18:46 GMT+02:00 Matthew Knepley <knepley at gmail.com>:

> 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/20170707/6309680c/attachment.html>


More information about the petsc-users mailing list