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

Maximilian Hartig imilian.hartig at gmail.com
Fri Jun 30 04:52:22 CDT 2017


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
> 



More information about the petsc-users mailing list