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:
Start with the example configuration as a template
Modify spacecraft parameters to match your mission
Define your target list or observation queue
Set appropriate constraints for your mission
Run the simulation over your desired time period
Analyze and visualize the results
For detailed API documentation, see API Reference.