Overview
The tool supports mission analysis and research workflows by screening large time ranges and multiple assets to find moments where spacecraft configurations match science-driven constraints.
Primary use
Coordinated observation planning and contextualization of solar and heliospheric events
Core capability
Alignment detection between any combination of spacecraft and planets in heliocentric coordinates
Problem
Multi-spacecraft studies require identifying when distributed assets are in favorable relative geometries. Manual screening does not scale with the number of missions, targets, and configuration modes.
Approach
- Retrieve ephemerides for a list of spacecraft and planets over a defined time range and time step.
- Transform trajectories to a heliocentric reference frame for consistent geometry evaluation.
- Evaluate alignment criteria per selected geometry mode and return matching time windows.
- Export results and visualize trajectories and detected configurations.
Geometry modes supported
- Opposition (≈ 180°)
- Quadrature (≈ 90°)
- Cone (objects within an angular sector)
- Arbitrary angle (user-defined)
- Parker spiral alignment (solar wind connectivity)
- Cone Parker (combined criterion)
Deliverables
- Reusable Python module for trajectory retrieval and geometry screening
- Configurable inputs for targets, time ranges, angles, and solar wind speed
- Export to
.csvand polar trajectory visualizations for quick interpretation
Installation & usage
Install directly from GitHub:
pip install git+https://github.com/EmmaVellard/SolarConflux.git Launch interactively:
from solarconflux import SolarConflux
SolarConflux() Example workflow (trajectory retrieval → alignment detection → export + plot):
from solarconflux import get_trajectories, matching_dates, save_match, save_plot
body_list = ['BepiColombo', 'Solar Orbiter', 'PSP', 'Stereo-A', 'Earth', 'Mars', 'Jupiter']
start_time = '2020-09-01 09:00'
end_time = '2020-12-31 23:00'
step = '60m'
trajectories = get_trajectories(body_list, start_time, end_time, step)
geometry_choices = ['cone', 'opposition', 'quadrature', 'arbitrary', 'parker', 'coneparker']
match = matching_dates(geometry_choices, body_list, trajectories,
arbitrary_angle=30, u_sw=400e3)
save_match(match)
save_plot(match, trajectories) Outputs
- CSV export listing detected alignment times and involved bodies
- Polar plots showing trajectories and configurations (cone and Parker spiral examples)