Implementation of the methods of TYPE bnsfuka that read \(\mathrm{BNS}\) data using \(\texttt{FUKA}\)
FT 09.02.2022
Return 1 if the energy density is nonpositive or if the specific energy is nonpositive, or if the pressure is nonpositive at the specified point
Type | Intent | Optional | 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 |
.TRUE.
if the energy density or the specific energy or the pressure
are negative, .FALSE.
otherwise
Stores the \(\mathrm{ID}\) in non-bnsfuka-member arrays with the same shape as the bnsfuka member arrays
Type | Intent | Optional | 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 |
Stores the hydro \(\mathrm{ID}\) in the arrays needed to compute the constraints on the refined mesh
Type | Intent | Optional | 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 |
Stores the components of the extrinsic curvature in arrays
Type | Intent | Optional | 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 |
Stores the hydro \(\mathrm{ID}\) in the arrays needed to compute the baryon mass, storing it to variables (not arrays as the others SUBROUTINES in this SUBMODULE).
Type | Intent | Optional | 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 |
Stores the \(\mathrm{ID}\) in the bnsfuka member arrays
Type | Intent | Optional | 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 |
Stores the hydro \(\mathrm{ID}\) in the arrays needed to compute the \(\mathrm{SPH}\) \(\mathrm{ID}\)
Type | Intent | Optional | 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 |
Stores the spacetime \(\mathrm{ID}\) in multi-dimensional arrays needed to compute the BSSN variables and constraints
Type | Intent | Optional | 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 |
Returns the \(\texttt{FUKA}\) mass density at the point given as argument, in units of .
Type | Intent | Optional | 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 |
Baryon mass density at
Returns the \(\texttt{FUKA}\) pressure at the point given as argument, in units of .
Type | Intent | Optional | 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 |
Pressure at
Returns the \(\texttt{FUKA}\) conformal factor to the 4th power, equal to the diagonal components of the conformally flat spatial ADM metric.
Type | Intent | Optional | 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 |
at
Calls the MPI-parallelized version of the function KadathExportBNS within Kadath
Type | Intent | Optional | 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 |
Read the \(\texttt{FUKA}\) \(\mathrm{ID}\) on two lattices, each one enclosing a star. The lattices are needed to interpolate the \(\mathrm{ID}\) on the particles.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bnsfuka), | intent(inout) | :: | this |
bnsfuka object which this PROCEDURE is a member of |