47 static constexpr T pressure(T gamma, T rho, T u) {
return (gamma - 1) * rho * u; }
49 static constexpr T soundspeed(T gamma, T rho, T u) {
50 return sycl::sqrt(gamma * eos_adiabatic(gamma, rho, u) / rho);
53 static constexpr T cs_from_p(T gamma, T rho, T P) {
return sycl::sqrt(gamma * P / rho); }
68 static constexpr T pressure(T gamma, T K, T rho) {
return K * sycl::pow(rho, gamma); }
70 static constexpr T soundspeed(T gamma, T K, T rho) {
71 return sycl::sqrt(gamma * pressure(gamma, K, rho) / rho);
74 static constexpr T polytropic_index(T n) {
return 1. + 1. / n; }
89 static constexpr T soundspeed_sq(T cs0sq, T Rsq, T mq) {
90 return cs0sq * sycl::pow(Rsq, mq);
93 static constexpr T pressure(T cs0sq, T Rsq, T mq, T rho) {
94 return soundspeed_sq(cs0sq, Rsq, mq) * rho;
97 static constexpr T pressure_from_cs(T cs0sq, T rho) {
return cs0sq * rho; }
135 static constexpr T soundspeed(T P, T rho, T rho_c1, T rho_c2, T rho_c3) {
136 const T gamma = (rho < rho_c1) ? T(1.0)
137 : (rho < rho_c2) ? T(7.0 / 5.0)
138 : (rho < rho_c3) ? T(1.1)
140 return sycl::sqrt(gamma * P / rho);
143 static constexpr T temperature(T P, T rho, T mu, T mh, T kb) {
144 return mu * mh * P / (rho * kb);
147 static constexpr T pressure(T cs, T rho, T rho_c1, T rho_c2, T rho_c3) {
149 return cs * cs * rho;
150 }
else if (rho < rho_c2) {
151 return cs * cs * rho_c1 * sycl::pow(rho / rho_c1, 7. / 5.);
152 }
else if (rho < rho_c3) {
153 return cs * cs * rho_c1 * sycl::pow(rho_c2 / rho_c1, 7. / 5.)
154 * sycl::pow(rho / rho_c2, 1.1);
156 return cs * cs * rho_c1 * sycl::pow(rho_c2 / rho_c1, 7. / 5.)
157 * sycl::pow(rho_c3 / rho_c2, 1.1) * sycl::pow(rho / rho_c3, 5. / 3.);