When RK4_ACCURATE_EFIELD is defined, the pushe subroutine calls push_1step2 to push the electrons. pushe_1step2 advances the electrons a full dt each time it's called. Because it's nested inside a loop 'do epc=1,sml_nrk', this means the full pushe routine advances the electrons through 2*dt.
This is a remnant from the original pushe, which pushed the electrons using a RK2>RK4 hybrid scheme. The subroutine pushe_1step contains logic to differentiate based on the value of 'epc' and adjust dt and phase0 to do an RK2 midpoint step. This logic is absent from pushe_1step2, which is causing it to push to far.
The solution is to either enclose the electron RK2 loop in an ifdef so it doesn't run when RK4_ACCURATE_EFIELD is defined, or to deprecate the electron RK2>RK4 hybrid method completely in favor the RK4_ACCURATE_VERSION.
I hotfixed this on summitdev in 994d16e1c4 for @worleyph , but it needs to be fixed on the production branches.
pinging the original email thread participents: @seunghoeku , @eisung_yoon , @tskoskel , @efdazedo , and @rhager , too see if bitbucket will send them a notification about this thread.