bns_lorene Module

This module contains the definition of TYPE bnslorene, and the SUBROUTINES that bind to the methods of \(\texttt{LORENE}\)'s class \(\texttt{Bin_NS}\), defined in

\(\texttt{LORENE}\) official repository



Uses

  • module~~bns_lorene~~UsesGraph module~bns_lorene bns_lorene iso_c_binding iso_c_binding module~bns_lorene->iso_c_binding module~bns_base bns_base module~bns_lorene->module~bns_base module~id_base id_base module~bns_lorene->module~id_base module~utility utility module~bns_lorene->module~utility timing timing module~bns_lorene->timing module~bns_base->module~id_base module~bns_base->module~utility module~id_base->module~utility module~id_base->timing constants constants module~utility->constants matrix matrix module~utility->matrix

Used by

  • module~~bns_lorene~~UsedByGraph module~bns_lorene bns_lorene module~access~4 access module~access~4->module~bns_lorene module~constructor~2 constructor module~constructor~2->module~bns_lorene module~finalize_id finalize_id module~finalize_id->module~bns_lorene module~io~5 io module~io~5->module~bns_lorene module~memory~3 memory module~memory~3->module~bns_lorene module~properties properties module~properties->module~bns_lorene module~read read module~read->module~bns_lorene module~sphincs_id_full sphincs_id_full module~sphincs_id_full->module~bns_lorene module~sphincs_id_lorene sphincs_id_lorene module~sphincs_id_lorene->module~bns_lorene program~convergence_test convergence_test program~convergence_test->module~sphincs_id_full program~convergence_test->module~sphincs_id_lorene program~sphincs_id sphincs_id program~sphincs_id->module~sphincs_id_full program~sphincs_id->module~sphincs_id_lorene

Contents


Interfaces

interface

  • public module subroutine allocate_bnslorene_memory(this, d)

    Allocates allocatable arrays member of a bnslorene object

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(inout) :: this

    bnslorene object which this PROCEDURE is a member of

    integer, intent(in) :: d

    Dimension of the arrays

interface

  • private function construct_bin_ns(c_id_file, c_eos_file1, c_eos_file2) result(optr) bind(C, NAME= "construct_bin_ns")

    Interface to the \(\texttt{LORENE}\) method of class \(\texttt{Bin_NS}\) with the same name, that constructs the \(\texttt{LORENE}\) \(\texttt{Bin_NS}\) object

    FT


    Arguments

    Type IntentOptional Attributes Name
    character(kind=C_CHAR, len=1), intent(in), optional, DIMENSION(*) :: c_id_file

    C string of the name of the \(\texttt{LORENE}\) binary file storing the spectral \(\mathrm{BNS}\) \(\mathrm{ID}\)

    character(kind=C_CHAR, len=1), intent(in), optional, DIMENSION(*) :: c_eos_file1
    character(kind=C_CHAR, len=1), intent(in), optional, DIMENSION(*) :: c_eos_file2

    Return Value type(C_PTR)

    C pointer pointing to the constructed \(\texttt{LORENE}\) \(\texttt{Bin_NS}\) object

interface

  • public module subroutine construct_binary(this, id_file, eos_filenames)

    Interface of the subroutine that constructs the \(\texttt{LORENE}\) \(\texttt{Bin_NS}\) object

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(inout) :: this

    bnslorene object which this PROCEDURE is a member of

    character(kind=C_CHAR, len=*), intent(in), optional :: id_file

    \(\texttt{LORENE}\) binary file containing the spectral \(\mathrm{BNS}\) \(\mathrm{ID}\)

    character(kind=C_CHAR, len=*), intent(in), optional, DIMENSION(2) :: 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 filename is used

interface

  • public module subroutine construct_bnslorene(derived_type, filename, eos_filenames)

    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

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(out) :: derived_type

    Constructed bnslorene object

    character(len=*), intent(in), optional :: filename

    \(\texttt{LORENE}\) binary file containing the spectral \(\mathrm{BNS}\) \(\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 filename is used

interface

  • public module subroutine correct_adm_linear_momentum(npart, pos, nlrf, u, pr, vel_u, theta, nstar, nu, g_xx, g_xy, g_xz, g_yy, g_yz, g_zz, lapse, shift_x, shift_y, shift_z, adm_mom_error, adm_mass)

    Post-process the \(\mathrm{SPH}\) \(\mathrm{ID}\); for example, correct for the residual ADM linear momentum.

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: npart

    Particle number

    double precision, intent(inout), DIMENSION(3,npart) :: pos

    Particle positions

    double precision, intent(inout), DIMENSION(npart) :: nlrf

    Baryon density in the local rest frame on the particles

    double precision, intent(inout), DIMENSION(npart) :: u

    Specific internal energy on the particles

    double precision, intent(inout), DIMENSION(npart) :: pr

    Pressure on the particles

    double precision, intent(inout), DIMENSION(3,npart) :: vel_u

    Spatial velocity in the computing frame on the particles

    double precision, intent(inout), DIMENSION(npart) :: theta

    Generalized Lorentz factor on the particles

    double precision, intent(inout), DIMENSION(npart) :: nstar

    Proper baryon density in the local rest frame on the particles

    double precision, intent(inout), DIMENSION(npart) :: nu

    Baryon number per particle

    double precision, intent(in), DIMENSION(npart) :: g_xx
    double precision, intent(in), DIMENSION(npart) :: g_xy
    double precision, intent(in), DIMENSION(npart) :: g_xz
    double precision, intent(in), DIMENSION(npart) :: g_yy
    double precision, intent(in), DIMENSION(npart) :: g_yz
    double precision, intent(in), DIMENSION(npart) :: g_zz
    double precision, intent(in), DIMENSION(npart) :: lapse

    Lapse function on the particles

    double precision, intent(in), DIMENSION(npart) :: shift_x
    double precision, intent(in), DIMENSION(npart) :: shift_y
    double precision, intent(in), DIMENSION(npart) :: shift_z
    double precision, intent(in), DIMENSION(3) :: adm_mom_error
    double precision, intent(in) :: adm_mass

interface

  • public module subroutine deallocate_bnslorene_memory(this)

    Deallocates allocatable arrays member of a bnslorene object

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(inout) :: this

    bnslorene object which this PROCEDURE is a member of

interface

  • private subroutine destruct_bin_ns(optr) bind(C, NAME= "0")

    Interface to the \(\texttt{LORENE}\) method of class \(\texttt{Bin_NS}\) with the same name, that destructs the \(\texttt{LORENE}\) \(\texttt{Bin_NS}\) object

    FT


    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), intent(in), VALUE :: optr

    C pointer pointing to the \(\texttt{LORENE}\) \(\texttt{Bin_NS}\) object to destruct

