SpECTRE  v2024.04.12
gh::ConstraintDamping::TimeDependentTripleGaussian Class Reference

A sum of three Gaussians plus a constant, where the Gaussian widths are scaled by a domain::FunctionsOfTime::FunctionOfTime. More...

#include <TimeDependentTripleGaussian.hpp>

Classes

struct  Amplitude
 
struct  Center
 
struct  Constant
 
struct  Gaussian
 
struct  Width
 

Public Types

using options = tmpl::list< Constant, Amplitude< Gaussian< 1 > >, Width< Gaussian< 1 > >, Center< Gaussian< 1 > >, Amplitude< Gaussian< 2 > >, Width< Gaussian< 2 > >, Center< Gaussian< 2 > >, Amplitude< Gaussian< 3 > >, Width< Gaussian< 3 > >, Center< Gaussian< 3 > > >
 
- Public Types inherited from gh::ConstraintDamping::DampingFunction< 3, Frame::Grid >
using creatable_classes = tmpl::conditional_t<(VolumeDim==3 and std::is_same< Frame::Grid, Frame::Grid >::value), tmpl::list< gh::ConstraintDamping::Constant< VolumeDim, Frame::Grid >, gh::ConstraintDamping::GaussianPlusConstant< VolumeDim, Frame::Grid >, gh::ConstraintDamping::TimeDependentTripleGaussian >, tmpl::list< gh::ConstraintDamping::GaussianPlusConstant< VolumeDim, Frame::Grid >, gh::ConstraintDamping::Constant< VolumeDim, Frame::Grid > > >
 
using frame = Frame::Grid
 

Public Member Functions

 TimeDependentTripleGaussian (CkMigrateMessage *msg)
 
 TimeDependentTripleGaussian (double constant, double amplitude_1, double width_1, const std::array< double, 3 > &center_1, double amplitude_2, double width_2, const std::array< double, 3 > &center_2, double amplitude_3, double width_3, const std::array< double, 3 > &center_3)
 
 TimeDependentTripleGaussian (const TimeDependentTripleGaussian &)=default
 
TimeDependentTripleGaussianoperator= (const TimeDependentTripleGaussian &)=default
 
 TimeDependentTripleGaussian (TimeDependentTripleGaussian &&)=default
 
TimeDependentTripleGaussianoperator= (TimeDependentTripleGaussian &&)=default
 
void operator() (const gsl::not_null< Scalar< double > * > value_at_x, const tnsr::I< double, 3, Frame::Grid > &x, double time, const std::unordered_map< std::string, std::unique_ptr< domain::FunctionsOfTime::FunctionOfTime > > &functions_of_time) const override
 
void operator() (const gsl::not_null< Scalar< DataVector > * > value_at_x, const tnsr::I< DataVector, 3, Frame::Grid > &x, double time, const std::unordered_map< std::string, std::unique_ptr< domain::FunctionsOfTime::FunctionOfTime > > &functions_of_time) const override
 
auto get_clone () const -> std::unique_ptr< DampingFunction< 3, Frame::Grid > > override
 
void pup (PUP::er &p) override
 
- Public Member Functions inherited from gh::ConstraintDamping::DampingFunction< 3, Frame::Grid >
 WRAPPED_PUPable_abstract (DampingFunction)
 
 DampingFunction (const DampingFunction &)=default
 
 DampingFunction (DampingFunction &&)=default
 
 DampingFunction (CkMigrateMessage *msg)
 
DampingFunctionoperator= (const DampingFunction &)=default
 
DampingFunctionoperator= (DampingFunction &&)=default
 
virtual auto get_clone () const -> std::unique_ptr< DampingFunction< VolumeDim, Frame::Grid > >=0
 
virtual void operator() (const gsl::not_null< Scalar< double > * > value_at_x, const tnsr::I< double, VolumeDim, Frame::Grid > &x, double time, const std::unordered_map< std::string, std::unique_ptr< domain::FunctionsOfTime::FunctionOfTime > > &functions_of_time) const=0
 Returns the value of the function at the coordinate 'x'.
 
virtual void operator() (const gsl::not_null< Scalar< DataVector > * > value_at_x, const tnsr::I< DataVector, VolumeDim, Frame::Grid > &x, double time, const std::unordered_map< std::string, std::unique_ptr< domain::FunctionsOfTime::FunctionOfTime > > &functions_of_time) const=0
 Returns the value of the function at the coordinate 'x'.
 

Static Public Attributes

static constexpr Options::String help
 
- Static Public Attributes inherited from gh::ConstraintDamping::DampingFunction< 3, Frame::Grid >
static constexpr size_t volume_dim
 

Friends

bool operator== (const TimeDependentTripleGaussian &lhs, const TimeDependentTripleGaussian &rhs)
 

Detailed Description

A sum of three Gaussians plus a constant, where the Gaussian widths are scaled by a domain::FunctionsOfTime::FunctionOfTime.

Details

The function \(f\) is given by

\begin{align} f = C + \sum_{\alpha=1}^3 A_\alpha \exp\left(-\frac{(x-(x_0)_\alpha)^2}{w_\alpha^2(t)}\right). \end{align}

Input file options are: Constant \(C\), Amplitude[1-3] \(A_\alpha\), Width[1-3] \(w_\alpha\), and Center[1-3] \((x_0)_\alpha\). The function takes input coordinates \(x\) of type tnsr::I<T, 3, Frame::Grid>, where T is e.g. double or DataVector; note that this DampingFunction is only defined for three spatial dimensions and for the grid frame. The Gaussian widths \(w_\alpha\) are scaled by the inverse of the value of a scalar domain::FunctionsOfTime::FunctionOfTime \(f(t)\): \(w_\alpha(t) = w_\alpha / f(t)\).

The name of the domain::FunctionsOfTime::FunctionOfTime is hardcoded to be Expansion as this class will typically be used with a domain that has an expansion map and potentially an expansion control system, the names of which will be Expansion.

Member Function Documentation

◆ get_clone()

auto gh::ConstraintDamping::TimeDependentTripleGaussian::get_clone ( ) const -> std::unique_ptr< DampingFunction< 3, Frame::Grid > >
overridevirtual

Member Data Documentation

◆ help

constexpr Options::String gh::ConstraintDamping::TimeDependentTripleGaussian::help
staticconstexpr
Initial value:
= {
"Computes a sum of a constant and 3 Gaussians (each with its own "
"amplitude, width, and coordinate center), with the Gaussian widths "
"scaled by the inverse of a FunctionOfTime."}

The documentation for this class was generated from the following file: