|
| Step (double left_value, double right_value, double initial_shock_position, const Options::Context &context={}) |
|
| Step (const Step &)=default |
|
Step & | operator= (const Step &)=default |
|
| Step (Step &&)=default |
|
Step & | operator= (Step &&)=default |
|
auto | get_clone () const -> std::unique_ptr< evolution::initial_data::InitialData > override |
|
template<typename T > |
Scalar< T > | u (const tnsr::I< T, 1 > &x, double t) const |
|
template<typename T > |
Scalar< T > | du_dt (const tnsr::I< T, 1 > &x, double t) const |
|
tuples::TaggedTuple< Tags::U > | variables (const tnsr::I< DataVector, 1 > &x, double t, tmpl::list< Tags::U >) const |
|
tuples::TaggedTuple<::Tags::dt< Tags::U > > | variables (const tnsr::I< DataVector, 1 > &x, double t, tmpl::list<::Tags::dt< Tags::U > >) const |
|
void | pup (PUP::er &p) override |
|
virtual auto | get_clone () const -> std::unique_ptr< InitialData >=0 |
|
A propagating shock between two constant states.
The shock propagates left-to-right, with profile \(U(x, t) = U_R + (U_L - U_R) H(-(x - x_0 - v t))\). Here \(U_L\) and \(U_R\) are the left and right constant states, satisfying \(U_L > U_R\); \(H\) is the Heaviside function; \(x_0\) is the initial (i.e., \(t=0\)) position of the shock; and \(v = 0.5 (U_L + U_R)\) is the speed of the shock.
- Note
- At the shock, where \(x = x_0 + vt\), we have \(U(x, t) = U_L\). (This is inherited from the Heaviside implementation
step_function
.) Additionally, the time derivative \(\partial_t u0\) is zero, rather than the correct delta function.