interface

  • public module subroutine destruct_binary(this)

    Destructs a \(\texttt{LORENE}\) \(\texttt{Bin_NS}\) object

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(inout) :: this

    bnslorene object which this PROCEDURE is a member of

interface

interface

  • public module function get_bns_identifier(this)

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(in) :: this

    bnslorene object which this PROCEDURE is a member of

    Return Value double precision

interface

  • public module function get_eos1_loreneid(this)

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(in) :: this

    bnslorene object which this PROCEDURE is a member of

    Return Value integer

interface

  • public module function get_eos2_loreneid(this)

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(in) :: this

    bnslorene object which this PROCEDURE is a member of

    Return Value integer

interface

  • public module subroutine get_eos_parameters(this, i_matter, eos_params)

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(in) :: this

    bnslorene object which this PROCEDURE is a member of

    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 i_matter-th matter object

interface

  • public module function get_field_array(this, field) result(field_array)

    Returns the bnslorene member arrays named field

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(in) :: this

    bnslorene object which this PROCEDURE is a member of

    character(len=:), intent(in), ALLOCATABLE :: field

    Name of the desired bnslorene member array

    Return Value double precision, DIMENSION(:), ALLOCATABLE

    Desired bnslorene member array

interface

  • public module function get_field_value(this, field, n) result(field_value)

    Returns the component n of the bnslorene member arrays named field

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(in) :: this

    bnslorene object which this PROCEDURE is a member of

    character(len=:), intent(in), ALLOCATABLE :: field

    Name of the desired bnslorene member array

    integer, intent(in) :: n

    Component of the desired bnslorene member array

    Return Value double precision

    Component n of the desired bnslorene member array

