This thorn solves the Tolman-Oppenheimer-Volkov equations of hydrostatic equilibrium for a spherically symmetric static star.
The Tolman-Oppenheimer-Volkoff solution is a static perfect fluid “star”. It is frequently used as a test of relativistic hydro codes. Here it is intended for use without evolving the matter terms. This provides a compact strong field solution which is static but does not contain singularities.
The equations for a TOV star [1, 2, 3] are usually derived in Schwarzschild coordinates. In these coordinates,
the metric can be brought into the form
This thorn is based on the notes of Thomas Baumgarte [4] that have been partially included in this
documentation. However the notation for the fluid quantities follows [5]. Here we are assuming that the stress
energy tensor is given by
This enforces a polytropic equation of state. We note that in Cactus the units are
The equations to give the initial data are solved (as usual) in the Schwarzschild-like coordinates with the areal
radius labelled
Here
In order to impose initial data in cartesian coordinates, we want to transform this solution to isotropic
coordinates, in which the metric takes the form
As a result, we have an additional differential equation to solve in order to have
Then, given these one-dimensional data we interpolate to get data on the three-dimensional Cactus grid; that is,
we interpolate on the three dimensional r given by the x, y, z variables the physical hydro and spacetime
quantities that are function of the isotropic radius
In the exterior of the star,
In the interior, Eq, (4) can not be integrated analytically, because
To use this thorn to provide initial data for the ADMBase variables
There are two ways of coupling the matter sources to the thorn that evolves the Einstein equations. One is to use the CalcTmunu interface. This will give the components of the stress energy tensor pointwise across the grid. For an example of this, see thorn ADM in CactusEinstein.
To use the CalcTmunu interface you should
put the lines
friend: ADMCoupling USES INCLUDE: CalcTmunu.inc USES INCLUDE: CalcTmunu_temps.inc USES INCLUDE: CalcTmunu_rfr.inc
in your interface.ccl
In any routine requiring the matter terms, put
#include ‘‘CalcTmunu_temps.inc’’ in the variable declarations
declare CCTK_REALs Ttt, Ttx, Tty, Ttz, Txx, Txy, Txz, Tyy, Tyz, Tzz.
Inside an i,j,k loop put #include ‘‘CalcTmunu.inc’’. This must be a Fortran routine (We could probably fix this if requested).
You then use the real numbers Ttt etc. as the stress energy tensor at a point.
As an alternative you can use the grid functions StressEnergytt, StressEnergytx, etc. directly to have the stress energy tensor over the entire grid. To do this you just need the line friend: ADMCoupling in your interface.ccl. Although this seems much simpler, you will now only get the contributions from the TOVSolver thorn. If you want to use other matter sources, most of the current thorns (CosmologicalConstant, the hydro code, the scalar field code) all use the CalcTmunu interface.
You also have the possibility to use a parameter GRHydrotovsolver::TOV_Separation to obtain a spacetime
consisting of one TOV-system for
Be aware that the spacetime obtained by this is no physical spacetime and no solution of Einsteins Equations
and therefore an IVP-run has to follow. This parameter was only introduced for testing purposes of the
IVP-Solver and should only be considered as such. There would be better (and also easy) ways to obtain initial
data for two TOVs than that.
[1] R. C. Tolman, Phys. Rev. 55, 364 (1939).
[2] J. R. Oppenheimer and G. Volkoff, Physical Review 55, 374 (1939).
[3] C.W. Misner, K.S. Thorn and J.A. Wheeler, Gravitation (Freeman and co. NY, 1973).
[4] T. W. Baumgarte. There is a copy of his notes in this directory:
TOVSolver/doc.
[5] J. A. Font, M. Miller, W. Suen and M. Tobias, Phys. Rev. D61, 044011 (2000).
[6] J. A. Font, T. Goodale, S. Iyer, M. Miller, L. Rezzolla, E. Seidel, N. Stergioulas, W. Suen and M. Tobias, Phys. Rev. D65, 084024 (2002).
pert_amplitude | Scope: private | REAL |
Description: Amplitude of perturbation
| ||
Range | Default: 0.0 | |
*:* | Anything
| |
perturb | Scope: private | BOOLEAN |
Description: Add density perturbation (you should solve the IVP if true)
| ||
Default: no | ||
tov_clear_initial_data | Scope: private | BOOLEAN |
Description: Clear initial data (spacetime)? Default is yes.
| ||
Default: yes | ||
tov_combine_method | Scope: private | KEYWORD |
Description: Which combine method should be used.
| ||
Range | Default: average | |
maximum | Take the maximum of rho and gxx as clue for the rest as clue.
| |
average | Take the average of all available parts.
| |
tov_conformal_flat_three_metric | Scope: private | BOOLEAN |
Description: Use conformal factor to get the 3-metric flat. default is no
| ||
Default: no | ||
tov_dr | Scope: private | REAL |
Description: The spacing in the radial direction on the 1d grid
| ||
Range | Default: 5.e-4 | |
(0.0:* | Greater than 0
| |
tov_enforce_interpolation | Scope: private | BOOLEAN |
Description: Enforce the interpolation of the data onto the Hydro GFs even without tov as
specified initial data
| ||
Default: no | ||
tov_fake_evolution | Scope: private | INT |
Description: Fake evolution by setting ID at every step
| ||
Range | Default: (none) | |
*:* | anything, 0 as off (default), everything else as on
| |
tov_fast_interpolation | Scope: private | BOOLEAN |
Description: Use faster interpolation algorithm? Default is yes.
| ||
Default: yes | ||
tov_gamma | Scope: private | REAL |
Description: The polytropic constant in P = K rhoĜamma
| ||
Range | Default: 2.0 | |
1.0:
| The physical range at high Lorentz factors is [1,2], but otherwise higher
values of gamma can also be used
| |
tov_k | Scope: private | REAL |
Description: The polytropic constant in P = K rhoĜamma
| ||
Range | Default: 100.0 | |
(0.0:* | Greater than 0
| |
tov_momentum_psi_power | Scope: private | INT |
Description: Power of Psi to be multiplied with Jî for Mom
| ||
Range | Default: (none) | |
*:* | anything, 0 as default
| |
tov_num_radial | Scope: private | INT |
Description: The number of radial points for the ODE integration
| ||
Range | Default: 100000 | |
1:* | Greater than 0
| |
tov_num_tovs | Scope: private | INT |
Description: The number of TOVs
| ||
Range | Default: 1 | |
1:* | Greater than 0
| |
tov_populate_timelevels | Scope: private | INT |
Description: Populate that amount of timelevels
| ||
Range | Default: 1 | |
1:3 | 1 (default) to 3
| |
tov_position_x | Scope: private | REAL |
Description: Position of neutron star, x coordinate
| ||
Range | Default: 0.0 | |
*:* | real
| |
tov_position_y | Scope: private | REAL |
Description: Position of neutron star, y coordinate
| ||
Range | Default: 0.0 | |
*:* | real
| |
tov_position_z | Scope: private | REAL |
Description: Position of neutron star, z coordinate
| ||
Range | Default: 0.0 | |
*:* | real
| |
tov_properposition | Scope: private | BOOLEAN |
Description: For use only with two NSs, atm only handles equal mass
| ||
Default: no | ||
tov_rho_central | Scope: private | REAL |
Description: The central density
| ||
Range | Default: 1e-3 | |
(0.0:* | Must be positive
| |
tov_save_to_datafile | Scope: private | STRING |
Description: Only save data to file and exit
| ||
Range | Default: (none) | |
.* | Any filename, not used if empty
| |
tov_solve_for_tovs | Scope: private | INT |
Description: Solve for TOVs even if no TOV initial data was requested?
| ||
Range | Default: 3 | |
0:3 | ”depreciated in favour of TOVSolver::TOV_Enfor ce_Interpolation”
| |
tov_use_old_initial_data | Scope: private | BOOLEAN |
Description: Take old initial data into account (spacetime)? Default is no.
| ||
Default: no | ||
tov_use_old_matter_initial_data | Scope: private | BOOLEAN |
Description: Use also old matter initial data? Default is no.
| ||
Default: no | ||
tov_velocity_x | Scope: private | REAL |
Description: (fixed) Velocity of neutron star, x coordinate (caution!)
| ||
Range | Default: 0.0 | |
*:* | real
| |
tov_velocity_y | Scope: private | REAL |
Description: (fixed) Velocity of neutron star, y coordinate (caution!)
| ||
Range | Default: 0.0 | |
*:* | real
| |
tov_velocity_z | Scope: private | REAL |
Description: (fixed) Velocity of neutron star, z coordinate (caution!)
| ||
Range | Default: 0.0 | |
*:* | real
| |
conformal_storage | Scope: shared from STATICCONFORMAL | KEYWORD |
Implements:
tovsolver
Inherits:
admbase
hydrobase
constants
staticconformal
Uses header:
constants.h
Provides:
Set_Rho_ADM to
Set_Momentum_Source to
Set_Initial_Guess_for_u to
Rescale_Sources to
This section lists all the variables which are assigned storage by thorn EinsteinInitialData/TOVSolver. Storage can either last for the duration of the run (Always means that if this thorn is activated storage will be assigned, Conditional means that if this thorn is activated storage will be assigned for the duration of the run if some condition is met), or can be turned on for the duration of a schedule function.
NONE
CCTK_PARAMCHECK
tov_c_paramcheck
check parameters
Language: | c | |
Options: | global | |
Type: | function | |
CCTK_WRAGH
tov_c_allocatememory
allocate memory for tovsolver_c
Language: | c | |
Options: | global | |
Type: | function | |
CCTK_POSTPOSTINITIAL (conditional)
tov_c_freememory
free memory from tovsolver_c
Language: | c | |
Options: | global | |
Type: | function | |
HydroBase_Initial (conditional)
tov_initial_data
group for the tov initial data
Sync: | admbase::metric | |
admbase::curv | ||
admbase::lapse | ||
admbase::shift | ||
rho | ||
press | ||
eps | ||
vel | ||
w_lorentz | ||
Type: | group | |
TOV_Initial_Data (conditional)
tov_c_integrate_rhs
integrate the 1d equations for the tov star
Language: | c | |
Options: | global | |
Type: | function | |
Writes: | staticconformal::conformal_state(everywhere) | |
TOV_Initial_Data (conditional)
tov_write_1d_datafile
save data to file and exit
After: | tov_c_integrate_rhs | |
Before: | tov_c_exact | |
Language: | c | |
Options: | global | |
Type: | function | |
TOV_Initial_Data (conditional)
tov_set_properpositions
steer ns position parameters according to proper distance
After: | tov_c_integrate_rhs | |
Before: | tov_c_exact | |
Language: | c | |
Options: | global | |
Type: | function | |
TOV_Initial_Data (conditional)
tov_c_exact
set up the 3d quantities for the tov star
After: | tov_c_integrate_rhs | |
Language: | c | |
Reads: | staticconformal::conformal_state | |
admbase::shift_state | ||
grid::coordinates | ||
Type: | function | |
Writes: | admbase::alp(everywhere) | |
admbase::curv(everywhere) | ||
admbase::metric_p_p(everywhere) | ||
admbase::metric_p(everywhere) | ||
admbase::metric(everywhere) | ||
admbase::shift(everywhere) | ||
hydrobase::eps_p_p(everywhere) | ||
hydrobase::rho_p_p(everywhere) | ||
hydrobase::vel_p_p(everywhere) | ||
hydrobase::w_lorentz_p_p(everywhere) | ||
hydrobase::eps_p(everywhere) | ||
hydrobase::rho_p(everywhere) | ||
hydrobase::vel_p(everywhere) | ||
hydrobase::w_lorentz_p(everywhere) | ||
hydrobase::eps(everywhere) | ||
hydrobase::rho(everywhere) | ||
hydrobase::vel(everywhere) | ||
hydrobase::w_lorentz(everywhere) | ||
hydrobase::press(everywhere) | ||
staticconformal::psi(everywhere) | ||
staticconformal::confac_1derivs(everywhere) | ||
staticconformal::confac_2derivs(everywhere) | ||
(conditional)
tov_prepare_fake_evolution
prepare for fake evolution
After: | tov_c_exact | |
Language: | c | |
Type: | function | |
MoL_PostStep (conditional)
tov_c_exact
use fake evolution
After: | hydrobase_poststep | |
Language: | c | |
Reads: | staticconformal::conformal_state | |
admbase::shift_state | ||
Type: | function | |
Writes: | admbase::alp(everywhere) | |
admbase::curv(everywhere) | ||
admbase::metric(everywhere) | ||
admbase::shift(everywhere) | ||
hydrobase::eps(everywhere) | ||
hydrobase::press(everywhere) | ||
hydrobase::rho(everywhere) | ||
hydrobase::w_lorentz(everywhere) | ||
hydrobase::vel(everywhere) | ||
staticconformal::psi(everywhere) | ||
staticconformal::confac_1derivs(everywhere) | ||
staticconformal::confac_2derivs(everywhere) | ||