A computational framework for low-cycle fatigue in polycrystalline materials