interface

  • private subroutine get_lorene_bns_params(optr, angular_vel, distance, distance_com, mass1, mass2, mass_grav1, mass_grav2, adm_mass, linear_momentum_x, linear_momentum_y, linear_momentum_z, angular_momentum_x, angular_momentum_y, angular_momentum_z, area_radius1, radius1_x_comp, radius1_y, radius1_z, radius1_x_opp, center1_x, barycenter1_x, area_radius2, radius2_x_comp, radius2_y, radius2_z, radius2_x_opp, center2_x, barycenter2_x, ent_center1, nbar_center1, rho_center1, energy_density_center1, specific_energy_center1, pressure_center1, ent_center2, nbar_center2, rho_center2, energy_density_center2, specific_energy_center2, pressure_center2, eos1, eos2, eos1_id, eos2_id, gamma_1, kappa_1, gamma_2, kappa_2, npeos_1, gamma0_1, gamma1_1, gamma2_1, gamma3_1, kappa0_1, kappa1_1, kappa2_1, kappa3_1, logP1_1, logRho0_1, logRho1_1, logRho2_1, npeos_2, gamma0_2, gamma1_2, gamma2_2, gamma3_2, kappa0_2, kappa1_2, kappa2_2, kappa3_2, logP1_2, logRho0_2, logRho1_2, logRho2_2, eos_table1, eos_table2) bind(C, NAME= "0")

    Interface to the \(\texttt{LORENE}\) method of class \(\texttt{Bin_NS}\) with the same name, that stores the physical parameters of the binary system from \(\texttt{LORENE}\) in the desired variables

    FT


    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), intent(in), VALUE :: optr

    C pointer pointing to a \(\texttt{LORENE}\) \(\texttt{Bin_NS}\) object

    real(kind=C_DOUBLE), intent(out) :: angular_vel
    real(kind=C_DOUBLE), intent(out) :: distance
    real(kind=C_DOUBLE), intent(out) :: distance_com
    real(kind=C_DOUBLE), intent(out) :: mass1
    real(kind=C_DOUBLE), intent(out) :: mass2
    real(kind=C_DOUBLE), intent(out) :: mass_grav1
    real(kind=C_DOUBLE), intent(out) :: mass_grav2
    real(kind=C_DOUBLE), intent(out) :: adm_mass
    real(kind=C_DOUBLE), intent(out) :: linear_momentum_x
    real(kind=C_DOUBLE), intent(out) :: linear_momentum_y
    real(kind=C_DOUBLE), intent(out) :: linear_momentum_z
    real(kind=C_DOUBLE), intent(out) :: angular_momentum_x
    real(kind=C_DOUBLE), intent(out) :: angular_momentum_y
    real(kind=C_DOUBLE), intent(out) :: angular_momentum_z
    real(kind=C_DOUBLE), intent(out) :: area_radius1
    real(kind=C_DOUBLE), intent(out) :: radius1_x_comp
    real(kind=C_DOUBLE), intent(out) :: radius1_y
    real(kind=C_DOUBLE), intent(out) :: radius1_z
    real(kind=C_DOUBLE), intent(out) :: radius1_x_opp
    real(kind=C_DOUBLE), intent(out) :: center1_x
    real(kind=C_DOUBLE), intent(out) :: barycenter1_x
    real(kind=C_DOUBLE), intent(out) :: area_radius2
    real(kind=C_DOUBLE), intent(out) :: radius2_x_comp
    real(kind=C_DOUBLE), intent(out) :: radius2_y
    real(kind=C_DOUBLE), intent(out) :: radius2_z
    real(kind=C_DOUBLE), intent(out) :: radius2_x_opp
    real(kind=C_DOUBLE), intent(out) :: center2_x
    real(kind=C_DOUBLE), intent(out) :: barycenter2_x
    real(kind=C_DOUBLE), intent(out) :: ent_center1
    real(kind=C_DOUBLE), intent(out) :: nbar_center1
    real(kind=C_DOUBLE), intent(out) :: rho_center1
    real(kind=C_DOUBLE), intent(out) :: energy_density_center1
    real(kind=C_DOUBLE), intent(out) :: specific_energy_center1
    real(kind=C_DOUBLE), intent(out) :: pressure_center1
    real(kind=C_DOUBLE), intent(out) :: ent_center2
    real(kind=C_DOUBLE), intent(out) :: nbar_center2
    real(kind=C_DOUBLE), intent(out) :: rho_center2
    real(kind=C_DOUBLE), intent(out) :: energy_density_center2
    real(kind=C_DOUBLE), intent(out) :: specific_energy_center2
    real(kind=C_DOUBLE), intent(out) :: pressure_center2
    character(kind=C_CHAR, len=1), intent(out), DIMENSION(100) :: eos1
    character(kind=C_CHAR, len=1), intent(out), DIMENSION(100) :: eos2
    integer(kind=C_INT) :: eos1_id
    integer(kind=C_INT) :: eos2_id
    real(kind=C_DOUBLE), intent(out) :: gamma_1
    real(kind=C_DOUBLE), intent(out) :: kappa_1
    real(kind=C_DOUBLE), intent(out) :: gamma_2
    real(kind=C_DOUBLE), intent(out) :: kappa_2
    integer(kind=C_INT) :: npeos_1
    real(kind=C_DOUBLE), intent(out) :: gamma0_1
    real(kind=C_DOUBLE), intent(out) :: gamma1_1
    real(kind=C_DOUBLE), intent(out) :: gamma2_1
    real(kind=C_DOUBLE), intent(out) :: gamma3_1
    real(kind=C_DOUBLE), intent(out) :: kappa0_1
    real(kind=C_DOUBLE), intent(out) :: kappa1_1
    real(kind=C_DOUBLE), intent(out) :: kappa2_1
    real(kind=C_DOUBLE), intent(out) :: kappa3_1
    real(kind=C_DOUBLE), intent(out) :: logP1_1
    real(kind=C_DOUBLE), intent(out) :: logRho0_1
    real(kind=C_DOUBLE), intent(out) :: logRho1_1
    real(kind=C_DOUBLE), intent(out) :: logRho2_1
    integer(kind=C_INT) :: npeos_2
    real(kind=C_DOUBLE), intent(out) :: gamma0_2
    real(kind=C_DOUBLE), intent(out) :: gamma1_2
    real(kind=C_DOUBLE), intent(out) :: gamma2_2
    real(kind=C_DOUBLE), intent(out) :: gamma3_2
    real(kind=C_DOUBLE), intent(out) :: kappa0_2
    real(kind=C_DOUBLE), intent(out) :: kappa1_2
    real(kind=C_DOUBLE), intent(out) :: kappa2_2
    real(kind=C_DOUBLE), intent(out) :: kappa3_2
    real(kind=C_DOUBLE), intent(out) :: logP1_2
    real(kind=C_DOUBLE), intent(out) :: logRho0_2
    real(kind=C_DOUBLE), intent(out) :: logRho1_2
    real(kind=C_DOUBLE), intent(out) :: logRho2_2
    character(kind=C_CHAR, len=1), intent(out), DIMENSION(500) :: eos_table1
    character(kind=C_CHAR, len=1), intent(out), DIMENSION(500) :: eos_table2

interface

  • private subroutine get_lorene_id(optr, x, y, z, lapse, shift_x, shift_y, shift_z, g_diag, k_xx, k_xy, k_xz, k_yy, k_yz, k_zz, baryon_density, energy_density, specific_energy, pressure, v_euler_x, v_euler_y, v_euler_z) bind(C, NAME= "0")

    Interface to the \(\texttt{LORENE}\) method of class \(\texttt{Bin_NS}\) with the same name, that reads the full \(\texttt{LORENE}\) \(\mathrm{ID}\) at the specified point. That is, reads the metric fields, the components of the extrinsic curvature [c/km], and the hydro fields.

    • shift vector [c]
    • baryon mass density [kg m^{-3}]
    • energy density [kg c^2 m^{-3}]
    • pressure [kg c^2 m^{-3}]
    • specific internal energy [c^2]
    • fluid 3-velocity with respect to the Eulerian observer [c]

    FT


    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), intent(in), VALUE :: optr

    C pointer pointing to a \(\texttt{LORENE}\) \(\texttt{Bin_NS}\) object

    real(kind=C_DOUBLE), intent(in), VALUE :: x

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(in), VALUE :: y

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(in), VALUE :: z

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(out) :: lapse
    real(kind=C_DOUBLE), intent(out) :: shift_x
    real(kind=C_DOUBLE), intent(out) :: shift_y
    real(kind=C_DOUBLE), intent(out) :: shift_z
    real(kind=C_DOUBLE), intent(out) :: g_diag
    real(kind=C_DOUBLE), intent(out) :: k_xx
    real(kind=C_DOUBLE), intent(out) :: k_xy
    real(kind=C_DOUBLE), intent(out) :: k_xz
    real(kind=C_DOUBLE), intent(out) :: k_yy
    real(kind=C_DOUBLE), intent(out) :: k_yz
    real(kind=C_DOUBLE), intent(out) :: k_zz
    real(kind=C_DOUBLE), intent(out) :: baryon_density
    real(kind=C_DOUBLE), intent(out) :: energy_density
    real(kind=C_DOUBLE), intent(out) :: specific_energy
    real(kind=C_DOUBLE), intent(out) :: pressure
    real(kind=C_DOUBLE), intent(out) :: v_euler_x
    real(kind=C_DOUBLE), intent(out) :: v_euler_y
    real(kind=C_DOUBLE), intent(out) :: v_euler_z

