diff options
author | rhaas <rhaas@578cdeb0-5ea1-4b81-8215-5a3b8777ee0b> | 2014-03-12 05:16:11 +0000 |
---|---|---|
committer | rhaas <rhaas@578cdeb0-5ea1-4b81-8215-5a3b8777ee0b> | 2014-03-12 05:16:11 +0000 |
commit | f1f9e12f1e8f47d231db406202fb0327039ac3d7 (patch) | |
tree | d0f99eb98e4c3f7169fdb83f1efb2df7e33124e2 | |
parent | 9ed15d3d92d604fa6b4e3916656b94681b9f8812 (diff) |
fix RK4 coefficients in multirate RK4-RK2 method
the bug was introduced in r178 and likely rendered the method second order
accurate.
git-svn-id: http://svn.cactuscode.org/arrangements/CactusNumerical/MoL/trunk@217 578cdeb0-5ea1-4b81-8215-5a3b8777ee0b
-rw-r--r-- | src/RK4-RK2.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/RK4-RK2.c b/src/RK4-RK2.c index dd1071f..c310b9d 100644 --- a/src/RK4-RK2.c +++ b/src/RK4-RK2.c @@ -85,7 +85,7 @@ void MoL_RK4_RK2_Add(CCTK_ARGUMENTS) case 0: for (int i=0; i<totalsize; ++i) { CCTK_REAL const scaled_rhs = dt * RHSVar[i]; - ScratchVar[i] = OldVar[i] + 1.0/3.0 * scaled_rhs; + ScratchVar[i] = OldVar[i] + 1.0/6.0 * scaled_rhs; UpdateVar[i] = OldVar[i] + 0.5 * scaled_rhs; } break; @@ -93,7 +93,7 @@ void MoL_RK4_RK2_Add(CCTK_ARGUMENTS) case 1: for (int i=0; i<totalsize; ++i) { CCTK_REAL const scaled_rhs = dt * RHSVar[i]; - ScratchVar[i] += 1.0/6.0 * scaled_rhs; + ScratchVar[i] += 1.0/3.0 * scaled_rhs; UpdateVar[i] = OldVar[i] + 0.5 * scaled_rhs; } break; @@ -101,7 +101,7 @@ void MoL_RK4_RK2_Add(CCTK_ARGUMENTS) case 2: for (int i=0; i<totalsize; ++i) { CCTK_REAL const scaled_rhs = dt * RHSVar[i]; - ScratchVar[i] += 1.0/6.0 * scaled_rhs; + ScratchVar[i] += 1.0/3.0 * scaled_rhs; UpdateVar[i] = OldVar[i] + scaled_rhs; } break; @@ -110,7 +110,7 @@ void MoL_RK4_RK2_Add(CCTK_ARGUMENTS) for (int i=0; i<totalsize; ++i) { CCTK_REAL const scaled_rhs = dt * RHSVar[i]; /* ScratchVar contains OldVar */ - UpdateVar[i] = ScratchVar[i] + 1.0/3.0 * scaled_rhs; + UpdateVar[i] = ScratchVar[i] + 1.0/6.0 * scaled_rhs; } break; |