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 periapsis_argument: 
float[Required] (alias 'periapsisArgument')¶ Argument of Perigee, in degrees
- Constraints:
 ge = 0
- abstractmethod define_satellites()¶
 Return a list of Keplerian objects that define the constellation’s satellites.
- Return type:
 dict[str,Keplerian]
- 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 “satellites”
- Returns:
 Dataframe of Keplerian elements of each satellite
- Return type:
 pd.DataFrame
- property inclination_radians: float¶
 
- 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
- pydantic model ephemerista.constellation.design.AbstractWalkerOrSocConstellation¶
 Abstract base class for Walker or streets-of-coverage constellations.
- 
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] (alias 'semiMajorAxis')¶ 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
- 
field eccentricity: 
 
- pydantic model ephemerista.constellation.design.Constellation¶
 The main class for modelling constellations.
- Fields:
 
- 
field comms: 
list[CommunicationSystem] = []¶ 
- 
field constellation_id: 
Annotated[UUID] [Optional] (alias 'id')¶ Constellation UUID
- Constraints:
 uuid_version = 5
- 
field model: 
TypeAliasType[Required]¶ 
- 
field name: 
str= 'Default Constellation'¶ 
- 
field params: 
OrekitPropagatorParams= OrekitPropagatorParams(prop_min_step=0.001, prop_max_step=3600.0, prop_init_step=60.0, prop_position_error=10.0, mass=1000.0, cross_section=1.0, grav_degree_order=(4, 4), third_bodies=[], c_r=0.75, enable_srp=False, c_d=2.0, enable_drag=False)¶ 
- 
field propagator: 
Literal['semi-analytical','numerical'] = 'semi-analytical'¶ 
- 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] (alias 'nDays')¶ Number of sidereal days for the constellation to repeat its ground track
- Constraints:
 gt = 0
- 
field n_petals: 
int[Required] (alias 'nPetals')¶ 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] (alias 'perigeeAltitude')¶ Perigee altitude, in km
- Constraints:
 gt = 0
- 
field phasing_d: 
int[Required] (alias 'phasingD')¶ d phasing parameter
- Constraints:
 gt = 0
- 
field phasing_n: 
int[Required] (alias 'phasingN')¶ n phasing parameter
- Constraints:
 gt = 0
- 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.
- 
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:
 dict[str,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.
- 
field constellation_type: 
Literal['walker_delta'] = 'walker_delta' (alias 'type')¶ The type of constellation
- 
field constellation_type: 
 
- pydantic model ephemerista.constellation.design.WalkerStar¶
 The WalkerStar class.
This class models a Walker Star constellation.
- 
field constellation_type: 
Literal['walker_star'] = 'walker_star' (alias 'type')¶ The type of constellation
- 
field constellation_type: 
 
- 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 optimizeds (
float) – number of satellites per planej (
int) – coverage fold
- Return type:
 float
Ref: Equation 3 of [1]