SpECTRE  v2026.09.05
Loading...
Searching...
No Matches
ScalarAdvection::Solutions::Kuzmin Class Reference

Initial data for the 2D scalar advection problem adopted from [131] and its analytic solution. More...

#include <Kuzmin.hpp>

Public Types

using options = tmpl::list<>

Public Member Functions

 Kuzmin (const Kuzmin &)=default
Kuzmin & operator= (const Kuzmin &)=default
 Kuzmin (Kuzmin &&)=default
Kuzmin & operator= (Kuzmin &&)=default
auto get_clone () const -> std::unique_ptr< evolution::initial_data::InitialData > override
template<typename DataType>
tuples::TaggedTuple< ScalarAdvection::Tags::U > variables (const tnsr::I< DataType, 2 > &x, double t, tmpl::list< ScalarAdvection::Tags::U >) const
void pup (PUP::er &p) override
Public Member Functions inherited from evolution::initial_data::InitialData
virtual const InitialData & unwrap () const
 Unwrap wrapper types (e.g. WithNoise, which wraps analytic initial data and adds random noise) to reach the underlying analytic solution or data.

Static Public Attributes

static constexpr Options::String help

Detailed Description

Initial data for the 2D scalar advection problem adopted from [131] and its analytic solution.

Let \(r(x,y) = \sqrt{(x-x_0)^2 + (y-y_0)^2}/r_0\) be the normalized distance from a point \((x_0,y_0)\) within a circle with the radius \(r_0=0.15\). The initial profile consists of three bodies:

  • a slotted cylinder centered at \((0.5, 0.75)\)

    \begin{align*}u(x,y) = \left\{\begin{array}{ll} 1 & \text{if } |x-x_0| \geq 0.025 \text{ or } y \geq 0.85 \\ 0 & \text{otherwise} \\ \end{array}\right\}, \end{align*}

  • a cone centered at \((0.5, 0.25)\)

    \begin{align*}u(x,y) = 1 - r(x,y) , \end{align*}

  • and a hump centered at \((0.25, 0.5)\)

    \begin{align*}u(x,y) = \frac{1 + \cos(\pi r(x,y))}{4} . \end{align*}

The system is evolved over the domain \([0,1]\times[0,1]\) with the advection velocity field \(v(x,y) = (0.5-y,-0.5+x)\), which causes a solid rotation about \((x,y)=(0.5,0.5)\) with angular velocity being 1.0. We use the periodic boundary condition for evolving this problem.

Member Function Documentation

◆ get_clone()

auto ScalarAdvection::Solutions::Kuzmin::get_clone ( ) const -> std::unique_ptr< evolution::initial_data::InitialData >
overridevirtual

Member Data Documentation

◆ help

Options::String ScalarAdvection::Solutions::Kuzmin::help
staticconstexpr
Initial value:
{
"A rotating 2D scalar advecting problem adopted from Kuzmin2014 paper"}

The documentation for this class was generated from the following file:
  • src/PointwiseFunctions/AnalyticSolutions/ScalarAdvection/Kuzmin.hpp