-
Notifications
You must be signed in to change notification settings - Fork 918
Description
Describe the bug
Periodic boundary conditions work well for steady problems and dual-time-stepping. But when I try to use time-stepping (not dual-time-stepping), the periodic boundary condition shows some artifacts. For a problem that's homogeneous in the periodic direction, the transient solution is not homogeneous in the periodic direction.
To Reproduce
To verify the problem, I looked at the "navierstokes/poiseuille" test case. This case is homogeneous in the y direction, and has periodic boundaries. Instead of treating it as a steady-state problem, I did time-marching wit simple time-stepping. I then compared the results with the same simulation on v6.2.0 (before PR #652 changed the periodic boundaries). The y-momentum is very similar in both cases. However, the x-momentum shows inhomogeneity on the develop branch:
Here are the files to recreate my test case:
periodic_timestepping.tar.gz
My Analysis
One of my colleagues pointed out that CSolver::InitiatePeriodicComms and CSolver::CompletePeriodicComms only communicate the residual and the Jacobian of point "i" with respect to point "i". The Jacobian of point "i" with respect to point "j" is not communicated. This means that a different problem is being passed to the linear solver at the periodic nodes. In v6.2.0, a halo node approach was used, so the linear solver problem was identical for all nodes along a homogeneous direction.
If this analysis is correct, then this could be fixed by communicating the full Jacobian (with respect to all neighbors) at the periodic points.
Desktop
- OS: Ubuntu 18.04
- C++ compiler and version: icc 19.0.2.187
- MPI implementation and version: mpich2/3.2
- SU2 Version: develop branch
