Sidereon.Conjunction (Sidereon v0.16.1)

Copy Markdown View Source

Time-of-closest-approach and conjunction screening helpers.

Summary

Types

split_jd()

@type split_jd() :: {number(), number()}

tca_candidate()

@type tca_candidate() :: %{
  tca_time_jd_whole: float(),
  tca_time_jd_fraction: float(),
  tca_time_jd: float(),
  tca_seconds_since_window_start: float(),
  miss_distance_km: float(),
  relative_position_km: vec3(),
  relative_velocity_km_s: vec3()
}

tca_conjunction()

@type tca_conjunction() :: %{
  candidate: tca_candidate(),
  pc: float(),
  miss_km: float(),
  relative_speed_km_s: float(),
  sigma_x_km: float(),
  sigma_z_km: float()
}

tle_pair()

@type tle_pair() :: {String.t(), String.t()}

vec3()

@type vec3() :: {float(), float(), float()}

Functions

find_tca_candidates(primary_line1, primary_line2, secondary_line1, secondary_line2, window_start_jd, window_end_jd, opts \\ [])

@spec find_tca_candidates(
  String.t(),
  String.t(),
  String.t(),
  String.t(),
  split_jd(),
  split_jd(),
  keyword()
) :: {:ok, [tca_candidate()]} | {:error, term()}

Find local TCA candidates between two TLE line pairs.

find_tca_conjunctions(primary_line1, primary_line2, secondary_line1, secondary_line2, window_start_jd, window_end_jd, hard_body_radius_km, opts \\ [])

@spec find_tca_conjunctions(
  String.t(),
  String.t(),
  String.t(),
  String.t(),
  split_jd(),
  split_jd(),
  number(),
  keyword()
) :: {:ok, [tca_conjunction()]} | {:error, term()}

Find local TCA candidates and compute collision probability at each TCA.

screen_tca_candidates(primary_line1, primary_line2, secondaries, window_start_jd, window_end_jd, miss_distance_threshold_km, opts \\ [])

@spec screen_tca_candidates(
  String.t(),
  String.t(),
  [tle_pair()],
  split_jd(),
  split_jd(),
  number(),
  keyword()
) ::
  {:ok, [%{secondary_index: non_neg_integer(), candidate: tca_candidate()}]}
  | {:error, term()}

Screen one primary TLE against a secondary TLE catalog by miss-distance threshold.

screen_tca_conjunctions(primary_line1, primary_line2, secondaries, window_start_jd, window_end_jd, miss_distance_threshold_km, hard_body_radius_km, opts \\ [])

@spec screen_tca_conjunctions(
  String.t(),
  String.t(),
  [tle_pair()],
  split_jd(),
  split_jd(),
  number(),
  number(),
  keyword()
) ::
  {:ok, [%{secondary_index: non_neg_integer(), conjunction: tca_conjunction()}]}
  | {:error, term()}

Screen one primary TLE against a secondary TLE catalog and compute collision probability for each hit.