Skip to content

Commit

Permalink
Godunov: fix bugs in slopes computations
Browse files Browse the repository at this point in the history
  • Loading branch information
mic84 committed Jun 2, 2020
1 parent cdd0a07 commit 62dedaf
Showing 1 changed file with 21 additions and 21 deletions.
42 changes: 21 additions & 21 deletions src/convection/incflo_slopes_K.H
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ amrex::Real incflo_ho_xslope (int i, int j, int k, int n,
dcen = 0.5*(dlft+drgt);
dsgn = amrex::Math::copysign(1.e0, dcen);
dlim = (dlft*drgt >= 0.0) ? 2.0*amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dcen = dsgn*amrex::min(dlim, amrex::Math::abs(dcen));

dtemp = 4.0/3.0*dcen - 1.0/6.0*(dfp + dfm);

Expand Down Expand Up @@ -107,35 +106,36 @@ amrex::Real incflo_ho_xslope_extdir (int i, int j, int k, int n,
dcen = 0.5*(dlft+drgt);
dsgn = amrex::Math::copysign(1.e0, dcen);
dlim = (dlft*drgt >= 0.0) ? 2.0*amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dcen = dsgn*amrex::min(dlim, amrex::Math::abs(dcen));

dtemp = 4.0/3.0*dcen - 1.0/6.0*(dfp + dfm);

if (edlo and i == domlo) {
dtemp = -16./15.*q(i-1,j,k,n) + .5*q(i,j,k,n) + 2./3.*q(i+1,j,k,n) - 0.1*q(i+2,j,k,n);
dlft = 2.*(q(i ,j,k,n)-q(i-1,j,k,n));
drgt = 2.*(q(i+1,j,k,n)-q(i ,j,k,n));
dlim = (dlft*drgt >= 0.0) ? 2.0*amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dlim = (dlft*drgt >= 0.0) ? amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dsgn = amrex::Math::copysign(1.e0, dtemp);
} else if (edlo and i == domlo+1) {
dfm = -16./15.*q(domlo-1,j,k,n) + .5*q(domlo,j,k,n) + 2./3.*q(domlo+1,j,k,n) - 0.1*q(domlo+2,j,k,n);
dlft = 2.*(q(domlo ,j,k,n)-q(domlo-1,j,k,n));
drgt = 2.*(q(domlo+1,j,k,n)-q(domlo ,j,k,n));
dlimsh = (dlft*drgt >= 0.0) ? 2.0*amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dlimsh = (dlft*drgt >= 0.0) ? amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dsgnsh = amrex::Math::copysign(1.e0, dfm);
dfm = dsgnsh*amrex::min(dlimsh, amrex::Math::abs(dfm));
dtemp = 4.0/3.0*dcen - 1.0/6.0*(dfp + dfm);
} else if (edhi and i == domhi) {
}

if (edhi and i == domhi) {
dtemp = 16./15.*q(i+1,j,k,n) - .5*q(i,j,k,n) - 2./3.*q(i-1,j,k,n) + 0.1*q(i-2,j,k,n);
dlft = 2.*(q(i ,j,k,n)-q(i-1,j,k,n));
drgt = 2.*(q(i+1,j,k,n)-q(i ,j,k,n));
dlim = (dlft*drgt >= 0.0) ? 2.0*amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dlim = (dlft*drgt >= 0.0) ? amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dsgn = amrex::Math::copysign(1.e0, dtemp);
} else if (edhi and i == domhi-1) {
dfp = 16./15.*q(domhi+1,j,k,n) - .5*q(domhi,j,k,n) - 2./3.*q(domhi-1,j,k,n) + 0.1*q(domhi-2,j,k,n);
dlft = 2.*(q(domhi ,j,k,n)-q(domhi-1,j,k,n));
drgt = 2.*(q(domhi+1,j,k,n)-q(domhi ,j,k,n));
dlimsh = (dlft*drgt >= 0.0) ? 2.0*amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dlimsh = (dlft*drgt >= 0.0) ? amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dsgnsh = amrex::Math::copysign(1.e0, dfp);
dfp = dsgnsh*amrex::min(dlimsh, amrex::Math::abs(dfp));
dtemp = 4.0/3.0*dcen - 1.0/6.0*(dfp + dfm);
Expand Down Expand Up @@ -185,7 +185,6 @@ amrex::Real incflo_ho_yslope (int i, int j, int k, int n,
dcen = 0.5*(dlft+drgt);
dsgn = amrex::Math::copysign(1.e0, dcen);
dlim = (dlft*drgt >= 0.0) ? 2.0*amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dcen = dsgn*amrex::min(dlim, amrex::Math::abs(dcen));

dtemp = 4.0/3.0*dcen - 1.0/6.0*(dfp + dfm);
return dsgn*amrex::min(dlim, amrex::Math::abs(dtemp));
Expand Down Expand Up @@ -240,35 +239,36 @@ amrex::Real incflo_ho_yslope_extdir (int i, int j, int k, int n,
dcen = 0.5*(dlft+drgt);
dsgn = amrex::Math::copysign(1.e0, dcen);
dlim = (dlft*drgt >= 0.0) ? 2.0*amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dcen = dsgn*amrex::min(dlim, amrex::Math::abs(dcen));

dtemp = 4.0/3.0*dcen - 1.0/6.0*(dfp + dfm);

if (edlo and j == domlo) {
dtemp = -16./15.*q(i,j-1,k,n) + .5*q(i,j,k,n) + 2./3.*q(i,j+1,k,n) - 0.1*q(i,j+2,k,n);
dlft = 2.*(q(i ,j,k,n)-q(i,j-1,k,n));
drgt = 2.*(q(i,j+1,k,n)-q(i ,j,k,n));
dlim = (dlft*drgt >= 0.0) ? 2.0*amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dlim = (dlft*drgt >= 0.0) ? amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dsgn = amrex::Math::copysign(1.e0, dtemp);
} else if (edlo and j == domlo+1) {
dfm = -16./15.*q(i,domlo-1,k,n) + .5*q(i,domlo,k,n) + 2./3.*q(i,domlo+1,k,n) - 0.1*q(i,domlo+2,k,n);
dlft = 2.*(q(i ,domlo,k,n)-q(i,domlo-1,k,n));
drgt = 2.*(q(i,domlo+1,k,n)-q(i ,domlo,k,n));
dlimsh = (dlft*drgt >= 0.0) ? 2.0*amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dlimsh = (dlft*drgt >= 0.0) ? amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dsgnsh = amrex::Math::copysign(1.e0, dfm);
dfm = dsgnsh*amrex::min(dlimsh, amrex::Math::abs(dfm));
dtemp = 4.0/3.0*dcen - 1.0/6.0*(dfp + dfm);
} else if (edhi and j == domhi) {
}

if (edhi and j == domhi) {
dtemp = 16./15.*q(i,j+1,k,n) - .5*q(i,j,k,n) - 2./3.*q(i,j-1,k,n) + 0.1*q(i,j-2,k,n);
dlft = 2.*(q(i ,j,k,n)-q(i,j-1,k,n));
drgt = 2.*(q(i,j+1,k,n)-q(i ,j,k,n));
dlim = (dlft*drgt >= 0.0) ? 2.0*amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dlim = (dlft*drgt >= 0.0) ? amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dsgn = amrex::Math::copysign(1.e0, dtemp);
} else if (edhi and j == domhi-1) {
dfp = 16./15.*q(i,domhi+1,k,n) - .5*q(i,domhi,k,n) - 2./3.*q(i,domhi-1,k,n) + 0.1*q(i,domhi-2,k,n);
dlft = 2.*(q(i ,domhi,k,n)-q(i,domhi-1,k,n));
drgt = 2.*(q(i,domhi+1,k,n)-q(i ,domhi,k,n));
dlimsh = (dlft*drgt >= 0.0) ? 2.0*amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dlimsh = (dlft*drgt >= 0.0) ? amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dsgnsh = amrex::Math::copysign(1.e0, dfp);
dfp = dsgnsh*amrex::min(dlimsh, amrex::Math::abs(dfp));
dtemp = 4.0/3.0*dcen - 1.0/6.0*(dfp + dfm);
Expand Down Expand Up @@ -320,7 +320,6 @@ amrex::Real incflo_ho_zslope (int i, int j, int k, int n,
dcen = 0.5*(dlft+drgt);
dsgn = amrex::Math::copysign(1.e0, dcen);
dlim = (dlft*drgt >= 0.0) ? 2.0*amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dcen = dsgn*amrex::min(dlim, amrex::Math::abs(dcen));

dtemp = 4.0/3.0*dcen - 1.0/6.0*(dfp + dfm);
return dsgn*amrex::min(dlim, amrex::Math::abs(dtemp));
Expand Down Expand Up @@ -375,35 +374,36 @@ amrex::Real incflo_ho_zslope_extdir (int i, int j, int k, int n,
dcen = 0.5*(dlft+drgt);
dsgn = amrex::Math::copysign(1.e0, dcen);
dlim = (dlft*drgt >= 0.0) ? 2.0*amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dcen = dsgn*amrex::min(dlim, amrex::Math::abs(dcen));

dtemp = 4.0/3.0*dcen - 1.0/6.0*(dfp + dfm);

if (edlo and k == domlo) {
dtemp = -16./15.*q(i,j,k-1,n) + .5*q(i,j,k,n) + 2./3.*q(i,j,k+1,n) - 0.1*q(i,j,k+2,n);
dlft = 2.*(q(i ,j,k,n)-q(i,j,k-1,n));
drgt = 2.*(q(i,j,k+1,n)-q(i ,j,k,n));
dlim = (dlft*drgt >= 0.0) ? 2.0*amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dlim = (dlft*drgt >= 0.0) ? amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dsgn = amrex::Math::copysign(1.e0, dtemp);
} else if (edlo and k == domlo+1) {
dfm = -16./15.*q(i,j,domlo-1,n) + .5*q(i,j,domlo,n) + 2./3.*q(i,j,domlo+1,n) - 0.1*q(i,j,domlo+2,n);
dlft = 2.*(q(i ,j,domlo,n)-q(i,j,domlo-1,n));
drgt = 2.*(q(i,j,domlo+1,n)-q(i ,j,domlo,n));
dlimsh = (dlft*drgt >= 0.0) ? 2.0*amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dlimsh = (dlft*drgt >= 0.0) ? amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dsgnsh = amrex::Math::copysign(1.e0, dfm);
dfm = dsgnsh*amrex::min(dlimsh, amrex::Math::abs(dfm));
dtemp = 4.0/3.0*dcen - 1.0/6.0*(dfp + dfm);
} else if (edhi and k == domhi) {
}

if (edhi and k == domhi) {
dtemp = 16./15.*q(i,j,k+1,n) - .5*q(i,j,k,n) - 2./3.*q(i,j,k-1,n) + 0.1*q(i,j,k-2,n);
dlft = 2.*(q(i ,j,k,n)-q(i,j,k-1,n));
drgt = 2.*(q(i,j,k+1,n)-q(i ,j,k,n));
dlim = (dlft*drgt >= 0.0) ? 2.0*amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dlim = (dlft*drgt >= 0.0) ? amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dsgn = amrex::Math::copysign(1.e0, dtemp);
} else if (edhi and k == domhi-1) {
dfp = 16./15.*q(i,j,domhi+1,n) - .5*q(i,j,domhi,n) - 2./3.*q(i,j,domhi-1,n) + 0.1*q(i,j,domhi-2,n);
dlft = 2.*(q(i ,j,domhi,n)-q(i,j,domhi-1,n));
drgt = 2.*(q(i,j,domhi+1,n)-q(i ,j,domhi,n));
dlimsh = (dlft*drgt >= 0.0) ? 2.0*amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dlimsh = (dlft*drgt >= 0.0) ? amrex::min(amrex::Math::abs(dlft), amrex::Math::abs(drgt)) : 0.0;
dsgnsh = amrex::Math::copysign(1.e0, dfp);
dfp = dsgnsh*amrex::min(dlimsh, amrex::Math::abs(dfp));
dtemp = 4.0/3.0*dcen - 1.0/6.0*(dfp + dfm);
Expand Down

0 comments on commit 62dedaf

Please sign in to comment.