Multiconstellation

class dsns.multiconstellation.ILLHelper

Base class for ILL (Inter-Layer Link) helpers.

abstractmethod get_ills(satellites: Satellites, positions: ndarray) list[tuple[int, int]]

Get the ILLs for a multi-constellation.

Parameters:
  • satellites – Constellation to get ILLs for.

  • positions – Positions of the satellites in the constellation.

Returns:

List of ILLs.

class dsns.multiconstellation.MultiConstellation

Combines multiple constellations into one, with Inter-Layer Links (ILLs) between constellations.

time: float = 0.0
speed_of_light: float = 299792458.0
__init__()
constellations: list[Constellation]
satellites: Satellites
satellite_positions: ndarray
ill_helpers: list[ILLHelper]
isls: list[tuple[int, int]]
ills: list[tuple[int, int]]
add_constellation(constellation: Constellation)

Add a constellation to the multi-constellation.

Parameters:

constellation – The constellation to add.

add_ill_helper(ill_helper: ILLHelper)

Add an ILL helper to the multi-constellation.

Parameters:

ill_helper – The ILL helper to add.

update_positions(time: float)

Update the positions of all satellites in the multi-constellation at a given time.

Parameters:

time – Time in seconds since the epoch.

Update the links between satellites in the multi-constellation at a given time.

Parameters:

time – Time in seconds since the epoch.

update(time: float)

Update the multi-constellation at a given time.

Parameters:

time – Time in seconds since the epoch.

get_distance(sat1: int, sat2: int) float

Get the distance between two satellites.

Parameters:
  • sat1 – First satellite.

  • sat2 – Second satellite.

Returns:

Distance between the two satellites, in metres.

get_delay(sat1: int, sat2: int) float

Get the time delay between two satellites.

Parameters:
  • sat1 – First satellite.

  • sat2 – Second satellite.

Returns:

Time delay between the two satellites, in seconds.

Check if two satellites have a link between them.

Parameters:
  • sat1 – First satellite.

  • sat2 – Second satellite.

Returns:

True if there is a link between the two satellites, False otherwise.

class dsns.multiconstellation.FixedILLHelper(ills: list[tuple[int, int]])

ILL helper class with fixed ILLs.

__init__(ills: list[tuple[int, int]])

Initialize the fixed ILL helper class.

Parameters:

ills – List of ILLs.

classmethod from_names(ills: list[tuple[str, str]], id_helper: IDHelper)

Initialize the fixed ILL helper class from a list of ILL names.

Parameters:

ills – List of ILL names.

get_ills(satellites: Satellites, positions: ndarray) list[tuple[int, int]]

Get the ILLs for a multi-constellation.

Parameters:
  • satellites – Constellation to get ILLs for.

  • positions – Positions of the satellites in the constellation.

Returns:

List of ILLs.

class dsns.multiconstellation.GroundILLHelper(satellites_ground: list[int], satellites_space: list[int], min_elevation: float | None = None, max_distance: float | None = None)

ILL helper class for ground-to-space links.

__init__(satellites_ground: list[int], satellites_space: list[int], min_elevation: float | None = None, max_distance: float | None = None)

Initialize the ground-to-space ILL helper class.

Parameters:
  • satellites_ground – List of ground station satellite IDs.

  • satellites_space – List of satellites which can connect to the ground station.

  • min_elevation – Minimum elevation (degrees) of the satellite above which a connection can be established.

  • max_distance – Maximum distance (m) between the ground station and satellites.

get_ills(satellites: Satellites, positions: ndarray) list[tuple[int, int]]

Get the ILLs for a multi-constellation.

Parameters:
  • satellites – Constellation to get ILLs for.

  • positions – Positions of the satellites in the constellation.

Returns:

List of ILLs.

class dsns.multiconstellation.DistanceILLHelper(satellites_a: list[int], satellites_b: list[int], max_distance: float, max_links: int | None = None)

ILL helper class for space-to-space links, limited only by distance.

__init__(satellites_a: list[int], satellites_b: list[int], max_distance: float, max_links: int | None = None)

Initialize the ground-to-space ILL helper class.

Parameters:
  • satellites_a – List of satellite IDs for the first constellation.

  • satellites_b – List of satellite IDs for the second constellation.

  • max_distance – Maximum distance (m) between the satellites.

  • max_links – Maximum number of links per satellite.

get_ills(satellites: Satellites, positions: ndarray) list[tuple[int, int]]

Get the ILLs for a multi-constellation.

Parameters:
  • satellites – Constellation to get ILLs for.

  • positions – Positions of the satellites in the constellation.

Returns:

List of ILLs.

class dsns.multiconstellation.OcclusionILLHelper(satellites_a: list[int], satellites_b: list[int], radius_a: float, radius_b: float, min_elevation: float | None = None, max_links: int | None = None)

ILL helper class for links which are occluded by one or more planets. We use the orbital center of each satellite as the center of the planet.

__init__(satellites_a: list[int], satellites_b: list[int], radius_a: float, radius_b: float, min_elevation: float | None = None, max_links: int | None = None)

Initialize the occlusion ILL helper class.

Parameters:
  • satellites_a – List of satellite IDs for the first constellation.

  • satellites_b – List of satellite IDs for the second constellation.

  • radius_a – Radius of the planet for the first constellation.

  • radius_b – Radius of the planet for the second constellation.

  • min_elevation – Minimum elevation (degrees) of the satellites above which a connection can be established. Only considers the angles from the perspective of satellites_a.

  • max_links – Maximum number of links per satellite.

get_ills(satellites: Satellites, positions: ndarray) list[tuple[int, int]]

Get the ILLs for a multi-constellation.

Parameters:
  • satellites – Constellation to get ILLs for.

  • positions – Positions of the satellites in the constellation.

Returns:

List of ILLs.