SpECTRE
v2024.03.19
|
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 | |
ConstantDensityStar & | operator= (const ConstantDensityStar &)=default |
ConstantDensityStar (ConstantDensityStar &&)=default | |
ConstantDensityStar & | operator= (ConstantDensityStar &&)=default |
std::unique_ptr< elliptic::analytic_data::AnalyticSolution > | get_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< AnalyticSolution > | get_clone () const =0 |
Static Public Attributes | |
static constexpr Options::String | help |
A constant density star in general relativity.
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] :
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.
|
inlineoverridevirtual |
Implements elliptic::analytic_data::AnalyticSolution.
|
staticconstexpr |