interface

  • private subroutine get_lorene_id_hydro(optr, x, y, z, baryon_density, energy_density, specific_energy, pressure, v_euler_x, v_euler_y, v_euler_z) bind(C, NAME= "0")

    Interface to the \(\texttt{LORENE}\) method of class \(\texttt{Bin_NS}\) with the same name, that reads the hydro fields from \(\texttt{LORENE}\), at the specified point

    • baryon mass density [kg m^{-3}]
    • energy density [kg c^2 m^{-3}]
    • pressure [kg c^2 m^{-3}]
    • specific internal energy [c^2]
    • fluid 3-velocity with respect to the Eulerian observer [c]

    FT


    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), intent(in), VALUE :: optr

    C pointer pointing to a \(\texttt{LORENE}\) \(\texttt{Bin_NS}\) object

    real(kind=C_DOUBLE), intent(in), VALUE :: x

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(in), VALUE :: y

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(in), VALUE :: z

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(out) :: baryon_density
    real(kind=C_DOUBLE), intent(out) :: energy_density
    real(kind=C_DOUBLE), intent(out) :: specific_energy
    real(kind=C_DOUBLE), intent(out) :: pressure
    real(kind=C_DOUBLE), intent(out) :: v_euler_x
    real(kind=C_DOUBLE), intent(out) :: v_euler_y
    real(kind=C_DOUBLE), intent(out) :: v_euler_z

interface

  • private subroutine get_lorene_id_k(optr, x, y, z, k_xx, k_xy, k_xz, k_yy, k_yz, k_zz) bind(C, NAME= "0")

    Interface to the \(\texttt{LORENE}\) method of class \(\texttt{Bin_NS}\) with the same name, that reads the components of the extrinsic curvature [c/km] from \(\texttt{LORENE}\), at the specified point

    FT


    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), intent(in), VALUE :: optr

    C pointer pointing to a \(\texttt{LORENE}\) \(\texttt{Bin_NS}\) object

    real(kind=C_DOUBLE), intent(in), VALUE :: x

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(in), VALUE :: y

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(in), VALUE :: z

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(out) :: k_xx
    real(kind=C_DOUBLE), intent(out) :: k_xy
    real(kind=C_DOUBLE), intent(out) :: k_xz
    real(kind=C_DOUBLE), intent(out) :: k_yy
    real(kind=C_DOUBLE), intent(out) :: k_yz
    real(kind=C_DOUBLE), intent(out) :: k_zz

interface

  • private subroutine get_lorene_id_mass_b(optr, x, y, z, g_diag, baryon_density, gamma_euler) bind(C, NAME= "0")

    Interface to the \(\texttt{LORENE}\) method of class \(\texttt{Bin_NS}\) with the same name, that reads the hydro fields and the metric fields from \(\texttt{LORENE}\), at the specified point, needed to compute the baryon mass.

    • shift vector [c]
    • baryon mass density [kg m^{-3}]
    • fluid 3-velocity with respect to the Eulerian observer [c]

    FT


    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), intent(in), VALUE :: optr

    C pointer pointing to a \(\texttt{LORENE}\) \(\texttt{Bin_NS}\) object

    real(kind=C_DOUBLE), intent(in), VALUE :: x

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(in), VALUE :: y

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(in), VALUE :: z

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(out) :: g_diag

    at

    real(kind=C_DOUBLE), intent(out) :: baryon_density

    Baryon mass density at

    real(kind=C_DOUBLE), intent(out) :: gamma_euler

    Relative Lorentz factor between the 4-velocity of the fluid wrt the Eulerian observer and the 4-velocity of the Eulerian observer at

interface

  • private subroutine get_lorene_id_particles(optr, x, y, z, lapse, shift_x, shift_y, shift_z, g_diag, baryon_density, energy_density, specific_energy, pressure, v_euler_x, v_euler_y, v_euler_z) bind(C, NAME= "0")

    Interface to the \(\texttt{LORENE}\) method of class \(\texttt{Bin_NS}\) with the same name, that reads the hydro fields and the metric fields * from \(\texttt{LORENE}\), at the specified point

    • shift vector [c]
    • baryon mass density [kg m^{-3}]
    • energy density [kg c^2 m^{-3}]
    • pressure [kg c^2 m^{-3}]
    • specific internal energy [c^2]
    • fluid 3-velocity with respect to the Eulerian observer [c]

    FT


    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), intent(in), VALUE :: optr

    C pointer pointing to a \(\texttt{LORENE}\) \(\texttt{Bin_NS}\) object

    real(kind=C_DOUBLE), intent(in), VALUE :: x

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(in), VALUE :: y

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(in), VALUE :: z

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(out) :: lapse
    real(kind=C_DOUBLE), intent(out) :: shift_x
    real(kind=C_DOUBLE), intent(out) :: shift_y
    real(kind=C_DOUBLE), intent(out) :: shift_z
    real(kind=C_DOUBLE), intent(out) :: g_diag
    real(kind=C_DOUBLE), intent(out) :: baryon_density
    real(kind=C_DOUBLE), intent(out) :: energy_density
    real(kind=C_DOUBLE), intent(out) :: specific_energy
    real(kind=C_DOUBLE), intent(out) :: pressure
    real(kind=C_DOUBLE), intent(out) :: v_euler_x
    real(kind=C_DOUBLE), intent(out) :: v_euler_y
    real(kind=C_DOUBLE), intent(out) :: v_euler_z

