I'm attempting to implement the Weiss and Smith preconditioner in an existing finite volume code and I am struggling with the idea of dual time stepping. My inner time steps are predictor-corrector, second order explicit with local time step acceleration. The time step is based on the stable CFL number based on the convective speed since it is using the preconditioned values.
My outer time step is a second order backward difference implicit method. This is all straight from the Weiss and Smith 1995 AIAA paper. The outer time step is freely chosen to resolve whatever features of interest are desired. The inner time steps over pseudo-time are performed until convergence, in theory when the pseudo-time is marched to infinity. When this happens, the solution should be at the physical time step used for the outer scheme.
I have two issues with this that are related. Right now in my code, the flow evolves to the time determined by the number of iterations times the inner time step rather than simply becoming my outer time step. For example, if I run a vortex convection case convecting at 1 m/s with an outer time step of 1 s and an inner time step of, say, 0.001 s, I would expect the vortex to move 1 meter each outer timestep. However, it actually convects 0.001*<number of inner steps>
meters.
So I feel like I'm missing something with the whole concept. How does my inner step converge to a physical time of 1s per outer time step rather than a physical time of the number of inner steps times the inner time step?