dust Module

This module defines functions used for the computation of radiation effects on massive bodies. Equations taken from Burns, Lamy & Soter (1979) Icarus 40, 1-48.


Uses

  • module~~dust~~UsesGraph module~dust dust module~helio helio module~dust->module~helio module~swiftest swiftest module~dust->module~swiftest module~symba symba module~dust->module~symba module~whm whm module~dust->module~whm module~helio->module~swiftest module~helio->module~whm module~base base module~swiftest->module~base module~collision collision module~swiftest->module~collision module~encounter encounter module~swiftest->module~encounter module~globals globals module~swiftest->module~globals module~io_progress_bar io_progress_bar module~swiftest->module~io_progress_bar module~lambda_function lambda_function module~swiftest->module~lambda_function module~laplace_coefficients laplace_coefficients module~swiftest->module~laplace_coefficients module~netcdf_io netcdf_io module~swiftest->module~netcdf_io module~operators operators module~swiftest->module~operators module~solver solver module~swiftest->module~solver module~walltime walltime module~swiftest->module~walltime module~symba->module~helio module~symba->module~swiftest module~whm->module~swiftest module~base->module~globals module~coarray coarray module~base->module~coarray module~collision->module~base module~collision->module~encounter module~collision->module~globals module~encounter->module~base module~encounter->module~globals module~encounter->module~netcdf_io iso_c_binding iso_c_binding module~globals->iso_c_binding iso_fortran_env iso_fortran_env module~globals->iso_fortran_env module~io_progress_bar->module~base module~io_progress_bar->module~globals module~lambda_function->module~globals module~laplace_coefficients->module~globals ieee_exceptions ieee_exceptions module~laplace_coefficients->ieee_exceptions module~netcdf_io->module~base module~netcdf_io->module~globals module~operators->module~globals module~solver->module~base module~solver->module~globals module~solver->module~lambda_function module~solver->ieee_exceptions module~walltime->module~base module~walltime->module~globals module~coarray->module~globals

Interfaces

interface

  • public module subroutine helio_dust_accel_pr(self, nbody_system, param)

    Arguments

    Type IntentOptional Attributes Name
    class(helio_dust), intent(inout) :: self

    Swiftest body object

    class(helio_nbody_system), intent(inout) :: nbody_system

    Swiftest nbody system object

    class(swiftest_parameters), intent(in) :: param

    Current run configuration parameters

interface

  • public module subroutine symba_dust_accel_pr(self, nbody_system, param)

    Arguments

    Type IntentOptional Attributes Name
    class(symba_dust), intent(inout) :: self

    Swiftest body object

    class(symba_nbody_system), intent(inout) :: nbody_system

    Swiftest nbody system object

    class(swiftest_parameters), intent(in) :: param

    Current run configuration parameters

interface

  • public module subroutine whm_dust_accel_pr(self, nbody_system, param)

    Arguments

    Type IntentOptional Attributes Name
    class(whm_dust), intent(inout) :: self

    Swiftest body object

    class(whm_nbody_system), intent(inout) :: nbody_system

    Swiftest nbody system object

    class(swiftest_parameters), intent(in) :: param

    Current run configuration parameters


Derived Types

type, public, extends(helio_tp) ::  helio_dust

Components

Type Visibility Attributes Name Initial
real(kind=DP), public, dimension(:), allocatable :: Gmass

Mass gravitational term G * mass (units GU * MU)

real(kind=DP), public, dimension(:), allocatable :: a

Semimajor axis (pericentric distance for a parabolic orbit)

real(kind=DP), public, dimension(:,:), allocatable :: agr

Acceleration due to post-Newtonian correction

real(kind=DP), public, dimension(:,:), allocatable :: ah

Total heliocentric acceleration

real(kind=DP), public, dimension(:,:), allocatable :: aobl

Barycentric accelerations of bodies due to central body oblatenes

real(kind=DP), public, dimension(:,:), allocatable :: atide

Tanngential component of acceleration of bodies due to tides

real(kind=DP), public, dimension(:), allocatable :: atp

