Definition of classes and methods specific to the Regularized Mixed Variable Symplectic (INT_RMVS) integrator Partially adapted from David E. Kaufmann’s Swifter module: module_rmvs.f90 RMVS test particle class
Broadcasts the image 1 object to all other images in a coarray
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(rmvs_tp), | intent(inout), | codimension[*] | :: | tp |
RMVS pl object |
Broadcasts the image 1 object to all other images in a coarray
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(rmvs_tp), | intent(inout), | codimension[*] | :: | tp |
RMVS pl object |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_tp), | intent(inout) | :: | self |
RMVS test particle object |
||
| class(swiftest_nbody_system), | intent(inout) | :: | nbody_system |
Swiftest nbody system object |
||
| class(swiftest_parameters), | intent(inout) | :: | param |
Current run configuration parameters |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_tp), | intent(inout) | :: | self |
RMVS test particle object |
||
| class(swiftest_parameters), | intent(inout) | :: | param |
Current run configuration parameters |
||
| class(rmvs_nbody_system), | intent(inout) | :: | nbody_system |
RMVS nbody system object |
||
| real(kind=DP), | intent(in) | :: | dt |
step size |
Returns true if there is at least one close encounter
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_tp), | intent(inout) | :: | self |
RMVS test particle data structure |
||
| class(swiftest_nbody_system), | intent(inout) | :: | nbody_system |
Swiftest central body particle data structuree |
||
| class(swiftest_parameters), | intent(inout) | :: | param |
Current run configuration parameters |
||
| real(kind=DP), | intent(in) | :: | t |
Current time |
||
| logical, | intent(in) | :: | lbeg |
Logical flag that determines whether or not this is the beginning or end of the step |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_nbody_system), | intent(inout) | :: | self |
RMVS nbody system object |
||
| class(swiftest_parameters), | intent(inout) | :: | param |
Current run configuration parameters |
||
| real(kind=DP), | intent(in) | :: | t |
Simulation time |
||
| real(kind=DP), | intent(in) | :: | dt |
Current stepsize |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_pl), | intent(inout) | :: | self |
RMVS massive body object |
||
| class(swiftest_body), | intent(in) | :: | source |
Source object to append |
||
| logical, | intent(in), | dimension(:) | :: | lsource_mask |
Logical mask indicating which elements to append to |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_tp), | intent(inout) | :: | self |
RMVS test particle object |
||
| class(swiftest_body), | intent(in) | :: | source |
Source object to append |
||
| logical, | intent(in), | dimension(:) | :: | lsource_mask |
Logical mask indicating which elements to append to |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_cb), | intent(inout) | :: | self |
RMVS central body object |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_interp), | intent(inout) | :: | self |
RMVS interpolated nbody_system variables object |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_pl), | intent(inout) | :: | self |
RMVS massive body object |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_nbody_system), | intent(inout) | :: | self |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_tp), | intent(inout) | :: | self |
RMVS test particle object |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_pl), | intent(inout) | :: | self |
RMVS massive body object |
||
| class(swiftest_body), | intent(in) | :: | inserts |
Inserted object |
||
| logical, | intent(in), | dimension(:) | :: | lfill_list |
Logical array of bodies to merge into the keeps |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_tp), | intent(inout) | :: | self |
RMVS massive body object |
||
| class(swiftest_body), | intent(in) | :: | inserts |
Inserted object |
||
| logical, | intent(in), | dimension(:) | :: | lfill_list |
Logical array of bodies to merge into the keeps |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_pl), | intent(inout) | :: | self |
RMVS massive body object |
||
| integer(kind=I4B), | intent(in) | :: | nnew |
New size neded |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_tp), | intent(inout) | :: | self |
RMVS test particle object |
||
| integer(kind=I4B), | intent(in) | :: | nnew |
New size neded |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_nbody_system), | intent(inout) | :: | self |
RMVS system object |
||
| class(swiftest_storage), | intent(inout), | allocatable | :: | system_history |
Stores the system history between output dumps |
|
| class(swiftest_parameters), | intent(inout) | :: | param |
Current run configuration parameters |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_pl), | intent(inout) | :: | self |
RMVS massive body object |
||
| integer(kind=I4B), | intent(in) | :: | n |
Number of particles to allocate space for |
||
| class(swiftest_parameters), | intent(in) | :: | param |
Current run configuration parameters |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_tp), | intent(inout) | :: | self |
RMVS test particle object |
||
| integer(kind=I4B), | intent(in) | :: | n |
Number of particles to allocate space for |
||
| class(swiftest_parameters), | intent(in) | :: | param |
Current run configuration parametere |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_pl), | intent(inout) | :: | self |
RMVS massive body object |
||
| character(len=*), | intent(in) | :: | sortby |
Sorting attribute |
||
| logical, | intent(in) | :: | ascending |
Logical flag indicating whether or not the sorting should be in ascending or descending order |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_pl), | intent(inout) | :: | self |
RMVS massive body object |
||
| integer(kind=I4B), | intent(in), | dimension(:) | :: | ind |
Index array used to restructure the body (should contain all 1:n index values in the desired order) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_tp), | intent(inout) | :: | self |
RMVS test particle object |
||
| integer(kind=I4B), | intent(in), | dimension(:) | :: | ind |
Index array used to restructure the body (should contain all 1:n index values in the desired order) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_tp), | intent(inout) | :: | self |
RMVS test particle object |
||
| character(len=*), | intent(in) | :: | sortby |
Sorting attribute |
||
| logical, | intent(in) | :: | ascending |
Logical flag indicating whether or not the sorting should be in ascending or descending order |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_pl), | intent(inout) | :: | self |
RMVS massive body object |
||
| class(swiftest_body), | intent(inout) | :: | discards |
Discarded object |
||
| logical, | intent(in), | dimension(:) | :: | lspill_list |
Logical array of bodies to spill into the discards |
|
| logical, | intent(in) | :: | ldestructive |
Logical flag indicating whether or not this operation should alter the keeps array or not |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rmvs_tp), | intent(inout) | :: | self |
RMVS test particle object |
||
| class(swiftest_body), | intent(inout) | :: | discards |
Discarded object |
||
| logical, | intent(in), | dimension(:) | :: | lspill_list |
Logical array of bodies to spill into the discards |
|
| logical, | intent(in) | :: | ldestructive |
Logical flag indicating whether or not this operation should alter the keeps array or not |
RMVS central body particle class
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=DP), | public | :: | GM0 | = | 0.0_DP |
Initial G*mass of the central body |
|
| real(kind=DP), | public | :: | Gmass | = | 0.0_DP |
Central mass gravitational term G * mass (units GU * MU) |
|
| real(kind=DP), | public, | dimension(NDIM) | :: | Ip | = | 0.0_DP |
Unitless principal moments of inertia (I1, I2, I3) / (MR**2). Principal axis rotation assumed. |
| real(kind=DP), | public, | dimension(NDIM) | :: | L0 | = | 0.0_DP |
Initial angular momentum of the central body |
| real(kind=DP), | public | :: | Q | = | 0.0_DP |
Tidal quality factor |
|
| real(kind=DP), | public | :: | R0 | = | 0.0_DP |
Initial radius of the central body |
|
| real(kind=DP), | public, | dimension(NDIM) | :: | agr | = | 0.0_DP |
Acceleration due to post-Newtonian correction |
| real(kind=DP), | public, | dimension(NDIM) | :: | aobl | = | 0.0_DP |
Barycentric acceleration due to central body oblatenes |
| real(kind=DP), | public, | dimension(NDIM) | :: | aoblbeg | = | 0.0_DP |
Barycentric acceleration due to central body oblatenes at beginning of step |
| real(kind=DP), | public, | dimension(NDIM) | :: | aoblend | = | 0.0_DP |
Barycentric acceleration due to central body oblatenes at end of step |
| real(kind=DP), | public, | dimension(NDIM) | :: | atide | = | 0.0_DP |
Barycentric acceleration due to central body oblatenes |
| real(kind=DP), | public, | dimension(NDIM) | :: | atidebeg | = | 0.0_DP |
Barycentric acceleration due to central body oblatenes at beginning of step |
| real(kind=DP), | public, | dimension(NDIM) | :: | atideend | = | 0.0_DP |
Barycentric acceleration due to central body oblatenes at end of step |
| real(kind=DP), | public, | dimension(:,:,:), allocatable | :: | c_lm |
Spherical Harmonics coefficients for the central body |
||
| real(kind=DP), | public | :: | dGM | = | 0.0_DP |
Change in G*mass of the central body |
|
| real(kind=DP), | public, | dimension(NDIM) | :: | dL | = | 0.0_DP |
Change in angular momentum of the central body |
| real(kind=DP), | public | :: | dR | = | 0.0_DP |
Change in the radius of the central body |
|
| real(kind=DP), | public | :: | density | = | 1.0_DP |
Central body mass density - calculated internally (units MU / DU**3) |
|
| integer(kind=I4B), | public | :: | id | = | 0 |
External identifier (unique) |
|
| class(swiftest_particle_info), | public, | allocatable | :: | info |
An abstract class for a generic central body in a Swiftest simulation Particle metadata information |
||
| type(rmvs_interp), | public, | dimension(:), allocatable | :: | inner |
interpolated heliocentric central body position for inner encounters |
||
| real(kind=DP), | public | :: | j2rp2 | = | 0.0_DP |
J2*R^2 term for central body |
|
| real(kind=DP), | public | :: | j4rp4 | = | 0.0_DP |
J4*R^4 term for central body |
|
| real(kind=DP), | public | :: | k2 | = | 0.0_DP |
Tidal Love number |
|
| logical, | public | :: | lplanetocentric | = | .false. |
Flag that indicates that the object is a planetocentric set of masive bodies used for close encounter calculations |
|
| real(kind=DP), | public | :: | mass | = | 0.0_DP |
Central body mass (units MU) |
|
| type(rmvs_interp), | public, | dimension(:), allocatable | :: | outer |
interpolated heliocentric central body position for outer encounters |
||
| real(kind=DP), | public | :: | radius | = | 0.0_DP |
Central body radius (units DU) |
|
| real(kind=DP), | public, | dimension(NDIM) | :: | rb | = | 0.0_DP |
Barycentric position (units DU) |
| real(kind=DP), | public, | dimension(NDIM) | :: | rot | = | 0.0_DP |
Body rotation vector in inertial coordinate frame (units rad / TU) |
| real(kind=DP), | public | :: | rotphase | = | 0.0_DP |
Body rotation phase about the rotation pole (0 to 1) |
|
| real(kind=DP), | public | :: | tlag | = | 0.0_DP |
Tidal phase lag angle |
|
| real(kind=DP), | public, | dimension(NDIM) | :: | vb | = | 0.0_DP |
Barycentric velocity (units DU / TU) |
| final :: rmvs_final_cb | Finalizes the RMVS central body object - deallocates all allocatables |
| procedure, public :: dealloc => rmvs_util_dealloc_cb | Deallocates all allocatable arrays |
| procedure, public :: read_in => swiftest_io_read_in_cb | Read in central body initial conditions from an ASCII file |
| procedure, public :: rotphase_update => swiftest_drift_cb_rotphase_update | updates the central body rotation phase |
| procedure, public :: write_frame => swiftest_io_netcdf_write_frame_cb | I/O routine for writing out a single frame of time-series data for all bodies in the system in NetCDF format |
| procedure, public :: write_info => swiftest_io_netcdf_write_info_cb | Dump contents of particle information metadata to file |
In the RMVS integrator, pl-tp encounters are handeled, but not pl-pl
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=DP), | public | :: | E_collisions | = | 0.0_DP |
Energy lost from nbody_system due to collisions |
|
| real(kind=DP), | public | :: | E_orbit_error | = | 0.0_DP | ||
| real(kind=DP), | public | :: | E_orbit_orig | = | 0.0_DP |
Initial orbital energy |
|
| real(kind=DP), | public | :: | E_untracked | = | 0.0_DP |
Energy gained from nbody_system due to escaped bodies |
|
| real(kind=DP), | public | :: | E_untracked_error | = | 0.0_DP | ||
| real(kind=DP), | public | :: | Ecoll_error | = | 0.0_DP | ||
| real(kind=DP), | public | :: | GMescape | = | 0.0_DP |
Mass of bodies that escaped the nbody_system (used for bookeeping) |
|
| real(kind=DP), | public | :: | GMtot | = | 0.0_DP |
Total nbody_system mass - used for barycentric coordinate conversion |
|
| real(kind=DP), | public | :: | GMtot_orig | = | 0.0_DP |
Initial nbody_system mass |
|
| real(kind=DP), | public, | dimension(NDIM) | :: | L_escape | = | 0.0_DP |
Angular momentum of bodies that escaped the nbody_system (used for bookeeping) |
| real(kind=DP), | public | :: | L_escape_error | = | 0.0_DP | ||
| real(kind=DP), | public, | dimension(NDIM) | :: | L_orbit | = | 0.0_DP |
nbody_system orbital angular momentum vector |
| real(kind=DP), | public | :: | L_orbit_error | = | 0.0_DP | ||
| real(kind=DP), | public, | dimension(NDIM) | :: | L_orbit_orig | = | 0.0_DP |
Initial orbital angular momentum |
| real(kind=DP), | public, | dimension(NDIM) | :: | L_rot | = | 0.0_DP |
nbody_system rotational angular momentum vector |
| real(kind=DP), | public | :: | L_rot_error | = | 0.0_DP | ||
| real(kind=DP), | public, | dimension(NDIM) | :: | L_rot_orig | = | 0.0_DP |
Initial rotational angular momentum vector |
| real(kind=DP), | public, | dimension(NDIM) | :: | L_total | = | 0.0_DP |
nbody_system angular momentum vector |
| real(kind=DP), | public | :: | L_total_error | = | 0.0_DP | ||
| real(kind=DP), | public, | dimension(NDIM) | :: | L_total_orig | = | 0.0_DP |
Initial total angular momentum vector |
| real(kind=DP), | public | :: | Mescape_error | = | 0.0_DP | ||
| real(kind=DP), | public | :: | Mtot_error | = | 0.0_DP | ||
| real(kind=DP), | public | :: | be | = | 0.0_DP |
nbody_system binding energy of all bodies |
|
| real(kind=DP), | public | :: | be_cb | = | 0.0_DP |
Binding energy of central body (usually orders of magnitude larger than the rest of the system, and therefore tracked seperately) |
|
| real(kind=DP), | public | :: | be_error | = | 0.0_DP | ||
| real(kind=DP), | public | :: | be_orig | = | 0.0_DP |
Initial gravitational binding energy |
|
| class(swiftest_cb), | public, | allocatable | :: | cb |
Central body data structure |
||
| class(collision_basic), | public, | allocatable | :: | collider |
Collision system object |
||
| class(collision_storage), | public, | allocatable | :: | collision_history |
Stores encounter history for later retrieval and saving to file |
||
| class(encounter_storage), | public, | allocatable | :: | encounter_history |
Stores encounter history for later retrieval and saving to file |
||
| real(kind=DP), | public | :: | ke_orbit | = | 0.0_DP |
nbody_system orbital kinetic energy |
|
| real(kind=DP), | public | :: | ke_orbit_error | = | 0.0_DP | ||
| real(kind=DP), | public | :: | ke_orbit_orig | = | 0.0_DP |
Initial orbital kinetic energy |
|
| real(kind=DP), | public | :: | ke_rot | = | 0.0_DP |
nbody_system rotational kinetic energy |
|
| real(kind=DP), | public | :: | ke_rot_error | = | 0.0_DP | ||
| real(kind=DP), | public | :: | ke_rot_orig | = | 0.0_DP |
Initial rotational kinetic energy |
|
| logical, | public | :: | lbeg |
True if this is the beginning of a step. This is used so that test particle steps can be calculated separately from massive bodies. Massive body variables are saved at half steps, and passed to the test particles |
|||
| logical, | public | :: | lfirst_io | = | .true. |
Flag to indicate that this is the first time to write to a file |
|
| logical, | public | :: | lfirst_peri | = | .true. |
Flag to indicate that this is the first pericenter passage |
|
| logical, | public | :: | lplanetocentric | = | .false. |
Flag that indicates that the object is a planetocentric set of masive bodies used for close encounter calculations |
|
| integer(kind=I4B), | public | :: | maxid | = | -1 |
The current maximum particle id number |
|
| real(kind=DP), | public | :: | oblpot | = | 0.0_DP |
nbody_system potential energy due to oblateness of the central body |
|
| real(kind=DP), | public | :: | pe | = | 0.0_DP |
nbody_system potential energy |
|
| real(kind=DP), | public | :: | pe_error | = | 0.0_DP | ||
| real(kind=DP), | public | :: | pe_orig | = | 0.0_DP |
Initial potential energy |
|
| class(swiftest_pl), | public, | allocatable | :: | pl |
Massive body data structure |
||
| class(swiftest_pl), | public, | allocatable | :: | pl_adds |
List of added bodies in mergers or collisions |
||
| class(swiftest_pl), | public, | allocatable | :: | pl_discards |
Discarded massive body particle data structure |
||
| class(collision_list_plpl), | public, | allocatable | :: | plpl_collision |
List of massive body-massive body collisions in a single step |
||
| class(encounter_list), | public, | allocatable | :: | plpl_encounter |
List of massive body-massive body encounters in a single step |
||
| class(collision_list_pltp), | public, | allocatable | :: | pltp_collision |
List of massive body-test particle collisions in a single step |
||
| class(encounter_list), | public, | allocatable | :: | pltp_encounter |
List of massive body-test particle encounters in a single step |
||
| real(kind=DP), | public | :: | rts |
fraction of Hill’s sphere radius to use as radius of encounter region |
|||
| real(kind=DP), | public | :: | t | = | -1.0_DP |
Integration current time |
|
| real(kind=DP), | public | :: | te | = | 0.0_DP |
nbody_system total energy |
|
| real(kind=DP), | public | :: | te_error | = | 0.0_DP | ||
| real(kind=DP), | public | :: | te_orig | = | 0.0_DP |
Initial total energy (sum of all sources of energy tracked) |
|
| class(swiftest_tp), | public, | allocatable | :: | tp |
Test particle data structure |
||
| class(swiftest_tp), | public, | allocatable | :: | tp_adds |
List of added bodies in mergers or collisions |
||
| class(swiftest_tp), | public, | allocatable | :: | tp_discards |
Discarded test particle data structure |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | vbeg |
Planet velocities at beginning ot step |
| procedure, public :: coarray_balance => swiftest_coarray_balance_system | Checks whether or not the test particle coarrays need to be rebalanced. |
| procedure, public :: coarray_collect => swiftest_coarray_collect_system | Collects all the test particles from other images into the image #1 test particle system |
| procedure, public :: coarray_distribute => swiftest_coarray_distribute_system | Distributes test particles from image #1 out to all images. |
| procedure, public :: compact_output => swiftest_io_compact_output | Prints out out terminal output when display_style is set to COMPACT |
| procedure, public :: conservation_report => swiftest_io_conservation_report | Compute energy and momentum and print out the change with time |
| procedure, public :: dealloc => rmvs_util_dealloc_system | Replace the abstract procedures with concrete ones Performs RMVS-specific deallocation |
| procedure, public :: discard => swiftest_discard_system | Perform a discard step on the nbody_system |
| procedure, public :: display_run_information => swiftest_io_display_run_information | Displays helpful information about the run |
| procedure, public :: dump => swiftest_io_dump_system | Dump the state of the nbody_system to a file |
| procedure, public :: get_energy_and_momentum => swiftest_util_get_energy_and_momentum_system | Calculates the total nbody_system energy and momentum |
| procedure, public :: get_idvals => swiftest_util_get_idvalues_system | Returns an array of all id values in use in the nbody_system |
| procedure, public :: get_t0_values => swiftest_io_netcdf_get_t0_values_system | Validates the dump file to check whether the dump file initial conditions duplicate the last frame of the netcdf output. |
| procedure, public :: init_particle_info => swiftest_util_setup_initialize_particle_info_system | Initialize the nbody_system from input files |
| procedure, public :: initialize => rmvs_util_setup_initialize_system | Performs RMVS-specific initilization steps, including generating the close encounter planetocentric structures |
| procedure, public :: initialize_output_file => swiftest_io_initialize_output_file_system | Write a frame of input data from file |
| procedure, public :: obl_pot => swiftest_obl_pot_system | Compute the contribution to the total gravitational potential due solely to the oblateness of the central body |
| procedure, public :: read_frame => swiftest_io_netcdf_read_frame_system | Read in a frame of input data from file |
| procedure, public :: read_hdr => swiftest_io_netcdf_read_hdr_system | Read a header for an output frame in NetCDF format |
| procedure, public :: read_in => swiftest_io_read_in_system | Reads the initial conditions for an nbody system |
| procedure, public :: read_particle_info => swiftest_io_netcdf_read_particle_info_system | Read in particle metadata from file |
| procedure, public :: rescale => swiftest_util_rescale_system | Rescales the nbody_system into a new set of units |
| procedure, public :: set_msys => swiftest_util_set_msys | Sets the value of msys from the masses of nbody_system bodies. |
| procedure, public :: step => rmvs_step_system | Advance the RMVS nbody system forward in time by one step |
| procedure, public :: validate_ids => swiftest_util_valid_id_system | Validate the numerical ids passed to the nbody_system and save the maximum value |
| procedure, public :: write_frame => swiftest_io_netcdf_write_frame_system | Write a frame of input data from file |
| procedure, public :: write_hdr => swiftest_io_netcdf_write_hdr_system | Write a header for an output frame in NetCDF format |
RMVS massive body particle class
| 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 | :: | Ip |
Unitless principal moments of inertia (I1, I2, I3) / (MR**2). Principal axis rotation assumed. |
||
| real(kind=DP), | public, | dimension(:), allocatable | :: | Q |
Tidal quality factor |
||
| 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 |
||
| real(kind=DP), | public, | dimension(:), allocatable | :: | eta |
Jacobi mass |
||
| 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 |
||
| type(rmvs_interp), | public, | dimension(:), allocatable | :: | inner |
interpolated heliocentric central body position for inner encounters |
||
| real(kind=DP), | public, | dimension(:), allocatable | :: | ir3h |
Inverse heliocentric radius term (1/rh**3) |
||
| real(kind=DP), | public, | dimension(:), allocatable | :: | ir3j |
Third term of heliocentric acceleration |
||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | isperi |
perihelion passage flag |
||
| real(kind=DP), | public, | dimension(:), allocatable | :: | k2 |
Tidal Love number |
||
| integer(kind=I4B), | public, | dimension(:,:), allocatable | :: | k_plpl |
Index array used to convert flattened the body-body comparison upper triangular matrix |
||
| type(swiftest_kinship), | public, | dimension(:), allocatable | :: | kin |
Array of merger relationship structures that can account for multiple pairwise mergers in a single step |
||
| 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.) |
||
| logical, | public, | dimension(:), allocatable | :: | lmtiny |
flag indicating whether this body is below the GMTINY cutoff value |
||
| logical, | public | :: | lplanetocentric | = | .false. |
Flag that indicates that the object is a planetocentric set of masive bodies used for close encounter calculations |
|
| real(kind=DP), | public, | dimension(:), allocatable | :: | mass |
Body mass (units MU) |
||
| real(kind=DP), | public, | dimension(:), allocatable | :: | mu |
G * (Mcb + [m]) |
||
| real(kind=DP), | public, | dimension(:), allocatable | :: | muj |
Jacobi mu: GMcb * eta(i) / eta(i - 1) |
||
| integer(kind=I4B), | public | :: | nbody | = | 0 |
Number of bodies |
|
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | nenc |
number of test particles encountering planet this full rmvs time step |
||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | nplenc |
number of encounters with other planets this time step |
||
| integer(kind=I4B), | public | :: | nplm | = | 0 |
number of bodies above the GMTINY limit |
|
| integer(kind=I8B), | public | :: | nplpl |
Number of body-body comparisons in the flattened upper triangular matrix |
|||
| integer(kind=I8B), | public | :: | nplplm |
Number of body (all massive)-body (only those above GMTINY) comparisons in the flattened upper triangular matrix |
|||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | ntpenc |
number of encounters with test particles this time step |
||
| real(kind=DP), | public, | dimension(:), allocatable | :: | omega |
Argument of pericenter |
||
| type(rmvs_interp), | public, | dimension(:), allocatable | :: | outer |
interpolated heliocentric central body position for outer encounters |
||
| real(kind=DP), | public, | dimension(:), allocatable | :: | peri |
perihelion distance |
||
| class(rmvs_nbody_system), | public, | dimension(:), allocatable | :: | planetocentric |
Planetocentric version of the massive body objects (one for each massive body) |
||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | plind |
Connects the planetocentric indices back to the heliocentric planet list |
||
| 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 | :: | rbeg |
Position at beginning of step |
||
| real(kind=DP), | public, | dimension(:), allocatable | :: | renc |
Critical radius for close encounters |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | rend |
Position at end of step |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | rh |
Heliocentric position |
||
| real(kind=DP), | public, | dimension(:), allocatable | :: | rhill |
Body mass (units MU) |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | rot |
Body rotation vector in inertial coordinate frame (units rad / TU) |
||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | status |
An integrator-specific status indicator |
||
| real(kind=DP), | public, | dimension(:), allocatable | :: | tlag |
Tidal phase lag |
||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | tpenc1P |
index of first test particle encountering planet |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | vb |
Barycentric velocity |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | vbeg |
Velocity at beginning of step |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | vh |
Heliocentric velocity |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | vj |
Jacobi velocity |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | xj |
Jacobi position |
| final :: rmvs_final_pl | Finalizes the RMVS massive body object - deallocates all allocatables |
| procedure, public :: accel => whm_kick_getacch_pl | Compute heliocentric accelerations of massive bodies |
| procedure, public :: accel_gr => whm_gr_kick_getacch_pl | Acceleration term arising from the post-Newtonian correction |
| procedure, public :: accel_int => swiftest_kick_getacch_int_pl | Compute direct cross (third) term heliocentric accelerations of massive bodies |
| procedure, public :: accel_non_spherical_cb => swiftest_non_spherical_cb_acc_pl | Compute the barycentric accelerations of bodies due to the oblateness of the central body |
| procedure, public :: accel_user => swiftest_user_kick_getacch_body | Add user-supplied heliocentric accelerations to planets |
| procedure, public :: append => rmvs_util_append_pl | Appends elements from one structure to another |
| procedure, public :: b2h => swiftest_util_coord_b2h_pl | Convert massive bodies from barycentric to heliocentric coordinates (position and velocity) |
| procedure, public :: dealloc => rmvs_util_dealloc_pl | Deallocates all allocatable arrays |
| procedure, public :: discard => swiftest_discard_pl | Placeholder method for discarding massive bodies |
| procedure, public :: drift => whm_drift_pl | Loop through massive bodies and call Danby drift routine to jacobi coordinates |
| procedure, public :: el2xv => swiftest_orbel_el2xv_vec | Convert orbital elements to position and velocity vectors |
| procedure, public :: fill => rmvs_util_fill_pl | “Fills” bodies from one object into another depending on the results of a mask (uses the UNPACK intrinsic) |
| procedure, public :: flatten => swiftest_util_flatten_eucl_plpl | Sets up the (i, j) -> k indexing used for the single-loop blocking Euclidean distance matrix |
| procedure, public :: get_peri => swiftest_util_peri_body | Determine nbody_system pericenter passages for test particles |
| procedure, public :: gr_pos_kick => whm_gr_p4_pl | Position kick due to p**4 term in the post-Newtonian correction |
| procedure, public :: h2b => swiftest_util_coord_h2b_pl | Convert massive bodies from heliocentric to barycentric coordinates (position and velocity) |
| procedure, public :: h2j => whm_coord_h2j_pl | Convert position and velcoity vectors from heliocentric to Jacobi coordinates |
| procedure, public :: j2h => whm_coord_j2h_pl | Convert position and velcoity vectors from Jacobi to helliocentric coordinates |
| procedure, public :: kick => whm_kick_vh_pl | Kick heliocentric velocities of massive bodies |
| procedure, public :: make_impactors => swiftest_util_make_impactors_pl | Make impactors out of the current kinship relationships |
| 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 => rmvs_util_sort_rearrange_pl | Rearranges the order of array elements of body based on an input index array. Used in sorting methods |
| procedure, public :: rearray => swiftest_util_rearray_pl | Clean up the massive body structures to remove discarded bodies and add new bodies |
| procedure, public :: reset_kinship => swiftest_util_reset_kinship_pl | Resets the kinship status of bodies |
| procedure, public :: resize => rmvs_util_resize_pl | 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_pl | Convert massive bodies 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_beg_end => swiftest_util_set_beg_end_pl | Sets the beginning and ending positions and velocities of planets. |
| procedure, public :: set_ir3 => whm_util_set_ir3j | Sets both the heliocentric and jacobi inverse radius terms (1/rj3 and 1/rh3) |
| procedure, public :: set_mu => whm_util_set_mu_eta_pl | Sets the Jacobi mass value for all massive bodies. |
| generic, public :: set_renc => set_renc_I4B, set_renc_DP | |
| procedure, public :: set_renc_DP => swiftest_util_set_renc_DP | Sets the critical radius for encounter given an input real scale factor |
| procedure, public :: set_renc_I4B => swiftest_util_set_renc_I4B | Sets the critical radius for encounter given an inpput integer scale factor |
| procedure, public :: set_rhill => swiftest_util_set_rhill | Calculates the Hill’s radii for each body |
| procedure, public :: setup => rmvs_util_setup_pl | Constructor method - Allocates space for the input number of bodiess |
| procedure, public :: sort => rmvs_util_sort_pl | Sorts body arrays by a sortable componen |
| procedure, public :: spill => rmvs_util_spill_pl | “Spills” bodies from one object to another depending on the results of a mask (uses the PACK intrinsic) |
| procedure, public :: step => whm_step_pl | 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_pl | Convert massive bodies from barycentric to heliocentric coordinates (velocity only) |
| procedure, public :: vh2vb => swiftest_util_coord_vh2vb_pl | Convert massive bodies from heliocentric to barycentric coordinates (velocity only) |
| procedure, public :: vh2vj => whm_coord_vh2vj_pl | Convert velocity vectors from heliocentric to Jacobi coordinates |
| 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 |
Note to developers: If you add componenets to this class, be sure to update methods and subroutines that traverse the component list, such as rmvs_util_setup_tp and rmvs_util_spill_tp
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| 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 |
||
| type(rmvs_cb), | public | :: | cb_heliocentric |
Copy of original central body object passed to close encounter (used for oblateness acceleration during planetocentric encoountters) |
|||
| real(kind=DP), | public, | dimension(:), allocatable | :: | e |
Eccentricity |
||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | id |
Identifier |
||
| real(kind=DP), | public, | dimension(:), allocatable | :: | inc |
Inclination |
||
| integer(kind=I4B), | public | :: | index |
inner substep number within current set |
|||
| type(swiftest_particle_info), | public, | dimension(:), allocatable | :: | info |
Particle metadata information |
||
| integer(kind=I4B), | public | :: | ipleP |
index value of encountering planet |
|||
| 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.) |
||
| logical, | public, | dimension(:), allocatable | :: | lperi |
planetocentric pericenter passage flag (persistent for a full rmvs time step) over a full RMVS time step) |
||
| logical, | public | :: | lplanetocentric | = | .false. |
Flag that indicates that the object is a planetocentric set of masive bodies used for close encounter calculations |
|
| 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 |
||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | plencP |
index of planet that test particle is encountering (not persistent for a full RMVS time step) |
||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | plperP |
index of planet associated with pericenter distance peri (persistent over a full RMVS time step) |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | rb |
Barycentric position |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | rh |
Heliocentric position |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | rheliocentric |
original heliocentric position (used for oblateness calculation during close encounters) |
||
| 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 |
| final :: rmvs_final_tp | Finalizes the RMVS test particle object - deallocates all allocatables |
| procedure, public :: accel => rmvs_kick_getacch_tp | Calculates either the standard or modified version of the acceleration depending if the |
| 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_user => swiftest_user_kick_getacch_body | Add user-supplied heliocentric accelerations to planets |
| procedure, public :: append => rmvs_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 => rmvs_util_dealloc_tp | Deallocates all allocatable arrays |
| procedure, public :: discard => rmvs_discard_tp | Check to see if test particles should be discarded based on pericenter passage distances with respect to planets encountered |
| 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 :: encounter_check => rmvs_encounter_check_tp | Checks if any test particles are undergoing a close encounter with a massive body |
| procedure, public :: fill => rmvs_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 => rmvs_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 => rmvs_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 => rmvs_util_setup_tp | Constructor method - Allocates space for the input number of bodiess |
| procedure, public :: sort => rmvs_util_sort_tp | Sorts body arrays by a sortable componen |
| procedure, public :: spill => rmvs_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 |
Broadcasts the image 1 object to all other images in a coarray
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(rmvs_tp), | intent(inout), | codimension[*] | :: | tp |
RMVS pl object |
Broadcasts the image 1 object to all other images in a coarray
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(rmvs_tp), | intent(inout), | codimension[*] | :: | tp |
RMVS pl object |
Finalize the RMVS massive body object - deallocates all allocatables
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(rmvs_cb), | intent(inout) | :: | self |
RMVS central body object |
Finalize the RMVS nbody system object - deallocates all allocatables
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(rmvs_interp), | intent(inout) | :: | self |
RMVS nbody system object |
Finalize the RMVS massive body object - deallocates all allocatables
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(rmvs_pl), | intent(inout) | :: | self |
RMVS massive body object |
Finalize the RMVS test particle object - deallocates all allocatables
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(rmvs_tp), | intent(inout) | :: | self |
RMVS test particle object |