Skip to content
Snippets Groups Projects
Commit 2a3f908b authored by Matthieu Schaller's avatar Matthieu Schaller
Browse files

Do not call fmin or fmax in the gizmo functions. Use our macro instead.

parent 08cca88d
Branches
Tags
1 merge request!524Improvements to GIZMO implementation
......@@ -322,7 +322,7 @@ __attribute__((always_inline)) INLINE static void runner_iact_fluxes_common(
float Xi = Vi;
float Xj = Vj;
#ifdef GIZMO_VOLUME_CORRECTION
if (fabsf(Vi - Vj) / fminf(Vi, Vj) > 1.5 * hydro_dimension) {
if (fabsf(Vi - Vj) / min(Vi, Vj) > 1.5 * hydro_dimension) {
Xi = (Vi * hj + Vj * hi) / (hi + hj);
Xj = Xi;
}
......
......@@ -57,29 +57,29 @@ hydro_slope_limit_cell_collect(struct part* pi, struct part* pj, float r) {
/* basic slope limiter: collect the maximal and the minimal value for the
* primitive variables among the ngbs */
pi->primitives.limiter.rho[0] =
fmin(pj->primitives.rho, pi->primitives.limiter.rho[0]);
min(pj->primitives.rho, pi->primitives.limiter.rho[0]);
pi->primitives.limiter.rho[1] =
fmax(pj->primitives.rho, pi->primitives.limiter.rho[1]);
max(pj->primitives.rho, pi->primitives.limiter.rho[1]);
pi->primitives.limiter.v[0][0] =
fmin(pj->primitives.v[0], pi->primitives.limiter.v[0][0]);
min(pj->primitives.v[0], pi->primitives.limiter.v[0][0]);
pi->primitives.limiter.v[0][1] =
fmax(pj->primitives.v[0], pi->primitives.limiter.v[0][1]);
max(pj->primitives.v[0], pi->primitives.limiter.v[0][1]);
pi->primitives.limiter.v[1][0] =
fmin(pj->primitives.v[1], pi->primitives.limiter.v[1][0]);
min(pj->primitives.v[1], pi->primitives.limiter.v[1][0]);
pi->primitives.limiter.v[1][1] =
fmax(pj->primitives.v[1], pi->primitives.limiter.v[1][1]);
max(pj->primitives.v[1], pi->primitives.limiter.v[1][1]);
pi->primitives.limiter.v[2][0] =
fmin(pj->primitives.v[2], pi->primitives.limiter.v[2][0]);
min(pj->primitives.v[2], pi->primitives.limiter.v[2][0]);
pi->primitives.limiter.v[2][1] =
fmax(pj->primitives.v[2], pi->primitives.limiter.v[2][1]);
max(pj->primitives.v[2], pi->primitives.limiter.v[2][1]);
pi->primitives.limiter.P[0] =
fmin(pj->primitives.P, pi->primitives.limiter.P[0]);
min(pj->primitives.P, pi->primitives.limiter.P[0]);
pi->primitives.limiter.P[1] =
fmax(pj->primitives.P, pi->primitives.limiter.P[1]);
max(pj->primitives.P, pi->primitives.limiter.P[1]);
pi->primitives.limiter.maxr = fmax(r, pi->primitives.limiter.maxr);
pi->primitives.limiter.maxr = max(r, pi->primitives.limiter.maxr);
}
/**
......@@ -119,7 +119,7 @@ __attribute__((always_inline)) INLINE static void hydro_slope_limit_cell(
gradtrue *= p->primitives.limiter.maxr;
gradmax = p->primitives.limiter.rho[1] - p->primitives.rho;
gradmin = p->primitives.rho - p->primitives.limiter.rho[0];
alpha = fmin(1.0f, fmin(gradmax / gradtrue, gradmin / gradtrue));
alpha = min3(1.0f, gradmax / gradtrue, gradmin / gradtrue);
p->primitives.gradients.rho[0] *= alpha;
p->primitives.gradients.rho[1] *= alpha;
p->primitives.gradients.rho[2] *= alpha;
......@@ -131,7 +131,7 @@ __attribute__((always_inline)) INLINE static void hydro_slope_limit_cell(
gradtrue *= p->primitives.limiter.maxr;
gradmax = p->primitives.limiter.v[0][1] - p->primitives.v[0];
gradmin = p->primitives.v[0] - p->primitives.limiter.v[0][0];
alpha = fmin(1.0f, fmin(gradmax / gradtrue, gradmin / gradtrue));
alpha = min3(1.0f, gradmax / gradtrue, gradmin / gradtrue);
p->primitives.gradients.v[0][0] *= alpha;
p->primitives.gradients.v[0][1] *= alpha;
p->primitives.gradients.v[0][2] *= alpha;
......@@ -143,7 +143,7 @@ __attribute__((always_inline)) INLINE static void hydro_slope_limit_cell(
gradtrue *= p->primitives.limiter.maxr;
gradmax = p->primitives.limiter.v[1][1] - p->primitives.v[1];
gradmin = p->primitives.v[1] - p->primitives.limiter.v[1][0];
alpha = fmin(1.0f, fmin(gradmax / gradtrue, gradmin / gradtrue));
alpha = min3(1.0f, gradmax / gradtrue, gradmin / gradtrue);
p->primitives.gradients.v[1][0] *= alpha;
p->primitives.gradients.v[1][1] *= alpha;
p->primitives.gradients.v[1][2] *= alpha;
......@@ -155,7 +155,7 @@ __attribute__((always_inline)) INLINE static void hydro_slope_limit_cell(
gradtrue *= p->primitives.limiter.maxr;
gradmax = p->primitives.limiter.v[2][1] - p->primitives.v[2];
gradmin = p->primitives.v[2] - p->primitives.limiter.v[2][0];
alpha = fmin(1.0f, fmin(gradmax / gradtrue, gradmin / gradtrue));
alpha = min3(1.0f, gradmax / gradtrue, gradmin / gradtrue);
p->primitives.gradients.v[2][0] *= alpha;
p->primitives.gradients.v[2][1] *= alpha;
p->primitives.gradients.v[2][2] *= alpha;
......@@ -167,7 +167,7 @@ __attribute__((always_inline)) INLINE static void hydro_slope_limit_cell(
gradtrue *= p->primitives.limiter.maxr;
gradmax = p->primitives.limiter.P[1] - p->primitives.P;
gradmin = p->primitives.P - p->primitives.limiter.P[0];
alpha = fmin(1.0f, fmin(gradmax / gradtrue, gradmin / gradtrue));
alpha = min3(1.0f, gradmax / gradtrue, gradmin / gradtrue);
p->primitives.gradients.P[0] *= alpha;
p->primitives.gradients.P[1] *= alpha;
p->primitives.gradients.P[2] *= alpha;
......
......@@ -47,8 +47,8 @@ hydro_slope_limit_face_quantity(float phi_i, float phi_j, float phi_mid0,
delta1 = psi1 * fabs(phi_i - phi_j);
delta2 = psi2 * fabs(phi_i - phi_j);
phimin = fmin(phi_i, phi_j);
phimax = fmax(phi_i, phi_j);
phimin = min(phi_i, phi_j);
phimax = max(phi_i, phi_j);
phibar = phi_i + xij_norm / r * (phi_j - phi_i);
......@@ -75,9 +75,11 @@ hydro_slope_limit_face_quantity(float phi_i, float phi_j, float phi_mid0,
}
if (phi_i < phi_j) {
phi_mid = fmax(phiminus, fmin(phibar + delta2, phi_mid0));
const float temp = min(phibar + delta2, phi_mid0);
phi_mid = max(phiminus, temp);
} else {
phi_mid = fmin(phiplus, fmax(phibar - delta2, phi_mid0));
const float temp = max(phibar - delta2, phi_mid0);
phi_mid = min(phiplus, temp);
}
return phi_mid - phi_i;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment