bns_fuka Module

This module contains the definition of TYPE bnsfuka, and the SUBROUTINES that bind to the methods of \(\texttt{FUKA}\)'s procedures

\(\texttt{FUKA}\) official site



Uses

  • module~~bns_fuka~~UsesGraph module~bns_fuka bns_fuka iso_c_binding iso_c_binding module~bns_fuka->iso_c_binding mesh_refinement mesh_refinement module~bns_fuka->mesh_refinement module~bns_base bns_base module~bns_fuka->module~bns_base module~id_base id_base module~bns_fuka->module~id_base module~utility utility module~bns_fuka->module~utility timing timing module~bns_fuka->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_fuka~~UsedByGraph module~bns_fuka bns_fuka module~access~5 access module~access~5->module~bns_fuka module~constructor~3 constructor module~constructor~3->module~bns_fuka module~interpolate interpolate module~interpolate->module~bns_fuka module~io~6 io module~io~6->module~bns_fuka module~memory~4 memory module~memory~4->module~bns_fuka module~properties~2 properties module~properties~2->module~bns_fuka module~read~2 read module~read~2->module~bns_fuka module~sphincs_id_fuka sphincs_id_fuka module~sphincs_id_fuka->module~bns_fuka module~sphincs_id_full sphincs_id_full module~sphincs_id_full->module~bns_fuka program~convergence_test convergence_test program~convergence_test->module~sphincs_id_fuka program~convergence_test->module~sphincs_id_full program~sphincs_id sphincs_id program~sphincs_id->module~sphincs_id_fuka program~sphincs_id->module~sphincs_id_full

Contents


Variables

Type Visibility Attributes Name Initial
integer, public, parameter :: id$eulvelx = 23
integer, public, parameter :: id$eulvely = 24
integer, public, parameter :: id$eulvelz = 25
integer, public, parameter :: id$gxx = 8
integer, public, parameter :: id$gxy = 9
integer, public, parameter :: id$gxz = 10
integer, public, parameter :: id$gyy = 11
integer, public, parameter :: id$gyz = 12
integer, public, parameter :: id$gzz = 13
integer, public, parameter :: id$kxx = 14
integer, public, parameter :: id$kxy = 15
integer, public, parameter :: id$kxz = 16
integer, public, parameter :: id$kyy = 17
integer, public, parameter :: id$kyz = 18
integer, public, parameter :: id$kzz = 19
integer, public, parameter :: id$lapse = 4
integer, public, parameter :: id$massdensity = 20
integer, public, parameter :: id$pressure = 22
integer, public, parameter :: id$shiftx = 5
integer, public, parameter :: id$shifty = 6
integer, public, parameter :: id$shiftz = 7
integer, public, parameter :: id$specificenergy = 21
integer, public, parameter :: id$x = 1
integer, public, parameter :: id$y = 2
integer, public, parameter :: id$z = 3
integer, public, parameter :: max$tpo = 20

Maximum number of tpo objects that can be constructed using a bnsfuka object

integer, public, parameter :: n_fields_fuka = 25

Interfaces

interface

  • public module subroutine allocate_bnsfuka_memory(this, d)

    Allocates allocatable arrays member of a bnsfuka object

    Arguments

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

    bnsfuka object which this PROCEDURE is a member of

    integer, intent(in) :: d

    Dimension of the arrays

interface

  • public module subroutine construct_binary(this, fukafile)

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

    Arguments

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

    bnsfuka object which this PROCEDURE is a member of

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

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

interface

  • private function construct_bns_fuka(fuka_file) result(optr) bind(C, NAME= "construct_bns_fuka")

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

    FT


    Arguments

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

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

    Return Value type(C_PTR)

    C pointer pointing to the constructed \(\texttt{FUKA}\) BNS_export object