semimajor axis following perihelion passage

real(kind=DP), public, dimension(:), allocatable :: capm

Mean anomaly

real(kind=DP), public, dimension(:), allocatable :: capom

Longitude of ascending node

real(kind=DP), public, dimension(:), allocatable :: density

Body mass density - calculated internally (units MU / DU**3)

real(kind=DP), public, dimension(:), allocatable :: e

Eccentricity

integer(kind=I4B), public, dimension(:), allocatable :: id

Identifier

real(kind=DP), public, dimension(:), allocatable :: inc

Inclination

type(swiftest_particle_info), public, dimension(:), allocatable :: info

Particle metadata information

real(kind=DP), public, dimension(:), allocatable :: ir3h

Inverse heliocentric radius term (1/rh**3)

integer(kind=I4B), public, dimension(:), allocatable :: isperi

perihelion passage flag

integer(kind=I4B), public, dimension(:,:), allocatable :: k_pltp

Index array used to convert flattened the body-body comparison upper triangular matrix

logical, public, dimension(:), allocatable :: lcollision

flag indicating whether body has merged with another this time step

logical, public, dimension(:), allocatable :: ldiscard

Body should be discarded

logical, public, dimension(:), allocatable :: lencounter

flag indicating whether body is part of an encounter this time step

logical, public :: lfirst = .true.

Run the current step as a first

logical, public, dimension(:), allocatable :: lmask

Logical mask used to select a subset of bodies when performing certain operations (drift, kick, accel, etc.)

real(kind=DP), public, dimension(:), allocatable :: mass

Body mass (units MU)

real(kind=DP), public, dimension(:), allocatable :: mu

G * (Mcb + [m])

integer(kind=I4B), public :: nbody = 0

Number of bodies

integer(kind=I4B), public, dimension(:), allocatable :: nplenc

number of encounters with planets this time step

integer(kind=I8B), public :: npltp

Number of pl-tp comparisons in the flattened upper triangular matrix

real(kind=DP), public, dimension(:), allocatable :: omega

Argument of pericenter

real(kind=DP), public, dimension(:), allocatable :: peri

perihelion distance

real(kind=DP), public, dimension(:,:), allocatable :: rb

Barycentric position

real(kind=DP), public, dimension(:,:), allocatable :: rh

Heliocentric position

integer(kind=I4B), public, dimension(:), allocatable :: status

An integrator-specific status indicator

real(kind=DP), public, dimension(:,:), allocatable :: vb

Barycentric velocity

real(kind=DP), public, dimension(:,:), allocatable :: vh

Heliocentric velocity

Type-Bound Procedures

procedure, public :: accel => helio_kick_getacch_tp

Compute heliocentric accelerations of massive bodies

procedure, public :: accel_gr => helio_gr_kick_getacch_tp

Acceleration term arising from the post-Newtonian correction

procedure, public :: accel_int => swiftest_kick_getacch_int_tp

Compute direct cross (third) term heliocentric accelerations of test particles by massive bodies

procedure, public :: accel_non_spherical_cb => swiftest_non_spherical_cb_acc_tp

Compute the barycentric accelerations of bodies due to the oblateness of the central body

procedure, public :: accel_pr => helio_dust_accel_pr
procedure, public :: accel_user => swiftest_user_kick_getacch_body

Add user-supplied heliocentric accelerations to planets

procedure, public :: append => swiftest_util_append_tp

Appends elements from one structure to another

procedure, public :: b2h => swiftest_util_coord_b2h_tp

Convert test particles from barycentric to heliocentric coordinates (position and velocity)

procedure, public :: dealloc => swiftest_util_dealloc_tp

Deallocates all allocatable arrays

procedure, public :: discard => swiftest_discard_tp

Check to see if test particles should be discarded based on their positions relative to the massive bodies

procedure, public :: drift => helio_drift_tp

Method for Danby drift in Democratic Heliocentric coordinates

procedure, public :: el2xv => swiftest_orbel_el2xv_vec

Convert orbital elements to position and velocity vectors

procedure, public :: fill => swiftest_util_fill_tp

