diff options
author | Anton Khirnov <anton@khirnov.net> | 2017-06-30 10:43:40 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2017-06-30 10:43:40 +0200 |
commit | ed3183709f65cd7dbdc26c540b83de78174c6fb8 (patch) | |
tree | ccd1f2dec4d3f47f6507aa90f978c90725ef19c8 | |
parent | 19df41ffde95df208c198ce3bf3041460280108e (diff) |
Add 9th order dissipation.
-rw-r--r-- | src/apply_dissipation.c | 13 | ||||
-rw-r--r-- | src/basegrid.c | 2 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/apply_dissipation.c b/src/apply_dissipation.c index 6953757..6920ef5 100644 --- a/src/apply_dissipation.c +++ b/src/apply_dissipation.c @@ -34,6 +34,19 @@ void apply_dissipation(const cGH *gh, const double *var, double *rhs, double dx[ // + (var(i,j-3,k) - 6*var(i,j-2,k) + 15*var(i,j-1,k) - 20*var(i,j,k) + 15*var(i,j+1,k) - 6*var(i,j+2,k) + var(i,j+3,k) ) * idx(2) } break; + case 9: +#pragma omp parallel for + for (int k = 5; k < nk - 5; k++) + for (int i = 5; i < nk - 5; i++) { + int idx = CCTK_GFINDEX3D(gh, i, y_idx, k); + rhs[idx] += epsdis[idx] / 1024 * + ((var[idx - 5] - 10 * var[idx - 4] + 45 * var[idx - 3] - 120 * var[idx - 2] + 210 * var[idx - 1] - 252 * var[idx] + + var[idx + 5] - 10 * var[idx + 4] + 45 * var[idx + 3] - 120 * var[idx + 2] + 210 * var[idx + 1]) * inv_dx[0] + + (var[idx - 5 * ni * nj] - 10 * var[idx - 4 * ni * nj] + 45 * var[idx - 3 * ni * nj] - 120 * var[idx - 2 * ni * nj] + 210 * var[idx - 1 * ni * nj] - 252 * var[idx] + + var[idx + 5 * ni * nj] - 10 * var[idx + 4 * ni * nj] + 45 * var[idx + 3 * ni * nj] - 120 * var[idx + 2 * ni * nj] + 210 * var[idx + 1 * ni * nj]) * inv_dx[2]); +//$ + (var(i,j-5,k) - 10*var(i,j-4,k) + 45*var(i,j-3,k) - 120*var(i,j-2,k) + 210*var(i,j-1,k) - 252*var(i,j,k) + 210*var(i,j+1,k) - 120*var(i,j+2,k) + 45*var(i,j+3,k) - 10*var(i,j+4,k) + var(i,j+5,k)) * idx(2) + } + break; default: CCTK_WARN(0, "internal error"); } diff --git a/src/basegrid.c b/src/basegrid.c index 66add65..55c9bd9 100644 --- a/src/basegrid.c +++ b/src/basegrid.c @@ -15,6 +15,8 @@ void dissipation_basegrid (CCTK_ARGUMENTS) } for (d=0; d<cctk_dim; ++d) { + if (d == 1) + continue; if (cctk_nghostzones[d] < (order+1)/2) { CCTK_WARN (0, "This thorn requires at least (order+1)/2 ghost zones"); } |