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(len=*), | 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(len=*), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | public | :: | a_varname | = | "a" |
name of the semimajor axis variable |
|
| character(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | public | :: | cape_varname | = | "cape" |
name of the eccentric/hyperbolic anomaly variable |
|
| integer(kind=I4B), | public | :: | capm_varid |
ID for the mean anomaly variable |
|||
| character(len=NAMELEN), | public | :: | capm_varname | = | "capm" |
name of the mean anomaly variable |
|
| integer(kind=I4B), | public | :: | capom_varid |
ID for the long. asc. node variable |
|||
| character(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | public | :: | e_varname | = | "e" |
name of the eccentricity variable |
|
| integer(kind=I4B), | public | :: | f_varid |
ID for the true anomaly variable |
|||
| character(len=NAMELEN), | public | :: | f_varname | = | "f" |
name of the true anomaly variable |
|
| character(len=STRMAX), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | public | :: | inc_varname | = | "inc" |
name of the inclination variable |
|
| integer(kind=I4B), | public | :: | j2rp2_varid |
ID for the j2 variable |
|||
| character(len=NAMELEN), | public | :: | j2rp2_varname | = | "j2rp2" |
name of the j2rp2 variable |
|
| integer(kind=I4B), | public | :: | j4rp4_varid |
ID for the j4 variable |
|||
| character(len=NAMELEN), | public | :: | j4rp4_varname | = | "j4rp4" |
name of the j4pr4 variable |
|
| integer(kind=I4B), | public | :: | k2_varid |
ID for the Love number variable |
|||
| character(len=NAMELEN), | public | :: | k2_varname | = | "k2" |
name of the Love number variable |
|
| character(len=NAMELEN), | public | :: | ke_orbit_varname | = | "KE_orbit" |
name of the system orbital kinetic energy variable |
|
| character(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | public | :: | pe_varname | = | "PE" |
name of the system potential energy variable |
|
| integer(kind=I4B), | public | :: | ptype_varid |
ID for the particle type variable |
|||
| character(len=NAMELEN), | public | :: | ptype_varname | = | "particle_type" |
name of the particle type variable |
|
| character(len=NAMELEN), | public | :: | q_varname | = | "Q" |
name of the energy dissipation variable |
|
| integer(kind=I4B), | public | :: | radius_varid |
ID for the radius variable |
|||
| character(len=NAMELEN), | public | :: | radius_varname | = | "radius" |
name of the radius variable |
|
| integer(kind=I4B), | public | :: | regime_varid |
ID for the collision regime variable |
|||
| character(len=NAMELEN), | public | :: | regime_varname | = | "regime" |
name of the collision regime variable |
|
| integer(kind=I4B), | public | :: | rh_varid |
ID for the heliocentric position vector variable |
|||
| character(len=NAMELEN), | public | :: | rh_varname | = | "rh" |
name of the heliocentric position vector variable |
|
| integer(kind=I4B), | public | :: | rhill_varid |
ID for the hill radius variable |
|||
| character(len=NAMELEN), | public | :: | rhill_varname | = | "rhill" |
name of the hill radius variable |
|
| integer(kind=I4B), | public | :: | rot_varid |
ID for the rotation vector variable |
|||
| character(len=NAMELEN), | public | :: | rot_varname | = | "rot" |
name of the rotation vector variable |
|
| integer(kind=I4B), | public | :: | rotphase_varid |
ID for the rotation phase variable |
|||
| character(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | public | :: | status_varname | = | "status" |
name of the particle status variable |
|
| integer(kind=I4B), | public | :: | str_dimid |
ID for the character string dimension |
|||
| character(len=NAMELEN), | public | :: | str_dimname | = | "string32" |
name of the character string dimension |
|
| character(len=NAMELEN), | public | :: | te_varname | = | "TE" |
name of the system binding energy variable |
|
| integer(kind=I4B), | public | :: | time_dimid |
ID for the time dimension |
|||
| character(len=NAMELEN), | 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(len=NAMELEN), | 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(len=NAMELEN), | 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 |