“Fills” bodies from one object into another depending on the results of a mask (uses the UNPACK intrinsic)

procedure, public :: get_peri => swiftest_util_peri_body

Determine nbody_system pericenter passages for test particles

procedure, public :: gr_pos_kick => helio_gr_p4_tp

Position kick due to p**4 term in the post-Newtonian correction

procedure, public :: h2b => swiftest_util_coord_h2b_tp

Convert test particles from heliocentric to barycentric coordinates (position and velocity)

procedure, public :: kick => helio_kick_vb_tp

Kicks the barycentric velocities

procedure, public :: lindrift => helio_drift_linear_tp

Method for linear drift of massive bodies due to barycentric momentum of Sun

procedure, public :: pv2v => swiftest_gr_pv2vh_body

Converts from psudeovelocity to velocity for GR calculations using symplectic integrators

generic, public :: read_frame => read_frame_bin

Add the generic read frame for Fortran binary files

procedure, public :: read_frame_bin => swiftest_io_read_frame_body

I/O routine for writing out a single frame of time-series data for the central body

procedure, public :: read_in => swiftest_io_read_in_body

Read in body initial conditions from an ascii file

procedure, public :: rearrange => swiftest_util_sort_rearrange_tp

Rearranges the order of array elements of body based on an input index array. Used in sorting methods

procedure, public :: rearray => swiftest_util_rearray_tp

Clean up the test particle structures to remove discarded bodies

procedure, public :: resize => swiftest_util_resize_tp

Checks the current size of a Swiftest body against the requested size and resizes it if it is too small.

procedure, public :: rh2rb => swiftest_util_coord_rh2rb_tp

Convert test particles from heliocentric to barycentric coordinates (position only)

procedure, public :: save_discard => swiftest_util_save_discard_body

Saves a snapshot of the this body to the collision storage object

procedure, public :: set_ir3 => swiftest_util_set_ir3h

Sets the inverse heliocentric radius term (1/rh**3)

procedure, public :: set_mu => swiftest_util_set_mu_tp

Method used to construct the vectorized form of the central body mass

procedure, public :: setup => swiftest_util_setup_tp

A base constructor that sets the number of bodies and

procedure, public :: sort => swiftest_util_sort_tp

Sorts body arrays by a sortable component

procedure, public :: spill => swiftest_util_spill_tp

“Spills” bodies from one object to another depending on the results of a mask (uses the PACK intrinsic)

procedure, public :: step => helio_step_tp

Steps the body forward one stepsize

procedure, public :: v2pv => swiftest_gr_vh2pv_body

Converts from velocity to psudeovelocity for GR calculations using symplectic integrators

procedure, public :: vb2vh => swiftest_util_coord_vb2vh_tp

Convert test particles from barycentric to heliocentric coordinates (velocity only)

procedure, public :: vh2vb => swiftest_util_coord_vh2vb_tp

Convert test particles from heliocentric to barycentric coordinates (velocity only)

procedure, public :: write_frame => swiftest_io_netcdf_write_frame_body

I/O routine for writing out a single frame of time-series data for all bodies in the nbody_system in NetCDF format

procedure, public :: write_info => swiftest_io_netcdf_write_info_body

Dump contents of particle information metadata to file

procedure, public :: xv2el => swiftest_orbel_xv2el_vec

Convert position and velocity vectors to orbital elements

type, public, extends(symba_tp) ::  symba_dust

Components

Type Visibility Attributes Name Initial
real(kind=DP), public, dimension(:), allocatable :: Gmass

Mass gravitational term G * mass (units GU * MU)

real(kind=DP), public, dimension(:), allocatable :: a

Semimajor axis (pericentric distance for a parabolic orbit)

real(kind=DP), public, dimension(:,:), allocatable :: agr

Acceleration due to post-Newtonian correction

real(kind=DP), public, dimension(:,:), allocatable :: ah

Total heliocentric acceleration

real(kind=DP), public, dimension(:,:), allocatable :: aobl

Barycentric accelerations of bodies due to central body oblatenes

