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]¶ 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:
list
[Keplerian
]
- gen_scenario(scenario_templ, prop_templ)¶
Add satellites to a scenario template using a propagator template.
- Return type:
- 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¶
- 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]¶ 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.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
- 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:
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.
-
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]