Constellation Design – ephemerista.constellation.design

The design.py module.

This module provides several classes for modelling various types of satellite constellations.

pydantic model ephemerista.constellation.design.AbstractConstellation

Abstract base class for all constellation types.

Fields:
field inclination: float [Required]

Inclination, in degrees

Constraints:
  • ge = 0

field name: str = 'My Constellation'

Name of the Constellation

field origin: Origin = Origin(name='Earth')

Origin of the coordinate system

field periapsis_argument: float [Required]

Argument of Perigee, in degrees

Constraints:
  • ge = 0

field time: Time [Required]

Epoch of the constellation

abstractmethod define_satellites()

Return a list of Keplerian objects that define the constellation’s satellites.

Return type:

list[Keplerian]

gen_scenario(scenario_templ, prop_templ)

Add satellites to a scenario template using a propagator template.

Return type:

Scenario

to_dataframe(data='satellites')

Return a dataframe of the Keplerian elements of each satellite.

Parameters:

data (str, optional) – Flag to return plane or satellite data. Defaults to “satellite”

Returns:

Dataframe of Keplerian elements of each satellite

Return type:

pd.DataFrame

property inclination_radians: float
property satellites: list[Keplerian]

Method to return the satellites to the user, with results cached for future gets.

pydantic model ephemerista.constellation.design.AbstractWalker

Abstract base class for Walker Star or Delta constellations.

Fields:
field phasing: int = 0

Phasing between satellites in adjacent planes

Constraints:
  • ge = 0

define_planes()

Generate constellation planes based on the user-provided parameters.

Return type:

dict[int, Plane]

define_satellites()

Generate constellation satellites based on the user-provided parameters.

Return type:

list[Keplerian]

pydantic model ephemerista.constellation.design.AbstractWalkerOrSocConstellation

Abstract base class for Walker or streets-of-coverage constellations.

Fields:
field eccentricity: float [Required]

Eccentricity

Constraints:
  • ge = 0

field nplanes: int [Required]

Number of orbital planes in the constellation

Constraints:
  • gt = 0

field nsats: int [Required]

Number of satellites in the constellation

Constraints:
  • gt = 0

field semi_major_axis: float [Required]

Semi major axis, in km

Constraints:
  • gt = 0

abstractmethod define_planes()

Return a list of Plane objects that define the constellation.

Return type:

dict[int, Plane]

to_dataframe(data='planes')

Return a data frame of the constellation parameters.

This will either be the Keplerian elements of each plane in the constellation, or the satellites in each plane, depending on the input.

Parameters:

data (str, optional) – Flag to return plane or satellite data. Defaults to “planes”

Returns:

Dataframe of Keplerian elements of each constellation, or the satellites in each plane, depending on the input

Return type:

pd.DataFrame

property planes: dict[int, Plane]

Method to return the planes to the user, with results cached for future gets.

pydantic model ephemerista.constellation.design.Flower

The Flower class.

This class models a Flower constellation.

References

[1] M. P. Wilkins, The Flower Constellations: Theory, design process, and applications. Texas A&M University, 2004. https://search.proquest.com/openview/d2a1245a4defb3f086c797b56e1a5b22/1?pq-origsite=gscholar&cbl=18750&diss=y

[2] https://gitlab.com/open-galactic/satellite-constellation

Fields:
field constellation_type: Literal['flower'] = 'flower' (alias 'type')

The type of constellation

field n_days: int [Required]

Number of sidereal days for the constellation to repeat its ground track

Constraints:
  • gt = 0

field n_petals: int [Required]

Number of petals

Constraints:
  • gt = 0

field nsats: int [Required]

Desired number of satellites in the constellation

Constraints:
  • gt = 0

field perigee_altitude: float [Required]

Perigee altitude, in km

Constraints:
  • gt = 0

field phasing_d: int [Required]

d phasing parameter

Constraints:
  • gt = 0

field phasing_n: int [Required]

n phasing parameter

Constraints:
  • gt = 0

define_satellites()

Return a list of Keplerian objects that define the constellation’s satellites.

Return type:

list[Keplerian]

pydantic model ephemerista.constellation.design.StreetOfCoverage

The StreetOfCoverage class.

This class models a streets-of-coverage constellation.

References

[1] S. Huang, C. Colombo, and F. Bernelli-Zazzera,

“Multi-criteria design of continuous global coverage Walker and Street-of-Coverage constellations through property assessment” Acta Astronautica, vol. 188, pp. 151-170, Nov. 2021, doi: 10.1016/j.actaastro.2021.07.002.

Fields:
field constellation_type: Literal['street_of_coverage'] = 'street_of_coverage' (alias 'type')

The type of constellation

field j: int = 1 (alias 'coverage_fold')

Number of satellites that must provide simultaneous coverage of a ground location

Constraints:
  • ge = 1

  • le = 4

define_planes()

Return a list of Plane objects that define the constellation.

Return type:

dict[int, Plane]

define_satellites()

Return a list of Keplerian objects that define the constellation’s satellites.

Return type:

list[Keplerian]

get_nu_bounds()

Compute initial bounds of the central angle of coverage in radians.

Return type:

tuple[float, float]

pydantic model ephemerista.constellation.design.WalkerDelta

The WalkerDelta class.

This class models a Walker Delta constellation.

Fields:
field constellation_type: Literal['walker_delta'] = 'walker_delta' (alias 'type')

The type of constellation

pydantic model ephemerista.constellation.design.WalkerStar

The WalkerStar class.

This class models a Walker Star constellation.

Fields:
field constellation_type: Literal['walker_star'] = 'walker_star' (alias 'type')

The type of constellation

ephemerista.constellation.design.c_j(nu, s, j)

Compute the minimum half-width of Street-of-Coverage required for j-fold continuous global coverage.

Parameters:
  • nu (float) – Central angle of coverage in radians, variable that will be optimized

  • s (float) – number of satellites per plane

  • j (int) – coverage fold

Return type:

float

Ref: Equation 3 of [1]