real(kind=DP), public, dimension(:,:), allocatable :: atide

Tanngential component of acceleration of bodies due to tides

real(kind=DP), public, dimension(:), allocatable :: atp

semimajor axis following perihelion passage

real(kind=DP), public, dimension(:), allocatable :: capm

Mean anomaly

real(kind=DP), public, dimension(:), allocatable :: capom

Longitude of ascending node

real(kind=DP), public, dimension(:), allocatable :: density

Body mass density - calculated internally (units MU / DU**3)

real(kind=DP), public, dimension(:), allocatable :: e

Eccentricity

integer(kind=I4B), public, dimension(:), allocatable :: id

Identifier

real(kind=DP), public, dimension(:), allocatable :: inc

Inclination

type(swiftest_particle_info), public, dimension(:), allocatable :: info

Particle metadata information

real(kind=DP), public, dimension(:), allocatable :: ir3h

Inverse heliocentric radius term (1/rh**3)

integer(kind=I4B), public, dimension(:), allocatable :: isperi

perihelion passage flag

integer(kind=I4B), public, dimension(:,:), allocatable :: k_pltp

Index array used to convert flattened the body-body comparison upper triangular matrix

logical, public, dimension(:), allocatable :: lcollision

flag indicating whether body has merged with another this time step

logical, public, dimension(:), allocatable :: ldiscard

Body should be discarded

logical, public, dimension(:), allocatable :: lencounter

flag indicating whether body is part of an encounter this time step

integer(kind=I4B), public, dimension(:), allocatable :: levelg

level at which this particle should be moved

integer(kind=I4B), public, dimension(:), allocatable :: levelm

deepest encounter level achieved this time step

logical, public :: lfirst = .true.

Run the current step as a first

logical, public, dimension(:), allocatable :: lmask

Logical mask used to select a subset of bodies when performing certain operations (drift, kick, accel, etc.)

real(kind=DP), public, dimension(:), allocatable :: mass

Body mass (units MU)

real(kind=DP), public, dimension(:), allocatable :: mu

G * (Mcb + [m])

integer(kind=I4B), public :: nbody = 0

Number of bodies

integer(kind=I4B), public, dimension(:), allocatable :: nplenc

number of encounters with planets this time step

integer(kind=I8B), public :: npltp

Number of pl-tp comparisons in the flattened upper triangular matrix

real(kind=DP), public, dimension(:), allocatable :: omega

Argument of pericenter

real(kind=DP), public, dimension(:), allocatable :: peri

perihelion distance

real(kind=DP), public, dimension(:), allocatable :: radius

Body radius (units DU)

real(kind=DP), public, dimension(:,:), allocatable :: rb

Barycentric position

real(kind=DP), public, dimension(:,:), allocatable :: rh

Heliocentric position

integer(kind=I4B), public, dimension(:), allocatable :: status

An integrator-specific status indicator

real(kind=DP), public, dimension(:,:), allocatable :: vb

Barycentric velocity

real(kind=DP), public, dimension(:,:), allocatable :: vh

Heliocentric velocity

Type-Bound Procedures

procedure, public :: accel => symba_kick_getacch_tp

Compute heliocentric accelerations of test particles

procedure, public :: accel_gr => helio_gr_kick_getacch_tp

Acceleration term arising from the post-Newtonian correction

procedure, public :: accel_int => swiftest_kick_getacch_int_tp

Compute direct cross (third) term heliocentric accelerations of test particles by massive bodies

procedure, public :: accel_non_spherical_cb => swiftest_non_spherical_cb_acc_tp

Compute the barycentric accelerations of bodies due to the oblateness of the central body

procedure, public :: accel_pr => symba_dust_accel_pr
procedure, public :: accel_user => swiftest_user_kick_getacch_body

Add user-supplied heliocentric accelerations to planets

procedure, public :: append => symba_util_append_tp

Appends elements from one structure to another

procedure, public :: b2h => swiftest_util_coord_b2h_tp

Convert test particles from barycentric to heliocentric coordinates (position and velocity)