interface

  • private subroutine get_lorene_id_spacetime(optr, x, y, z, lapse, shift_x, shift_y, shift_z, g_diag, k_xx, k_xy, k_xz, k_yy, k_yz, k_zz) bind(C, NAME= "0")

    Interface to the \(\texttt{LORENE}\) method of class \(\texttt{Bin_NS}\) with the same name, that reads the metric fields and the components of the extrinsic curvature [c/km] from \(\texttt{LORENE}\), at the specified point

    FT


    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), intent(in), VALUE :: optr

    C pointer pointing to a \(\texttt{LORENE}\) \(\texttt{Bin_NS}\) object

    real(kind=C_DOUBLE), intent(in), VALUE :: x

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(in), VALUE :: y

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(in), VALUE :: z

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(out) :: lapse
    real(kind=C_DOUBLE), intent(out) :: shift_x
    real(kind=C_DOUBLE), intent(out) :: shift_y
    real(kind=C_DOUBLE), intent(out) :: shift_z
    real(kind=C_DOUBLE), intent(out) :: g_diag
    real(kind=C_DOUBLE), intent(out) :: k_xx
    real(kind=C_DOUBLE), intent(out) :: k_xy
    real(kind=C_DOUBLE), intent(out) :: k_xz
    real(kind=C_DOUBLE), intent(out) :: k_yy
    real(kind=C_DOUBLE), intent(out) :: k_yz
    real(kind=C_DOUBLE), intent(out) :: k_zz

interface

  • private function get_lorene_mass_density(optr, x, y, z) result(res) bind(C, NAME= "get_mass_density")

    Interface to the \(\texttt{LORENE}\) method of class \(\texttt{Bin_NS}\) with the same name, that returns the baryon mass density from \(\texttt{LORENE}\), at the specified point

    FT


    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), intent(in), VALUE :: optr

    C pointer pointing to a \(\texttt{LORENE}\) \(\texttt{Bin_NS}\) object

    real(kind=C_DOUBLE), intent(in), VALUE :: x

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(in), VALUE :: y

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(in), VALUE :: z

    coordinate of the desired point

    Return Value real(kind=C_DOUBLE)

    Baryon mass density at the desired point

interface

  • private function get_lorene_pressure(optr, x, y, z) result(res) bind(C, NAME= "get_bns_pressure")

    Interface to the \(\texttt{LORENE}\) method of class \(\texttt{Bin_NS}\) with the same name, that returns the pressure from \(\texttt{LORENE}\), at the specified point

    FT 11.02.2022


    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), intent(in), VALUE :: optr

    C pointer pointing to a \(\texttt{LORENE}\) \(\texttt{Bin_NS}\) object

    real(kind=C_DOUBLE), intent(in), VALUE :: x

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(in), VALUE :: y

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(in), VALUE :: z

    coordinate of the desired point

    Return Value real(kind=C_DOUBLE)

    Pressure at the desired point

interface

  • private function get_lorene_spatial_metric(optr, x, y, z) result(res) bind(C, NAME= "get_lorene_id_g")

    Interface to the \(\texttt{LORENE}\) method of class \(\texttt{Bin_NS}\) with the same name, that returns the diagonal components of the metric, all equal to the \(\texttt{LORENE}\) conformal factor to the 4th power.

    FT


    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), intent(in), VALUE :: optr

    C pointer pointing to a \(\texttt{LORENE}\) \(\texttt{Bin_NS}\) object

    real(kind=C_DOUBLE), intent(in), VALUE :: x

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(in), VALUE :: y

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(in), VALUE :: z

    coordinate of the desired point

    Return Value real(kind=C_DOUBLE)

    Spatial metric component at the point

interface

  • public module function is_hydro_positive(this, x, y, z) result(res)

    Returns 1 if the energy density or the specific energy or the pressure are negative, 0 otherwise

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(in) :: this

    bnslorene object 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

    Return Value logical

    .TRUE. if the energy density or the specific energy or the pressure are negative, .FALSE. otherwise

interface

  • public module subroutine nothing(this, flag, switch)

    Procedure that does nothing. It is used to instantiate a deferred idbase procedure which is not needed in TYPE bnslorene. It also serves as a placeholder in case the idbase procedure will be needed in the future.

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(inout) :: this
    integer, intent(in) :: flag

    Identifies what kind of initialization has to be done

    logical, intent(in), optional :: switch

    If .TRUE., switch to a different initialization

interface

  • private function positive_hydro(optr, x, y, z) result(res) bind(C, NAME= "is_hydro_positive")

    Interface to the \(\texttt{LORENE}\) method of class \(\texttt{Bin_NS}\) with the same name, that returns 1 if the energy density is positive, and if the specific energy is positive, and if the pressure is positive, at the specified point; it returns 0 otherwise

    FT 12.03.2021


    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), intent(in), VALUE :: optr

    C pointer pointing to a \(\texttt{LORENE}\) \(\texttt{Bin_NS}\) object

    real(kind=C_DOUBLE), intent(in), VALUE :: x

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(in), VALUE :: y

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(in), VALUE :: z

    coordinate of the desired point

    Return Value integer(kind=C_INT)

    1 if the energy density or the specific energy or the pressure are positve, 0 otherwise

interface

  • public module subroutine print_bns_properties(this)

    Prints the \(\mathrm{BNS}\) parameters to the standard output

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(inout) :: this

    bnslorene object which this PROCEDURE is a member of

interface

  • public module subroutine print_summary_bnslorene(this, filename)

    Prints a summary of the physical properties of the \(\mathrm{BNS}\) produced by \(\texttt{LORENE}\) to the standard output and, optionally, to a formatted file whose name is given as the optional argument filename

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(in) :: this
    character(len=*), intent(inout), optional :: filename

    Name of the formatted file to print the summary to

