Added the equations for hydro only for both CPU and GPU. NOTE: NOT RIGOROUSLY CHECKED FOR CORRECTNESS. I just took the equations used with entropy and removed the terms which included entropy and magnetic fields
This commit is contained in:
@@ -100,22 +100,20 @@ momentum(in Vector uu, in Scalar lnrho, in Scalar tt) {
|
|||||||
#else
|
#else
|
||||||
Vector
|
Vector
|
||||||
momentum(in Vector uu, in Scalar lnrho) {
|
momentum(in Vector uu, in Scalar lnrho) {
|
||||||
Vector mom;
|
// !!!!!!!!!!!!!!!!%JP: NOTE TODO IMPORTANT!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
// NOT CHECKED FOR CORRECTNESS: USE AT YOUR OWN RISK
|
||||||
const Matrix S = stress_tensor(uu);
|
const Matrix S = stress_tensor(uu);
|
||||||
|
const Scalar cs2 = cs2_sound * exp((gamma - 1) * (value(lnrho) - LNRHO0));
|
||||||
// Isothermal: we have constant speed of sound
|
// Regex replace CPU constants with get\(AC_([a-zA-Z_0-9]*)\)
|
||||||
|
// \1
|
||||||
mom = -mul(gradients(uu), value(uu)) -
|
const Vector mom = - mul(gradients(uu), value(uu))
|
||||||
cs2_sound * gradient(lnrho) +
|
- cs2 * gradient(lnrho)
|
||||||
nu_visc *
|
+ nu_visc * (
|
||||||
(laplace_vec(uu) + Scalar(1. / 3.) * gradient_of_divergence(uu) +
|
laplace_vec(uu)
|
||||||
Scalar(2.) * mul(S, gradient(lnrho))) + zeta * gradient_of_divergence(uu);
|
+ Scalar(1. / 3.) * gradient_of_divergence(uu)
|
||||||
|
+ Scalar(2.) * mul(S, gradient(lnrho))
|
||||||
#if LGRAVITY
|
)
|
||||||
mom = mom - (Vector){0, 0, -10.0};
|
+ zeta * gradient_of_divergence(uu);
|
||||||
#endif
|
|
||||||
|
|
||||||
return mom;
|
return mom;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -587,38 +587,19 @@ momentum(const ModelVectorData& uu, const ModelScalarData& lnrho
|
|||||||
ModelScalar(2.) * mul(S, gradient(lnrho))) +
|
ModelScalar(2.) * mul(S, gradient(lnrho))) +
|
||||||
get(AC_zeta) * gradient_of_divergence(uu);
|
get(AC_zeta) * gradient_of_divergence(uu);
|
||||||
return mom;
|
return mom;
|
||||||
#endif
|
#else
|
||||||
|
// !!!!!!!!!!!!!!!!%JP: NOTE TODO IMPORTANT!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
#if 0
|
// NOT CHECKED FOR CORRECTNESS: USE AT YOUR OWN RISK
|
||||||
const ModelMatrix S = stress_tensor(uu);
|
const ModelMatrix S = stress_tensor(uu);
|
||||||
|
const ModelScalar cs2 = get(AC_cs2_sound) * expl((get(AC_gamma) - 1) * (value(lnrho) - LNRHO0));
|
||||||
|
|
||||||
//#if LENTROPY
|
const ModelVector mom = -mul(gradients(uu), value(uu)) - cs2 * gradient(lnrho) +
|
||||||
//const ModelScalar lnrho0 = 1; // TODO correct lnrho0
|
get(AC_nu_visc) * (laplace_vec(uu) +
|
||||||
const ModelScalar cs02 = get(AC_cs2_sound); // TODO better naming
|
ModelScalar(1. / 3.) * gradient_of_divergence(uu) +
|
||||||
const ModelScalar cs2 = cs02;// * expl(get(AC_gamma) * value(ss) / get(AC_cp_sound) + (get(AC_gamma)-ModelScalar(1.l)) * (value(lnrho) - lnrho0));
|
ModelScalar(2.) * mul(S, gradient(lnrho))) +
|
||||||
|
get(AC_zeta) * gradient_of_divergence(uu);
|
||||||
mom = -mul(gradients(uu), value(uu)) -
|
|
||||||
cs2 * ((ModelScalar(1.) / get(AC_cp_sound)) * gradient(ss) + gradient(lnrho)) +
|
|
||||||
get(AC_nu_visc) *
|
|
||||||
(laplace_vec(uu) + ModelScalar(1.l / 3.l) * gradient_of_divergence(uu) +
|
|
||||||
ModelScalar(2.l) * mul(S, gradient(lnrho))) + get(AC_zeta) * gradient_of_divergence(uu);
|
|
||||||
|
|
||||||
const ModelVector grad_div = gradient_of_divergence(aa);
|
|
||||||
const ModelVector lap = laplace_vec(aa);
|
|
||||||
const ModelVector j = (ModelScalar(1.l) / get(AC_mu0)) * (grad_div - lap);
|
|
||||||
const ModelVector B = curl(aa);
|
|
||||||
mom = mom + (ModelScalar(1.l) / expl(value(lnrho))) * cross(j, B);
|
|
||||||
//#else // Basic hydro
|
|
||||||
const ModelScalar cs02 = get(AC_cs2_sound);
|
|
||||||
mom = -mul(gradients(uu), value(uu)) -
|
|
||||||
cs02 * gradient(lnrho) +
|
|
||||||
get(AC_nu_visc) *
|
|
||||||
(laplace_vec(uu) + ModelScalar(1. / 3.) * gradient_of_divergence(uu) +
|
|
||||||
ModelScalar(2.) * mul(S, gradient(lnrho))) + get(AC_zeta) * gradient_of_divergence(uu);
|
|
||||||
//#endif
|
|
||||||
return mom;
|
return mom;
|
||||||
#endif
|
#endif
|
||||||
return (ModelVector){NAN, NAN, NAN}; // TODO HYDRO ONLY MODEL SOLUTION
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline ModelVector
|
static inline ModelVector
|
||||||
|
Reference in New Issue
Block a user