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:28:29.351647Z",
               "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:28:29.351647Z",
               "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:28:29.351647Z",
               "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 name: str [Required]

Name of this mission.

field satellites: List[Satellite | TrainConstellation | WalkerConstellation | MOGConstellation] = []

List of member space systems.

field stations: List[GroundStation] = []

List of member ground stations.