procedure, public :: dealloc => symba_util_dealloc_tp

Deallocates all allocatable arrays

procedure, public :: discard => swiftest_discard_tp

Check to see if test particles should be discarded based on their positions relative to the massive bodies

procedure, public :: drift => symba_drift_tp

Method for Danby drift in Democratic Heliocentric coordinates. Sets the mask to the current recursion level

procedure, public :: el2xv => swiftest_orbel_el2xv_vec

Convert orbital elements to position and velocity vectors

procedure, public :: encounter_check => symba_encounter_check_tp

Checks if any test particles are undergoing a close encounter with a massive body

procedure, public :: fill => symba_util_fill_tp

“Fills” bodies from one object into another depending on the results of a mask (uses the UNPACK intrinsic)

procedure, public :: get_peri => swiftest_util_peri_body

Determine nbody_system pericenter passages for test particles

procedure, public :: gr_pos_kick => symba_gr_p4_tp

Position kick due to p**4 term in the post-Newtonian correction

procedure, public :: h2b => swiftest_util_coord_h2b_tp

Convert test particles from heliocentric to barycentric coordinates (position and velocity)

procedure, public :: kick => helio_kick_vb_tp

Kicks the barycentric velocities

procedure, public :: lindrift => helio_drift_linear_tp

Method for linear drift of massive bodies due to barycentric momentum of Sun

procedure, public :: pv2v => swiftest_gr_pv2vh_body

Converts from psudeovelocity to velocity for GR calculations using symplectic integrators

generic, public :: read_frame => read_frame_bin

Add the generic read frame for Fortran binary files

procedure, public :: read_frame_bin => swiftest_io_read_frame_body

I/O routine for writing out a single frame of time-series data for the central body

procedure, public :: read_in => swiftest_io_read_in_body

Read in body initial conditions from an ascii file

procedure, public :: rearrange => symba_util_sort_rearrange_tp

Rearranges the order of array elements of body based on an input index array. Used in sorting methods

procedure, public :: rearray => swiftest_util_rearray_tp

Clean up the test particle structures to remove discarded bodies

procedure, public :: resize => symba_util_resize_tp

Checks the current size of a Swiftest body against the requested size and resizes it if it is too small.

procedure, public :: rh2rb => swiftest_util_coord_rh2rb_tp

Convert test particles from heliocentric to barycentric coordinates (position only)

procedure, public :: save_discard => swiftest_util_save_discard_body

Saves a snapshot of the this body to the collision storage object

procedure, public :: set_ir3 => swiftest_util_set_ir3h

Sets the inverse heliocentric radius term (1/rh**3)

procedure, public :: set_mu => swiftest_util_set_mu_tp

Method used to construct the vectorized form of the central body mass

procedure, public :: setup => symba_util_setup_tp

Constructor method - Allocates space for the input number of bodies

procedure, public :: sort => symba_util_sort_tp

Sorts body arrays by a sortable componen

procedure, public :: spill => symba_util_spill_tp

“Spills” bodies from one object to another depending on the results of a mask (uses the PACK intrinsic)

procedure, public :: step => helio_step_tp

Steps the body forward one stepsize

procedure, public :: v2pv => swiftest_gr_vh2pv_body

Converts from velocity to psudeovelocity for GR calculations using symplectic integrators

procedure, public :: vb2vh => swiftest_util_coord_vb2vh_tp

Convert test particles from barycentric to heliocentric coordinates (velocity only)

procedure, public :: vh2vb => swiftest_util_coord_vh2vb_tp

Convert test particles from heliocentric to barycentric coordinates (velocity only)

procedure, public :: write_frame => swiftest_io_netcdf_write_frame_body

I/O routine for writing out a single frame of time-series data for all bodies in the nbody_system in NetCDF format

procedure, public :: write_info => swiftest_io_netcdf_write_info_body

Dump contents of particle information metadata to file

procedure, public :: xv2el => swiftest_orbel_xv2el_vec

Convert position and velocity vectors to orbital elements

type, public, extends(whm_tp) ::  whm_dust

Components

