My end goal is to develop an Abaqus UMAT that can be used for progressive failure of laminated composites in plane stress. Im working from the ground up here, but Ive reached a sticking point. I implemented and validated isotropic elasticity and then orthotropic elasticity for a single composite (8-ply) shell.
Now Im working with a 4x16 mesh of shell elements, and the problem Im having is that Abaqus seems to be having a convergence problem right at the point of failure. Ive got solution-dependent variables to flag failure, and if I disable the degradation, I can see that the failure stress is being reached in one of the plys, and the appropriate solution-dependent variable gets set. However, if I enable the degradation portion of my UMAT, then Abaqus gets stuck iterating right where failure first occurs. The last step printed to the odb file is the one where all stresses are within allowables.
Im wondering if it might have something to do with my degradation approach. Right now, Im using the simplest possible method: if the stress is above allowable, then reduce all elastic moduli by a factor of 1e5. Im confused as to why this causes convergence issues, though. Even if I use a degradation factor smaller than 1e5 Abaqus crashes. In other words, it seems that once any material point undergoes softening, Abaqus cant get the solution to convergence. My expectation here is that the other plys should continue to carry the load once failure occurs in the first ply, but this does not seem to be occurring.
Does anyone have any thoughts or suggestions? They would be much appreciated. Thank you!