While I've fixed the problems with the EDIRK LIMEX timestepping routine, I don't know what's going wrong with the SMR91 timestepping scheme.
I've created a test case that can be used to reproduce the error. It's a 2D channel flow, with v2-f. The restart file is a converged steady state field. Timestepping works for Euler implicit or RK LIMEX EDIRK schemes, but not for SMR91.
Additionally, Valgrind is complaining about the use of unitialized values when using the SMR91 timestepping, but not when using any other timestepping. This points to a larger problem, rather than just an ill-posed linear system. The unitialized values are somewhere in the CNSVariable objects in the CVariable** node data structure of the CNSSolver object. Because of how Valgrind tracks unitialized values, Valgrind only complains about them in the linear solver for the turbulence solve. But that doesn't mean that that is where the unitialized values should have been set. I'm attaching the Valgrind log, if you care to see it. Personally, I don't find Valgrind logs particularly useful for tracking down unitialized values.
I'm currently working off a new branch, pecos-rk-fixes.
Steps to reproduce / test case
Put the grid, the restart file (interp_00000.dat) and the cfg file in the same directory.
Run SU2_CFD timestepping.cfg (no need for parallel execution).
The linear solver should fail to converge on the first timestep.
Switch the TIME_DISCRE_FLOW option in timestepping.cfg to EULER_IMPLICIT or RUNGE-KUTTA_LIMEX_EDIRK.
Run SU2_CFD timestepping.cfg again. This time, the linear solver should converge.
Let me know if you have any problems reproducing the error.
While I've fixed the problems with the EDIRK LIMEX timestepping routine, I don't know what's going wrong with the SMR91 timestepping scheme.
I've created a test case that can be used to reproduce the error. It's a 2D channel flow, with v2-f. The restart file is a converged steady state field. Timestepping works for Euler implicit or RK LIMEX EDIRK schemes, but not for SMR91.
Additionally, Valgrind is complaining about the use of unitialized values when using the SMR91 timestepping, but not when using any other timestepping. This points to a larger problem, rather than just an ill-posed linear system. The unitialized values are somewhere in the CNSVariable objects in the
CVariable** node
data structure of theCNSSolver
object. Because of how Valgrind tracks unitialized values, Valgrind only complains about them in the linear solver for the turbulence solve. But that doesn't mean that that is where the unitialized values should have been set. I'm attaching the Valgrind log, if you care to see it. Personally, I don't find Valgrind logs particularly useful for tracking down unitialized values.I'm currently working off a new branch,
pecos-rk-fixes
.Steps to reproduce / test case
interp_00000.dat
) and the cfg file in the same directory.SU2_CFD timestepping.cfg
(no need for parallel execution).TIME_DISCRE_FLOW
option intimestepping.cfg
toEULER_IMPLICIT
orRUNGE-KUTTA_LIMEX_EDIRK
.SU2_CFD timestepping.cfg
again. This time, the linear solver should converge.Let me know if you have any problems reproducing the error.
valgrind.log SMR91.tar.gz