Type Visibility Attributes Name Initial
real(kind=DP), public, dimension(:), allocatable :: Gmass

Mass gravitational term G * mass (units GU * MU)

real(kind=DP), public, dimension(:), allocatable :: a

Semimajor axis (pericentric distance for a parabolic orbit)

real(kind=DP), public, dimension(:,:), allocatable :: agr

Acceleration due to post-Newtonian correction

real(kind=DP), public, dimension(:,:), allocatable :: ah

Total heliocentric acceleration

real(kind=DP), public, dimension(:,:), allocatable :: aobl

Barycentric accelerations of bodies due to central body oblatenes

real(kind=DP), public, dimension(:,:), allocatable :: atide

Tanngential component of acceleration of bodies due to tides

real(kind=DP), public, dimension(:), allocatable :: atp

semimajor axis following perihelion passage

real(kind=DP), public, dimension(:), allocatable :: capm

Mean anomaly

real(kind=DP), public, dimension(:), allocatable :: capom

Longitude of ascending node

real(kind=DP), public, dimension(:), allocatable :: density

Body mass density - calculated internally (units MU / DU**3)

real(kind=DP), public, dimension(:), allocatable :: e

Eccentricity

integer(kind=I4B), public, dimension(:), allocatable :: id

Identifier

real(kind=DP), public, dimension(:), allocatable :: inc

Inclination

type(swiftest_particle_info), public, dimension(:), allocatable :: info

Particle metadata information

real(kind=DP), public, dimension(:), allocatable :: ir3h

Inverse heliocentric radius term (1/rh**3)

integer(kind=I4B), public, dimension(:), allocatable :: isperi

perihelion passage flag

integer(kind=I4B), public, dimension(:,:), allocatable :: k_pltp

Index array used to convert flattened the body-body comparison upper triangular matrix

logical, public, dimension(:), allocatable :: lcollision

flag indicating whether body has merged with another this time step

logical, public, dimension(:), allocatable :: ldiscard

Body should be discarded

logical, public, dimension(:), allocatable :: lencounter

flag indicating whether body is part of an encounter this time step

logical, public :: lfirst = .true.

Run the current step as a first

logical, public, dimension(:), allocatable :: lmask

Logical mask used to select a subset of bodies when performing certain operations (drift, kick, accel, etc.)

real(kind=DP), public, dimension(:), allocatable :: mass

Body mass (units MU)

real(kind=DP), public, dimension(:), allocatable :: mu

G * (Mcb + [m])

integer(kind=I4B), public :: nbody = 0

Number of bodies

integer(kind=I4B), public, dimension(:), allocatable :: nplenc

number of encounters with planets this time step

integer(kind=I8B), public :: npltp

Number of pl-tp comparisons in the flattened upper triangular matrix

real(kind=DP), public, dimension(:), allocatable :: omega

Argument of pericenter

real(kind=DP), public, dimension(:), allocatable :: peri

perihelion distance

real(kind=DP), public, dimension(:,:), allocatable :: rb

Barycentric position

real(kind=DP), public, dimension(:,:), allocatable :: rh

Heliocentric position

integer(kind=I4B), public, dimension(:), allocatable :: status

An integrator-specific status indicator

real(kind=DP), public, dimension(:,:), allocatable :: vb

Barycentric velocity

real(kind=DP), public, dimension(:,:), allocatable :: vh

Heliocentric velocity

Type-Bound Procedures

procedure, public :: accel => whm_kick_getacch_tp

Compute heliocentric accelerations of test particles

procedure, public :: accel_gr => whm_gr_kick_getacch_tp

Acceleration term arising from the post-Newtonian correction

procedure, public :: accel_int => swiftest_kick_getacch_int_tp

Compute direct cross (third) term heliocentric accelerations of test particles by massive bodies

procedure, public :: accel_non_spherical_cb => swiftest_non_spherical_cb_acc_tp

Compute the barycentric accelerations of bodies due to the oblateness of the central body

procedure, public :: accel_pr => whm_dust_accel_pr
procedure, public :: accel_user => swiftest_user_kick_getacch_body

