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 <[email protected]>: > 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 <[email protected]> > 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 <[email protected]> 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 <[email protected]> > 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 > > > > >
