This code is much faster than the code inside ../numba_trial It doesn't use numba on the double np.trapz usage for getting the ground state populations and renormalizing the wavefunctions. It is also written as to be separated into functions: imaginary time propagation, saving of the ground state, loading the last dt of the ground state, then real time propagation.