Fix fourth-order C lopsided and KO stencil indexing
This commit is contained in:
@@ -127,11 +127,11 @@ void kodis(const int ex[3],
|
||||
|
||||
if (!(i0_lo > i0_hi || j0_lo > j0_hi || k0_lo > k0_hi)) {
|
||||
for (int k0 = k0_lo; k0 <= k0_hi; ++k0) {
|
||||
const int kF = k0 + 2;
|
||||
const int kF = k0 + 1;
|
||||
for (int j0 = j0_lo; j0 <= j0_hi; ++j0) {
|
||||
const int jF = j0 + 2;
|
||||
const int jF = j0 + 1;
|
||||
for (int i0 = i0_lo; i0 <= i0_hi; ++i0) {
|
||||
const int iF = i0 + 2;
|
||||
const int iF = i0 + 1;
|
||||
const size_t p = idx_ex(i0, j0, k0, ex);
|
||||
|
||||
const double Dx = (
|
||||
|
||||
@@ -165,11 +165,11 @@ void lopsided(const int ex[3],
|
||||
const int imaxF = ex1, jmaxF = ex2, kmaxF = ex3;
|
||||
|
||||
for (int k0 = 0; k0 <= ex3 - 2; ++k0) {
|
||||
const int kF = k0 + 2;
|
||||
const int kF = k0 + 1;
|
||||
for (int j0 = 0; j0 <= ex2 - 2; ++j0) {
|
||||
const int jF = j0 + 2;
|
||||
const int jF = j0 + 1;
|
||||
for (int i0 = 0; i0 <= ex1 - 2; ++i0) {
|
||||
const int iF = i0 + 2;
|
||||
const int iF = i0 + 1;
|
||||
const size_t p = idx_ex(i0, j0, k0, ex);
|
||||
|
||||
const double sfx = Sfx[p];
|
||||
|
||||
@@ -130,11 +130,11 @@ void lopsided_kodis(const int ex[3],
|
||||
|
||||
/* ---- advection ---- */
|
||||
for (int k0 = 0; k0 <= ex3-2; ++k0) {
|
||||
const int kF = k0+2;
|
||||
const int kF = k0+1;
|
||||
for (int j0 = 0; j0 <= ex2-2; ++j0) {
|
||||
const int jF = j0+2;
|
||||
const int jF = j0+1;
|
||||
for (int i0 = 0; i0 <= ex1-2; ++i0) {
|
||||
const int iF = i0+2;
|
||||
const int iF = i0+1;
|
||||
const size_t p = idx_ex(i0,j0,k0,ex);
|
||||
|
||||
const double sfx = Sfx[p];
|
||||
@@ -184,9 +184,9 @@ void lopsided_kodis(const int ex[3],
|
||||
const int i0_lo=(iminF+2>0)?iminF+2:0, j0_lo=(jminF+2>0)?jminF+2:0, k0_lo=(kminF+2>0)?kminF+2:0;
|
||||
const int i0_hi=imaxF-4, j0_hi=jmaxF-4, k0_hi=kmaxF-4;
|
||||
if (!(i0_lo>i0_hi||j0_lo>j0_hi||k0_lo>k0_hi)) {
|
||||
for (int k0=k0_lo;k0<=k0_hi;++k0) { const int kF=k0+2;
|
||||
for (int j0=j0_lo;j0<=j0_hi;++j0) { const int jF=j0+2;
|
||||
for (int i0=i0_lo;i0<=i0_hi;++i0) { const int iF=i0+2;
|
||||
for (int k0=k0_lo;k0<=k0_hi;++k0) { const int kF=k0+1;
|
||||
for (int j0=j0_lo;j0<=j0_hi;++j0) { const int jF=j0+1;
|
||||
for (int i0=i0_lo;i0<=i0_hi;++i0) { const int iF=i0+1;
|
||||
const size_t p=idx_ex(i0,j0,k0,ex);
|
||||
const double Dx=((fh[idx_fh_F(iF-3,jF,kF,ex)]+fh[idx_fh_F(iF+3,jF,kF,ex)])-SIX*(fh[idx_fh_F(iF-2,jF,kF,ex)]+fh[idx_fh_F(iF+2,jF,kF,ex)])+FIT*(fh[idx_fh_F(iF-1,jF,kF,ex)]+fh[idx_fh_F(iF+1,jF,kF,ex)])-TWT*fh[idx_fh_F(iF,jF,kF,ex)])/dX;
|
||||
const double Dy=((fh[idx_fh_F(iF,jF-3,kF,ex)]+fh[idx_fh_F(iF,jF+3,kF,ex)])-SIX*(fh[idx_fh_F(iF,jF-2,kF,ex)]+fh[idx_fh_F(iF,jF+2,kF,ex)])+FIT*(fh[idx_fh_F(iF,jF-1,kF,ex)]+fh[idx_fh_F(iF,jF+1,kF,ex)])-TWT*fh[idx_fh_F(iF,jF,kF,ex)])/dY;
|
||||
|
||||
Reference in New Issue
Block a user