interface

  • public module subroutine read_bns_properties(this)

    Imports the \(\mathrm{BNS}\) properties from \(\texttt{LORENE}\)

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(inout) :: this

    bnslorene object which this PROCEDURE is a member of

interface

  • public module function read_bnslorene_mass_density(this, x, y, z) result(res)

    Returns the \(\texttt{LORENE}\) baryon mass density at a point

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(in) :: this

    bnslorene object 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

    Return Value double precision

    Baryon mass density at

interface

  • public module function read_bnslorene_pressure(this, x, y, z) result(res)

    Returns the \(\texttt{LORENE}\) pressure at a point

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(in) :: this

    bnslorene object 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

    Return Value double precision

    Pressure at

interface

  • public module subroutine read_id_full(this, n, x, y, z, lapse, shift_x, shift_y, shift_z, g_xx, g_xy, g_xz, g_yy, g_yz, g_zz, k_xx, k_xy, k_xz, k_yy, k_yz, k_zz, baryon_density, energy_density, specific_energy, pressure, u_euler_x, u_euler_y, u_euler_z)

    Stores the \(\mathrm{ID}\) in non bnslorene-member arrays with the same shape as the bnslorene member arrays

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(inout) :: this

    bnslorene 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

interface

  • public module subroutine read_id_hydro(this, nx, ny, nz, pos, baryon_density, energy_density, specific_energy, pressure, u_euler)

    Stores the hydro \(\mathrm{ID}\) in the arrays needed to compute the constraints on the refined mesh

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(inout) :: this

    bnslorene 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

interface

  • public module subroutine read_id_int(this, n, x, y, z)

    Stores the \(\mathrm{ID}\) in the bnslorene member arrays

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(inout) :: this

    bnslorene 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

interface

  • public module subroutine read_id_k(this, n, x, y, z, k_xx, k_xy, k_xz, k_yy, k_yz, k_zz)

    Stores the components of the extrinsic curvature in arrays

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(inout) :: this

    bnslorene 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

interface

  • public module subroutine read_id_mass_b(this, x, y, z, g, baryon_density, gamma_euler)

    Stores the hydro \(\mathrm{ID}\) in the arrays needed to compute the baryon mass

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(inout) :: this

    bnslorene object 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

interface

  • public module subroutine read_id_particles(this, n, x, y, z, lapse, shift_x, shift_y, shift_z, g_xx, g_xy, g_xz, g_yy, g_yz, g_zz, baryon_density, energy_density, specific_energy, pressure, u_euler_x, u_euler_y, u_euler_z)

    Stores the hydro \(\mathrm{ID}\) in the arrays needed to compute the \(\mathrm{SPH}\) \(\mathrm{ID}\)

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(inout) :: this

    bnslorene object which this PROCEDURE is a member of

    integer, intent(in) :: n
    real(kind=C_DOUBLE), intent(in), DIMENSION(:) :: x
    real(kind=C_DOUBLE), intent(in), DIMENSION(:) :: y
    real(kind=C_DOUBLE), 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

interface

  • public module subroutine read_id_spacetime(this, nx, ny, nz, pos, lapse, shift, g, ek)

    Stores the spacetime \(\mathrm{ID}\) in multi-dimensional arrays needed to compute the BSSN variables and constraints

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(inout) :: this

    bnslorene 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

interface

  • public module function read_spatial_metric(this, x, y, z) result(res)

    Returns the \(\texttt{LORENE}\) conformally flat spatial metric component at a point

    Arguments

    Type IntentOptional Attributes Name
    class(bnslorene), intent(in) :: this

    bnslorene object which this PROCEDURE is a member of

    real(kind=C_DOUBLE), intent(in), VALUE :: x

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(in), VALUE :: y

    coordinate of the desired point

    real(kind=C_DOUBLE), intent(in), VALUE :: z

    coordinate of the desired point

    Return Value real(kind=C_DOUBLE)

    at


Derived Types

type, public, extends(bnsbase) ::  bnslorene

TYPE representing a binary system of neutron stars (\(\mathrm{BNS}\)) produced with \(\texttt{LORENE}\)

Components

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

Read more…
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

Read more…
double precision, private, DIMENSION(:), ALLOCATABLE :: baryon_density

1-D array storing the baryon mass density in the fluid frame [kg m^{-3}]

integer, private :: bns_identifier = 0

Identifier of the bnslorene object

type(C_PTR), private :: bns_ptr

C pointer to the \(\texttt{LORENE}\)'s \(\texttt{Bin_NS}\) object N.B. This variable is global. The pointer to the second \(\texttt{LORENE}\) \(\texttt{Bin_NS}\) object will overwrite the first one, and so on. This variable stores the pointer to the last defined \(\texttt{LORENE}\) \(\texttt{Bin_NS}\) object. That's why it is not freed in the destructor of a bns object. Presently, it has to be freed by the user at the end of the PROGRAM. See the last part of the PROGRAM in setup_lorene_id.f90, for example.

double precision, public, DIMENSION(2,3) :: center

Array containing the centers of the stars

Read more…
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, private, DIMENSION(:), ALLOCATABLE :: energy_density

1-D array storing the energy density [kg c^2 m^{-3}]

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

integer, private :: eos1_loreneid

\(\texttt{LORENE}\) 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

integer, private :: eos2_loreneid

\(\texttt{LORENE}\) 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]

Read more…
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, private, DIMENSION(:), ALLOCATABLE :: pressure

1-D array storing the pressure

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

Read more…
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, private, DIMENSION(:), ALLOCATABLE :: specific_energy

1-D array storing the specific internal energy [c^2]

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.

Read more…
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.

Read more…
double precision, private, DIMENSION(:), ALLOCATABLE :: v_euler_x

1-D array storing the x component of the fluid 3-velocity with respect to

