72 auto compute(
const dealii::Point<dim> &point, Number t)
75 const auto view = hyperbolic_system_.template view<dim, Number>();
77 const auto norm = point.norm();
78 const auto min = 10. * std::numeric_limits<Number>::min();
82 auto vel = -u0_ * point / (norm +
min);
86 const auto D = u0_ * (gamma_ - 1.) / 2.;
87 const bool in_interior = t == Number(0.) ? false : norm / t < D;
90 rho = rho0_ * std::pow((gamma_ + 1.) / (gamma_ - 1.), dim);
92 p = 0.5 * rho0_ * u0_ * u0_;
93 p *= std::pow(gamma_ + 1., dim) / std::pow(gamma_ - 1., dim - 1);
95 rho = rho0_ * std::pow(1. + t / (norm +
min), dim - 1);
101 result[1] = Number(vel[0]);
102 if constexpr (dim >= 2)
103 result[2] = Number(vel[1]);
104 if constexpr (dim >= 3)
105 result[3] = Number(vel[2]);
106 if constexpr (View::have_energy_equation)
109 return view.from_initial_state(result);