interface

  • public module subroutine construct_bnsfuka(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(bnsfuka), intent(out) :: derived_type

    Constructed bnsfuka object

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

    \(\texttt{FUKA}\) 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 deallocate_bnsfuka_memory(this)

    Deallocates allocatable arrays member of a bnsfuka object

    Arguments

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

    bnsfuka object which this PROCEDURE is a member of

interface

  • public module subroutine destruct_binary(this)

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

    Arguments

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

    bnsfuka object which this PROCEDURE is a member of

interface

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

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

    FT


    Arguments

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

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

interface

  • public module subroutine destruct_bnsfuka(this)

    Destruct a bnsfuka object

    Arguments

    Type IntentOptional Attributes Name
    type(bnsfuka), intent(inout) :: this

    bnsfuka object to be destructed

interface

  • public module subroutine finalize(npart, pos, nlrf, u, pr, vel_u, theta, nstar, nu)

    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

interface

  • public module function get_bns_identifier(this)

    Arguments

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

    bnsfuka object which this PROCEDURE is a member of

    Return Value double precision

interface

  • public module function get_eos1_fukaid(this)

    Arguments

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

    bnsfuka object which this PROCEDURE is a member of

    Return Value integer

interface

  • public module function get_eos2_fukaid(this)

    Arguments

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

    bnsfuka 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(bnsfuka), intent(in) :: this

    bnsfuka 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 bnsfuka member arrays named field

    Arguments

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

    bnsfuka object which this PROCEDURE is a member of

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

    Name of the desired bnsfuka member array

    Return Value double precision, DIMENSION(:), ALLOCATABLE

    Desired bnsfuka member array

interface

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

    Returns the component n of the bnsfuka member arrays named field

    Arguments

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

    bnsfuka object which this PROCEDURE is a member of

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

    Name of the desired bnsfuka member array

    integer, intent(in) :: n

    Component of the desired bnsfuka member array

    Return Value double precision

    Component n of the desired bnsfuka member array

interface

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

    Interface to the \(\texttt{FUKA}\) method of class \(\texttt{Bin_NS}\) with the same name, that reads the full \(\texttt{FUKA}\) \(\mathrm{ID}\) at the specified point. That is, read_fukas 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{FUKA}\) \(\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) :: psi4
    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) :: mass_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_fuka_id_hydro(optr, x, y, z, mass_density, specific_energy, pressure, v_euler_x, v_euler_y, v_euler_z) bind(C, NAME= "0")

    Interface to the \(\texttt{FUKA}\) method of class \(\texttt{Bin_NS}\) with the same name, that reads the hydro fields from \(\texttt{FUKA}\), 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{FUKA}\) \(\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) :: mass_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_fuka_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{FUKA}\) method of class \(\texttt{Bin_NS}\) with the same name, that reads the components of the extrinsic curvature [c/km] from \(\texttt{FUKA}\), at the specified point

    FT


    Arguments

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

    C pointer pointing to a \(\texttt{FUKA}\) \(\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_fuka_id_mass_b(optr, x, y, z, psi4, mass_density, gamma_euler) bind(C, NAME= "0")

    Interface to the \(\texttt{FUKA}\) method of class \(\texttt{Bin_NS}\) with the same name, that reads the hydro fields and the metric fields from \(\texttt{FUKA}\), 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{FUKA}\) \(\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) :: psi4

    at

    real(kind=C_DOUBLE), intent(out) :: mass_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_fuka_id_params(optr, angular_vel, distance, mass1, mass2, massg1, massg2, radius1_min, radius1_max, radius2_min, radius2_max, adm_mass, komar_mass, adm_linear_momentum_x, adm_linear_momentum_y, adm_linear_momentum_z, adm_angular_momentum_z, COMx, COMy, COMz, area_radius1, center1_x, area_radius2, center2_x, ent_center1, rho_center1, energy_density_center1, ent_center2, rho_center2, energy_density_center2, eos_type_1, eos_file_1, eos_type_2, eos_file_2, gamma, kappa, n_poly, gamma0, gamma1, gamma2, gamma3, kappa0, kappa1, kappa2, kappa3, logP1, logRho0, logRho1, logRho2) bind(C, NAME= "0")

    FT


    Arguments

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

    C pointer pointing to a \(\texttt{FUKA}\) bns_export object

    real(kind=C_DOUBLE), intent(out) :: angular_vel
    real(kind=C_DOUBLE), intent(out) :: distance
    real(kind=C_DOUBLE), intent(out) :: mass1
    real(kind=C_DOUBLE), intent(out) :: mass2
    real(kind=C_DOUBLE), intent(out) :: massg1
    real(kind=C_DOUBLE), intent(out) :: massg2
    real(kind=C_DOUBLE), intent(out) :: radius1_min
    real(kind=C_DOUBLE), intent(out) :: radius1_max
    real(kind=C_DOUBLE), intent(out) :: radius2_min
    real(kind=C_DOUBLE), intent(out) :: radius2_max
    real(kind=C_DOUBLE), intent(out) :: adm_mass
    real(kind=C_DOUBLE), intent(out) :: komar_mass
    real(kind=C_DOUBLE), intent(out) :: adm_linear_momentum_x
    real(kind=C_DOUBLE), intent(out) :: adm_linear_momentum_y
    real(kind=C_DOUBLE), intent(out) :: adm_linear_momentum_z
    real(kind=C_DOUBLE), intent(out) :: adm_angular_momentum_z
    real(kind=C_DOUBLE), intent(out) :: COMx
    real(kind=C_DOUBLE), intent(out) :: COMy
    real(kind=C_DOUBLE), intent(out) :: COMz
    real(kind=C_DOUBLE), intent(out) :: area_radius1
    real(kind=C_DOUBLE), intent(out) :: center1_x
    real(kind=C_DOUBLE), intent(out) :: area_radius2
    real(kind=C_DOUBLE), intent(out) :: center2_x
    real(kind=C_DOUBLE), intent(out) :: ent_center1
    real(kind=C_DOUBLE), intent(out) :: rho_center1
    real(kind=C_DOUBLE), intent(out) :: energy_density_center1
    real(kind=C_DOUBLE), intent(out) :: ent_center2
    real(kind=C_DOUBLE), intent(out) :: rho_center2
    real(kind=C_DOUBLE), intent(out) :: energy_density_center2
    character(kind=C_CHAR, len=1), intent(out), DIMENSION(100) :: eos_type_1
    character(kind=C_CHAR, len=1), intent(out), DIMENSION(100) :: eos_file_1
    character(kind=C_CHAR, len=1), intent(out), DIMENSION(100) :: eos_type_2
    character(kind=C_CHAR, len=1), intent(out), DIMENSION(100) :: eos_file_2
    real(kind=C_DOUBLE), intent(out) :: gamma
    real(kind=C_DOUBLE), intent(out) :: kappa
    integer(kind=C_INT), intent(out) :: n_poly
    real(kind=C_DOUBLE), intent(out) :: gamma0
    real(kind=C_DOUBLE), intent(out) :: gamma1
    real(kind=C_DOUBLE), intent(out) :: gamma2
    real(kind=C_DOUBLE), intent(out) :: gamma3
    real(kind=C_DOUBLE), intent(out) :: kappa0
    real(kind=C_DOUBLE), intent(out) :: kappa1
    real(kind=C_DOUBLE), intent(out) :: kappa2
    real(kind=C_DOUBLE), intent(out) :: kappa3
    real(kind=C_DOUBLE), intent(out) :: logP1
    real(kind=C_DOUBLE), intent(out) :: logRho0
    real(kind=C_DOUBLE), intent(out) :: logRho1
    real(kind=C_DOUBLE), intent(out) :: logRho2

