ABSTRACT TYPE for \(\mathrm{BNS}\) \(\mathrm{ID}\) (produced with \(\texttt{LORENE}\), or with \(\texttt{FUKA}\), etc.; or produced with the same tool, but read in different ways, for example by linking to the \(\texttt{LORENE}\) library, or reading the \(\mathrm{ID}\) from a lattice, etc.)
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
double precision, | public | :: | adm_mass |
ADM mass of the system |
|||
double precision, | public | :: | angular_momentum_x | = | 0.0D0 |
component of the angular momentum of the BNS system |
|
double precision, | public | :: | angular_momentum_y | = | 0.0D0 |
component of the angular momentum of the BNS system |
|
double precision, | public | :: | angular_momentum_z | = | 0.0D0 |
component of the angular momentum of the BNS system |
|
double precision, | public | :: | angular_vel |
Angular velocity |
|||
double precision, | public | :: | area_radius1 |
Areal (or circumferential) radius of star 1 Note that these is the areal radius of the star in the binary system, which is different than that of an isolated star. The latter is used in the mass-radius diagrams, together with the gravitatonal mass |
|||
double precision, | public | :: | area_radius2 |
Areal (or circumferential) radius of star 2 Note that these is the areal radius of the star in the binary system, which is different than that of an isolated star. The latter is used in the mass-radius diagrams, together with the gravitatonal mass |
|||
double precision, | public, | DIMENSION(2,3) | :: | barycenter |
Array containing the barycenters of the stars Todoadd details |
||
double precision, | public | :: | barycenter1_x |
Barycenter of star 1 |
|||
double precision, | public | :: | barycenter2_x |
Barycenter of star 2 |
|||
double precision, | public, | DIMENSION(3) | :: | barycenter_system |
Array containing the barycenters of the stars Todoadd details |
||
double precision, | public, | DIMENSION(2,3) | :: | center |
Array containing the centers of the stars Todoadd details |
||
double precision, | public | :: | center1_x |
Stellar center of star 1 (origin of the LORENE chart centered on star 1) |
|||
double precision, | public | :: | center2_x |
Stellar center of star 2 (origin of the LORENE chart centered on star 2) |
|||
type(timer), | public | :: | construction_timer |
Timer that times the construction of the appropriate object |
|||
double precision, | public | :: | distance |
Distance between the points of maximum baryon density |
|||
double precision, | public | :: | distance_com |
Distance between the centers of mass |
|||
double precision, | public | :: | energy_density_center1 |
Central energy density for star 1 |
|||
double precision, | public | :: | energy_density_center2 |
Central energy density for star 2 |
|||
double precision, | public | :: | ent_center1 |
Central enthalpy for star 1 |
|||
double precision, | public | :: | ent_center2 |
Central enthalpy for star 2 |
|||
character(len=:), | public, | ALLOCATABLE | :: | eos1 |
Name of the equation of state (\(\mathrm{EOS}\)) of star 1 |
||
integer, | public | :: | eos1_id |
\(\texttt{SPHINCS_ID}\) identifier for the \(\mathrm{EOS}\) of star 1 |
|||
character(len=:), | public, | ALLOCATABLE | :: | eos2 |
Name of the equation of state (\(\mathrm{EOS}\)) of star 2 |
||
integer, | public | :: | eos2_id |
\(\texttt{SPHINCS_ID}\) identifier for the \(\mathrm{EOS}\) of star 2 |
|||
character(len=max_length), | public, | DIMENSION(2) | :: | eos_filenames |
Array of strings containing the names of the files containing the \(\mathrm{EOS}\) to be used for each matter object. |
||
character(len=:), | public, | ALLOCATABLE | :: | eos_table1 |
String containing the path to the files containing the table of the \(\mathrm{EOS}\) for star 1. |
||
character(len=:), | public, | ALLOCATABLE | :: | eos_table2 |
String containing the path to the files containing the table of the \(\mathrm{EOS}\) for star 2. |
||
procedure, | public, | POINTER, NOPASS | :: | finalize_sph_id_ptr |
Pointer to a procedure that finalize the \(\mathrm{SPH}\) \(\mathrm{ID}\); for example, correct for the residual ADM linear momentum. |
||
double precision, | public, | DIMENSION(:), ALLOCATABLE | :: | g_xx |
1-D array storing the xx component of the spatial metric [pure number] |
||
double precision, | public, | DIMENSION(:), ALLOCATABLE | :: | g_xy |
1-D array storing the xy component of the spatial metric [pure number] |
||
double precision, | public, | DIMENSION(:), ALLOCATABLE | :: | g_xz |
1-D array storing the xz component of the spatial metric [pure number] |
||
double precision, | public, | DIMENSION(:), ALLOCATABLE | :: | g_yy |
1-D array storing the yy component of the spatial metric [pure number] |
||
double precision, | public, | DIMENSION(:), ALLOCATABLE | :: | g_yz |
1-D array storing the yz component of the spatial metric [pure number] |
||
double precision, | public, | DIMENSION(:), ALLOCATABLE | :: | g_zz |
1-D array storing the zz component of the spatial metric [pure number] |
||
double precision, | public | :: | gamma0_1 |
Piecewise polytrope: polytropic index for star 1 |
|||
double precision, | public | :: | gamma0_2 |
Piecewise polytrope: polytropic index for star 2 |
|||
double precision, | public | :: | gamma1_1 |
Piecewise polytrope: polytropic index for star 1 |
|||
double precision, | public | :: | gamma1_2 |
Piecewise polytrope: polytropic index for star 2 |
|||
double precision, | public | :: | gamma2_1 |
Piecewise polytrope: polytropic index for star 1 |
|||
double precision, | public | :: | gamma2_2 |
Piecewise polytrope: polytropic index for star 2 |
|||
double precision, | public | :: | gamma3_1 |
Piecewise polytrope: polytropic index for star 1 |
|||
double precision, | public | :: | gamma3_2 |
Piecewise polytrope: polytropic index for star 2 |
|||
double precision, | public | :: | gamma_1 |
Single polytrope: polytropic index for star 1 |
|||
double precision, | public | :: | gamma_2 |
Single polytrope: polytropic index for star 2 |
|||
double precision, | public, | DIMENSION(:), ALLOCATABLE | :: | k_xx |
1-D array storing the xx component of the extrinsic curvature [c/MSun_geo] |
||
double precision, | public, | DIMENSION(:), ALLOCATABLE | :: | k_xy |
1-D array storing the xy component of the extrinsic curvature [c/MSun_geo] |
||
double precision, | public, | DIMENSION(:), ALLOCATABLE | :: | k_xz |
1-D array storing the xz component of the extrinsic curvature [c/MSun_geo] |
||
double precision, | public, | DIMENSION(:), ALLOCATABLE | :: | k_yy |
1-D array storing the yy component of the extrinsic curvature [c/MSun_geo] |
||
double precision, | public, | DIMENSION(:), ALLOCATABLE | :: | k_yz |
1-D array storing the yz component of the extrinsic curvature [c/MSun_geo] |
||
double precision, | public, | DIMENSION(:), ALLOCATABLE | :: | k_zz |
1-D array storing the zz component of the extrinsic curvature [c/MSun_geo] |
||
double precision, | public | :: | kappa0_1 |
Piecewise polytrope: polytropic constant for star 1 [pure number] |
|||
double precision, | public | :: | kappa0_2 |
Piecewise polytrope: polytropic constant for star 2 [pure number] |
|||
double precision, | public | :: | kappa1_1 |
Piecewise polytrope: polytropic constant for star 1 [pure number] |
|||
double precision, | public | :: | kappa1_2 |
Piecewise polytrope: polytropic constant for star 2 [pure number] |
|||
double precision, | public | :: | kappa2_1 |
Piecewise polytrope: polytropic constant for star 1 [pure number] |
|||
double precision, | public | :: | kappa2_2 |
Piecewise polytrope: polytropic constant for star 2 [pure number] |
|||
double precision, | public | :: | kappa3_1 |
Piecewise polytrope: polytropic constant for star 1 [pure number] |
|||
double precision, | public | :: | kappa3_2 |
Piecewise polytrope: polytropic constant for star 2 [pure number] |
|||
double precision, | public | :: | kappa_1 |
Single polytrope: polytropic constant for star 1 [pure number] |
|||
double precision, | public | :: | kappa_2 |
Single polytrope: polytropic constant for star 2 [pure number] |
|||
double precision, | public, | DIMENSION(:), ALLOCATABLE | :: | lapse |
1-D array storing the lapse function |
||
double precision, | public | :: | linear_momentum_x | = | 0.0D0 |
component of the ADM linear momentum of the system |
|
double precision, | public | :: | linear_momentum_y | = | 0.0D0 |
component of the ADM linear momentum of the system |
|
double precision, | public | :: | linear_momentum_z | = | 0.0D0 |
component of the ADM linear momentum of the system |
|
double precision, | public | :: | logP1_1 |
Piecewise polytrope: Base 10 exponent of the pressure at the first fiducial density (between and ) for star 1 |
|||
double precision, | public | :: | logP1_2 |
Piecewise polytrope: Base 10 exponent of the pressure at the first fiducial density (between and ) for star 2 |
|||
double precision, | public | :: | logRho0_1 |
Piecewise polytrope: Base 10 exponent of the first fiducial density (between and ) for star 1 |
|||
double precision, | public | :: | logRho0_2 |
Piecewise polytrope: Base 10 exponent of the second fiducial density (between and ) for star 2 |
|||
double precision, | public | :: | logRho1_1 |
Piecewise polytrope: Base 10 exponent of the second fiducial density (between and ) for star 1 |
|||
double precision, | public | :: | logRho1_2 |
Piecewise polytrope: Base 10 exponent of the second fiducial density (between and ) for star 2 |
|||
double precision, | public | :: | logRho2_1 |
Piecewise polytrope: Base 10 exponent of the third fiducial density (between and ) for star 1 |
|||
double precision, | public | :: | logRho2_2 |
Piecewise polytrope: Base 10 exponent of the third fiducial density (between and ) for star 2 |
|||
double precision, | public | :: | mOmega |
mOmega= ( angular_vel ) ( mass_grav1 + mass_grav2 ) [pure number] Constant used in K. Hotokezaka et al, Phys. Rev. D 87, 024001 (see Sec. IIB) to determine when the BNS is at approximately 3-4 quasicircular orbits from merger. For the EOS APR4 and ALF2, this requirement is approximately satisfied for mOmega ; for the EOS H4 and MS1, for mOmega . |
|||
double precision, | public, | DIMENSION(2) | :: | mass |
Array containing the baryonic masses |
||
double precision, | public | :: | mass1 |
Baryonic mass of star 1 |
|||
double precision, | public | :: | mass2 |
Baryonic mass of star 2 |
|||
double precision, | public, | DIMENSION(2) | :: | mass_grav |
Array containing the gravitational masses |
||
double precision, | public | :: | mass_grav1 |
Gravitational mass of star 1 |
|||
double precision, | public | :: | mass_grav2 |
Gravitational mass of star 2 |
|||
double precision, | public | :: | nbar_center1 |
Central baryon number density for star 1 |
|||
double precision, | public | :: | nbar_center2 |
Central baryon number density for star 2 |
|||
integer, | public | :: | npeos_1 |
Piecewise polytrope: Number of polytropic pieces for star 1 |
|||
integer, | public | :: | npeos_2 |
Piecewise polytrope: Number of polytropic pieces for star 2 |
|||
double precision, | public | :: | pressure_center1 |
Central pressure for star 1 |
|||
double precision, | public | :: | pressure_center2 |
Central pressure for star 2 |
|||
double precision, | public, | DIMENSION(2,6) | :: | radii |
Array containing the signed radii of the stars Todoadd details |
||
double precision, | public | :: | radius1_x_comp |
Radius of star 1, in the x direction, towards the companion |
|||
double precision, | public | :: | radius1_x_opp |
Radius of star 1, in the x direction, opposite to companion |
|||
double precision, | public | :: | radius1_y |
Radius of star 1, in the y direction |
|||
double precision, | public | :: | radius1_z |
Radius of star 1, in the z direction |
|||
double precision, | public | :: | radius2_x_comp |
Radius of star 2, in the x direction, towards the companion |
|||
double precision, | public | :: | radius2_x_opp |
Radius of star 2, in the x direction, opposite to companion |
|||
double precision, | public | :: | radius2_y |
Radius of star 2, in the y direction |
|||
double precision, | public | :: | radius2_z |
Radius of star 2, in the z direction |
|||
double precision, | public | :: | rho_center1 |
Central baryon mass density for star 1 |
|||
double precision, | public | :: | rho_center2 |
Central baryon mass density for star 2 |
|||
double precision, | public, | DIMENSION(:), ALLOCATABLE | :: | shift_x |
1-D array storing the x component of the shift vector [c] |
||
double precision, | public, | DIMENSION(:), ALLOCATABLE | :: | shift_y |
1-D array storing the y component of the shift vector [c] |
||
double precision, | public, | DIMENSION(:), ALLOCATABLE | :: | shift_z |
1-D array storing the z component of the shift vector [c] |
||
double precision, | public | :: | specific_energy_center1 |
Central specific energy for star 1 |
|||
double precision, | public | :: | specific_energy_center2 |
Central specific energy for star 2 |
|||
type(surface), | public, | DIMENSION(:), ALLOCATABLE | :: | surfaces |
Array containing, for each matter object, a set of coordinates of some points modelling the surfaces. TodoTODO: make PRIVATE |
||
double precision, | public | :: | t_merger |
Estimated time of the merger P. C. Peters, "Gravitational Radiation and the Motion of Two Point Masses", Phys. Rev. 136, B1224 (1964) |
|||
type(tabu_eos), | public, | DIMENSION(:), ALLOCATABLE | :: | tab_eos |
Array containing a tabulated \(\mathrm{EOS}\) for each matter object, when used. TodoTODO: make PRIVATE |
Checks that the given index is between 1 and n_matter, included. If not, it stops the execution of the program.
Checks that the given index i_matter
is between 1 and
n_matter, included. If not, it stops the execution of the
program.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(idbase), | intent(in) | :: | this | |||
integer, | intent(in) | :: | i_matter |
Value to be checked |
Constructs a TYPE that extends idbase
Construct the DERIVED TYPE that extends idbase
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(idbase), | intent(out) | :: | derived_type |
Object of DERIVED TYPE that extends [[idbase], to be constructed |
||
character(len=*), | intent(in), | optional | :: | filename |
Name of the file containing the \(\mathrm{ID}\) |
|
character(len=*), | intent(in), | optional, | DIMENSION(:) | :: | eos_filenames |
Array of strings containing the names of the files containing the \(\mathrm{EOS}\)
to be used for each matter object. If not PRESENT, information from
the file |
Estimate typical length scales, one per each matter object, by computing , where is a field given as input, and represent a derivative of it. Presently, the derivatives are computed separately along each spatial dimension, as 1D derivatives.
Estimate typical length scales, one per each matter object, by computing , where is a field given as input, and represent a derivative of it. Presently, the derivatives are computed separately along each spatial dimension, as 1D derivatives.
Type | Intent | Optional | Attributes | Name | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
class(idbase), | intent(inout) | :: | this | |||||||||||||||||||||||||||||||
function get_field(x, y, z) result(val)Returns the value of a field at the desired point Arguments
Return Value double precisionValue of the field at |
||||||||||||||||||||||||||||||||||
integer, | intent(in) | :: | n_mat |
Array of the minimum over the lattices that surround each matter object
Finds the center of a matter object, as the point where the density is maximal.
Finds the center of a star, as the point where the density is maximal.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bnsbase), | intent(in) | :: | this |
bnsbase object owning this PROCEDURE |
||
double precision, | intent(in) | :: | separation |
Separation between the stars |
||
double precision, | intent(in) | :: | x_sign |
Sign of the x coordinates of the point inside the star |
||
procedure(get_density_at_pos), | optional | :: | get_density |
Center of a star, as the point where the density is maximal.
Finds the surfaces of the stars, and prints them to a formatted file.
Finds the radius of a star, relative to a center and along a direction. The radius is determined as the first point where the density is zero.
Finds the radius of a matter object, relative to a center and along a direction. The radius is determined as the first point where the density is zero.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bnsbase), | intent(in) | :: | this |
bnsbase object owning this PROCEDURE |
||
double precision, | intent(in), | DIMENSION(3) | :: | center |
Center point relative to which the radius is measured |
|
double precision, | intent(in), | DIMENSION(3) | :: | vector |
Vector that defines the direction along which to measure the radius. If not normalized, it will be normalized. |
|
procedure(get_density_at_pos), | optional | :: | get_density |
Radius of the star relative to center
, along the direction
specified by vector
Finds the surface of a star, using [[bnsbase::find_radius]] along many directions.
Finds the surface of a star, using [[bnsbase::find_radius]] along many directions.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bnsbase), | intent(in) | :: | this |
bnsbase object owning this PROCEDURE |
||
double precision, | intent(in), | DIMENSION(3) | :: | center |
Center point relative to which the radius is measured |
|
integer, | intent(in) | :: | n_theta |
Number of points in for the colatitude |
||
integer, | intent(in) | :: | n_phi |
Number of points in for the azimuth |
||
double precision, | intent(out), | DIMENSION(:,:,:), ALLOCATABLE | :: | surface |
Array storing the coordinates of the points on the surface |
Returns adm_mass
Returns the angular momentum vector angular_momentum_x, angular_momentum_y, angular_momentum_z
Returns angular_vel
Returns barycenter1_x
Returns barycenter2_x
Returns center1_x
Returns center2_x
Returns cold_system, the LOGICAL
variable that specifies if
the system is cold (no thermal component)
Returns cold_system, the LOGICAL
variable at specifies if
the system is cold (no thermal component)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(idbase), | intent(in) | :: | this |
Returns distance
Returns distance_com
Returns energy_density_center1
Returns energy_density_center2
Returns ent_center1
Returns ent_center2
Returns eos1
Returns an integer that identifies the equation of state of star 1
Returns eos2
Returns an integer that identifies the equation of state of star 2
Returns estimate_length_scale, the LOGICAL
variable that
specifies if a typical length scale, equal to the ratio of a field over
its gradient, should be computed
Returns estimate_length_scale, the LOGICAL
variable
that specifies if a typical length scale, equal to the ratio
of a field over its gradient, should be computed
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(idbase), | intent(in) | :: | this |
Returns gamma0_1
Returns gamma0_2
Returns gamma1_1
Returns gamma1_2
Returns gamma2_1
Returns gamma2_2
Returns gamma3_1
Returns gamma3_2
Returns gamma_1
Returns gamma_2
Returns mass_grav1
Returns mass_grav2
Returns kappa0_1
Returns kappa0_2
Returns kappa1_1
Returns kappa1_2
Returns kappa2_1
Returns kappa2_2
Returns kappa3_1
Returns kappa3_2
Returns kappa_1
Returns kappa_2
Returns the linear momentum vector linear_momentum_x, linear_momentum_y, linear_momentum_z
Returns logP1_1
Returns logP1_2
Returns logRho0_1
Returns logRho0_2
Returns logRho1_1
Returns logRho1_2
Returns logRho2_1
Returns logRho2_2
Returns mass1
Returns mass2
Returns n_matter, the number of matter objects in the physical system
Returns nbar_center1
Returns nbar_center2
Returns npeos_1
Returns npeos_2
Returns one_lapse, the LOGICAL
variable that determines if
the lapse function , i.e., if the geodesic gauge is to be used
Returns pressure_center1
Returns pressure_center2
Returns radius1_x_comp
Returns radius1_x_opp
Returns radius1_y
Returns radius1_z
Returns radius2_x_comp
Returns radius2_x_opp
Returns radius2_y
Returns radius2_y
Returns rho_center1
Returns rho_center2
Returns specific_energy_center1
Returns specific_energy_center2
Returns the spatial extent of the physical system considered, as the array of 6 numbers
INTERFACE to the SUBROUTINE that detects the spatial extent of the physical system considered, and returns a 6-dimensional array containing the coordinates of a box centered at the center of the object and containing the system.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(idbase), | intent(in) | :: | this |
Object of class idbase which this PROCEDURE is a member of |
6-dimensional array containing the coordinates of a box containing the physical system.
Returns zero_shift, the LOGICAL
variable that determines if
the shift
This PROCEDURE calls the constructor of the idbase-extended type and the SUBROUTINE sanity_check afterwards. It is recommended to use this SUBROUTINE to construct objects of idbase-extended type since the sanity check is performed automatically.
Initialize the DERIVED TYPE that extends idbase
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(idbase), | intent(out) | :: | derived_type |
Object of DERIVED TYPE that extends [[idbase], to be constructed |
||
character(len=*), | intent(in), | optional | :: | filename |
Name of the file containing the \(\mathrm{ID}\) |
|
character(len=*), | intent(in), | optional, | DIMENSION(:) | :: | eos_filenames |
Array of strings containing the names of the files containing the \(\mathrm{EOS}\)
to be used for each matter object. If not PRESENT, information from
the file |
Initialize the \(\mathrm{ID}\); for example, set up the lattices around the stars for the \(\mathrm{BNS}\) produced with \(\texttt{FUKA}\).
Initialize the \(\mathrm{ID}\); for example, set up the lattices around the stars for the \(\mathrm{BNS}\) produced with \(\texttt{FUKA}\).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(idbase), | intent(inout) | :: | this | |||
integer, | intent(in) | :: | flag |
Identifies what kind of initialization has to be done |
||
logical, | intent(in), | optional | :: | switch |
If |
Integrates the baryon mass density over a matter object, using spherical coordinates, and computes its radial profile inside the star
INTERFACE to the SUBROUTINE integrating the baryon mass density to compute the radial mass profile of a single star.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(idbase), | intent(inout) | :: | this |
Object of class idbase which this PROCEDURE is a member of |
||
double precision, | intent(in), | DIMENSION(3) | :: | center |
Center of the star |
|
double precision, | intent(in) | :: | radius |
Central density of the star |
||
double precision, | intent(in) | :: | central_density |
Integration steps |
||
double precision, | intent(in) | :: | dr |
Radius of the star |
||
double precision, | intent(in) | :: | dth |
Radius of the star |
||
double precision, | intent(in) | :: | dphi |
Radius of the star |
||
double precision, | intent(inout) | :: | mass |
Integrated mass of the star |
||
double precision, | intent(out), | DIMENSION(3,0:NINT(radius/dr)) | :: | mass_profile |
Array storing the radial mass profile of the star |
|
integer, | intent(out), | DIMENSION(0:NINT(radius/dr)) | :: | mass_profile_idx |
Array to store the indices for array mass_profile, sorted so that
|
|
double precision, | intent(in), | optional, | DIMENSION(2) | :: | radii | |
type(surface), | intent(in), | optional | :: | surf |
Surface of the matter object |
Prints a summary of the physical properties the \(\mathrm{BNS}\) system
to the standard output and, optionally, to a formatted file whose name
is given as the optional argument filename
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bnsbase), | intent(in) | :: | this |
bnsbase object owning this PROCEDURE |
||
character(len=*), | intent(inout), | optional | :: | filename |
Name of the formatted file to print the summary to |
Prints a summary of the physical properties the system to the standard output and, optionally, to a formatted file whose name is given as optional argument. Printse information relative to the derived type oly
Prints a summary of the physical properties the system
to the standard output and, optionally, to a formatted file whose name
is given as the optional argument filename
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bnsbase), | intent(in) | :: | this |
bnsbase object owning this PROCEDURE |
||
character(len=*), | intent(inout), | optional | :: | filename |
Name of the formatted file to print the summary to |
Reads the full \(\mathrm{ID}\)
INTERFACE or the SUBROUTINE reading the full \(\mathrm{ID}\)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(idbase), | intent(inout) | :: | this |
idbase object which this PROCEDURE is a member of |
||
integer, | intent(in) | :: | n | |||
double precision, | intent(in), | DIMENSION(:) | :: | x | ||
double precision, | intent(in), | DIMENSION(:) | :: | y | ||
double precision, | intent(in), | DIMENSION(:) | :: | z | ||
double precision, | intent(inout), | DIMENSION(:) | :: | lapse | ||
double precision, | intent(inout), | DIMENSION(:) | :: | shift_x | ||
double precision, | intent(inout), | DIMENSION(:) | :: | shift_y | ||
double precision, | intent(inout), | DIMENSION(:) | :: | shift_z | ||
double precision, | intent(inout), | DIMENSION(:) | :: | g_xx | ||
double precision, | intent(inout), | DIMENSION(:) | :: | g_xy | ||
double precision, | intent(inout), | DIMENSION(:) | :: | g_xz | ||
double precision, | intent(inout), | DIMENSION(:) | :: | g_yy | ||
double precision, | intent(inout), | DIMENSION(:) | :: | g_yz | ||
double precision, | intent(inout), | DIMENSION(:) | :: | g_zz | ||
double precision, | intent(inout), | DIMENSION(:) | :: | k_xx | ||
double precision, | intent(inout), | DIMENSION(:) | :: | k_xy | ||
double precision, | intent(inout), | DIMENSION(:) | :: | k_xz | ||
double precision, | intent(inout), | DIMENSION(:) | :: | k_yy | ||
double precision, | intent(inout), | DIMENSION(:) | :: | k_yz | ||
double precision, | intent(inout), | DIMENSION(:) | :: | k_zz | ||
double precision, | intent(inout), | DIMENSION(:) | :: | baryon_density | ||
double precision, | intent(inout), | DIMENSION(:) | :: | energy_density | ||
double precision, | intent(inout), | DIMENSION(:) | :: | specific_energy | ||
double precision, | intent(inout), | DIMENSION(:) | :: | pressure | ||
double precision, | intent(inout), | DIMENSION(:) | :: | u_euler_x | ||
double precision, | intent(inout), | DIMENSION(:) | :: | u_euler_y | ||
double precision, | intent(inout), | DIMENSION(:) | :: | u_euler_z |
Reads the hydro \(\mathrm{ID}\) needed to compute the constraints on the refined mesh
INTERFACE or the SUBROUTINE reading the the hydro \(\mathrm{ID}\) needed to compute the constraints on the refined mesh
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(idbase), | intent(inout) | :: | this |
idbase object which this PROCEDURE is a member of |
||
integer, | intent(in) | :: | nx | |||
integer, | intent(in) | :: | ny | |||
integer, | intent(in) | :: | nz | |||
double precision, | intent(in), | DIMENSION(:,:,:,:) | :: | pos | ||
double precision, | intent(inout), | DIMENSION(:,:,:) | :: | baryon_density | ||
double precision, | intent(inout), | DIMENSION(:,:,:) | :: | energy_density | ||
double precision, | intent(inout), | DIMENSION(:,:,:) | :: | specific_energy | ||
double precision, | intent(inout), | DIMENSION(:,:,:) | :: | pressure | ||
double precision, | intent(inout), | DIMENSION(:,:,:,:) | :: | u_euler |
Reads the components of the extrinsic curvature
INTERFACE or the SUBROUTINE reading the components of the extrinsic curvature
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(idbase), | intent(inout) | :: | this |
idbase object which this PROCEDURE is a member of |
||
integer, | intent(in) | :: | n | |||
double precision, | intent(in), | DIMENSION(:) | :: | x | ||
double precision, | intent(in), | DIMENSION(:) | :: | y | ||
double precision, | intent(in), | DIMENSION(:) | :: | z | ||
double precision, | intent(inout), | DIMENSION(:) | :: | k_xx | ||
double precision, | intent(inout), | DIMENSION(:) | :: | k_xy | ||
double precision, | intent(inout), | DIMENSION(:) | :: | k_xz | ||
double precision, | intent(inout), | DIMENSION(:) | :: | k_yy | ||
double precision, | intent(inout), | DIMENSION(:) | :: | k_yz | ||
double precision, | intent(inout), | DIMENSION(:) | :: | k_zz |
Reads the hydro \(\mathrm{ID}\) needed to compute the baryon mass
INTERFACE or the SUBROUTINE reading the hydro \(\mathrm{ID}\) needed to compute the baryon mass
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(idbase), | intent(inout) | :: | this |
Object of class idbase which this PROCEDURE is a member of |
||
double precision, | intent(in) | :: | x | |||
double precision, | intent(in) | :: | y | |||
double precision, | intent(in) | :: | z | |||
double precision, | intent(out), | DIMENSION(6) | :: | g | ||
double precision, | intent(out) | :: | baryon_density | |||
double precision, | intent(out) | :: | gamma_euler |
Reads the hydro \(\mathrm{ID}\) needed to compute the SPH \(\mathrm{ID}\)
INTERFACE or the SUBROUTINE reading the hydro \(\mathrm{ID}\) needed to compute the SPH \(\mathrm{ID}\)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(idbase), | intent(inout) | :: | this |
idbase object which this PROCEDURE is a member of |
||
integer, | intent(in) | :: | n | |||
double precision, | intent(in), | DIMENSION(:) | :: | x | ||
double precision, | intent(in), | DIMENSION(:) | :: | y | ||
double precision, | intent(in), | DIMENSION(:) | :: | z | ||
double precision, | intent(inout), | DIMENSION(:) | :: | lapse | ||
double precision, | intent(inout), | DIMENSION(:) | :: | shift_x | ||
double precision, | intent(inout), | DIMENSION(:) | :: | shift_y | ||
double precision, | intent(inout), | DIMENSION(:) | :: | shift_z | ||
double precision, | intent(inout), | DIMENSION(:) | :: | g_xx | ||
double precision, | intent(inout), | DIMENSION(:) | :: | g_xy | ||
double precision, | intent(inout), | DIMENSION(:) | :: | g_xz | ||
double precision, | intent(inout), | DIMENSION(:) | :: | g_yy | ||
double precision, | intent(inout), | DIMENSION(:) | :: | g_yz | ||
double precision, | intent(inout), | DIMENSION(:) | :: | g_zz | ||
double precision, | intent(inout), | DIMENSION(:) | :: | baryon_density | ||
double precision, | intent(inout), | DIMENSION(:) | :: | energy_density | ||
double precision, | intent(inout), | DIMENSION(:) | :: | specific_energy | ||
double precision, | intent(inout), | DIMENSION(:) | :: | pressure | ||
double precision, | intent(inout), | DIMENSION(:) | :: | u_euler_x | ||
double precision, | intent(inout), | DIMENSION(:) | :: | u_euler_y | ||
double precision, | intent(inout), | DIMENSION(:) | :: | u_euler_z |
Reads the spacetime \(\mathrm{ID}\) needed to compute the BSSN variables and constraints
INTERFACE or the SUBROUTINE reading the spacetime \(\mathrm{ID}\)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(idbase), | intent(inout) | :: | this |
idbase object which this PROCEDURE is a member of |
||
integer, | intent(in) | :: | nx | |||
integer, | intent(in) | :: | ny | |||
integer, | intent(in) | :: | nz | |||
double precision, | intent(in), | DIMENSION(:,:,:,:) | :: | pos | ||
double precision, | intent(inout), | DIMENSION(:,:,:) | :: | lapse | ||
double precision, | intent(inout), | DIMENSION(:,:,:,:) | :: | shift | ||
double precision, | intent(inout), | DIMENSION(:,:,:,:) | :: | g | ||
double precision, | intent(inout), | DIMENSION(:,:,:,:) | :: | ek |
Returns the baryon mass density from the \(\mathrm{ID}\) at the given point
INTERFACE for a PROCEDURE that returns a DOUBLE PRECISION at a given position
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(idbase), | intent(in) | :: | this |
Object of class idbase which this PROCEDURE is a member of |
||
double precision, | intent(in), | VALUE | :: | x |
coordinate of the desired point |
|
double precision, | intent(in), | VALUE | :: | y |
coordinate of the desired point |
|
double precision, | intent(in), | VALUE | :: | z |
coordinate of the desired point |
Real number at
Returns the pressure from te \(\mathrm{ID}\) at the given point
INTERFACE for a PROCEDURE that returns a DOUBLE PRECISION at a given position
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(idbase), | intent(in) | :: | this |
Object of class idbase which this PROCEDURE is a member of |
||
double precision, | intent(in), | VALUE | :: | x |
coordinate of the desired point |
|
double precision, | intent(in), | VALUE | :: | y |
coordinate of the desired point |
|
double precision, | intent(in), | VALUE | :: | z |
coordinate of the desired point |
Real number at
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bnsbase), | intent(in) | :: | this |
bnsbase object owning this PROCEDURE |
||
integer, | intent(in) | :: | i_matter |
Index of the matter object whose parameter is to return |
Result
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bnsbase), | intent(in) | :: | this |
bnsbase object owning this PROCEDURE |
||
integer, | intent(in) | :: | i_matter |
Index of the matter object whose parameter is to return |
Result
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bnsbase), | intent(in) | :: | this |
bnsbase object owning this PROCEDURE |
||
integer, | intent(in) | :: | i_matter |
Index of the matter object whose string is to return |
Result
Returns the identification number of the \(\mathrm{EOS}\) of the matter objects.
Set up a convention for the identification number
INTERFACE for a PROCEDURE that returns an array containing the parametersf the \(\mathrm{EOS}\) for the matter objects
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(idbase), | intent(in) | :: | this | |||
integer, | intent(in) | :: | i_matter |
Index of the matter object whose parameter is to return |
||
double precision, | intent(out), | DIMENSION(:), ALLOCATABLE | :: | eos_params |
Array containing the parameters of the \(\mathrm{EOS}\) for the |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bnsbase), | intent(in) | :: | this |
bnsbase object owning this PROCEDURE |
||
integer, | intent(in) | :: | i_matter |
Index of the matter object whose string is to return |
Result
Checks that n_matter and the sizes returned by return_spatial_extent and get_total_spatial_extent are acceptable. It is called by initialize, after the constructor of the derived type.
Sets cold_system, the LOGICAL
variable that specifies if
the system is cold (no thermal component)
Sets cold_system, the LOGICAL
variable at specifies if
the system is cold (no thermal component)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(idbase), | intent(inout) | :: | this | |||
logical, | intent(in) | :: | value |
Value to set cold_system to |
Sets estimate_length_scale, the LOGICAL
variable that
specifies if a typical length scale, equal to the ratio of a field over
its gradient, should be computed
Sets estimate_length_scale, the LOGICAL
variable
that specifies if a typical length scale, equal to the ratio
of a field over its gradient, should be computed
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(idbase), | intent(inout) | :: | this | |||
logical, | intent(in) | :: | value |
Value to set cold_system to |
Sets n_matter, the number of matter objects in the physical system, to a value
Sets one_lapse, the LOGICAL
variable that determines if
the lapse , i.e., if the geodesic gauge is to be used
Sets zero_shift, the LOGICAL
variable that determines if
the shift
Returns .TRUE.
if the position has physically acceptable properties,
.FALSE.
otherwise
INTERFACE for a PROCEDURE that returns a LOGICAL at a given position
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(idbase), | intent(in) | :: | this |
Object of class idbase which this PROCEDURE is a member of |
||
double precision, | intent(in), | VALUE | :: | x |
coordinate of the desired point |
|
double precision, | intent(in), | VALUE | :: | y |
coordinate of the desired point |
|
double precision, | intent(in), | VALUE | :: | z |
coordinate of the desired point |
Logical at
TYPE, ABSTRACT, EXTENDS(idbase):: bnsbase
!# ABSTRACT TYPE for |bns| |id| (produced with |lorene|, or
! with |fuka|, etc.; or produced with the same tool, but read in different
! ways, for example by linking to the |lorene| library, or reading the |id|
! from a lattice, etc.)
!-----------------------------!
!-- Parameters of the BNS --!
!-----------------------------!
!> Angular velocity \([{\rm rad/s}]\)
DOUBLE PRECISION:: angular_vel
!> Distance \(d\) between the points of maximum baryon density \([{\rm km}]\)
DOUBLE PRECISION:: distance
!> Distance between the centers of mass \([L_\odot(=1.47662503825040{\rm km})]\)
DOUBLE PRECISION:: distance_com
DOUBLE PRECISION, DIMENSION(2):: mass
!! Array containing the baryonic masses \([M_\odot]\)
DOUBLE PRECISION:: adm_mass
!! ADM mass of the system \([M_\odot]\)
!> Baryonic mass of star 1 \([M_\odot]\)
DOUBLE PRECISION:: mass1
!> Baryonic mass of star 2 \([M_\odot]\)
DOUBLE PRECISION:: mass2
DOUBLE PRECISION, DIMENSION(2):: mass_grav
!! Array containing the gravitational masses \([M_\odot]\)
!> Gravitational mass of star 1 \([M_\odot]\)
DOUBLE PRECISION:: mass_grav1
!> Gravitational mass of star 2 \([M_\odot]\)
DOUBLE PRECISION:: mass_grav2
!& mOmega= ( [[bnsbase:angular_vel]]\([{\rm km^{-1}}]\) )
! \(\times\) ( [[bnsbase:mass_grav1]]\([{\rm km}]\)
! + [[bnsbase:mass_grav2]]\([{\rm km}]\) ) [pure number]
!
! Constant used in [K. Hotokezaka et al, Phys. Rev. D 87, 024001](https://arxiv.org/abs/1212.0905){:target="_blank"} (see Sec. IIB) to determine when
! the BNS is at approximately 3-4 quasicircular orbits from merger. For the
! EOS APR4 and ALF2, this requirement is approximately satisfied for
! mOmega \(=0.026\); for the EOS H4 and MS1, for mOmega \(=0.025\).
DOUBLE PRECISION:: mOmega
!& Estimated time of the merger \([M_\odot]\)
! $$
! t_\mathrm{merger}=\dfrac{5}{256}
! \dfrac{d^4}{M^1_\mathrm{g}M^2_\mathrm{g}(M^1_\mathrm{g}+M^2_\mathrm{g})}
! $$
! [P. C. Peters, "Gravitational Radiation and the Motion of Two Point
! Masses", Phys. Rev. 136, B1224 (1964)](http://gravity.psu.edu/numrel/jclub/jc/Peters_PR_136_B1224_1964.pdf){:target="_blank"}
DOUBLE PRECISION:: t_merger
DOUBLE PRECISION:: linear_momentum_x= 0.0D0
!! \(x\) component of the ADM linear momentum of the system
! \([G M_\odot^2/c]\)
DOUBLE PRECISION:: linear_momentum_y= 0.0D0
!! \(y\) component of the ADM linear momentum of the system
! \([G M_\odot^2/c]\)
DOUBLE PRECISION:: linear_momentum_z= 0.0D0
!! \(z\) component of the ADM linear momentum of the system
! \([G M_\odot^2/c]\)
DOUBLE PRECISION:: angular_momentum_x= 0.0D0
!! \(x\) component of the angular momentum of the BNS system
! \([G M_\odot^2/c]\)
DOUBLE PRECISION:: angular_momentum_y= 0.0D0
!! \(y\) component of the angular momentum of the BNS system
! \([G M_\odot^2/c]\)
DOUBLE PRECISION:: angular_momentum_z= 0.0D0
!! \(z\) component of the angular momentum of the BNS system
! \([G M_\odot^2/c]\)
!& Areal (or circumferential) radius of star 1 \([L_\odot]\)
! Note that these is the areal radius of the star in the binary system,
! which is different than that of an isolated star. The latter is used
! in the mass-radius diagrams, together with the gravitatonal mass
DOUBLE PRECISION:: area_radius1
!TYPE(surface), DIMENSION(2):: surfaces
DOUBLE PRECISION, DIMENSION(2,6):: radii
!# Array containing the **signed** radii of the stars
! @todo add details
!> Radius of star 1, in the x direction, towards the companion \([L_\odot]\)
DOUBLE PRECISION:: radius1_x_comp
!> Radius of star 1, in the y direction \([L_\odot]\)
DOUBLE PRECISION:: radius1_y
!> Radius of star 1, in the z direction \([L_\odot]\)
DOUBLE PRECISION:: radius1_z
!> Radius of star 1, in the x direction, opposite to companion \([L_\odot]\)
DOUBLE PRECISION:: radius1_x_opp
!& Stellar center of star 1 (origin of the LORENE chart centered on star 1)
! \([L_\odot]\)
DOUBLE PRECISION:: center1_x
DOUBLE PRECISION, DIMENSION(2,3):: center
!# Array containing the centers of the stars
! @todo add details
DOUBLE PRECISION, DIMENSION(2,3):: barycenter
!# Array containing the barycenters of the stars
! @todo add details
DOUBLE PRECISION, DIMENSION(3):: barycenter_system
!# Array containing the barycenters of the stars
! @todo add details
!> Barycenter of star 1 \([L_\odot]\)
DOUBLE PRECISION:: barycenter1_x
!& Areal (or circumferential) radius of star 2 \([L_\odot]\)
! Note that these is the areal radius of the star in the binary system,
! which is different than that of an isolated star. The latter is used
! in the mass-radius diagrams, together with the gravitatonal mass
DOUBLE PRECISION:: area_radius2
!> Radius of star 2, in the x direction, towards the companion \([L_\odot]\)
DOUBLE PRECISION:: radius2_x_comp
!> Radius of star 2, in the y direction \([L_\odot]\)
DOUBLE PRECISION:: radius2_y
!> Radius of star 2, in the z direction \([L_\odot]\)
DOUBLE PRECISION:: radius2_z
!> Radius of star 2, in the x direction, opposite to companion \([L_\odot]\)
DOUBLE PRECISION:: radius2_x_opp
!& Stellar center of star 2 (origin of the LORENE chart centered on star 2)
! \([L_\odot]\)
DOUBLE PRECISION:: center2_x
!> Barycenter of star 2 \([L_\odot]\)
DOUBLE PRECISION:: barycenter2_x
!> Central enthalpy for star 1 \([c^2]\)
DOUBLE PRECISION:: ent_center1
!> Central baryon number density for star 1 \([L_\odot^{-3}]\)
DOUBLE PRECISION:: nbar_center1
!> Central baryon mass density for star 1 \([M_\odot L_\odot^{-3}]\)
DOUBLE PRECISION:: rho_center1
!> Central energy density for star 1 \([M_\odot c^2 L_\odot^{-3}]\)
DOUBLE PRECISION:: energy_density_center1
!> Central specific energy for star 1 \([c^2]\)
DOUBLE PRECISION:: specific_energy_center1
!> Central pressure for star 1 \([M_\odot c^2 L_\odot^{-3}]\)
DOUBLE PRECISION:: pressure_center1
!> Central enthalpy for star 2 \([c^2]\)
DOUBLE PRECISION:: ent_center2
!> Central baryon number density for star 2 \([L_\odot^{-3}]\)
DOUBLE PRECISION:: nbar_center2
!> Central baryon mass density for star 2 \([M_\odot L_\odot^{-3}]\)
DOUBLE PRECISION:: rho_center2
!> Central energy density for star 2 \([M_\odot c^2 L_\odot^{-3}]\)
DOUBLE PRECISION:: energy_density_center2
!> Central specific energy for star 2 \([c^2]\)
DOUBLE PRECISION:: specific_energy_center2
!> Central pressure for star 2 \([M_\odot c^2 L_\odot^{-3}]\)
DOUBLE PRECISION:: pressure_center2
!> Name of the equation of state (|eos|) of star 1
CHARACTER(LEN=:), ALLOCATABLE:: eos1
!> Name of the equation of state (|eos|) of star 2
CHARACTER(LEN=:), ALLOCATABLE:: eos2
INTEGER:: eos1_id
!! |sphincsid| identifier for the |eos| of star 1
INTEGER:: eos2_id
!! |sphincsid| identifier for the |eos| of star 2
!
!-- Parameters of single polytropic equations of state for the two NSs
!
!> Single polytrope: polytropic index for star 1
DOUBLE PRECISION:: gamma_1
!> Single polytrope: polytropic index for star 2
DOUBLE PRECISION:: gamma_2
!> Single polytrope: polytropic constant for star 1 [pure number]
DOUBLE PRECISION:: kappa_1
!> Single polytrope: polytropic constant for star 2 [pure number]
DOUBLE PRECISION:: kappa_2
!
!-- Parameters of the piecewise polytropic equation of state for NS 1
!
!> Piecewise polytrope: Number of polytropic pieces for star 1
INTEGER:: npeos_1
!> Piecewise polytrope: polytropic index \(\gamma_0\) for star 1
DOUBLE PRECISION:: gamma0_1
!> Piecewise polytrope: polytropic index \(\gamma_1\) for star 1
DOUBLE PRECISION:: gamma1_1
!> Piecewise polytrope: polytropic index \(\gamma_2\) for star 1
DOUBLE PRECISION:: gamma2_1
!> Piecewise polytrope: polytropic index \(\gamma_3\) for star 1
DOUBLE PRECISION:: gamma3_1
!& Piecewise polytrope: polytropic constant \(\kappa_0\) for star 1
! [pure number]
DOUBLE PRECISION:: kappa0_1
!& Piecewise polytrope: polytropic constant \(\kappa_1\) for star 1
! [pure number]
DOUBLE PRECISION:: kappa1_1
!& Piecewise polytrope: polytropic constant \(\kappa_2\) for star 1
! [pure number]
DOUBLE PRECISION:: kappa2_1
!& Piecewise polytrope: polytropic constant \(\kappa_3\) for star 1
! [pure number]
DOUBLE PRECISION:: kappa3_1
!& Piecewise polytrope: Base 10 exponent of the pressure at the first
! fiducial density (between \(\gamma_0\) and \(\gamma_1\)) \([{\rm dyne/cm^2}]\)
! for star 1
DOUBLE PRECISION:: logP1_1
!& Piecewise polytrope: Base 10 exponent of the first fiducial density
! (between \(\gamma_0\) and \(\gamma_1\)) \([{\rm g/cm^3}]\) for star 1
DOUBLE PRECISION:: logRho0_1
!& Piecewise polytrope: Base 10 exponent of the second fiducial density
! (between \(\gamma_1\) and \(\gamma_2\)) \([{\rm g/cm^3}]\) for star 1
DOUBLE PRECISION:: logRho1_1
!& Piecewise polytrope: Base 10 exponent of the third fiducial density
! (between \(\gamma_2\) and \(\gamma_3\)) \([{\rm g/cm^3}]\) for star 1
DOUBLE PRECISION:: logRho2_1
!
!-- Parameters of the piecewise polytropic equation of state for NS 2
!
!> Piecewise polytrope: Number of polytropic pieces for star 2
INTEGER:: npeos_2
!> Piecewise polytrope: polytropic index \(\gamma_0\) for star 2
DOUBLE PRECISION:: gamma0_2
!> Piecewise polytrope: polytropic index \(\gamma_1\) for star 2
DOUBLE PRECISION:: gamma1_2
!> Piecewise polytrope: polytropic index \(\gamma_2\) for star 2
DOUBLE PRECISION:: gamma2_2
!> Piecewise polytrope: polytropic index \(\gamma_3\) for star 2
DOUBLE PRECISION:: gamma3_2
!& Piecewise polytrope: polytropic constant \(\kappa_0\) for star 2
! [pure number]
DOUBLE PRECISION:: kappa0_2
!& Piecewise polytrope: polytropic constant \(\kappa_1\) for star 2
! [pure number]
DOUBLE PRECISION:: kappa1_2
!& Piecewise polytrope: polytropic constant \(\kappa_2\) for star 2
! [pure number]
DOUBLE PRECISION:: kappa2_2
!& Piecewise polytrope: polytropic constant \(\kappa_3\) for star 2
! [pure number]
DOUBLE PRECISION:: kappa3_2
!& Piecewise polytrope: Base 10 exponent of the pressure at the first
! fiducial density (between \(\gamma_0\) and \(\gamma_1\)) \([{\rm dyne/cm^2}]\)
! for star 2
DOUBLE PRECISION:: logP1_2
!& Piecewise polytrope: Base 10 exponent of the second fiducial density
! (between \(\gamma_1\) and \(\gamma_2\)) \([{\rm g/cm^3}]\) for star 2
DOUBLE PRECISION:: logRho0_2
!& Piecewise polytrope: Base 10 exponent of the second fiducial density
! (between \(\gamma_1\) and \(\gamma_2\)) \([{\rm g/cm^3}]\) for star 2
DOUBLE PRECISION:: logRho1_2
!& Piecewise polytrope: Base 10 exponent of the third fiducial density
! (between \(\gamma_2\) and \(\gamma_3\)) \([{\rm g/cm^3}]\) for star 2
DOUBLE PRECISION:: logRho2_2
CHARACTER(LEN=max_length), DIMENSION(2):: eos_filenames
!# Array of strings containing the names of the files containing the |eos|
! to be used for each matter object.
CHARACTER(LEN=:), ALLOCATABLE:: eos_table1
!# String containing the path to the files containing the table
! of the |eos| for star 1.
CHARACTER(LEN=:), ALLOCATABLE:: eos_table2
!# String containing the path to the files containing the table
! of the |eos| for star 2.
!
!-- Spacetime fields
!
!> 1-D array storing the lapse function
DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE:: lapse
!> 1-D array storing the x component of the shift vector [c]
DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE:: shift_x
!> 1-D array storing the y component of the shift vector [c]
DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE:: shift_y
!> 1-D array storing the z component of the shift vector [c]
DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE:: shift_z
!> 1-D array storing the xx component of the spatial metric [pure number]
DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE:: g_xx
!> 1-D array storing the xy component of the spatial metric [pure number]
DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE:: g_xy
!> 1-D array storing the xz component of the spatial metric [pure number]
DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE:: g_xz
!> 1-D array storing the yy component of the spatial metric [pure number]
DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE:: g_yy
!> 1-D array storing the yz component of the spatial metric [pure number]
DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE:: g_yz
!> 1-D array storing the zz component of the spatial metric [pure number]
DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE:: g_zz
!& 1-D array storing the xx component of the extrinsic curvature
! [c/MSun_geo]
DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE:: k_xx
!& 1-D array storing the xy component of the extrinsic curvature
! [c/MSun_geo]
DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE:: k_xy
!& 1-D array storing the xz component of the extrinsic curvature
! [c/MSun_geo]
DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE:: k_xz
!& 1-D array storing the yy component of the extrinsic curvature
! [c/MSun_geo]
DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE:: k_yy
!& 1-D array storing the yz component of the extrinsic curvature
! [c/MSun_geo]
DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE:: k_yz
!& 1-D array storing the zz component of the extrinsic curvature
! [c/MSun_geo]
DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE:: k_zz
CONTAINS
!-------------------!
!-- SUBROUTINES --!
!-------------------!
PROCEDURE(get_eos_id_int), DEFERRED:: get_eos1_id
!! Returns an integer that identifies the equation of state of star 1
PROCEDURE(get_eos_id_int), DEFERRED:: get_eos2_id
!! Returns an integer that identifies the equation of state of star 2
PROCEDURE:: print_summary => print_summary_bnsbase
PROCEDURE(print_summary_derived_int), DEFERRED:: print_summary_derived
!# Prints a summary of the physical properties the system
! to the standard output and, optionally, to a formatted file whose name
! is given as optional argument. Printse information relative to
! the derived type oly
!-----------------!
!-- FUNCTIONS --!
!-----------------!
PROCEDURE, NON_OVERRIDABLE:: find_center
!# Finds the center of a matter object, as the point where the
! density is maximal.
PROCEDURE, NON_OVERRIDABLE:: find_radius
!# Finds the radius of a star, relative to a center and along
! a direction. The radius is determined as the first point where the
! density is zero.
PROCEDURE, NON_OVERRIDABLE:: find_surface
!# Finds the surface of a star, using [[bnsbase::find_radius]] along many
! directions.
PROCEDURE, NON_OVERRIDABLE:: find_print_surfaces
!# Finds the surfaces of the stars, and prints them to a formatted file.
!
!-- FUNCTIONS that access PRIVATE member variables
!
!PROCEDURE, PUBLIC:: get_bns_identifier
!PROCEDURE, PUBLIC:: get_bns_ptr
PROCEDURE:: return_mass => get_mass
PROCEDURE:: return_adm_mass => get_adm_mass
PROCEDURE:: return_center => get_center
PROCEDURE:: return_barycenter => get_barycenter
PROCEDURE:: return_eos_name => get_eos
PROCEDURE:: return_spatial_extent => get_radii
PROCEDURE, PUBLIC:: get_angular_vel
!! Returns [[bnsbase:angular_vel]]
PROCEDURE, PUBLIC:: get_distance
!! Returns [[bnsbase:distance]]
PROCEDURE, PUBLIC:: get_distance_com
!! Returns [[bnsbase:distance_com]]
PROCEDURE, PUBLIC:: get_mass1
!! Returns [[bnsbase:mass1]]
PROCEDURE, PUBLIC:: get_mass2
!! Returns [[bnsbase:mass2]]
PROCEDURE, PUBLIC:: get_grav_mass1
!! Returns [[bnsbase:mass_grav1]]
PROCEDURE, PUBLIC:: get_grav_mass2
!! Returns [[bnsbase:mass_grav2]]
PROCEDURE, PUBLIC:: get_adm_mass
!! Returns [[bnsbase:adm_mass]]
PROCEDURE, PUBLIC:: get_linear_momentum
!# Returns the linear momentum vector
! \((\)[[bnsbase:linear_momentum_x]], [[bnsbase:linear_momentum_y]],
! [[bnsbase:linear_momentum_z]]\()\)
PROCEDURE, PUBLIC:: get_angular_momentum
!# Returns the angular momentum vector
! \((\)[[bnsbase:angular_momentum_x]], [[bnsbase:angular_momentum_y]],
! [[bnsbase:angular_momentum_z]]\()\)
PROCEDURE, PUBLIC:: get_radius1_x_comp
!! Returns [[bnsbase:radius1_x_comp]]
PROCEDURE, PUBLIC:: get_radius1_y
!! Returns [[bnsbase:radius1_y]]
PROCEDURE, PUBLIC:: get_radius1_z
!! Returns [[bnsbase:radius1_z]]
PROCEDURE, PUBLIC:: get_radius1_x_opp
!! Returns [[bnsbase:radius1_x_opp]]
PROCEDURE, PUBLIC:: get_center1_x
!! Returns [[bnsbase:center1_x]]
PROCEDURE, PUBLIC:: get_barycenter1_x
!! Returns [[bnsbase:barycenter1_x]]
PROCEDURE, PUBLIC:: get_radius2_x_comp
!! Returns [[bnsbase:radius2_x_comp]]
PROCEDURE, PUBLIC:: get_radius2_y
!! Returns [[bnsbase:radius2_y]]
PROCEDURE, PUBLIC:: get_radius2_z
!! Returns [[bnsbase:radius2_y]]
PROCEDURE, PUBLIC:: get_radius2_x_opp
!! Returns [[bnsbase:radius2_x_opp]]
PROCEDURE, PUBLIC:: get_center2_x
!! Returns [[bnsbase:center2_x]]
PROCEDURE, PUBLIC:: get_barycenter2_x
!! Returns [[bnsbase:barycenter2_x]]
PROCEDURE, PUBLIC:: get_ent_center1
!! Returns [[bnsbase:ent_center1]]
PROCEDURE, PUBLIC:: get_nbar_center1
!! Returns [[bnsbase:nbar_center1]]
PROCEDURE, PUBLIC:: get_rho_center1
!! Returns [[bnsbase:rho_center1]]
PROCEDURE, PUBLIC:: get_energy_density_center1
!! Returns [[bnsbase:energy_density_center1]]
PROCEDURE, PUBLIC:: get_specific_energy_center1
!! Returns [[bnsbase:specific_energy_center1]]
PROCEDURE, PUBLIC:: get_pressure_center1
!! Returns [[bnsbase:pressure_center1]]
PROCEDURE, PUBLIC:: get_ent_center2
!! Returns [[bnsbase:ent_center2]]
PROCEDURE, PUBLIC:: get_nbar_center2
!! Returns [[bnsbase:nbar_center2]]
PROCEDURE, PUBLIC:: get_rho_center2
!! Returns [[bnsbase:rho_center2]]
PROCEDURE, PUBLIC:: get_energy_density_center2
!! Returns [[bnsbase:energy_density_center2]]
PROCEDURE, PUBLIC:: get_specific_energy_center2
!! Returns [[bnsbase:specific_energy_center2]]
PROCEDURE, PUBLIC:: get_pressure_center2
!! Returns [[bnsbase:pressure_center2]]
PROCEDURE, PUBLIC:: get_eos1
!! Returns [[bnsbase:eos1]]
PROCEDURE, PUBLIC:: get_eos2
!! Returns [[bnsbase:eos2]]
PROCEDURE, PUBLIC:: get_eos_id
!! Returns [[bnsbase:eos1_id]] or [[bnsbase:eos2_id]]
!
!-- PROCEDURES to be used for single polytropic EOS
!
PROCEDURE, PUBLIC:: get_gamma_1
!! Returns [[bnsbase:gamma_1]]
PROCEDURE, PUBLIC:: get_gamma_2
!! Returns [[bnsbase:gamma_2]]
PROCEDURE, PUBLIC:: get_kappa_1
!! Returns [[bnsbase:kappa_1]]
PROCEDURE, PUBLIC:: get_kappa_2
!! Returns [[bnsbase:kappa_2]]
!
!-- PROCEDURES to be used for piecewise polytropic EOS
!
PROCEDURE, PUBLIC:: get_npeos_1
!! Returns [[bnsbase:npeos_1]]
PROCEDURE, PUBLIC:: get_gamma0_1
!! Returns [[bnsbase:gamma0_1]]
PROCEDURE, PUBLIC:: get_gamma1_1
!! Returns [[bnsbase:gamma1_1]]
PROCEDURE, PUBLIC:: get_gamma2_1
!! Returns [[bnsbase:gamma2_1]]
PROCEDURE, PUBLIC:: get_gamma3_1
!! Returns [[bnsbase:gamma3_1]]
PROCEDURE, PUBLIC:: get_kappa0_1
!! Returns [[bnsbase:kappa0_1]]
PROCEDURE, PUBLIC:: get_kappa1_1
!! Returns [[bnsbase:kappa1_1]]
PROCEDURE, PUBLIC:: get_kappa2_1
!! Returns [[bnsbase:kappa2_1]]
PROCEDURE, PUBLIC:: get_kappa3_1
!! Returns [[bnsbase:kappa3_1]]
PROCEDURE, PUBLIC:: get_logP1_1
!! Returns [[bnsbase:logP1_1]]
PROCEDURE, PUBLIC:: get_logRho0_1
!! Returns [[bnsbase:logRho0_1]]
PROCEDURE, PUBLIC:: get_logRho1_1
!! Returns [[bnsbase:logRho1_1]]
PROCEDURE, PUBLIC:: get_logRho2_1
!! Returns [[bnsbase:logRho2_1]]
PROCEDURE, PUBLIC:: get_npeos_2
!! Returns [[bnsbase:npeos_2]]
PROCEDURE, PUBLIC:: get_gamma0_2
!! Returns [[bnsbase:gamma0_2]]
PROCEDURE, PUBLIC:: get_gamma1_2
!! Returns [[bnsbase:gamma1_2]]
PROCEDURE, PUBLIC:: get_gamma2_2
!! Returns [[bnsbase:gamma2_2]]
PROCEDURE, PUBLIC:: get_gamma3_2
!! Returns [[bnsbase:gamma3_2]]
PROCEDURE, PUBLIC:: get_kappa0_2
!! Returns [[bnsbase:kappa0_2]]
PROCEDURE, PUBLIC:: get_kappa1_2
!! Returns [[bnsbase:kappa1_2]]
PROCEDURE, PUBLIC:: get_kappa2_2
!! Returns [[bnsbase:kappa2_2]]
PROCEDURE, PUBLIC:: get_kappa3_2
!! Returns [[bnsbase:kappa3_2]]
PROCEDURE, PUBLIC:: get_logP1_2
!! Returns [[bnsbase:logP1_2]]
PROCEDURE, PUBLIC:: get_logRho0_2
!! Returns [[bnsbase:logRho0_2]]
PROCEDURE, PUBLIC:: get_logRho1_2
!! Returns [[bnsbase:logRho1_2]]
PROCEDURE, PUBLIC:: get_logRho2_2
!! Returns [[bnsbase:logRho2_2]]
END TYPE bnsbase