Definition of classes and methods used to determine close encounters NetCDF dimension and variable names for the enounter save object
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| character(len=STRMAX), | public | :: | COLLISION_LOG_OUT | Name of log file for collision diagnostic information (each co-image gets its own) |
|||
| character(len=*), | public, | parameter | :: | COLLISION_LOG_OUT | = | "collisions.log" | Name of log file for collision diagnostic information |
| character(len=*), | public, | parameter | :: | COLLISION_OUTFILE | = | 'collisions.nc' | Name of NetCDF output file for collision information |
| integer(kind=I4B), | public, | parameter | :: | COLLRESOLVE_REGIME_DISRUPTION | = | 2 | |
| integer(kind=I4B), | public, | parameter | :: | COLLRESOLVE_REGIME_GRAZE_AND_MERGE | = | 4 | |
| integer(kind=I4B), | public, | parameter | :: | COLLRESOLVE_REGIME_HIT_AND_RUN | = | 5 | |
| integer(kind=I4B), | public, | parameter | :: | COLLRESOLVE_REGIME_MERGE | = | 1 | Symbolic names for collisional outcomes |
| integer(kind=I4B), | public, | parameter | :: | COLLRESOLVE_REGIME_SUPERCATASTROPHIC | = | 3 | |
| real(kind=DP), | public, | parameter | :: | MAX_ROT_SI | = | 7.108e-4*RAD2DEG | Rotational limit in deg/s of cohesionless body from Holsapple (2007) |
| integer(kind=I4B), | public, | parameter | :: | REGIME_CB_IMPACT | = | 6 | |
| integer(kind=I4B), | public, | parameter | :: | REGIME_EJECTED | = | 7 | |
| character(len=NAMELEN), | public, | parameter, dimension(7) | :: | REGIME_NAMES | = | [REGIME_NAME_MERGE, REGIME_NAME_DISRUPTION, REGIME_NAME_SUPERCATASTROPHIC, REGIME_NAME_GRAZE_AND_MERGE, REGIME_NAME_HIT_AND_RUN, REGIME_NAME_CB_IMPACT, REGIME_NAME_EJECTED] | |
| character(len=NAMELEN), | public, | parameter | :: | REGIME_NAME_CB_IMPACT | = | "Central Body Impact" | |
| character(len=NAMELEN), | public, | parameter | :: | REGIME_NAME_DISRUPTION | = | "Disruption" | |
| character(len=NAMELEN), | public, | parameter | :: | REGIME_NAME_EJECTED | = | "Ejected" | |
| character(len=NAMELEN), | public, | parameter | :: | REGIME_NAME_GRAZE_AND_MERGE | = | "Graze and Merge" | |
| character(len=NAMELEN), | public, | parameter | :: | REGIME_NAME_HIT_AND_RUN | = | "Hit and Run" | |
| character(len=NAMELEN), | public, | parameter | :: | REGIME_NAME_MERGE | = | "Merge" | |
| character(len=NAMELEN), | public, | parameter | :: | REGIME_NAME_SUPERCATASTROPHIC | = | "Supercatastrophic" |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_list_plpl), | intent(inout) | :: | self | encounter list object |
||
| class(base_nbody_system), | intent(inout) | :: | nbody_system | Swiftest nbody system object |
||
| class(base_parameters), | intent(inout) | :: | param | Current run configuration parameters |
||
| real(kind=DP), | intent(in) | :: | t | current time |
||
| real(kind=DP), | intent(in) | :: | dt | step size |
||
| integer(kind=I4B), | intent(in) | :: | irec | Current recursion level |
||
| logical, | intent(out) | :: | lany_collision | Returns true if any pair of encounters resulted in a collision |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_list_pltp), | intent(inout) | :: | self | encounter list object |
||
| class(base_nbody_system), | intent(inout) | :: | nbody_system | Swiftest nbody system object |
||
| class(base_parameters), | intent(inout) | :: | param | Current run configuration parameters |
||
| real(kind=DP), | intent(in) | :: | t | current time |
||
| real(kind=DP), | intent(in) | :: | dt | step size |
||
| integer(kind=I4B), | intent(in) | :: | irec | Current recursion level |
||
| logical, | intent(out) | :: | lany_collision | Returns true if any pair of encounters resulted in a collision |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_basic), | intent(inout) | :: | self | Merge fragment nbody_system object |
||
| class(base_nbody_system), | intent(inout) | :: | nbody_system | Swiftest nbody system object |
||
| class(base_parameters), | intent(inout) | :: | param | Current run configuration parameters |
||
| real(kind=DP), | intent(in) | :: | t | The time of the collision |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_bounce), | intent(inout) | :: | self | Bounce fragment nbody_system object |
||
| class(base_nbody_system), | intent(inout) | :: | nbody_system | Swiftest nbody system object |
||
| class(base_parameters), | intent(inout) | :: | param | Current run configuration parameters |
||
| real(kind=DP), | intent(in) | :: | t | The time of the collision |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_basic), | intent(inout) | :: | self | |||
| class(base_nbody_system), | intent(inout) | :: | nbody_system | Swiftest nbody system object |
||
| class(base_parameters), | intent(inout) | :: | param | Current run configuration parameters with SyMBA additions |
||
| real(kind=DP), | intent(in) | :: | t | Time of collision |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_basic), | intent(inout) | :: | self | Merge fragment nbody_system object |
||
| class(base_nbody_system), | intent(inout) | :: | nbody_system | Swiftest nbody system object |
||
| class(base_parameters), | intent(inout) | :: | param | Current run configuration parameters |
||
| real(kind=DP), | intent(in) | :: | t | The time of the collision |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(base_object), | intent(in) | :: | pl | Swiftest massive body object |
||
| integer(kind=I4B), | intent(in), | dimension(:) | :: | collidx | Index of collisional colliders%idx members |
|
| character, | intent(inout) | :: | collider_message | The message to print to the screen. |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_impactors), | intent(inout) | :: | impactors | Collision system object |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_storage), | intent(inout) | :: | self | Collision storage object |
||
| class(base_parameters), | intent(inout) | :: | param | Current run configuration parameters |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_netcdf_parameters), | intent(inout) | :: | self | Parameters used to identify a particular NetCDF dataset |
||
| class(base_parameters), | intent(in) | :: | param | Current run configuration parameters |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_netcdf_parameters), | intent(inout) | :: | self | Parameters used to identify a particular NetCDF dataset |
||
| class(base_parameters), | intent(in) | :: | param | Current run configuration parameters |
||
| logical, | intent(in), | optional | :: | readonly | Logical flag indicating that this should be open read only |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_snapshot), | intent(in) | :: | self | Swiftest encounter structure |
||
| class(encounter_storage), | intent(inout) | :: | history | Collision history object |
||
| class(base_parameters), | intent(inout) | :: | param | Current run configuration parameters |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_basic), | intent(inout) | :: | self | Collision system object |
||
| class(base_nbody_system), | intent(in) | :: | nbody_system | Swiftest nbody system object |
||
| class(base_parameters), | intent(in) | :: | param | Current Swiftest run configuration parameters |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_impactors), | intent(out) | :: | self | Collision impactors object |
||
| class(base_nbody_system), | intent(inout) | :: | nbody_system | Swiftest nbody system object |
||
| class(base_parameters), | intent(in) | :: | param | Current run configuration parameters with Swiftest additions |
||
| integer(kind=I4B), | intent(inout), | dimension(:) | :: | idx_parent | Index of the two bodies considered the “parents” of the collision |
|
| logical, | intent(out) | :: | lflag | Logical flag indicating whether a impactors%id was successfully created or not |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_list_plpl), | intent(inout) | :: | self | pl-pl encounter list |
||
| class(base_nbody_system), | intent(inout) | :: | nbody_system | Swiftest nbody system object |
||
| class(base_parameters), | intent(in) | :: | param | Current run configuration parameters |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_list_pltp), | intent(inout) | :: | self | pl-tp encounter list |
||
| class(base_nbody_system), | intent(inout) | :: | nbody_system | Swiftest nbody system object |
||
| class(base_parameters), | intent(in) | :: | param | Current run configuration parameters |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(base_object), | intent(inout) | :: | pl | Massive body object |
||
| integer(kind=I4B), | intent(in), | dimension(:) | :: | idx | Array holding the indices of the two bodies involved in the collision |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(base_nbody_system), | intent(inout) | :: | nbody_system | Swiftest nbody system object |
||
| class(base_parameters), | intent(inout) | :: | param | Current run configuration parameters with Swiftest additions |
||
| real(kind=DP), | intent(in) | :: | t | Time of collision |
||
| integer(kind=I4B), | intent(in) | :: | status | Status flag to assign to adds |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_list_plpl), | intent(inout) | :: | self | pl-pl encounter list |
||
| class(base_nbody_system), | intent(inout) | :: | nbody_system | Swiftest nbody system object |
||
| class(base_parameters), | intent(inout) | :: | param | Current run configuration parameters with Swiftest additions |
||
| real(kind=DP), | intent(in) | :: | t | Current simulation time |
||
| real(kind=DP), | intent(in) | :: | dt | Current simulation step size |
||
| integer(kind=I4B), | intent(in) | :: | irec | Current recursion level |
pl-tp encounter list
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_list_pltp), | intent(inout) | :: | self | Swiftest nbody system object |
||
| class(base_nbody_system), | intent(inout) | :: | nbody_system | Current run configuration parameters with Swiftest additions |
||
| class(base_parameters), | intent(inout) | :: | param | Current simulation time |
||
| real(kind=DP), | intent(in) | :: | t | Current simulation step size |
||
| real(kind=DP), | intent(in) | :: | dt | Current recursion level |
||
| integer(kind=I4B), | intent(in) | :: | irec |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_basic), | intent(in) | :: | self | Collision system object |
||
| class(base_nbody_system), | intent(inout) | :: | nbody_system | Swiftest nbody system object |
||
| class(base_parameters), | intent(in) | :: | param | Current Swiftest run configuration parameters |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=DP), | intent(inout), | dimension(:) | :: | r | ||
| real(kind=DP), | intent(inout), | dimension(:) | :: | v | ||
| real(kind=DP), | intent(in), | dimension(:) | :: | rcom | ||
| real(kind=DP), | intent(in), | dimension(:) | :: | vcom | ||
| real(kind=DP), | intent(in) | :: | radius |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_basic), | intent(inout) | :: | self | Collision system object |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_fragments), | intent(inout) | :: | self |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_impactors), | intent(inout) | :: | self | Collision system object |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_snapshot), | intent(inout) | :: | self | Collsion snapshot object |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_basic), | intent(inout) | :: | self | Encounter collision system object |
||
| class(base_nbody_system), | intent(inout) | :: | nbody_system | Swiftest nbody system object |
||
| class(base_parameters), | intent(inout) | :: | param | Current Swiftest run configuration parameters |
||
| character(len=*), | intent(in) | :: | phase | One of “before” or “after”, indicating which phase of the calculation this needs to be done |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_snapshot), | intent(in) | :: | self | Collision snapshot object |
||
| integer(kind=I4B), | intent(out), | dimension(:), allocatable | :: | idvals | Array of all id values saved in this snapshot |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_storage), | intent(inout) | :: | self | Collision storage object |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_fragments), | intent(inout) | :: | self |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_storage), | intent(inout) | :: | self | Collision storage object with snapshots |
||
| character(len=*), | intent(in) | :: | stage | Phase of the collision, either ‘before’ or ‘after’ |
||
| class(base_nbody_system), | intent(inout) | :: | nbody_system | Swiftest nbody system object with energy information stored in it |
||
| integer(kind=I4B), | intent(in) | :: | iframe_start | Starting frame index to save the snapshot |
||
| integer(kind=I4B), | intent(in) | :: | iframe_end | Ending frame index to save the snapshot |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_basic), | intent(inout) | :: | self | collisional system |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_fragments), | intent(inout) | :: | self | Collisional nbody_system |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_impactors), | intent(inout) | :: | self | collisional system |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_basic), | intent(inout) | :: | self | collision system object |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_basic), | intent(inout) | :: | self | collision system object |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_basic), | intent(inout) | :: | self | Encounter collision system object |
||
| class(base_nbody_system), | intent(in) | :: | nbody_system | Current nbody system. Used as a mold for the before/after snapshots |
||
| class(base_parameters), | intent(inout) | :: | param | Current Swiftest run configuration parameters |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_fragments), | intent(inout) | :: | self | Swiftest generic body object |
||
| integer(kind=I4B), | intent(in) | :: | n | Number of particles to allocate space for |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_basic), | intent(inout) | :: | self | Encounter collision system object |
||
| integer(kind=I4B), | intent(in) | :: | nfrag | Number of fragments to create |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_basic), | intent(inout) | :: | self | Encounter collision system object |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=DP), | intent(in), | dimension(:) | :: | m_frag | Fragment masses |
|
| real(kind=DP), | intent(inout), | dimension(:,:) | :: | vec_frag | Fragment positions or velocities in the center of mass frame |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(collision_storage), | intent(inout) | :: | self | Swiftest storage object |
||
| class(base_parameters), | intent(inout) | :: | param | Current run configuration parameters |
||
| class(base_nbody_system), | intent(inout) | :: | nbody_system | Swiftest nbody system object to store |
||
| real(kind=DP), | intent(in), | optional | :: | t | Time of snapshot if different from nbody_system time |
|
| character, | intent(in), | optional | :: | arg | “before”: takes a snapshot just before the collision. “after” takes the snapshot just after the collision. |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=DP), | intent(in), | dimension(:) | :: | dL | Change in angular momentum to apply |
|
| real(kind=DP), | intent(in) | :: | mass | Mass of body |
||
| real(kind=DP), | intent(in), | dimension(:) | :: | r | Position of body wrt system center of mass |
|
| real(kind=DP), | intent(inout), | dimension(:) | :: | v | Velocity of body wrt system center of mass |
This class defines a collisional system that stores impactors and fragments. This is written so that various collision models (i.e. Fraggle) could potentially be used to resolve collision by defining extended types of encounters_impactors and/or encounetr_fragments
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=DP), | public | :: | Escale | = | 1.0_DP | Angular momentum scale factor (a convenience unit that is derived from dscale, tscale, and mscale) |
|
| real(kind=DP), | public, | dimension(NDIM,2) | :: | L_orbit | Before/after rotational angular momentum |
||
| real(kind=DP), | public, | dimension(NDIM,2) | :: | L_rot | Before/after total nbody_system angular momentum |
||
| real(kind=DP), | public, | dimension(NDIM,2) | :: | L_total | Before/after orbital kinetic energy |
||
| real(kind=DP), | public | :: | Lscale | = | 1.0_DP | Before/after orbital angular momentum fers to the entire n-body system in its pre-collisional state and index 2 refers to the system in its post-collisional state |
|
| class(base_nbody_system), | public, | allocatable | :: | after | Status flag to pass to the collision list once the collision has been resolved |
||
| real(kind=DP), | public, | dimension(2) | :: | be | Before/after total system energy |
||
| class(base_nbody_system), | public, | allocatable | :: | before | A snapshot of the subset of the nbody_system containing products of the collision |
||
| integer(kind=I4B), | public | :: | collision_id | The current maximum collision id number |
|||
| real(kind=DP), | public | :: | dscale | = | 1.0_DP | Mass scale factor |
|
| class(collision_fragments), | public, | allocatable | :: | fragments | Object containing information on the post-collision system |
||
| class(collision_impactors), | public, | allocatable | :: | impactors | A snapshot of the subset of the nbody_system involved in the collision |
||
| real(kind=DP), | public, | dimension(2) | :: | ke_orbit | Before/after rotational kinetic energy |
||
| real(kind=DP), | public, | dimension(2) | :: | ke_rot | Before/after potential energy |
||
| real(kind=DP), | public | :: | max_rot | = | 0.0_DP | Distance dimension scale factor |
|
| integer(kind=I4B), | public | :: | maxid_collision | = | 0 | Minimum fragment mass |
|
| real(kind=DP), | public | :: | min_mfrag | = | 0.0_DP | Maximum rotation rate (in system or natural units, depending on ) |
|
| real(kind=DP), | public | :: | mscale | = | 1.0_DP | Time scale factor |
|
| real(kind=DP), | public, | dimension(2) | :: | pe | Before/after binding energy |
||
| integer(kind=I4B), | public | :: | status | ID number of this collision event |
|||
| real(kind=DP), | public, | dimension(2) | :: | te | |||
| real(kind=DP), | public | :: | tscale | = | 1.0_DP | Velocity scale factor (a convenience unit that is derived from dscale and tscale) |
|
| real(kind=DP), | public | :: | vscale | = | 1.0_DP | Energy scale factor (a convenience unit that is derived from dscale, tscale, and mscale) |
| final :: collision_final_basic |
| procedure, public :: add_fragments => collision_util_add_fragments_to_collider | Add fragments to nbody_system |
| procedure, public :: dealloc => collision_util_dealloc_basic | Deallocates all allocatables |
| procedure, public :: generate => collision_generate_basic | Merges the impactors to make a single final body |
| procedure, public :: get_energy_and_momentum => collision_util_get_energy_and_momentum | Calculates total nbody_system energy in either the pre-collision outcome state (lbefore = .true.) or the post-collision outcome state (lbefore = .false.) |
| procedure, public :: get_regime => collision_regime_collider | Determine which fragmentation regime the set of impactors will be |
| procedure, public :: hitandrun => collision_generate_hitandrun | Merges the impactors to make a single final body |
| procedure, public :: merge => collision_generate_merge | Merges the impactors to make a single final body |
| procedure, public :: set_coordinate_system => collision_util_set_coordinate_collider | Sets the coordinate system of the collisional system |
| procedure, public :: set_natural_scale => collision_util_set_natural_scale_factors | Scales dimenional quantities to ~O(1) with respect to the collisional system. |
| procedure, public :: set_original_scale => collision_util_set_original_scale_factors | Restores dimenional quantities back to the original system units |
| procedure, public :: setup => collision_util_setup_collider | Initializer for the encounter collision system and the before/after snapshots |
| procedure, public :: setup_fragments => collision_util_setup_fragments_collider | Initializer for the fragments of the collision system. |
| procedure, public :: setup_impactors => collision_util_setup_impactors_collider | Initializer for the impactors for the encounter collision system. Deallocates old impactors before creating new ones |
If a collision would result in a disruption, “bounce” the bodies instead.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=DP), | public | :: | Escale | = | 1.0_DP | Angular momentum scale factor (a convenience unit that is derived from dscale, tscale, and mscale) |
|
| real(kind=DP), | public, | dimension(NDIM,2) | :: | L_orbit | Before/after rotational angular momentum |
||
| real(kind=DP), | public, | dimension(NDIM,2) | :: | L_rot | Before/after total nbody_system angular momentum |
||
| real(kind=DP), | public, | dimension(NDIM,2) | :: | L_total | Before/after orbital kinetic energy |
||
| real(kind=DP), | public | :: | Lscale | = | 1.0_DP | Before/after orbital angular momentum fers to the entire n-body system in its pre-collisional state and index 2 refers to the system in its post-collisional state |
|
| class(base_nbody_system), | public, | allocatable | :: | after | Status flag to pass to the collision list once the collision has been resolved |
||
| real(kind=DP), | public, | dimension(2) | :: | be | Before/after total system energy |
||
| class(base_nbody_system), | public, | allocatable | :: | before | A snapshot of the subset of the nbody_system containing products of the collision |
||
| integer(kind=I4B), | public | :: | collision_id | The current maximum collision id number |
|||
| real(kind=DP), | public | :: | dscale | = | 1.0_DP | Mass scale factor |
|
| class(collision_fragments), | public, | allocatable | :: | fragments | Object containing information on the post-collision system |
||
| class(collision_impactors), | public, | allocatable | :: | impactors | A snapshot of the subset of the nbody_system involved in the collision |
||
| real(kind=DP), | public, | dimension(2) | :: | ke_orbit | Before/after rotational kinetic energy |
||
| real(kind=DP), | public, | dimension(2) | :: | ke_rot | Before/after potential energy |
||
| real(kind=DP), | public | :: | max_rot | = | 0.0_DP | Distance dimension scale factor |
|
| integer(kind=I4B), | public | :: | maxid_collision | = | 0 | Minimum fragment mass |
|
| real(kind=DP), | public | :: | min_mfrag | = | 0.0_DP | Maximum rotation rate (in system or natural units, depending on ) |
|
| real(kind=DP), | public | :: | mscale | = | 1.0_DP | Time scale factor |
|
| real(kind=DP), | public, | dimension(2) | :: | pe | Before/after binding energy |
||
| integer(kind=I4B), | public | :: | status | ID number of this collision event |
|||
| real(kind=DP), | public, | dimension(2) | :: | te | |||
| real(kind=DP), | public | :: | tscale | = | 1.0_DP | Velocity scale factor (a convenience unit that is derived from dscale and tscale) |
|
| real(kind=DP), | public | :: | vscale | = | 1.0_DP | Energy scale factor (a convenience unit that is derived from dscale, tscale, and mscale) |
| procedure, public :: add_fragments => collision_util_add_fragments_to_collider | Add fragments to nbody_system |
| procedure, public :: dealloc => collision_util_dealloc_basic | Deallocates all allocatables |
| procedure, public :: generate => collision_generate_bounce | |
| procedure, public :: get_energy_and_momentum => collision_util_get_energy_and_momentum | Calculates total nbody_system energy in either the pre-collision outcome state (lbefore = .true.) or the post-collision outcome state (lbefore = .false.) |
| procedure, public :: get_regime => collision_regime_collider | Determine which fragmentation regime the set of impactors will be |
| procedure, public :: hitandrun => collision_generate_hitandrun | Merges the impactors to make a single final body |
| procedure, public :: merge => collision_generate_merge | Merges the impactors to make a single final body |
| procedure, public :: set_coordinate_system => collision_util_set_coordinate_collider | Sets the coordinate system of the collisional system |
| procedure, public :: set_natural_scale => collision_util_set_natural_scale_factors | Scales dimenional quantities to ~O(1) with respect to the collisional system. |
| procedure, public :: set_original_scale => collision_util_set_original_scale_factors | Restores dimenional quantities back to the original system units |
| procedure, public :: setup => collision_util_setup_collider | Initializer for the encounter collision system and the before/after snapshots |
| procedure, public :: setup_fragments => collision_util_setup_fragments_collider | Initializer for the fragments of the collision system. |
| procedure, public :: setup_impactors => collision_util_setup_impactors_collider | Initializer for the impactors for the encounter collision system. Deallocates old impactors before creating new ones |
Class definition for the variables that describe a collection of fragments in barycentric coordinates
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=DP), | public, | dimension(:), allocatable | :: | Gmass | G*mass of fragments |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | Ip | Principal axes moment of inertia for fragments |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | L_orbit | Orbital angular momentum vector of each individual fragment |
||
| real(kind=DP), | public, | dimension(NDIM) | :: | L_orbit_tot | Orbital angular momentum vector of all fragments |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | L_rot | Rotational angular momentum vector of each individual fragment |
||
| real(kind=DP), | public, | dimension(NDIM) | :: | L_rot_tot | Rotational angular momentum vector of all fragments |
||
| real(kind=DP), | public | :: | be | Binding energy of all fragments |
|||
| real(kind=DP), | public, | dimension(:), allocatable | :: | density | Radii of fragments |
||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | id | Identifier |
||
| class(base_particle_info), | public, | dimension(:), allocatable | :: | info | Particle metadata information |
||
| real(kind=DP), | public, | dimension(:), allocatable | :: | ke_orbit | Orbital kinetic energy of each individual fragment |
||
| real(kind=DP), | public | :: | ke_orbit_tot | Orbital kinetic energy of all fragments |
|||
| real(kind=DP), | public, | dimension(:), allocatable | :: | ke_rot | Rotational kinetic energy of each individual fragment |
||
| real(kind=DP), | public | :: | ke_rot_tot | Rotational kinetic energy of all fragments |
|||
| real(kind=DP), | public, | dimension(:), allocatable | :: | mass | masses of fragments |
||
| real(kind=DP), | public | :: | mtot | Total mass of fragments |
|||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | n_unit | Array of normal direction unit vectors of individual fragments in the collisional coordinate frame |
||
| integer(kind=I4B), | public | :: | nbody | = | 0 | Number of bodies |
|
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | origin_body | Array of indices indicating which impactor body (1 or 2) the fragment originates from |
||
| real(kind=DP), | public | :: | pe | Potential energy of all fragments |
|||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | r_unit | Array of radial direction unit vectors of individual fragments in the collisional coordinate frame |
||
| real(kind=DP), | public, | dimension(:), allocatable | :: | radius | Radii of fragments |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | rb | Barycentric position |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | rc | Position vectors in the collision coordinate frame |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | rh | Heliocentric position |
||
| real(kind=DP), | public, | dimension(:), allocatable | :: | rmag | Array of radial distance magnitudes of individual fragments in the collisional coordinate frame |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | rot | rotation vectors of fragments |
||
| real(kind=DP), | public, | dimension(:), allocatable | :: | rotmag | Array of rotation magnitudes of individual fragments |
||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | status | An integrator-specific status indicator |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | t_unit | Array of tangential direction unit vectors of individual fragments in the collisional coordinate frame |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | v_unit | Array of velocity direction unit vectors of individual fragments in the collisional coordinate frame |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | vb | Barycentric velocity |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | vc | Velocity vectors in the collision coordinate frame |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | vh | Heliocentric velocity |
||
| real(kind=DP), | public, | dimension(:), allocatable | :: | vmag | Array of radial distance magnitudes of individual fragments in the collisional coordinate frame |
| final :: collision_final_fragments | Finalizer deallocates all allocatables |
| procedure, public :: dealloc => collision_util_dealloc_fragments | Deallocates all allocatable arrays and sets everything else to 0 |
| procedure, public :: reset => collision_util_reset_fragments | |
| procedure, public :: set_coordinate_system => collision_util_set_coordinate_fragments | Sets the coordinate system of the fragments |
| procedure, public :: setup => collision_util_setup_fragments | Allocates all allocatables radius, or other values that get set prior to the call to fraggle_generate) Resets all position and velocity-dependent fragment quantities in order to do a fresh calculation (does not reset mass, |
Class definition for the variables that describe the bodies involved in the collision
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=DP), | public, | dimension(2) | :: | Gmass | Two-body equivalent G*mass of the collider bodies prior to the collision |
||
| real(kind=DP), | public, | dimension(NDIM,2) | :: | Ip | Two-body equivalent principal axes moments of inertia the collider bodies prior to collision |
||
| real(kind=DP), | public, | dimension(NDIM,2) | :: | L_orbit | Two-body equivalent orbital angular momentum vectors of the collider bodies prior to collision |
||
| real(kind=DP), | public, | dimension(NDIM,2) | :: | L_rot | Two-body equivalent rotational angular momentum vectors of the collider bodies prior to collision |
||
| real(kind=DP), | public | :: | Mcb | Mass of central body (used to compute potential energy in regime determination) |
|||
| real(kind=DP), | public | :: | Qloss | Energy lost during the collision |
|||
| real(kind=DP), | public, | dimension(2) | :: | be | Binding energy of each individual impactor |
||
| real(kind=DP), | public, | dimension(NDIM) | :: | bounce_unit | The impact point velocity vector is the component of the velocity in the distance vector direction |
||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | id | Index of bodies involved in the collision |
||
| real(kind=DP), | public, | dimension(2) | :: | ke_orbit | Orbital kinetic energy of each individual impactor |
||
| real(kind=DP), | public, | dimension(2) | :: | ke_rot | Rotational kinetic energy of each individual impactor |
||
| real(kind=DP), | public, | dimension(2) | :: | mass | Two-body equivalent mass of the collider bodies prior to the collision |
||
| real(kind=DP), | public, | dimension(:), allocatable | :: | mass_dist | Distribution of fragment mass determined by the regime calculation (largest fragment, second largest, and remainder) |
||
| integer(kind=I4B), | public | :: | ncoll | Number of bodies involved in the collision |
|||
| real(kind=DP), | public, | dimension(2) | :: | radius | Two-body equivalent radii of the collider bodies prior to the collision |
||
| real(kind=DP), | public, | dimension(NDIM,2) | :: | rb | Two-body equivalent position vectors of the collider bodies prior to collision in system barycentric coordinates |
||
| real(kind=DP), | public, | dimension(NDIM) | :: | rbcom | Center of mass position vector of the collider nbody_system in nbody_system barycentric coordinates |
||
| real(kind=DP), | public, | dimension(NDIM,2) | :: | rc | Two-body equivalent position vectors of the collider bodies prior to collision in collision center of mass coordinates |
||
| real(kind=DP), | public, | dimension(NDIM) | :: | rcimp | Impact point position vector of the collider nbody_system in nbody_system barycentric coordinates |
||
| integer(kind=I4B), | public | :: | regime | Collresolve regime code for this collision |
|||
| real(kind=DP), | public, | dimension(NDIM,2) | :: | rot | Two-body equivalent principal axes moments of inertia the collider bodies prior to collision |
||
| real(kind=DP), | public, | dimension(NDIM) | :: | v_unit | velocity direction unit vector of collisional system |
||
| real(kind=DP), | public, | dimension(NDIM,2) | :: | vb | Two-body equivalent velocity vectors of the collider bodies prior to collision in system barycentric coordinate |
||
| real(kind=DP), | public, | dimension(NDIM) | :: | vbcom | Velocity vector of the center of mass of the collider nbody_system in nbody_system barycentric coordinates |
||
| real(kind=DP), | public, | dimension(NDIM,2) | :: | vc | Two-body equivalent velocity vectors of the collider bodies prior to collision in collision center of mass coordinates |
||
| real(kind=DP), | public, | dimension(NDIM) | :: | x_unit | x-direction unit vector of collisional system ed on the collider barycenter and collisional system unit vectors |
||
| real(kind=DP), | public, | dimension(NDIM) | :: | y_unit | y-direction unit vector of collisional system |
||
| real(kind=DP), | public, | dimension(NDIM) | :: | z_unit | z-direction unit vector of collisional system |
| final :: collision_final_impactors | Finalizer will deallocate all allocatables |
| procedure, public :: consolidate => collision_resolve_consolidate_impactors | Consolidates a multi-body collision into an equivalent 2-body collision |
| procedure, public :: dealloc => collision_util_dealloc_impactors | Resets the collider object variables to 0 and deallocates the index and mass distributions |
| procedure, public :: set_coordinate_system => collision_util_set_coordinate_impactors | Sets the coordinate system of the impactors |
Swiftest class for tracking pl-pl close encounters in a step when collisions are possible
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | id1 | id of the first body in the encounter |
||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | id2 | id of the second body in the encounter |
||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | index1 | position of the first body in the encounter |
||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | index2 | position of the second body in the encounter |
||
| logical, | public, | dimension(:), allocatable | :: | lclosest | indicates that thie pair of bodies is in currently at its closest approach point |
||
| logical, | public | :: | lcollision | Indicates if the encounter resulted in at least one collision |
|||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | level | Recursion level (used in SyMBA) |
||
| logical, | public, | dimension(:), allocatable | :: | lvdotr | relative vdotr flag |
||
| integer(kind=I8B), | public | :: | nenc | = | 0 | Total number of encounters |
|
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | r1 | the position of body 1 in the encounter |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | r2 | the position of body 2 in the encounter |
||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | status | status of the interaction |
||
| real(kind=DP), | public | :: | t | Time of encounter |
|||
| real(kind=DP), | public, | dimension(:), allocatable | :: | tcollision | Time of collision |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | v1 | the velocity of body 1 in the encounter |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | v2 | the velocity of body 2 in the encounter |
| final :: collision_final_plpl |
| procedure, public :: append => encounter_util_append_list | Appends elements from one structure to another |
| procedure, public :: collision_check => collision_check_plpl | Checks if a test particle is going to collide with a massive body |
| procedure, public :: copy => encounter_util_copy_list | Copies elements from the source encounter list into self. |
| procedure, public :: dealloc => encounter_util_dealloc_list | Deallocates all allocatables |
| procedure, public :: extract_collisions => collision_resolve_extract_plpl | Processes the pl-pl encounter list remove only those encounters that led to a collision |
| procedure, public :: resize => encounter_util_resize_list | Checks the current size of the encounter list against the required size and extends it by a factor of 2 more than requested if it is too small. |
| procedure, public :: resolve_collision => collision_resolve_plpl | Process the pl-pl collision list, then modifiy the massive bodies based on the outcome of the collision |
| procedure, public :: setup => encounter_util_setup_list | A constructor that sets the number of encounters and allocates and initializes all arrays |
| procedure, public :: spill => encounter_util_spill_list | “Spills” bodies from one object to another depending on the results of a mask (uses the PACK intrinsic) |
Class for tracking pl-tp close encounters in a step when collisions are possible
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | id1 | id of the first body in the encounter |
||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | id2 | id of the second body in the encounter |
||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | index1 | position of the first body in the encounter |
||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | index2 | position of the second body in the encounter |
||
| logical, | public, | dimension(:), allocatable | :: | lclosest | indicates that thie pair of bodies is in currently at its closest approach point |
||
| logical, | public | :: | lcollision | Indicates if the encounter resulted in at least one collision |
|||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | level | Recursion level (used in SyMBA) |
||
| logical, | public, | dimension(:), allocatable | :: | lvdotr | relative vdotr flag |
||
| integer(kind=I8B), | public | :: | nenc | = | 0 | Total number of encounters |
|
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | r1 | the position of body 1 in the encounter |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | r2 | the position of body 2 in the encounter |
||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | status | status of the interaction |
||
| real(kind=DP), | public | :: | t | Time of encounter |
|||
| real(kind=DP), | public, | dimension(:), allocatable | :: | tcollision | Time of collision |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | v1 | the velocity of body 1 in the encounter |
||
| real(kind=DP), | public, | dimension(:,:), allocatable | :: | v2 | the velocity of body 2 in the encounter |
| final :: collision_final_pltp |
| procedure, public :: append => encounter_util_append_list | Appends elements from one structure to another |
| procedure, public :: collision_check => collision_check_pltp | Checks if a test particle is going to collide with a massive body |
| procedure, public :: copy => encounter_util_copy_list | Copies elements from the source encounter list into self. |
| procedure, public :: dealloc => encounter_util_dealloc_list | Deallocates all allocatables |
| procedure, public :: extract_collisions => collision_resolve_extract_pltp | Processes the pl-tp encounter list remove only those encounters that led to a collision |
| procedure, public :: resize => encounter_util_resize_list | Checks the current size of the encounter list against the required size and extends it by a factor of 2 more than requested if it is too small. |
| procedure, public :: resolve_collision => collision_resolve_pltp | Process the pl-tp collision list |
| procedure, public :: setup => encounter_util_setup_list | A constructor that sets the number of encounters and allocates and initializes all arrays |
| procedure, public :: spill => encounter_util_spill_list | “Spills” bodies from one object to another depending on the results of a mask (uses the PACK intrinsic) |
Initialize a set of parameters used to identify a NetCDF output object
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=I4B), | public | :: | BE_varid | ID for the system binding energy variable |
|||
| integer(kind=I4B), | public | :: | E_collisions_varid | ID for the energy lost in collisions variable |
|||
| character, | public | :: | E_collisions_varname | = | "E_collisions" | name of the escaped angular momentum y variable |
|
| integer(kind=I4B), | public | :: | E_untracked_varid | ID for the energy that is untracked due to loss (due to mergers and body energy for escaped bodies) |
|||
| character, | public | :: | E_untracked_varname | = | "E_untracked" | name of the energy that is untracked due to loss (due to mergers and body energy for escaped bodies) |
|
| integer(kind=I4B), | public | :: | GMescape_varid | ID for the G*Mass of bodies that escape the system |
|||
| character, | public | :: | GMescape_varname | = | "GMescape" | name of the G*Mass of bodies that escape the system |
|
| integer(kind=I4B), | public | :: | Gmass_varid | ID for the G*mass variable |
|||
| character, | public | :: | Gmass_varname | = | "Gmass" | name of the G*mass variable |
|
| integer(kind=I4B), | public | :: | Ip_varid | ID for the axis principal moment of inertia variable |
|||
| character, | public | :: | Ip_varname | = | "Ip" | name of the principal moment of inertial variable |
|
| integer(kind=I4B), | public | :: | KE_orb_varid | ID for the system orbital kinetic energy variable |
|||
| integer(kind=I4B), | public | :: | KE_rot_varid | ID for the system rotational kinetic energy variable |
|||
| integer(kind=I4B), | public | :: | L_escape_varid | ID for the escaped angular momentum vector variable |
|||
| character, | public | :: | L_escape_varname | = | "L_escape" | name of the escaped angular momentum vector variable |
|
| integer(kind=I4B), | public | :: | L_orbit_varid | ID for the system orbital angular momentum vector variable |
|||
| character, | public | :: | L_orbit_varname | = | "L_orbit" | name of the orbital angular momentum vector variable |
|
| integer(kind=I4B), | public | :: | L_rot_varid | ID for the system rotational angular momentum vector variable |
|||
| character, | public | :: | L_rot_varname | = | "L_rot" | name of the rotational angular momentum vector variable |
|
| integer(kind=I4B), | public | :: | PE_varid | ID for the system potential energy variable |
|||
| integer(kind=I4B), | public | :: | Q_varid | ID for the energy dissipation variable |
|||
| integer(kind=I4B), | public | :: | Qloss_varid | ID for the energy loss variable |
|||
| character, | public | :: | Qloss_varname | = | "Qloss" | name of the energy loss variable |
|
| integer(kind=I4B), | public | :: | TE_varid | ID for the system binding energy variable |
|||
| integer(kind=I4B), | public | :: | a_varid | ID for the semimajor axis variable |
|||
| character, | public | :: | a_varname | = | "a" | name of the semimajor axis variable |
|
| character, | public | :: | be_varname | = | "BE" | name of the system binding energy variable |
|
| integer(kind=I4B), | public | :: | c_lm_varid | ID for the c_lm aqrray |
|||
| character, | public | :: | c_lm_varname | = | "c_lm" | name for the c_lm array |
|
| integer(kind=I4B), | public | :: | cape_varid | ID for the eccentric/hyperbolic anomaly variable |
|||
| character, | public | :: | cape_varname | = | "cape" | name of the eccentric/hyperbolic anomaly variable |
|
| integer(kind=I4B), | public | :: | capm_varid | ID for the mean anomaly variable |
|||
| character, | public | :: | capm_varname | = | "capm" | name of the mean anomaly variable |
|
| integer(kind=I4B), | public | :: | capom_varid | ID for the long. asc. node variable |
|||
| character, | public | :: | capom_varname | = | "capom" | name of the long. asc. node variable |
|
| integer(kind=I4B), | public | :: | collision_body_dimid | Netcdf ID for the collision body dimension |
|||
| character, | public | :: | collision_body_dimname | = | "collision_body" | name of the collision body dimension |
|
| integer(kind=I4B), | public | :: | collision_body_varid | Netcdf ID for the collision body variable |
|||
| integer(kind=I4B), | public | :: | collision_id_dimid | ID for the collision event dimension |
|||
| character, | public | :: | collision_id_dimname | = | "collision_id" | name of the collision id variable |
|
| integer(kind=I4B), | public | :: | collision_id_varid | Netcdf ID for the origin collision ID |
|||
| integer(kind=I4B), | public | :: | discard_body_id_varid | ID for the id of the other body involved in the discard |
|||
| character, | public | :: | discard_body_id_varname | = | "discard_body_id" | name of the id of the other body involved in the discard |
|
| integer(kind=I4B), | public | :: | discard_rh_varid | ID for the heliocentric position vector of the body at the time of discard variable |
|||
| character, | public | :: | discard_rh_varname | = | "discard_rh" | name of the heliocentric position vector of the body at the time of discard variable |
|
| integer(kind=I4B), | public | :: | discard_time_varid | ID for the time of discard variable |
|||
| character, | public | :: | discard_time_varname | = | "discard_time" | name of the time of discard variable |
|
| integer(kind=I4B), | public | :: | discard_vh_varid | ID for the heliocentric velocity vector of the body at the time of discard variable |
|||
| character, | public | :: | discard_vh_varname | = | "discard_vh" | name of the heliocentric velocity vector of the body at the time of discard variable |
|
| integer(kind=I4B), | public | :: | e_varid | ID for the eccentricity variable |
|||
| character, | public | :: | e_varname | = | "e" | name of the eccentricity variable |
|
| integer(kind=I4B), | public | :: | f_varid | ID for the true anomaly variable |
|||
| character, | public | :: | f_varname | = | "f" | name of the true anomaly variable |
|
| character, | public | :: | file_name | Name of the output file |
|||
| integer(kind=I4B), | public | :: | gr_pseudo_vh_varid | ID for the heliocentric pseudovelocity vector variable (used in GR) |
|||
| character, | public | :: | gr_pseudo_vh_varname | = | "gr_pseudo_vh" | name of the heliocentric pseudovelocity vector variable (GR) |
|
| integer(kind=I4B), | public | :: | id | ID for the output file |
|||
| integer(kind=I4B), | public | :: | id_varid | ID for the id variable |
|||
| character, | public | :: | id_varname | = | "id" | name of the particle id variable |
|
| integer(kind=I4B), | public | :: | idslot | = | 1 | The current id slot that gets passed to the NetCDF reader/writer |
|
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | idvals | Array of id values in this NetCDF file |
||
| integer(kind=I4B), | public | :: | inc_varid | ID for the inclination variable |
|||
| character, | public | :: | inc_varname | = | "inc" | name of the inclination variable |
|
| integer(kind=I4B), | public | :: | j2rp2_varid | ID for the j2 variable |
|||
| character, | public | :: | j2rp2_varname | = | "j2rp2" | name of the j2rp2 variable |
|
| integer(kind=I4B), | public | :: | j4rp4_varid | ID for the j4 variable |
|||
| character, | public | :: | j4rp4_varname | = | "j4rp4" | name of the j4pr4 variable |
|
| integer(kind=I4B), | public | :: | k2_varid | ID for the Love number variable |
|||
| character, | public | :: | k2_varname | = | "k2" | name of the Love number variable |
|
| character, | public | :: | ke_orbit_varname | = | "KE_orbit" | name of the system orbital kinetic energy variable |
|
| character, | public | :: | ke_rot_varname | = | "KE_rot" | name of the system rotational kinetic energy variable |
|
| integer(kind=I4B), | public | :: | l_dim_max | = | 6 | Maximum value of the l dimension |
|
| integer(kind=I4B), | public | :: | l_dimid | ID for the l dimension for c_lm |
|||
| character, | public | :: | l_dimname | = | "l" | name of l dimension for c_lm |
|
| integer(kind=I4B), | public | :: | l_varid | ID for the l variable |
|||
| integer(kind=I4B), | public | :: | lam_varid | ID for the mean longitude variable |
|||
| character, | public | :: | lam_varname | = | "lam" | name of the mean longitude variable |
|
| logical, | public | :: | lc_lm_exists | = | .false. | Logical flag to indicate whether or not the c_lm array was present in an old file. |
|
| logical, | public | :: | lfile_is_open | = | .false. | Flag indicating that the linked file is currently open |
|
| logical, | public | :: | lpseudo_vel_exists | = | .false. | Logical flag to indicate whether or not the pseudovelocity vectors were present in an old file. |
|
| integer(kind=I4B), | public | :: | m_dim_max | = | 6 | Maximum value of the m dimension |
|
| integer(kind=I4B), | public | :: | m_dimid | ID for the m dimension for c_lm |
|||
| character, | public | :: | m_dimname | = | "m" | name of m dimension for c_lm |
|
| integer(kind=I4B), | public | :: | m_varid | ID for the m variable |
|||
| integer(kind=I4B), | public | :: | mass_varid | ID for the mass variable |
|||
| character, | public | :: | mass_varname | = | "mass" | name of the mass variable |
|
| integer(kind=I4B), | public | :: | max_idslot | = | 0 | Records the last index value of id in the NetCDF file |
|
| integer(kind=I4B), | public | :: | max_tslot | = | 0 | Records the last index value of time in the NetCDF file |
|
| integer(kind=I4B), | public | :: | name_dimid | ID for the particle name dimension |
|||
| character, | public | :: | name_dimname | = | "name" | name of the particle name dimension |
|
| integer(kind=I4B), | public | :: | name_varid | ID for the particle name variable |
|||
| integer(kind=I4B), | public | :: | npl_varid | ID for the number of active massive bodies variable |
|||
| character, | public | :: | npl_varname | = | "npl" | name of the number of active massive bodies variable |
|
| integer(kind=I4B), | public | :: | nplm_varid | ID for the number of active fully interacting massive bodies variable (SyMBA) |
|||
| character, | public | :: | nplm_varname | = | "nplm" | name of the number of active fully interacting massive bodies variable (SyMBA) |
|
| integer(kind=I4B), | public | :: | ntp_varid | ID for the number of active test particles variable |
|||
| character, | public | :: | ntp_varname | = | "ntp" | name of the number of active test particles variable |
|
| integer(kind=I4B), | public | :: | omega_varid | ID for the arg. of periapsis variable |
|||
| character, | public | :: | omega_varname | = | "omega" | name of the arg. of periapsis variable |
|
| integer(kind=I4B), | public | :: | origin_rh_varid | ID for the origin position vector variable |
|||
| character, | public | :: | origin_rh_varname | = | "origin_rh" | name of the heliocentric position vector of the body at the time of origin variable |
|
| integer(kind=I4B), | public | :: | origin_time_varid | ID for the origin time |
|||
| character, | public | :: | origin_time_varname | = | "origin_time" | name of the time of origin variable |
|
| integer(kind=I4B), | public | :: | origin_type_varid | ID for the origin type |
|||
| character, | public | :: | origin_type_varname | = | "origin_type" | name of the origin type variable |
|
| integer(kind=I4B), | public | :: | origin_vh_varid | ID for the origin velocity vector component |
|||
| character, | public | :: | origin_vh_varname | = | "origin_vh" | name of the heliocentric velocity vector of the body at the time of origin variable |
|
| integer(kind=I4B), | public | :: | out_type | output type (will be assigned either NF90_DOUBLE or NF90_FLOAT, depending on the user parameter) |
|||
| character, | public | :: | pe_varname | = | "PE" | name of the system potential energy variable |
|
| integer(kind=I4B), | public | :: | ptype_varid | ID for the particle type variable |
|||
| character, | public | :: | ptype_varname | = | "particle_type" | name of the particle type variable |
|
| character, | public | :: | q_varname | = | "Q" | name of the energy dissipation variable |
|
| integer(kind=I4B), | public | :: | radius_varid | ID for the radius variable |
|||
| character, | public | :: | radius_varname | = | "radius" | name of the radius variable |
|
| integer(kind=I4B), | public | :: | regime_varid | ID for the collision regime variable |
|||
| character, | public | :: | regime_varname | = | "regime" | name of the collision regime variable |
|
| integer(kind=I4B), | public | :: | rh_varid | ID for the heliocentric position vector variable |
|||
| character, | public | :: | rh_varname | = | "rh" | name of the heliocentric position vector variable |
|
| integer(kind=I4B), | public | :: | rhill_varid | ID for the hill radius variable |
|||
| character, | public | :: | rhill_varname | = | "rhill" | name of the hill radius variable |
|
| integer(kind=I4B), | public | :: | rot_varid | ID for the rotation vector variable |
|||
| character, | public | :: | rot_varname | = | "rot" | name of the rotation vector variable |
|
| integer(kind=I4B), | public | :: | rotphase_varid | ID for the rotation phase variable |
|||
| character, | public | :: | rotphase_varname | = | "rotphase" | name of the rotation phase variable |
|
| integer(kind=I4B), | public, | dimension(2) | :: | sign_coords | = | [-1, 1] | The sign dimension coordinate labels |
| integer(kind=I4B), | public | :: | sign_dimid | ID for sign dimension |
|||
| character, | public | :: | sign_dimname | = | "sign" | name of the sign dimension for c_lm |
|
| integer(kind=I4B), | public | :: | sign_varid | ID for sign variable |
|||
| character(len=1), | public, | dimension(3) | :: | space_coords | = | ["x", "y", "z"] | The space dimension coordinate labels |
| integer(kind=I4B), | public | :: | space_dimid | ID for the space dimension |
|||
| character, | public | :: | space_dimname | = | "space" | name of the space dimension |
|
| integer(kind=I4B), | public | :: | space_varid | ID for the space variable |
|||
| character(len=6), | public, | dimension(2) | :: | stage_coords | = | ["before", "after "] | The stage coordinate labels |
| integer(kind=I4B), | public | :: | stage_dimid | ID for the stage dimension |
|||
| character, | public | :: | stage_dimname | = | "stage" | name of the stage dimension (before/after) |
|
| integer(kind=I4B), | public | :: | stage_varid | ID for the stage variable |
|||
| integer(kind=I4B), | public | :: | status_varid | ID for the status variable |
|||
| character, | public | :: | status_varname | = | "status" | name of the particle status variable |
|
| integer(kind=I4B), | public | :: | str_dimid | ID for the character string dimension |
|||
| character, | public | :: | str_dimname | = | "string32" | name of the character string dimension |
|
| character, | public | :: | te_varname | = | "TE" | name of the system binding energy variable |
|
| integer(kind=I4B), | public | :: | time_dimid | ID for the time dimension |
|||
| character, | public | :: | time_dimname | = | "time" | name of the time dimension |
|
| integer(kind=I4B), | public | :: | time_varid | ID for the time variable |
|||
| integer(kind=I4B), | public | :: | tslot | = | 1 | The current time slot that gets passed to the NetCDF reader/writer |
|
| integer(kind=I4B), | public | :: | varpi_varid | ID for the long. of periapsis variable |
|||
| character, | public | :: | varpi_varname | = | "varpi" | name of the long. of periapsis variable |
|
| integer(kind=I4B), | public | :: | vh_varid | ID for the heliocentric velocity vector variable |
|||
| character, | public | :: | vh_varname | = | "vh" | name of the heliocentric velocity vector variable |
| procedure, public :: close => netcdf_io_close | Closes an open NetCDF file |
| procedure, public :: find_idslot => netcdf_io_find_idslot | Finds the id dimension index for a given value of id |
| procedure, public :: find_tslot => netcdf_io_find_tslot | Finds the time dimension index for a given value of t |
| procedure, public :: get_idvals => netcdf_io_get_idvals | Gets the valid id numbers currently stored in this dataset |
| procedure, public :: initialize => collision_io_netcdf_initialize_output | Opens an old file |
| procedure, public :: open => collision_io_netcdf_open | |
| procedure, public :: sync => netcdf_io_sync | Syncrhonize the disk and memory buffer of the NetCDF file (e.g. commit the frame files stored in memory to disk) |
Indicates that this snapshot contains at least one collision
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(collision_basic), | public, | allocatable | :: | collider | Collider object at this snapshot |
||
| integer(kind=I8B), | public | :: | iloop | Loop number at time of snapshot |
|||
| logical, | public | :: | lcollision | ||||
| class(base_object), | public, | allocatable | :: | pl | Massive body data structure |
||
| real(kind=DP), | public | :: | t | Simulation time when snapshot was taken |
|||
| class(base_object), | public, | allocatable | :: | tp | Test particle data structure |
| procedure, public :: dealloc => collision_util_dealloc_snapshot | Deallocates all allocatables |
| procedure, public :: get_idvals => collision_util_get_idvalues_snapshot | Gets an array of all id values saved in this snapshot |
| procedure, public :: write_frame => collision_io_netcdf_write_frame_snapshot | Writes a frame of encounter data to file |
A class that that is used to store simulation history data between file output Dumps contents of encounter history to file
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(base_storage_frame), | public, | dimension(:), allocatable | :: | frame | Array of stored frames |
||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | idmap | The id value -> index map |
||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | idvals | The set of unique id values contained in the snapshots |
||
| integer(kind=I4B), | public | :: | iframe | = | 0 | Index of the last frame stored in the system |
|
| class(encounter_netcdf_parameters), | public, | allocatable | :: | nc | NetCDF object attached to this storage object |
||
| integer(kind=I4B), | public | :: | nframes | Total number of frames that can be stored An class that establishes the pattern for various storage objects |
|||
| integer(kind=I4B), | public | :: | nid | Number of unique id values in all saved snapshots |
|||
| integer(kind=I4B), | public | :: | nt | Number of unique time values in all saved snapshots |
|||
| integer(kind=I4B), | public, | dimension(:), allocatable | :: | tmap | The t value -> index map |
||
| real(kind=DP), | public, | dimension(:), allocatable | :: | tvals | The set of unique time values contained in the snapshots |
| procedure, public :: dealloc => encounter_util_dealloc_storage | Deallocates all allocatables |
| procedure, public :: dump => collision_io_netcdf_dump | Take a minimal snapshot of the nbody_system through an encounter |
| procedure, public :: get_index_values => encounter_util_get_vals_storage | Gets the unique values of the indices of a storage object (i.e. body id or time value) |
| procedure, public :: make_index_map => collision_util_index_map | |
| procedure, public :: reset => base_util_reset_storage | Resets the storage object back to its original state by removing all of the saved items from the storage frames |
| procedure, public :: resize => base_util_resize_storage | Resizes storage if it is too small |
| procedure, public :: save => base_util_snapshot_save | Takes a snapshot of the current system |
| procedure, public :: save_energy_snapshot => collision_util_save_energy_snapshot | Maps body id values to storage index values so we don’t have to use unlimited dimensions for id |
| procedure, public :: setup => base_util_setup_storage | Sets up a storage system with a set number of frames |
| procedure, public :: take_snapshot => collision_util_take_snapshot | Maps body id values to storage index values so we don’t have to use unlimited dimensions for id |
Finalizer will deallocate all allocatables
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(collision_basic), | intent(inout) | :: | self | Collision system object |
Finalizer will deallocate all allocatables
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(collision_fragments), | intent(inout) | :: | self | Collision impactors storage object |
Finalizer will deallocate all allocatables
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(collision_impactors), | intent(inout) | :: | self | Collision impactors storage object |
Finalizer will deallocate all allocatables
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(collision_list_plpl), | intent(inout) | :: | self | PL-PL collision list object |
Finalizer will deallocate all allocatables
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(collision_list_pltp), | intent(inout) | :: | self | PL-TP collision list object |