double precision, private, DIMENSION(:), ALLOCATABLE :: v_euler_y

1-D array storing the y component of the fluid 3-velocity with respect to

double precision, private, DIMENSION(:), ALLOCATABLE :: v_euler_z

1-D array storing the z component of the fluid 3-velocity with respect to

Finalizations Procedures

final :: destruct_bnslorene

Finalizer (Destructor) of a bnslorene object

Type-Bound Procedures

procedure , public :: allocate_bnslorene_memory Interface

Allocates memory for the bnslorene member arrays

procedure , public , NON_OVERRIDABLE :: check_i_matter Interface

Checks that the given index is between 1 and n_matter, included. If not, it stops the execution of the program.

procedure , public :: construct_binary Interface

Constructs the \(\texttt{LORENE}\) \(\texttt{Bin_NS}\) object

procedure , public , NOPASS :: correct_adm_linear_momentum Interface

Corrects the \(\mathrm{SPH}\) \(\mathrm{ID}\) so that the linear momentum is zero

procedure , public :: deallocate_bnslorene_memory Interface

Deallocates memory for the bnslorene member arrays

procedure , public :: derived_type_constructor => construct_bnslorene Interface
procedure , public :: destruct_binary Interface

Destructs the \(\texttt{LORENE}\) \(\texttt{Bin_NS}\) object

procedure , public :: estimate_lengthscale_field Interface

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.

procedure , public , NON_OVERRIDABLE :: find_center Interface

Finds the center of a matter object, as the point where the density is maximal.

procedure , public , NON_OVERRIDABLE :: find_print_surfaces Interface

Finds the surfaces of the stars, and prints them to a formatted file.

procedure , public , NON_OVERRIDABLE :: find_radius Interface

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 , public , NON_OVERRIDABLE :: find_surface Interface

Finds the surface of a star, using [[bnsbase::find_radius]] along many directions.

procedure , public :: get_adm_mass Interface

Returns adm_mass

procedure , public :: get_angular_momentum Interface

Returns the angular momentum vector angular_momentum_x, angular_momentum_y, angular_momentum_z

procedure , public :: get_angular_vel Interface

Returns angular_vel

procedure , public :: get_barycenter1_x Interface

Returns barycenter1_x

procedure , public :: get_barycenter2_x Interface

Returns barycenter2_x

procedure , public :: get_bns_identifier Interface

Returns bns_identifier

procedure , public :: get_center1_x Interface

Returns center1_x

procedure , public :: get_center2_x Interface

Returns center2_x

procedure , public , NON_OVERRIDABLE :: get_cold_system Interface

Returns cold_system, the LOGICAL variable that specifies if the system is cold (no thermal component)

procedure , public :: get_distance Interface

Returns distance

procedure , public :: get_distance_com Interface

Returns distance_com

procedure , public :: get_energy_density_center1 Interface

Returns energy_density_center1

procedure , public :: get_energy_density_center2 Interface

Returns energy_density_center2

procedure , public :: get_ent_center1 Interface

Returns ent_center1

procedure , public :: get_ent_center2 Interface

Returns ent_center2

procedure , public :: get_eos1 Interface

Returns eos1

procedure , public :: get_eos1_id => get_eos1_loreneid Interface

Returns the \(\texttt{LORENE}\) identifier for the EOS of star 1

procedure , public :: get_eos1_loreneid Interface

Returns eos1_loreneid

procedure , public :: get_eos2 Interface

Returns eos2

procedure , public :: get_eos2_id => get_eos2_loreneid Interface

Returns the \(\texttt{LORENE}\) identifier for the EOS of star 2

procedure , public :: get_eos2_loreneid Interface

Returns eos2_loreneid

procedure , public :: get_eos_id Interface

Returns eos1_id or eos2_id

procedure , public , NON_OVERRIDABLE :: get_estimate_length_scale Interface

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

procedure , public :: get_fa => get_field_array Interface

Access the bnslorene-member arrays

generic, public :: get_field => get_fa, get_fv

GENERIC PROCEDURE, overloded to access the bnslorene-member variables as arrays and as values

procedure , public :: get_fv => get_field_value Interface

Access the components of the bnslorene-member arrays

procedure , public :: get_gamma0_1 Interface

Returns gamma0_1

procedure , public :: get_gamma0_2 Interface

Returns gamma0_2

procedure , public :: get_gamma1_1 Interface

Returns gamma1_1

procedure , public :: get_gamma1_2 Interface

Returns gamma1_2

procedure , public :: get_gamma2_1 Interface

Returns gamma2_1

procedure , public :: get_gamma2_2 Interface

Returns gamma2_2

procedure , public :: get_gamma3_1 Interface

Returns gamma3_1

procedure , public :: get_gamma3_2 Interface

Returns gamma3_2

procedure , public :: get_gamma_1 Interface

Returns gamma_1

procedure , public :: get_gamma_2 Interface

Returns gamma_2

procedure , public :: get_grav_mass1 Interface

Returns mass_grav1

procedure , public :: get_grav_mass2 Interface

Returns mass_grav2

procedure , public :: get_kappa0_1 Interface

Returns kappa0_1

procedure , public :: get_kappa0_2 Interface

Returns kappa0_2

procedure , public :: get_kappa1_1 Interface

Returns kappa1_1

procedure , public :: get_kappa1_2 Interface

Returns kappa1_2

procedure , public :: get_kappa2_1 Interface

Returns kappa2_1

procedure , public :: get_kappa2_2 Interface

Returns kappa2_2

procedure , public :: get_kappa3_1 Interface

Returns kappa3_1

procedure , public :: get_kappa3_2 Interface

Returns kappa3_2

procedure , public :: get_kappa_1 Interface

Returns kappa_1

procedure , public :: get_kappa_2 Interface

Returns kappa_2

procedure , public :: get_linear_momentum Interface