interface

  • private subroutine get_fuka_id_particles(optr, x, y, z, lapse, shift_x, shift_y, shift_z, psi4, mass_density, specific_energy, pressure, v_euler_x, v_euler_y, v_euler_z) bind(C, NAME= "0")

    Interface to the \(\texttt{FUKA}\) method of class \(\texttt{Bin_NS}\) with the same name, that reads the hydro fields and the metric fields * from \(\texttt{FUKA}\), 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{FUKA}\) \(\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) :: psi4
    real(kind=C_DOUBLE), intent(out) :: mass_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_fuka_id_spacetime(optr, x, y, z, lapse, shift_x, shift_y, shift_z, psi4, k_xx, k_xy, k_xz, k_yy, k_yz, k_zz) bind(C, NAME= "0")

    Interface to the \(\texttt{FUKA}\) 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{FUKA}\), at the specified point

    FT


    Arguments

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

    C pointer pointing to a \(\texttt{FUKA}\) \(\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) :: psi4
    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_fuka_mass_density(optr, x, y, z) result(res) bind(C, NAME= "get_fuka_mass_density")

    FT


    Arguments

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

    C pointer pointing to a \(\texttt{FUKA}\) \(\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_fuka_pressure(optr, x, y, z) result(res) bind(C, NAME= "get_fuka_pressure")

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

    FT 27.05.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_fuka_spatial_metric(optr, x, y, z) result(res) bind(C, NAME= "get_fuka_g")

    FT


    Arguments

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

    C pointer pointing to a \(\texttt{FUKA}\) \(\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 recursive module subroutine initialize_id_bnsfuka(this, flag, switch)

    Initialize the \(\texttt{FUKA}\) \(\mathrm{BNS}\) \(\mathrm{ID}\).

    • If flag= [[utility:flag$sph]], set up the lattices around the stars for the \(\mathrm{BNS}\) produced with \(\texttt{FUKA}\).
    • If flag= [[utility:flag$tpo]], allocate memory for the hydro grid functions.
    • If flag > 0, assign its value to l_curr.
    • If [[utility:flag$tpo]] < flag < 0, assign its value to tpo_curr.

    Arguments

    Type IntentOptional Attributes Name
    class(bnsfuka), 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

  • public module subroutine interpolate_fuka_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(bnsfuka), intent(inout) :: this

    bnsfuka 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 interpolate_fuka_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(bnsfuka), intent(inout) :: this

    bnsfuka 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 function interpolate_fuka_mass_density(this, x, y, z) result(res)

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

    Arguments

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

    bnsfuka 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 interpolate_fuka_pressure(this, x, y, z) result(res)

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

    Arguments

    Type IntentOptional Attributes Name
    class(bnsfuka), 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 function interpolate_fuka_spatial_metric(this, x, y, z) result(res)

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

    Arguments

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

    bnsfuka 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

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(bnsfuka), intent(in) :: this

    bnsfuka 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 function is_hydro_positive_interpolation(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(bnsfuka), intent(in) :: this

    bnsfuka 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

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

    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 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(bnsfuka), intent(inout) :: this

    bnsfuka object which this PROCEDURE is a member of

interface

  • public module subroutine print_summary_bnsfuka(this, filename)

    Prints a summary of the physical properties of the \(\mathrm{BNS}\) produced by \(\texttt{FUKA}\) 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(bnsfuka), 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}\) parameters from \(\texttt{FUKA}\)

    Arguments

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

    bnsfuka object which this PROCEDURE is a member of

interface

  • public module subroutine read_fuka_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 bnsfuka-member arrays with the same shape as the bnsfuka member arrays

    Arguments

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

    bnsfuka 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_fuka_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(bnsfuka), intent(inout) :: this

    bnsfuka 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_fuka_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(bnsfuka), intent(inout) :: this

    bnsfuka 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_fuka_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(bnsfuka), intent(inout) :: this

    bnsfuka 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_fuka_id_member(this, n, x, y, z)

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

    Arguments

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

    bnsfuka 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_fuka_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(bnsfuka), intent(inout) :: this

    bnsfuka 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_fuka_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(bnsfuka), intent(inout) :: this

    bnsfuka 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_fuka_mass_density(this, x, y, z) result(res)

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

    Arguments

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

    bnsfuka 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_fuka_pressure(this, x, y, z) result(res)

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

    Arguments

    Type IntentOptional Attributes Name
    class(bnsfuka), 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 function read_fuka_spatial_metric(this, x, y, z) result(res)

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

    Arguments

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

    bnsfuka 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

interface

  • public module subroutine run_kadath_reader(this, mpi_ranks, nx, ny, nz, xmin, xmax, ymin, ymax, zmin, zmax, coords, 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, mass_density, specific_energy, pressure, v_eul_x, v_eul_y, v_eul_z, filename)

    Calls the MPI-parallelized vsion of the function KadathExportBNS from Kadath

    Arguments

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

    bnsfuka object which this PROCEDURE is a member of

    integer, intent(in) :: mpi_ranks

    Number of MPI ranks

    integer, intent(in) :: nx

    Number of lattice points in the direction

    integer, intent(in) :: ny

    Number of lattice points in the direction

    integer, intent(in) :: nz

    Number of lattice points in the direction

    double precision, intent(in) :: xmin

    Minimum value for over the lattice

    double precision, intent(in) :: xmax

    Maximum value for over the lattice

    double precision, intent(in) :: ymin

    Minimum value for over the lattice

    double precision, intent(in) :: ymax

    Maximum value for over the lattice

    double precision, intent(in) :: zmin

    Minimum value for over the lattice

    double precision, intent(in) :: zmax

    Maximum value for over the lattice

    double precision, intent(inout), DIMENSION(nx,ny,nz,3) :: coords

    Array containing the \(\mathrm{ID}\) on a lattice. First three indices run over the lattice's dimensions, the fourth one runs ovr the fields

    double precision, intent(inout), DIMENSION(nx,ny,nz) :: lapse
    double precision, intent(inout), DIMENSION(nx,ny,nz) :: shift_x
    double precision, intent(inout), DIMENSION(nx,ny,nz) :: shift_y
    double precision, intent(inout), DIMENSION(nx,ny,nz) :: shift_z
    double precision, intent(inout), DIMENSION(nx,ny,nz) :: g_xx
    double precision, intent(inout), DIMENSION(nx,ny,nz) :: g_xy
    double precision, intent(inout), DIMENSION(nx,ny,nz) :: g_xz
    double precision, intent(inout), DIMENSION(nx,ny,nz) :: g_yy
    double precision, intent(inout), DIMENSION(nx,ny,nz) :: g_yz
    double precision, intent(inout), DIMENSION(nx,ny,nz) :: g_zz
    double precision, intent(inout), DIMENSION(nx,ny,nz) :: k_xx
    double precision, intent(inout), DIMENSION(nx,ny,nz) :: k_xy
    double precision, intent(inout), DIMENSION(nx,ny,nz) :: k_xz
    double precision, intent(inout), DIMENSION(nx,ny,nz) :: k_yy
    double precision, intent(inout), DIMENSION(nx,ny,nz) :: k_yz
    double precision, intent(inout), DIMENSION(nx,ny,nz) :: k_zz
    double precision, intent(inout), DIMENSION(nx,ny,nz) :: mass_density
    double precision, intent(inout), DIMENSION(nx,ny,nz) :: specific_energy
    double precision, intent(inout), DIMENSION(nx,ny,nz) :: pressure
    double precision, intent(inout), DIMENSION(nx,ny,nz) :: v_eul_x
    double precision, intent(inout), DIMENSION(nx,ny,nz) :: v_eul_y
    double precision, intent(inout), DIMENSION(nx,ny,nz) :: v_eul_z
    character(len=*), intent(in) :: filename

    Path to the \(\mathrm{ID}\) file output by \(\texttt{FUKA}\), as given in the parameter fe sphincs_id_parameters.dat

interface

  • public module subroutine set_up_lattices_around_stars(this)

    Sets up two fine lattice, one around each star, to be able to interpolate the \(\mathrm{ID}\) at the particle positions. It calls run_kadath_reader

    Arguments

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

    bnsfuka object which this PROCEDURE is a member of


Derived Types

type, public, extends(bnsbase) ::  bnsfuka

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

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…
integer, private :: bns_identifier = 0

Identifier of the bnsfuka object

type(C_PTR), private :: bns_ptr

C pointer to the \(\texttt{FUKA}\)'s object storing the \(\mathrm{BNS}\) \id| N.B. This variable is global. The pointer to the second \(\texttt{FUKA}\) \(\texttt{Bin_NS}\) object will overwrite the first one, and so on. This variable stores the pointer to the last defined \(\texttt{FUKA}\) \(\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 sphincs_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, 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, private :: eos1_fukaid

\(\texttt{FUKA}\) identifier for the \(\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, private :: eos2_fukaid

\(\texttt{FUKA}\) identifier for the \(\mathrm{EOS}\) of star 2

integer, public :: eos2_id

\(\texttt{SPHINCS_ID}\) identifier for the \(\mathrm{EOS}\) of star 2

character(len=:), private, ALLOCATABLE :: eos_file_1

String containing the name of the \(\mathrm{EOS}\) file used by \(\texttt{FUKA}\) of star 1

character(len=:), private, ALLOCATABLE :: eos_file_2

String containing the name of the \(\mathrm{EOS}\) file used by \(\texttt{FUKA}\) 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.

character(len=:), private, ALLOCATABLE :: eos_type_1

String containing the type of the \(\mathrm{EOS}\) of star 1

character(len=:), private, ALLOCATABLE :: eos_type_2

String containing the type of the \(\mathrm{EOS}\) of star 2

character(len=:), private, ALLOCATABLE :: filename

String containing the name of the '.info' \(\mathrm{ID}\) file output by \(\texttt{FUKA}\)

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, private :: komar_mass

Komar mass of the binary system

integer, public :: l_curr

Variable set to the current refinement level to consider, when reading the hydro \(\mathrm{ID}\) on the refined mesh in computing the constraints

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

type(grid_function_scalar), public, DIMENSION(max$tpo) :: mass_density

1-D array storing the baryon mass density in the fluid frame

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

integer, private :: nx_lattice = 400

Number of points for each lattice around the stars, along the axis

integer, private :: ny_lattice = 400

Number of points for each lattice around the stars, along the axis

integer, private :: nz_lattice = 400

Number of points for each lattice around the stars, along the axis

type(grid_function_scalar), public, DIMENSION(max$tpo) :: 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]

type(grid_function_scalar), public, DIMENSION(max$tpo) :: specific_energy

1-D array storing the specific internal energy

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(id_lattice), private, DIMENSION(2) :: star_lattice

Array storing two id_lattice objects, one per star

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…
integer, private, DIMENSION(max$tpo) :: tpo$log = 0

Variable that stores the identifiers for the tpo objects constructed using this bnsfuka object

integer, public :: tpo_curr = 0

Variable set to the current tpo object to consider, when reading the hydro \(\mathrm{ID}\) on the refined mesh in computing the constraints

type(grid_function_scalar), public, DIMENSION(max$tpo) :: v_euler_x

1-D array storing the x component of the fluid 3-velocity with respect to the Eulerian observer [c]

type(grid_function_scalar), public, DIMENSION(max$tpo) :: v_euler_y

1-D array storing the y component of the fluid 3-velocity with respect to the Eulerian observer [c]

type(grid_function_scalar), public, DIMENSION(max$tpo) :: v_euler_z

1-D array storing the z component of the fluid 3-velocity with respect to the Eulerian observer [c]

Finalizations Procedures

final :: destruct_bnsfuka

Finalizer (Destructor) of a bnsfuka object

Type-Bound Procedures

procedure , public :: allocate_bnsfuka_memory Interface

Allocates memory for the bnsfuka member arrays

Read more…
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{FUKA}\) bns_export object

