Code for design and simulation of satellite laser guide stars.
The majority of this code was written by Dr. Jim Clark of the Massachusetts Institute of Technology during the course of his doctoral thesis research ("Space-based laser guide stars for astronomical observatories"). Its copyright belongs to MIT, but MIT has authorized the release of this code under the BSD 2-clause license (case no. 23070).
(The exception is hamiltonian.m
, which is copyright 2015 Pramit Biswas and released via MATLAB File Exchange under the BSD 2-clause license, included here as license.txt
-- not to be confused with LICENSE.md
, which is the license governing the rest of the code.)
To use this software package, download all code and data files into a single folder. MATLAB is required, as well as the Mapping Toolbox, Optimization Toolbox, and Phased Array System Toolbox. Run LGSmain.m
to initialize all variables (e.g. propulsion system options, host telescope parameters, observation mission parameters) and run all other code modules. Several figures will be produced in the course of operation, most of which are (perhaps with some aesthetic edits) included in Clark 2020.
The main program for setting up the LGS parameters (mass, LUVOIR size, propulsion system options, etc.) and invoking the other functions.
A helper function for calculating Gaussian beam link budgets (power received, photons received per second, apparent magnitude, and beamwidth).
Calculates the thrust required to hold the Telescope-LGS formation to observe any direction over the course of a full six-month halo orbit period.
Calculates a slice of observations and produces a contour map of thrust vs. time and azimuth (constant elevation).
Calculates a slice of observations and produces a contour map of thrust vs. elevation and azimuth (at one time of observation).
Calculates the time and delta-V cost of deploying a LGS from LUVOIR.
Simulates the formation flight of a laser guide star with a telescope, including closed-loop control, for evaluating drift and noise sensitivity.
A differential-equation representation of the circular restricted 3-body problem, for use with ode45
. Used by the various OrbitCalcs scripts.
An advanced version of cr3bpse
which includes a rudimentary controller, for investigating formation flight.
A variant of cr3bpsepropCLazel3
which includes additional return variables; it is not to be used with ode45
, but can be used on the trajectory coming out of ode45
to see what the controller in cr3bpsepropCLazel3
was doing.
Calculates the sensitivity of the formation to thruster noise and calculates the required check-in frequency from the telescope during an observation.
Calculates the possible negative effects of the LGS spacecraft on the telescope's observation (thermal emission, sun glinting, etc.).
An implementation of Planck's Law.
Calculations of power and ADCS subsystem performance and requirements during formation flight.
Calculations of the brightness of a passive "laser guide star" spacecraft that reflects a laser generated externally (LUVOIR itself, or a ground-based facility).
Ingests lists of stars and observations for later use, and plots them on a map.
Calculates the number of LGS spacecraft required to support a mission, evaluating the different propulsion system options considered in LGSmain
.
Conducts sensitivity analyses of the design reference mission with respect to various parameters (range to the telescope, total spacecraft mass, etc.).
The main function for evaluating a design reference mission, invoked by DRM_prop_options
and DRM_sensitivity
.
Uses MATLAB's intlinprog
solver to solve the Traveling Salesman Problem for the list of star targets. This program takes longer to run than all the rest put together, so it saves its result for later reuse.
Uses Pramit Biswas's Hamiltonian code to process the graph produced by StarkSkymap_TSP
into a Hamiltonian route, i.e. a list of stars visited in order.
A simple greedy scheduler, for assigning observations to LGS spacecraft. This code rigidly adheres to the schedule of observations in order of scientific priority (i.e. expected exo-Earth yield).
An attempted evolution of StarkSchedule
that only assigns `nearby' observations to LGS spacecraft, to keep their movements segmented. Unfortunately it doesn't yet ensure that the segments are butted against each other, so it actually performs worse (i.e. assigns more LGS spacecraft) than StarkSchedule
.
A scheduler that ingests the TSP solution and segments it among LGS spacecraft.
Uses Joseph Kirk's TSP Genetic Algorithm code to solve for an optimal path among the nodes in a Fibonacci spiral, which MATLAB's intlinprog
did not handle very well (due to the narrow "dynamic range" between the optimal solution and similar "good enough" solutions). Kirk's code also includes routines for solving the multi-salesman problem, which will be investigated in the future for further optimization of the LGS scheduler. Not currently invoked by the main LGS code.
Calculates the line-of-sight and targets accessible from various ground telescopes through satellites in geostationary orbit.
Calculates the delta-V cost to incline an LGS satellite from GEO to access non-equatorial stars.
Calculates the line-of-sight and targets accessible from various ground telescopes through a satellite in an inclined geosynchronous orbit.
Calculates the line-of-sight from a ground telescope through a satellite in a highly elliptical orbit.
Calculates the line-of-sight from a telescope in geostationary orbit through a satellite in a super-geostationary orbit.
A helper function for calculating the eccentric anomaly from the mean anomaly.
Calculations of highly-elliptical "sidereal" orbits for Earth-orbiting laser guide stars.
Code for computing a Hamiltonian path from a graph, by Pramit Biswas. Used according to the terms of the 2-clause BSD license.
The list of stars which are baselined to be observed by LUVOIR, per Stark et al. 2015, received from Chris Stark via personal communication and released with his permission. Each row consists of the star ID (Hipparcos Catalogue), followed by the hour angle and declination, as sourced from SIMBAD.
The celestial coordinates (hour angle and declination) of the stars of apparent magnitude 2 and brighter, as sourced from SIMBAD.
The list of observations baselined for LUVOIR, per Stark et al. 2015, received from Chris Stark via personal communication and released with his permission. Each row consists of the star ID (Hipparcos Catalogue), the count of how many times the star has been observed (including the current one, i.e. starting at 1), the desired number of years since the first observation of that star, and the duration of the observation in days.