Returns the linear momentum vector linear_momentum_x, linear_momentum_y, linear_momentum_z

procedure , public :: get_logP1_1 Interface

Returns logP1_1

procedure , public :: get_logP1_2 Interface

Returns logP1_2

procedure , public :: get_logRho0_1 Interface

Returns logRho0_1

procedure , public :: get_logRho0_2 Interface

Returns logRho0_2

procedure , public :: get_logRho1_1 Interface

Returns logRho1_1

procedure , public :: get_logRho1_2 Interface

Returns logRho1_2

procedure , public :: get_logRho2_1 Interface

Returns logRho2_1

procedure , public :: get_logRho2_2 Interface

Returns logRho2_2

procedure , public :: get_mass1 Interface

Returns mass1

procedure , public :: get_mass2 Interface

Returns mass2

procedure , public , NON_OVERRIDABLE :: get_n_matter Interface

Returns n_matter, the number of matter objects in the physical system

procedure , public :: get_nbar_center1 Interface

Returns nbar_center1

procedure , public :: get_nbar_center2 Interface

Returns nbar_center2

procedure , public :: get_npeos_1 Interface

Returns npeos_1

procedure , public :: get_npeos_2 Interface

Returns npeos_2

procedure , public , NON_OVERRIDABLE :: get_one_lapse Interface

Returns one_lapse, the LOGICAL variable that determines if the lapse function , i.e., if the geodesic gauge is to be used

procedure , public :: get_pressure_center1 Interface

Returns pressure_center1

procedure , public :: get_pressure_center2 Interface

Returns pressure_center2

procedure , public :: get_radius1_x_comp Interface

Returns radius1_x_comp

procedure , public :: get_radius1_x_opp Interface

Returns radius1_x_opp

procedure , public :: get_radius1_y Interface

Returns radius1_y

procedure , public :: get_radius1_z Interface

Returns radius1_z

procedure , public :: get_radius2_x_comp Interface

Returns radius2_x_comp

procedure , public :: get_radius2_x_opp Interface

Returns radius2_x_opp

procedure , public :: get_radius2_y Interface

Returns radius2_y

procedure , public :: get_radius2_z Interface

Returns radius2_y

procedure , public :: get_rho_center1 Interface

Returns rho_center1

procedure , public :: get_rho_center2 Interface

Returns rho_center2

procedure , public :: get_specific_energy_center1 Interface

Returns specific_energy_center1

procedure , public :: get_specific_energy_center2 Interface

Returns specific_energy_center2

procedure , public , NON_OVERRIDABLE :: get_total_spatial_extent Interface

Returns the spatial extent of the physical system considered, as the array of 6 numbers

procedure , public , NON_OVERRIDABLE :: get_zero_shift Interface

Returns zero_shift, the LOGICAL variable that determines if the shift

procedure , public , NON_OVERRIDABLE :: initialize Interface

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.

procedure , public :: initialize_id => nothing Interface
procedure , public :: integrate_baryon_mass_density Interface

Integrates the baryon mass density over a matter object, using spherical coordinates, and computes its radial profile inside the star

procedure , public :: nothing Interface

Procedure that does nothing. It is used to instantiate a deferred idbase procedure which is not needed in TYPE bnslorene. It also serves as a placeholder in case the idbase procedure will be needed in the future.

procedure , public :: print_bns_properties Interface

Prints the parameters of the \(\mathrm{BNS}\) to the standard output

procedure , public :: print_summary => print_summary_bnsbase Interface
procedure , public :: print_summary_derived => print_summary_bnslorene Interface
procedure , public :: read_bns_properties Interface

Imports the parameters of the \(\mathrm{BNS}\) from \(\texttt{LORENE}\)

Read more…
procedure , public :: read_id_full Interface
procedure , public :: read_id_hydro Interface
procedure , public :: read_id_int Interface

Stores the \(\mathrm{ID}\) in the bnslorene member arrays

procedure , public :: read_id_k Interface
procedure , public :: read_id_mass_b Interface
procedure , public :: read_id_particles Interface
procedure , public :: read_id_spacetime Interface
procedure , public :: read_mass_density => read_bnslorene_mass_density Interface

Returns the \(\texttt{LORENE}\)'s mass density at the desired point

procedure , public :: read_pressure => read_bnslorene_pressure Interface

Returns the \(\texttt{LORENE}\)'s pressure at the desired point

procedure , public :: read_spatial_metric Interface

Returns the \(\texttt{LORENE}\)'s conformally flat spatial ADM metric

procedure , public :: return_adm_mass => get_adm_mass Interface
procedure , public :: return_barycenter => get_barycenter Interface
procedure , public :: return_center => get_center Interface
procedure , public :: return_eos_name => get_eos Interface
procedure , public :: return_eos_parameters => get_eos_parameters Interface
procedure , public :: return_mass => get_mass Interface
procedure , public :: return_spatial_extent => get_radii Interface
procedure , public , NON_OVERRIDABLE :: sanity_check Interface

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.

procedure , public , NON_OVERRIDABLE :: set_cold_system Interface

Sets cold_system, the LOGICAL variable that specifies if the system is cold (no thermal component)

procedure , public , NON_OVERRIDABLE :: set_estimate_length_scale Interface

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

procedure , public , NON_OVERRIDABLE :: set_n_matter Interface

Sets n_matter, the number of matter objects in the physical system, to a value

procedure , public , NON_OVERRIDABLE :: set_one_lapse Interface

Sets one_lapse, the LOGICAL variable that determines if the lapse , i.e., if the geodesic gauge is to be used

procedure , public , NON_OVERRIDABLE :: set_zero_shift Interface

Sets zero_shift, the LOGICAL variable that determines if the shift

procedure , public :: test_position => is_hydro_positive Interface

Returns 1 if the energy density or the specific energy or the pressure are negative