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
- isls: list[tuple[int, int]]
- ills: list[tuple[int, int]]
- links: 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_links(time: float)
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.
- has_link(sat1: int, sat2: int) bool
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.