Examples

COASTSim includes comprehensive example Jupyter notebooks in the examples/ directory that demonstrate various features and workflows.

Example Notebooks

Example Spacecraft DITL

Location: examples/Example_Spacecraft_DITL.ipynb

This notebook demonstrates a complete spacecraft DITL simulation with:

  • Custom spacecraft configuration

  • Power modeling (battery and solar panels)

  • Attitude control system simulation

  • Observation scheduling with constraints

  • Ground station pass calculations

  • South Atlantic Anomaly (SAA) avoidance

  • Timeline visualization and analysis

Key features demonstrated:

# Configure spacecraft components
battery = Battery(capacity=100.0, initial_charge=80.0)
solar_panels = SolarPanelSet(panels=[...])
acs = AttitudeControlSystem(slew_acceleration=0.01)

# Set up instruments
instruments = InstrumentSet(instruments=[...])

# Create spacecraft bus
bus = SpacecraftBus(
    battery=battery,
    solar_panels=solar_panels,
    acs=acs,
    instruments=instruments
)

# Run simulation
ditl = QueueDITL(config, ephemeris, begin, end)
ditl.run()

Example DITL from JSON

Location: examples/Example_DITL_from_JSON.ipynb

This notebook shows a simplified workflow using JSON configuration files:

  • Loading spacecraft configuration from JSON

  • Quick DITL setup and execution

  • Basic analysis and visualization

This approach is ideal for rapid prototyping and testing different configurations:

from conops import MissionConfig, QueueDITL

# Load everything from configuration
config = MissionConfig.from_json("example_config.json")

# Run simulation
ditl = QueueDITL(config, ephemeris, begin, end)
ditl.run()

# Analyze
ditl.plot()

Example Configuration

Location: examples/example_config.json

A complete JSON configuration file showing all available parameters:

  • Spacecraft bus configuration

  • Solar panel specifications

  • Instrument definitions

  • Battery parameters

  • Attitude control system settings

  • Ground station network

  • Constraint definitions

Example TLE File

Location: examples/example.tle

Sample Two-Line Element (TLE) file for orbit propagation testing.

Running the Examples

To run the example notebooks:

cd examples
jupyter notebook

Then open any of the .ipynb files in your browser.

Common Use Cases

Mission Planning

Use COASTSim to evaluate operational scenarios before launch:

  • Test different target scheduling strategies

  • Validate power budget over multiple orbits

  • Assess ground station coverage

  • Optimize observation efficiency

Performance Analysis

Assess spacecraft performance:

  • Power generation vs. consumption analysis

  • Thermal constraints during different operational modes

  • Data downlink capacity and scheduling

  • Slew time and observation efficiency

Constraint Validation

Verify observational constraints are satisfied:

  • Sun angle avoidance

  • Moon exclusion zones

  • Earth limb constraints

  • South Atlantic Anomaly avoidance

  • Custom geometric constraints

Schedule Optimization

Test different scheduling algorithms:

  • Priority-based scheduling

  • Greedy vs. optimal schedulers

  • Target visibility windows

  • Constraint satisfaction

Data Management

Configure and simulate onboard data storage, generation, and downlink:

from conops.config import (
    DataGeneration,
    Instrument,
    Payload,
    OnboardRecorder,
    Antenna,
    GroundStation
)

# Configure instruments with data generation
camera = Instrument(
    name="High-Res Camera",
    power_draw=PowerDraw(nominal_power=100),
    data_generation=DataGeneration(rate_gbps=0.5)  # 0.5 Gbps continuous
)

spectrometer = Instrument(
    name="Spectrometer",
    power_draw=PowerDraw(nominal_power=50),
    data_generation=DataGeneration(per_observation_gb=2.0)  # 2 Gb per obs
)

payload = Payload(instruments=[camera, spectrometer])

# Configure onboard data recorder
recorder = OnboardRecorder(
    name="Solid State Recorder",
    capacity_gb=128.0,  # 128 Gigabits capacity
    yellow_threshold=0.7,  # 70% full warning
    red_threshold=0.9  # 90% full critical
)

# Configure ground station with downlink capability
station = GroundStation(
    code="GND",
    name="Ground Station",
    latitude_deg=35.0,
    longitude_deg=-106.0,
    antenna=Antenna(
        bands=["X"],
        max_data_rate_mbps=100.0  # 100 Mbps downlink
    )
)

# Add to configuration
config = MissionConfig(
    spacecraft_bus=spacecraft_bus,
    payload=payload,
    recorder=recorder,
    ground_stations=GroundStationRegistry(stations=[station]),
    # ... other config
)

# Run simulation - data automatically generated and downlinked
ditl = DITL(config=config)
ditl.calc()

# Analyze data management
import matplotlib.pyplot as plt

plt.figure(figsize=(12, 8))

# Plot recorder fill level
plt.subplot(3, 1, 1)
plt.plot(ditl.utime, ditl.recorder_fill_fraction)
plt.ylabel('Recorder Fill Fraction')
plt.title('Onboard Data Recorder Status')

# Plot data generation
plt.subplot(3, 1, 2)
plt.plot(ditl.utime, ditl.data_generated_gb)
plt.ylabel('Data Generated (Gb)')

# Plot data downlink
plt.subplot(3, 1, 3)
plt.plot(ditl.utime, ditl.data_downlinked_gb)
plt.ylabel('Data Downlinked (Gb)')
plt.xlabel('Time')

plt.tight_layout()
plt.show()

Key features:

  • Rate-based generation: Instruments generate data continuously at specified Gbps

  • Per-observation generation: Instruments generate fixed data amount per observation

  • Recorder management: Automatic capacity limiting and alert thresholds

  • Downlink simulation: Data automatically downlinked during ground station passes

  • Alert integration: Recorder fill level monitored by fault management system

Creating Your Own Examples

When creating your own simulations:

  1. Start with the example configuration as a template

  2. Modify spacecraft parameters to match your mission

  3. Define your target list or observation queue

  4. Set appropriate constraints for your mission

  5. Run the simulation over your desired time period

  6. Analyze and visualize the results

For detailed API documentation, see API Reference.