SpECTRE  v2024.03.19
Xcts::Solutions::ConstantDensityStar Class Reference

A constant density star in general relativity. More...

#include <ConstantDensityStar.hpp>

Classes

struct  Density
 
struct  Radius
 

Public Types

using options = tmpl::list< Density, Radius >
 

Public Member Functions

 ConstantDensityStar (const ConstantDensityStar &)=default
 
ConstantDensityStaroperator= (const ConstantDensityStar &)=default
 
 ConstantDensityStar (ConstantDensityStar &&)=default
 
ConstantDensityStaroperator= (ConstantDensityStar &&)=default
 
std::unique_ptr< elliptic::analytic_data::AnalyticSolutionget_clone () const override
 
 ConstantDensityStar (double density, double radius, const Options::Context &context={})
 
double density () const
 
double radius () const
 
template<typename DataType , typename... Tags>
tuples::TaggedTuple< Tags... > variables (const tnsr::I< DataType, 3, Frame::Inertial > &x, tmpl::list< Tags... >) const
 Retrieve a collection of variables at coordinates x
 
void pup (PUP::er &p) override
 
template<typename DataType >
auto variables (const tnsr::I< DataType, 3, Frame::Inertial > &x, tmpl::list< Xcts::Tags::ConformalFactor< DataType > >) const -> tuples::TaggedTuple< Xcts::Tags::ConformalFactor< DataType > >
 Retrieve variable at coordinates x
 
template<typename DataType >
auto variables (const tnsr::I< DataType, 3, Frame::Inertial > &x, tmpl::list<::Tags::Initial< Xcts::Tags::ConformalFactor< DataType > > >) const -> tuples::TaggedTuple< ::Tags::Initial< Xcts::Tags::ConformalFactor< DataType > > >
 Retrieve variable at coordinates x
 
template<typename DataType >
auto variables (const tnsr::I< DataType, 3, Frame::Inertial > &x, tmpl::list<::Tags::Initial< ::Tags::deriv< Xcts::Tags::ConformalFactor< DataType >, tmpl::size_t< 3 >, Frame::Inertial > > >) const -> tuples::TaggedTuple< ::Tags::Initial<::Tags::deriv< Xcts::Tags::ConformalFactor< DataType >, tmpl::size_t< 3 >, Frame::Inertial > > >
 Retrieve variable at coordinates x
 
template<typename DataType >
auto variables (const tnsr::I< DataType, 3, Frame::Inertial > &x, tmpl::list<::Tags::FixedSource< Xcts::Tags::ConformalFactor< DataType > > >) const -> tuples::TaggedTuple< ::Tags::FixedSource< Xcts::Tags::ConformalFactor< DataType > > >
 Retrieve variable at coordinates x
 
template<typename DataType >
auto variables (const tnsr::I< DataType, 3, Frame::Inertial > &x, tmpl::list< gr::Tags::EnergyDensity< DataType > >) const -> tuples::TaggedTuple< gr::Tags::EnergyDensity< DataType > >
 Retrieve variable at coordinates x
 
virtual std::unique_ptr< AnalyticSolutionget_clone () const =0
 

Static Public Attributes

static constexpr Options::String help
 

Detailed Description

A constant density star in general relativity.

Details

This solution describes a star with constant density \(\rho_0\) that extends to a (conformal) radius \(R\). It solves the XCTS Hamiltonian constraint that reduces to the non-linear elliptic equation

\[ \Delta^2\psi+2\pi\rho\psi^5=0 \]

for the conformal factor \(\psi\) (see Xcts) under the following assumptions [15] :

  • Time-symmetry \(K_{ij}=0\)
  • Conformal flatness \(\overline{\gamma}=\delta\), so \(\Delta\) is the flat-space Laplacian
  • Spherical symmetry

Imposing boundary conditions

\[ \frac{\partial\psi}{\partial r}=0 \quad \text{for} \quad r=0\\ \psi\rightarrow 1 \quad \text{for} \quad r\rightarrow\infty \]

and considering the energy density

\[ \rho(r\leq R)=\rho_0 \quad \text{and} \quad \rho(r>R)=0 \]

of the star the authors of [15] find the solution

\[ \psi(r\leq R)=C u_\alpha(r) \quad \text{and} \quad \psi(r>R)=\frac{\beta}{r} + 1 \]

with \(C=(2\pi\rho_0/3)^{-1/4}\), the Sobolev functions

\[ u_\alpha(r)=\sqrt{\frac{\alpha R}{r^2+(\alpha R)^2}} \]

and real parameters \(\alpha\) and \(\beta\) that are determined by the following relations:

\[ \rho_0 R^2=\frac{3}{2\pi}f^2(\alpha) \quad \text{with} \quad f(\alpha)=\frac{\alpha^5}{(1+\alpha^2)^3} \\ \frac{\beta}{R} + 1 = C u_\alpha(R) \]

This solution is described in detail in [15] , and also in Exercise 3.8 in [13] , since it exhibits the non-uniqueness properties that are typical for the XCTS system. In the simple case of the constant-density star the non-uniqueness is apparent from the function \(f(\alpha)\), which has two solutions for any \(\rho_0\) smaller than a critical density

\[ \rho_\mathrm{crit}=\frac{3}{2\pi R^2}\frac{5^2}{6^6} \approx\frac{0.0320}{R^2} \text{,} \]

a unique solution for \(\rho_0=\rho_\mathrm{crit}\) and no solutions above the critical density [15] . The authors identify the \(\alpha < \alpha_\mathrm{crit}=\sqrt{5}\) and \(\alpha > \alpha_\mathrm{crit}\) branches of solutions with the strong-field and weak-field regimes, respectively (see [15] for details). In this implementation we compute the weak-field solution by choosing the \(\alpha > \alpha_\mathrm{crit}\) that corresponds to the density \(\rho_0\) of the star. Therefore, we supply initial data \(\psi_\mathrm{init}=1\) so that a nonlinear iterative numerical solver will converge to the same weak-field solution.

Member Function Documentation

◆ get_clone()

std::unique_ptr< elliptic::analytic_data::AnalyticSolution > Xcts::Solutions::ConstantDensityStar::get_clone ( ) const
inlineoverridevirtual

Member Data Documentation

◆ help

constexpr Options::String Xcts::Solutions::ConstantDensityStar::help
staticconstexpr
Initial value:
{
"A constant density star in general relativity"}

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