Kinetic Monte Carlo method