SpECTRE
v2024.05.11
|
Initial data to simulate the Kelvin-Helmholtz instability. More...
#include <KhInstability.hpp>
Classes | |
struct | AdiabaticIndex |
The adiabatic index of the fluid. More... | |
struct | BackgroundDensity |
The mass density outside of the strip. More... | |
struct | BackgroundVelocity |
The velocity along \(x\) outside of the strip. More... | |
struct | PerturbAmplitude |
The amplitude of the perturbation. More... | |
struct | PerturbWidth |
The characteristic length for the width of the perturbation. More... | |
struct | Pressure |
The initial (constant) pressure of the fluid. More... | |
struct | StripBimedianHeight |
The vertical coordinate of the horizontal bimedian of the strip. More... | |
struct | StripDensity |
The mass density in the strip. More... | |
struct | StripThickness |
The thickness of the strip. More... | |
struct | StripVelocity |
The velocity along \(x\) in the strip. More... | |
Public Types | |
using | equation_of_state_type = EquationsOfState::IdealFluid< false > |
using | options = tmpl::list< AdiabaticIndex, StripBimedianHeight, StripThickness, StripDensity, StripVelocity, BackgroundDensity, BackgroundVelocity, Pressure, PerturbAmplitude, PerturbWidth > |
Public Member Functions | |
KhInstability (const KhInstability &)=default | |
KhInstability & | operator= (const KhInstability &)=default |
KhInstability (KhInstability &&)=default | |
KhInstability & | operator= (KhInstability &&)=default |
auto | get_clone () const -> std::unique_ptr< evolution::initial_data::InitialData > override |
KhInstability (double adiabatic_index, double strip_bimedian_height, double strip_thickness, double strip_density, double strip_velocity, double background_density, double background_velocity, double pressure, double perturbation_amplitude, double perturbation_width) | |
template<typename DataType , typename... Tags> | |
tuples::TaggedTuple< Tags... > | variables (const tnsr::I< DataType, Dim, Frame::Inertial > &x, tmpl::list< Tags... >) const |
Retrieve a collection of hydrodynamic variables at position x. | |
const EquationsOfState::IdealFluid< false > & | equation_of_state () const |
void | pup (PUP::er &) override |
virtual auto | get_clone () const -> std::unique_ptr< InitialData >=0 |
Static Public Attributes | |
static constexpr Options::String | help |
Friends | |
template<size_t SpatialDim> | |
bool | operator== (const KhInstability< SpatialDim > &lhs, const KhInstability< SpatialDim > &rhs) |
Initial data to simulate the Kelvin-Helmholtz instability.
For comparison purposes, this class implements the planar shear of [161], which is evolved using periodic boundary conditions. The initial state consists of a horizontal strip of mass density \(\rho_\text{in}\) moving with horizontal speed \(v_{\text{in}}\). The rest of the fluid possesses mass density \(\rho_\text{out}\), and its horizontal velocity is \(v_{\text{out}}\), both constant. Mathematically,
\begin{align*} \rho(x, y) = \begin{cases} \rho_\text{in}, & \left|y - y_\text{mid}\right| < b/2\\ \rho_\text{out}, & \text{otherwise}, \end{cases} \end{align*}
and
\begin{align*} v_x(x, y) = \begin{cases} v_{\text{in}}, & \left|y - y_\text{mid}\right| < b/2\\ v_{\text{out}}, & \text{otherwise}, \end{cases} \end{align*}
where \(b > 0\) is the thickness of the strip, and \(y = y_\text{mid}\) is its horizontal bimedian. The initial pressure is set equal to a constant, and the system is evolved assuming an ideal fluid of known adiabatic index. Finally, in order to excite the instability, the vertical velocity is initialized to
\begin{align*} v_y(x, y) = A\sin(4\pi x) \left[\exp\left(-\dfrac{(y - y_\text{top})^2}{2\sigma^2}\right) + \exp\left(-\dfrac{(y - y_\text{bot})^2}{2\sigma^2}\right)\right], \end{align*}
whose net effect is to perturb the horizontal boundaries of the strip periodically along the \(x-\)axis. Here \(A\) is the amplitude, \(\sigma\) is a characteristic length for the perturbation width, and \(y_\text{top} = y_\text{mid} + b/2\) and \(y_\text{bot} = y_\text{mid} - b/2\) are the vertical coordinates of the top and bottom boundaries of the strip, respectively.
|
overridevirtual |
Implements evolution::initial_data::InitialData.
|
staticconstexpr |