Mission Models
Architecture
- pydantic model tatc.schemas.Architecture[source]
Mission architecture.
Show JSON schema
{ "title": "Architecture", "description": "Mission architecture.", "type": "object", "properties": { "name": { "description": "Name of this mission.", "title": "Name", "type": "string" }, "satellites": { "default": [], "description": "List of member space systems.", "items": { "anyOf": [ { "$ref": "#/$defs/Satellite" }, { "$ref": "#/$defs/TrainConstellation" }, { "$ref": "#/$defs/WalkerConstellation" }, { "$ref": "#/$defs/MOGConstellation" } ] }, "title": "Satellites", "type": "array" }, "stations": { "default": [], "description": "List of member ground stations.", "items": { "$ref": "#/$defs/GroundStation" }, "title": "Stations", "type": "array" } }, "$defs": { "CircularOrbit": { "description": "Orbit specification using Keplerian elements for elliptical motion -- circular motion case.", "properties": { "altitude": { "description": "Mean altitude (meters).", "title": "Altitude", "type": "number" }, "true_anomaly": { "default": 0, "description": "True anomaly (degrees).", "exclusiveMaximum": 360, "minimum": 0, "title": "True Anomaly", "type": "number" }, "epoch": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": "2025-10-15T22:46:44.656850Z", "description": "Timestamp (epoch) of the initial orbital state.", "title": "Epoch" }, "type": { "const": "circular", "default": "circular", "description": "Orbit type discriminator.", "title": "Type", "type": "string" }, "inclination": { "default": 0, "description": "Inclination (degrees).", "exclusiveMaximum": 180, "minimum": 0, "title": "Inclination", "type": "number" }, "right_ascension_ascending_node": { "default": 0, "description": "Right ascension of ascending node (degrees).", "exclusiveMaximum": 360, "minimum": 0, "title": "Right Ascension Ascending Node", "type": "number" } }, "required": [ "altitude" ], "title": "CircularOrbit", "type": "object" }, "GroundStation": { "description": "Ground station in the WGS 84 coordinate system.", "properties": { "name": { "description": "Ground station name", "examples": [ "station 1" ], "title": "Name", "type": "string" }, "latitude": { "description": "Latitude (decimal degrees) in the WGS 84 coordinate system.", "examples": [ 40.74259 ], "maximum": 90, "minimum": -90, "title": "Latitude", "type": "number" }, "longitude": { "description": "Longitude (decimal degrees) in the WGS 84 coordinate system.", "examples": [ -74.02686 ], "maximum": 180, "minimum": -180, "title": "Longitude", "type": "number" }, "elevation": { "default": 0, "description": "Elevation (meters) above datum in the WGS 84 coordinate system.", "title": "Elevation", "type": "number" }, "min_elevation_angle": { "default": 0, "description": "The minimum elevation angle (decimal degrees) required for satellite communication.", "maximum": 90, "minimum": 0, "title": "Min Elevation Angle", "type": "number" }, "min_access_time": { "default": "PT0S", "description": "Minimum access (integration) time required for satellite communication.", "examples": [ "PT10S" ], "format": "duration", "title": "Min Access Time", "type": "string" } }, "required": [ "name", "latitude", "longitude" ], "title": "GroundStation", "type": "object" }, "Instrument": { "description": "Remote sensing instrument.", "properties": { "name": { "default": "Default", "description": "Instrument name.", "title": "Name", "type": "string" }, "field_of_regard": { "default": 180, "description": "Angular field (degrees) of possible observations (with pointing).", "examples": [ 50 ], "exclusiveMinimum": 0, "maximum": 360, "title": "Field Of Regard", "type": "number" }, "min_access_time": { "default": "PT0S", "description": "Minimum access (integration) time to record an observation.", "examples": [ "PT10S" ], "format": "duration", "title": "Min Access Time", "type": "string" }, "req_self_sunlit": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null, "description": "Required instrument sunlit state for valid observation (`True`: sunlit, `False`: eclipse, `None`: no requirement).", "title": "Req Self Sunlit" }, "req_target_sunlit": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null, "description": "Required target sunlit state for valid observation (`True`: sunlit, `False`: eclipse, `None`: no requirement).", "title": "Req Target Sunlit" }, "access_time_fixed": { "default": false, "description": "`True`, if access time is fixed to minimum value.", "title": "Access Time Fixed", "type": "boolean" } }, "title": "Instrument", "type": "object" }, "KeplerianOrbit": { "description": "Orbit specification using Keplerian elements for elliptical motion.", "properties": { "altitude": { "description": "Mean altitude (meters).", "title": "Altitude", "type": "number" }, "true_anomaly": { "default": 0, "description": "True anomaly (degrees).", "exclusiveMaximum": 360, "minimum": 0, "title": "True Anomaly", "type": "number" }, "epoch": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": "2025-10-15T22:46:44.656850Z", "description": "Timestamp (epoch) of the initial orbital state.", "title": "Epoch" }, "type": { "const": "keplerian", "default": "keplerian", "description": "Orbit type discriminator.", "title": "Type", "type": "string" }, "inclination": { "default": 0, "description": "Inclination (degrees).", "exclusiveMaximum": 180, "minimum": 0, "title": "Inclination", "type": "number" }, "right_ascension_ascending_node": { "default": 0, "description": "Right ascension of ascending node (degrees).", "exclusiveMaximum": 360, "minimum": 0, "title": "Right Ascension Ascending Node", "type": "number" }, "eccentricity": { "default": 0, "description": "Eccentricity.", "minimum": 0, "title": "Eccentricity", "type": "number" }, "perigee_argument": { "default": 0, "description": "Perigee argument (degrees).", "exclusiveMaximum": 360, "minimum": 0, "title": "Perigee Argument", "type": "number" } }, "required": [ "altitude" ], "title": "KeplerianOrbit", "type": "object" }, "MOGConstellation": { "description": "A constellation that arranges member satellites following the mutual orbiting group pattern.\n\nBased on Stephen Leroy, Riley Fitzgerald, Kerri Cahoy, James Abel, and James Clark (2020).\n\"Orbital Maintenance of a Constellation of CubeSats for Internal Gravity Wave Tomography,\"\nIEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing, vol. 13,\npp. 307-317. doi: 10.1109/JSTARS.2019.2961084", "properties": { "name": { "description": "Space system name.", "examples": [ "International Space Station" ], "title": "Name", "type": "string" }, "orbit": { "$ref": "#/$defs/CircularOrbit", "description": "Reference circular orbit for this constellation." }, "instruments": { "default": [ { "name": "Default", "field_of_regard": 180.0, "min_access_time": "PT0S", "req_self_sunlit": null, "req_target_sunlit": null, "access_time_fixed": false } ], "description": "List of assigned instruments.", "items": { "$ref": "#/$defs/Instrument" }, "minItems": 1, "title": "Instruments", "type": "array" }, "type": { "const": "mog", "default": "mog", "description": "Space system type discriminator.", "title": "Type", "type": "string" }, "parallel_axis": { "description": "Mutual orbit axis length (m) parallel to velocity vector.", "exclusiveMinimum": 0, "title": "Parallel Axis", "type": "number" }, "transverse_axis": { "description": "Mutual orbit axis length (m) transverse to velocity vector.", "exclusiveMinimum": 0, "title": "Transverse Axis", "type": "number" }, "clockwise": { "default": true, "description": "True, if the mutual orbit is clockwise.", "title": "Clockwise", "type": "boolean" }, "number_satellites": { "default": 2, "description": "Number of equally-spaced mutually orbiting satellites.", "exclusiveMinimum": 0, "title": "Number Satellites", "type": "integer" } }, "required": [ "name", "orbit", "parallel_axis", "transverse_axis" ], "title": "MOGConstellation", "type": "object" }, "Satellite": { "description": "Single satellite.", "properties": { "name": { "description": "Space system name.", "examples": [ "International Space Station" ], "title": "Name", "type": "string" }, "orbit": { "anyOf": [ { "$ref": "#/$defs/TwoLineElements" }, { "$ref": "#/$defs/CircularOrbit" }, { "$ref": "#/$defs/SunSynchronousOrbit" }, { "$ref": "#/$defs/KeplerianOrbit" } ], "description": "Orbit specification.", "title": "Orbit" }, "instruments": { "default": [ { "name": "Default", "field_of_regard": 180.0, "min_access_time": "PT0S", "req_self_sunlit": null, "req_target_sunlit": null, "access_time_fixed": false } ], "description": "List of assigned instruments.", "items": { "$ref": "#/$defs/Instrument" }, "minItems": 1, "title": "Instruments", "type": "array" }, "type": { "const": "satellite", "default": "satellite", "description": "Space system type discriminator.", "title": "Type", "type": "string" } }, "required": [ "name", "orbit" ], "title": "Satellite", "type": "object" }, "SunSynchronousOrbit": { "description": "Orbit defined by sun synchronous parameters.", "properties": { "altitude": { "description": "Mean altitude (meters).", "exclusiveMaximum": 5980991.228584941, "minimum": 0, "title": "Altitude", "type": "number" }, "true_anomaly": { "default": 0, "description": "True anomaly (degrees).", "exclusiveMaximum": 360, "minimum": 0, "title": "True Anomaly", "type": "number" }, "epoch": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": "2025-10-15T22:46:44.656850Z", "description": "Timestamp (epoch) of the initial orbital state.", "title": "Epoch" }, "type": { "const": "sso", "default": "sso", "description": "Orbit type discriminator.", "title": "Type", "type": "string" }, "equator_crossing_time": { "description": "Equator crossing time (local solar time).", "format": "time", "title": "Equator Crossing Time", "type": "string" }, "equator_crossing_ascending": { "default": true, "description": "True, if the equator crossing time is ascending (south-to-north).", "title": "Equator Crossing Ascending", "type": "boolean" } }, "required": [ "altitude", "equator_crossing_time" ], "title": "SunSynchronousOrbit", "type": "object" }, "TrainConstellation": { "description": "A constellation that arranges member satellites in sequence.", "properties": { "name": { "description": "Space system name.", "examples": [ "International Space Station" ], "title": "Name", "type": "string" }, "orbit": { "anyOf": [ { "$ref": "#/$defs/TwoLineElements" }, { "$ref": "#/$defs/SunSynchronousOrbit" }, { "$ref": "#/$defs/CircularOrbit" }, { "$ref": "#/$defs/KeplerianOrbit" } ], "description": "Lead orbit for this constellation.", "title": "Orbit" }, "instruments": { "default": [ { "name": "Default", "field_of_regard": 180.0, "min_access_time": "PT0S", "req_self_sunlit": null, "req_target_sunlit": null, "access_time_fixed": false } ], "description": "List of assigned instruments.", "items": { "$ref": "#/$defs/Instrument" }, "minItems": 1, "title": "Instruments", "type": "array" }, "type": { "const": "train", "default": "train", "description": "Space system type discriminator.", "title": "Type", "type": "string" }, "number_satellites": { "default": 1, "description": "The count of the number of satellites.", "minimum": 1, "title": "Number Satellites", "type": "integer" }, "interval": { "description": "The local time interval between satellites in a train constellation.", "format": "duration", "title": "Interval", "type": "string" }, "repeat_ground_track": { "default": true, "description": "True, if the train satellites should repeat the same ground track.", "title": "Repeat Ground Track", "type": "boolean" } }, "required": [ "name", "orbit", "interval" ], "title": "TrainConstellation", "type": "object" }, "TwoLineElements": { "description": "Orbit defined with standard two line elements.", "properties": { "type": { "const": "tle", "default": "tle", "description": "Orbit type discriminator.", "title": "Type", "type": "string" }, "tle": { "description": "Two line elements. Multiple TLEs must be in chronological order.", "examples": [ [ "1 25544U 98067A 21156.30527927 .00003432 00000-0 70541-4 0 9993", "2 25544 51.6455 41.4969 0003508 68.0432 78.3395 15.48957534286754" ] ], "items": { "type": "string" }, "minItems": 2, "title": "Tle", "type": "array" } }, "required": [ "tle" ], "title": "TwoLineElements", "type": "object" }, "WalkerConfiguration": { "description": "Enumeration of different Walker constellation configurations.", "enum": [ "delta", "star" ], "title": "WalkerConfiguration", "type": "string" }, "WalkerConstellation": { "description": "A constellation that arranges member satellites following the Walker pattern.", "properties": { "name": { "description": "Space system name.", "examples": [ "International Space Station" ], "title": "Name", "type": "string" }, "orbit": { "anyOf": [ { "$ref": "#/$defs/TwoLineElements" }, { "$ref": "#/$defs/SunSynchronousOrbit" }, { "$ref": "#/$defs/CircularOrbit" }, { "$ref": "#/$defs/KeplerianOrbit" } ], "description": "Lead orbit for this constellation.", "title": "Orbit" }, "instruments": { "default": [ { "name": "Default", "field_of_regard": 180.0, "min_access_time": "PT0S", "req_self_sunlit": null, "req_target_sunlit": null, "access_time_fixed": false } ], "description": "List of assigned instruments.", "items": { "$ref": "#/$defs/Instrument" }, "minItems": 1, "title": "Instruments", "type": "array" }, "type": { "const": "walker", "default": "walker", "description": "Space system type discriminator.", "title": "Type", "type": "string" }, "configuration": { "$ref": "#/$defs/WalkerConfiguration", "default": "delta", "description": "Walker configuration." }, "number_satellites": { "default": 1, "description": "Number of satellites in the constellation.", "minimum": 1, "title": "Number Satellites", "type": "integer" }, "number_planes": { "default": 1, "description": "The number of equally-spaced planes in a Walker Delta constellation. Ranges from 1 to (number of satellites).", "minimum": 1, "title": "Number Planes", "type": "integer" }, "relative_spacing": { "default": 0, "description": "Relative spacing of satellites between plans for a Walker Delta constellation. Ranges from 0 for equal true anomaly to (number of planes) - 1. For example, `relative_spacing=1` means the true anomaly is shifted by `360/number_satellites` between adjacent planes.", "minimum": 0, "title": "Relative Spacing", "type": "integer" } }, "required": [ "name", "orbit" ], "title": "WalkerConstellation", "type": "object" } }, "required": [ "name" ] }
- Fields:
name (str)satellites (List[tatc.schemas.satellite.Satellite | tatc.schemas.satellite.TrainConstellation | tatc.schemas.satellite.WalkerConstellation | tatc.schemas.satellite.MOGConstellation])stations (List[tatc.schemas.point.GroundStation])
- field satellites: List[Satellite | TrainConstellation | WalkerConstellation | MOGConstellation] = []
List of member space systems.
- field stations: List[GroundStation] = []
List of member ground stations.