Add user-supplied heliocentric accelerations to planets

procedure, public :: append => swiftest_util_append_tp

Appends elements from one structure to another

procedure, public :: b2h => swiftest_util_coord_b2h_tp

Convert test particles from barycentric to heliocentric coordinates (position and velocity)

procedure, public :: dealloc => swiftest_util_dealloc_tp

Deallocates all allocatable arrays

procedure, public :: discard => swiftest_discard_tp

Check to see if test particles should be discarded based on their positions relative to the massive bodies

procedure, public :: drift => swiftest_drift_body

Loop through bodies and call Danby drift routine on heliocentric variables

procedure, public :: el2xv => swiftest_orbel_el2xv_vec

Convert orbital elements to position and velocity vectors

procedure, public :: fill => swiftest_util_fill_tp

“Fills” bodies from one object into another depending on the results of a mask (uses the UNPACK intrinsic)

procedure, public :: get_peri => swiftest_util_peri_body

Determine nbody_system pericenter passages for test particles

procedure, public :: gr_pos_kick => whm_gr_p4_tp

Position kick due to p**4 term in the post-Newtonian correction

procedure, public :: h2b => swiftest_util_coord_h2b_tp

Convert test particles from heliocentric to barycentric coordinates (position and velocity)

procedure, public :: kick => whm_kick_vh_tp

Kick heliocentric velocities of test particles

procedure, public :: pv2v => swiftest_gr_pv2vh_body

Converts from psudeovelocity to velocity for GR calculations using symplectic integrators

generic, public :: read_frame => read_frame_bin

Add the generic read frame for Fortran binary files

procedure, public :: read_frame_bin => swiftest_io_read_frame_body

I/O routine for writing out a single frame of time-series data for the central body

procedure, public :: read_in => swiftest_io_read_in_body

Read in body initial conditions from an ascii file

procedure, public :: rearrange => swiftest_util_sort_rearrange_tp

Rearranges the order of array elements of body based on an input index array. Used in sorting methods

procedure, public :: rearray => swiftest_util_rearray_tp

Clean up the test particle structures to remove discarded bodies

procedure, public :: resize => swiftest_util_resize_tp

Checks the current size of a Swiftest body against the requested size and resizes it if it is too small.

procedure, public :: rh2rb => swiftest_util_coord_rh2rb_tp

Convert test particles from heliocentric to barycentric coordinates (position only)

procedure, public :: save_discard => swiftest_util_save_discard_body

Saves a snapshot of the this body to the collision storage object

procedure, public :: set_ir3 => swiftest_util_set_ir3h

Sets the inverse heliocentric radius term (1/rh**3)

procedure, public :: set_mu => swiftest_util_set_mu_tp

Method used to construct the vectorized form of the central body mass

procedure, public :: setup => swiftest_util_setup_tp

A base constructor that sets the number of bodies and

procedure, public :: sort => swiftest_util_sort_tp

Sorts body arrays by a sortable component

procedure, public :: spill => swiftest_util_spill_tp

“Spills” bodies from one object to another depending on the results of a mask (uses the PACK intrinsic)

procedure, public :: step => whm_step_tp

Steps the particle forward one stepsize

procedure, public :: v2pv => swiftest_gr_vh2pv_body

Converts from velocity to psudeovelocity for GR calculations using symplectic integrators

procedure, public :: vb2vh => swiftest_util_coord_vb2vh_tp

Convert test particles from barycentric to heliocentric coordinates (velocity only)

procedure, public :: vh2vb => swiftest_util_coord_vh2vb_tp

Convert test particles from heliocentric to barycentric coordinates (velocity only)

procedure, public :: write_frame => swiftest_io_netcdf_write_frame_body

I/O routine for writing out a single frame of time-series data for all bodies in the nbody_system in NetCDF format

procedure, public :: write_info => swiftest_io_netcdf_write_info_body

Dump contents of particle information metadata to file

procedure, public :: xv2el => swiftest_orbel_xv2el_vec

Convert position and velocity vectors to orbital elements