Monitor[NDSolve[{eq, bc1, bc2, ic}, z, {t, 0, 100}, {x, -Lx, Lx}, {y, -Ly, Ly}, Method -> mol, StepMonitor :> (time = t)], ProgressIndicator[time/100]] [![enter image description here][1]][1] This doesn't appear to slow down the evaluation in any significant way: RepeatedTiming[ NDSolve[{eq, bc1, bc2, ic}, z, {t, 0, 100}, {x, -Lx, Lx}, {y, -Ly, Ly}, Method -> mol], 60] RepeatedTiming[ Monitor[NDSolve[{eq, bc1, bc2, ic}, z, {t, 0, 100}, {x, -Lx, Lx}, {y, -Ly, Ly}, Method -> mol, StepMonitor :> (time = t)], ProgressIndicator[time/100]], 60] RepeatedTiming[ Monitor[NDSolve[{eq, bc1, bc2, ic}, z, {t, 0, 100}, {x, -Lx, Lx}, {y, -Ly, Ly}, Method -> mol, EvaluationMonitor :> (time = t)], ProgressIndicator[time/100]], 60] >`11.46` >`12.` >`11.9` [1]: https://i.sstatic.net/EAq93.gif