submodule_sph_particles_access.f90 Source File


This file depends on

sourcefile~~submodule_sph_particles_access.f90~~EfferentGraph sourcefile~submodule_sph_particles_access.f90 submodule_sph_particles_access.f90 sourcefile~module_sph_particles.f90 module_sph_particles.f90 sourcefile~submodule_sph_particles_access.f90->sourcefile~module_sph_particles.f90 sourcefile~module_id_base.f90 module_id_base.f90 sourcefile~module_sph_particles.f90->sourcefile~module_id_base.f90 sourcefile~module_utility.f90 module_utility.f90 sourcefile~module_sph_particles.f90->sourcefile~module_utility.f90 sourcefile~module_id_base.f90->sourcefile~module_utility.f90

Contents


Source Code

! File:         submodule_sph_particles_access.f90
! Authors:      Francesco Torsello (FT)
!************************************************************************
! Copyright (C) 2020-2023 Francesco Torsello                            *
!                                                                       *
! This file is part of |sph|INCS_|id|                                       *
!                                                                       *
! |sph|INCS_|id| is free software: you can redistribute it and/or modify    *
! it under the terms of the GNU General Public License as published by  *
! the Free Software Foundation, either version 3 of the License, or     *
! (at your option) any later version.                                   *
!                                                                       *
! |sph|INCS_|id| is distributed in the hope that it will be useful,         *
! but WITHOUT ANY WARRANTY; without even the implied warranty of        *
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the          *
! GNU General Public License for more details.                          *
!                                                                       *
! You should have received a copy of the GNU General Public License     *
! along with |sph|INCS_|id|. If not, see <https://www.gnu.org/licenses/>.   *
! The copy of the GNU General Public License should be in the file      *
! 'COPYING'.                                                            *
!************************************************************************

SUBMODULE (sph_particles) access

  !**************************************************
  !
  !# This SUBMODULE contains the implementation of
  !  the methods of TYPE [[particles]]
  !  that allow to access PRIVATE members.
  !
  !  FT 12.07.2021
  !
  !**************************************************


  IMPLICIT NONE


  CONTAINS


  !-----------------!
  !--  FUNCTIONS  --!
  !-----------------!


  MODULE PROCEDURE get_npart

    !************************************************
    !
    !# Returns the total number of particles
    !
    !  FT
    !
    !************************************************

    IMPLICIT NONE

    n_part= this% npart

  END PROCEDURE get_npart


  MODULE PROCEDURE get_npart_i

    !************************************************
    !
    !# Returns the number of particles on the
    !  \(i^{th}\) matter object
    !
    !  FT 10.11.2021
    !
    !************************************************

    IMPLICIT NONE

    n_part= this% npart_i(i_matter)

  END PROCEDURE get_npart_i


  MODULE PROCEDURE get_nuratio

    !************************************************
    !
    !# Returns the baryon number ratio on the stars
    !
    !  FT 27.04.2021
    !
    !************************************************

    IMPLICIT NONE

    nuratio= this% nuratio

  END PROCEDURE get_nuratio


  MODULE PROCEDURE get_nuratio_i

    !************************************************
    !
    !# Returns the baryon number ratio on the
    !  \(i^{th}\) matter object
    !
    !  FT 10.11.2021
    !
    !************************************************

    IMPLICIT NONE

    nuratio= this% nuratio_i(i_matter)

  END PROCEDURE get_nuratio_i


  MODULE PROCEDURE get_n_matter

    !************************************************
    !
    !# Returns the number of matter objects
    !
    !  FT 25.02.2021
    !
    !************************************************

    IMPLICIT NONE

    n_matter= this% n_matter

  END PROCEDURE get_n_matter


  MODULE PROCEDURE get_pos

    !************************************************
    !
    !# Returns the array of particle positions
    !
    !  FT
    !
    !************************************************

    IMPLICIT NONE

    pos_u= this% pos

  END PROCEDURE get_pos


  MODULE PROCEDURE get_vel

    !************************************************
    !
    !# Returns the array of coordinate 3-velocity of
    !  particles
    !
    !  FT
    !
    !************************************************

    IMPLICIT NONE

    vel= this% v(1:3,:)

  END PROCEDURE get_vel


  MODULE PROCEDURE get_nstar

    !************************************************
    !
    !# Returns the array of the relativistic density
    !  variable from the |id|
    !
    !  FT 25.02.2022
    !
    !************************************************

    IMPLICIT NONE

    nstar= this% nstar

  END PROCEDURE get_nstar


  MODULE PROCEDURE get_nstar_sph

    !************************************************
    !
    !# Returns the array of |sph| density estimate of
    !  the relativistic density variable
    !
    !  FT 25.02.2022
    !
    !************************************************

    IMPLICIT NONE

    nstar_sph= this% nstar_sph

