read Submodule

Implementation of the methods of TYPE bnslorene that read \(\mathrm{BNS}\) data using \(\texttt{LORENE}\)

FT 23.10.2020

Renamed from methods to read upon improving modularity

OMP parallelized loops that call \(\texttt{LORENE}\) in all MODULE PROCEDURE

FT 12.07.2021



Uses

  • module~~read~~UsesGraph module~read read module~bns_lorene bns_lorene module~read->module~bns_lorene module~utility utility module~read->module~utility module~bns_lorene->module~utility 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 timing timing module~bns_lorene->timing constants constants module~utility->constants matrix matrix module~utility->matrix module~bns_base->module~utility module~bns_base->module~id_base module~id_base->module~utility module~id_base->timing

Contents


Module Procedures

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

Return .FALSE. if the energy density is nonpositive or if the specific energy is nonpositive, or if the pressure is nonpositive at the specified point; .TRUE. otherwise

Read more…

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

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

Returns the \(\texttt{LORENE}\) mass density at the point given as argument, in units of .

Read more…

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

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

Returns the \(\texttt{LORENE}\) pressure at the point given as argument, in units of .

Read more…

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

module procedure read_id_full 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 ID in non-bnslorene-member arrays with the same shape as the bnslorene member arrays

Read more…

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

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

Stores the hydro ID in the arrays needed to compute the constraints on the refined mesh

Read more…

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

module procedure read_id_int module subroutine read_id_int(this, n, x, y, z)

Stores the ID in the bnslorene member arrays

Read more…

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

module procedure read_id_k 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

Read more…

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

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

Stores the hydro ID in the arrays needed to compute the baryon mass, storing it to variables (not arrays as the others SUBROUTINES in this SUBMODULE).

Read more…

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

module procedure read_id_particles 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 ID in the arrays needed to compute the SPH ID

Read more…

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

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

Stores the spacetime ID in multi-dimensional arrays needed to compute the BSSN variables and constraints

Read more…

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

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

Returns the \(\texttt{LORENE}\) conformal factor to the 4th power, equal to the diagonal components of the conformally flat spatial ADM metric.

Read more…

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