procedure , public :: deallocate_bnsfuka_memory Interface

Deallocates memory for the bnsfuka member arrays

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

Destructs the \(\texttt{FUKA}\) bns_export 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 , NOPASS :: finalize Interface

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

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_fukaid Interface

Returns eos1_fukaid

procedure , public :: get_eos1_id => get_eos1_fukaid Interface

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

procedure , public :: get_eos2 Interface

Returns eos2

procedure , public :: get_eos2_fukaid Interface

Returns eos2_fukaid

procedure , public :: get_eos2_id => get_eos2_fukaid Interface

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

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 bnsfuka-member arrays

generic, public :: get_field => get_fa, get_fv

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

procedure , public :: get_fv => get_field_value Interface

Access the components of the bnsfuka-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 => initialize_id_bnsfuka 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 :: interpolate_fuka_spatial_metric Interface
procedure , public :: is_hydro_positive Interface

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

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_bnsfuka Interface
procedure , public :: read_bns_properties Interface

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

procedure , public :: read_fuka_id_mass_b Interface
procedure , public :: read_fuka_id_member Interface

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

procedure , public :: read_fuka_id_particles Interface
procedure , public :: read_fuka_mass_density Interface

Returns the \(\texttt{FUKA}\)'s mass density at the given point

procedure , public :: read_fuka_pressure Interface

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