END PROCEDURE get_nstar_sph


  MODULE PROCEDURE get_nlrf

    !************************************************
    !
    !# Returns the array of baryon density in the
    !  local rest frame from the |id|
    !
    !  FT
    !
    !************************************************

    IMPLICIT NONE

    nlrf= this% nlrf

  END PROCEDURE get_nlrf


  MODULE PROCEDURE get_nlrf_sph

    !************************************************
    !
    !# Returns the array of |sph| estimate of the
    !  baryon density in the local rest frame
    !
    !  FT 25.02.2022
    !
    !************************************************

    IMPLICIT NONE

    nlrf_sph= this% nlrf_sph

  END PROCEDURE get_nlrf_sph


  MODULE PROCEDURE get_nu

    !************************************************
    !
    !# Returns the array of baryon per particle
    !  [baryon (Msun_geo)^{-3}]
    !
    !  FT
    !
    !************************************************

    IMPLICIT NONE

    nu= this% nu

  END PROCEDURE get_nu


  MODULE PROCEDURE get_u

    !************************************************
    !
    !# Returns the array of specific internal
    !  energy [c^2]
    !
    !  FT
    !
    !************************************************

    IMPLICIT NONE

    u= this% specific_energy

  END PROCEDURE get_u


  MODULE PROCEDURE get_u_sph

    !************************************************
    !
    !# Returns the array of specific internal
    !  energy computed from the |sph| estimate
    !  of the baryon number density in the local
    !  rest frame [c^2]
    !
    !  FT 25.02.2022
    !
    !************************************************

    IMPLICIT NONE

    u_sph= this% u_sph

  END PROCEDURE get_u_sph


  MODULE PROCEDURE get_pressure

    !************************************************
    !
    !# Returns the array of pressure from the |id|
    !
    !  FT
    !
    !************************************************

    IMPLICIT NONE

    pressure= this% pressure

  END PROCEDURE get_pressure


  MODULE PROCEDURE get_pressure_sph

    !************************************************
    !
    !# Returns the array of pressure computed using
    !  the |sph| stimate of the density
    !  [amu*c**2/(Msun_geo**3)]
    !
    !  FT
    !
    !************************************************

    IMPLICIT NONE

    pressure_sph= this% pressure_sph

  END PROCEDURE get_pressure_sph


  MODULE PROCEDURE get_theta

    !************************************************
    !
    !# Returns the array of generalized Lorentz
    !  factor
    !
    !  FT
    !
    !************************************************

    IMPLICIT NONE

    theta= this% Theta

  END PROCEDURE get_theta


  MODULE PROCEDURE get_h

    !************************************************
    !
    !# Returns the array of initial guess for the
    !  smoothing length [Msun_geo]
    !
    !  FT
    !
    !************************************************

    IMPLICIT NONE

    h= this% h

  END PROCEDURE get_h


  MODULE PROCEDURE get_lapse

    !************************************************
    !
    !# Returns the lapse function on the particles
    !
    !  FT 25.02.2022
    !
    !************************************************

    IMPLICIT NONE

    lapse= this% lapse

  END PROCEDURE get_lapse


  MODULE PROCEDURE get_shift

    !************************************************
    !
    !# Returns the shift vector on the particles
    !
    !  FT 25.02.2022
    !
    !************************************************

    IMPLICIT NONE

    shift(1,:)= this% shift_x
    shift(2,:)= this% shift_y
    shift(3,:)= this% shift_z

  END PROCEDURE get_shift


  MODULE PROCEDURE get_g3

    !************************************************
    !
    !# Returns the spatial metric on the particles
    !
    !  FT 25.02.2022
    !
    !************************************************

    IMPLICIT NONE

    g3(1,:)= this% g_xx
    g3(2,:)= this% g_xy
    g3(3,:)= this% g_xz
    g3(4,:)= this% g_yy
    g3(5,:)= this% g_yz
    g3(6,:)= this% g_zz

  END PROCEDURE get_g3


  MODULE PROCEDURE get_compose_eos

    !************************************************
    !
    !# Returns the variable [[particles:compose_eos]]
    !
    !  FT 03.03.2023
    !
    !************************************************

    IMPLICIT NONE

    compose_eos= this% compose_eos

  END PROCEDURE get_compose_eos


  MODULE PROCEDURE get_eos_id

    !************************************************
    !
    !# Returns the |eos| identifier for matter object
    !  `i_matter`
    !
    !  FT 14.04.2023
    !
    !************************************************

    IMPLICIT NONE

    eos_id= NINT(this% all_eos(i_matter)% eos_parameters(1))

  END PROCEDURE get_eos_id


  MODULE PROCEDURE is_empty

    !************************************************
    !
    !# Returns the variable empty_object
    !  @warning experimental, not actively used in
    !          the code yet
    !
    !  FT
    !
    !************************************************

    IMPLICIT NONE

    answer= this% empty_object

  END PROCEDURE is_empty


END SUBMODULE access