procedure , public :: read_fuka_spatial_metric Interface

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

procedure , public :: read_id_full => read_fuka_id_full Interface
procedure , public :: read_id_hydro => read_fuka_id_hydro Interface
procedure , public :: read_id_k => read_fuka_id_k Interface
procedure , public :: read_id_mass_b => interpolate_fuka_id_mass_b Interface
procedure , public :: read_id_particles => interpolate_fuka_id_particles Interface
procedure , public :: read_id_spacetime => read_fuka_id_spacetime Interface
procedure , public :: read_mass_density => interpolate_fuka_mass_density Interface
procedure , public :: read_pressure => interpolate_fuka_pressure Interface
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 :: run_kadath_reader Interface

Calls the MPI-parallelized version of the function KadathExportBNS within Kadath

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 :: set_up_lattices_around_stars Interface

Sets up two fine lattice, one around each star, to be able to interpolate the \(\mathrm{ID}\) at the particle positions. It calls run_kadath_reader

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

type, public ::  id_lattice

Type representing the \(\mathrm{ID}\) on a 3D lattice

Components

Type Visibility Attributes Name Initial
double precision, public, DIMENSION(:,:,:,:), ALLOCATABLE :: coords
double precision, public, DIMENSION(:,:,:), ALLOCATABLE :: g_xx
double precision, public, DIMENSION(:,:,:), ALLOCATABLE :: g_xy
double precision, public, DIMENSION(:,:,:), ALLOCATABLE :: g_xz
double precision, public, DIMENSION(:,:,:), ALLOCATABLE :: g_yy
double precision, public, DIMENSION(:,:,:), ALLOCATABLE :: g_yz
double precision, public, DIMENSION(:,:,:), ALLOCATABLE :: g_zz
double precision, public, DIMENSION(:,:,:), ALLOCATABLE :: k_xx
double precision, public, DIMENSION(:,:,:), ALLOCATABLE :: k_xy
double precision, public, DIMENSION(:,:,:), ALLOCATABLE :: k_xz
double precision, public, DIMENSION(:,:,:), ALLOCATABLE :: k_yy
double precision, public, DIMENSION(:,:,:), ALLOCATABLE :: k_yz
double precision, public, DIMENSION(:,:,:), ALLOCATABLE :: k_zz
double precision, public, DIMENSION(:,:,:), ALLOCATABLE :: lapse
double precision, public, DIMENSION(:,:,:), ALLOCATABLE :: mass_density
double precision, public, DIMENSION(:,:,:), ALLOCATABLE :: pressure
double precision, public, DIMENSION(:,:,:), ALLOCATABLE :: shift_x
double precision, public, DIMENSION(:,:,:), ALLOCATABLE :: shift_y
double precision, public, DIMENSION(:,:,:), ALLOCATABLE :: shift_z
double precision, public, DIMENSION(:,:,:), ALLOCATABLE :: specific_energy
double precision, public, DIMENSION(:,:,:), ALLOCATABLE :: v_eul_x
double precision, public, DIMENSION(:,:,:), ALLOCATABLE :: v_eul_y
double precision, public, DIMENSION(:,:,:), ALLOCATABLE :: v_eul_z

Type-Bound Procedures

procedure , public :: allocate_lattice_memory Subroutine

Allocates memory for all the member arrays

procedure , public :: deallocate_lattice_memory Subroutine

Deallocates memory for all the member arrays


Subroutines

public subroutine allocate_lattice_memory(this, nx, ny, nz)

Arguments

Type IntentOptional Attributes Name
class(id_lattice), intent(inout) :: this
integer, intent(in) :: nx
integer, intent(in) :: ny
integer, intent(in) :: nz

public subroutine deallocate_lattice_memory(this)

Arguments

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