Abstract
We derive efficient, closed-form, differentiable, and numerically stable solutions for the flux measured from a spherical planet or moon seen in reflected light, either in or out of occultation. Our expressions apply to the computation of scattered light phase curves of exoplanets, secondary eclipse light) curves in the optical, or future measurements of planet–moon and planet–planet occultations, as well as to photometry of solar system bodies. We derive our solutions for Lambertian bodies illuminated by a point source, but extend them to model illumination sources of finite angular size and rough surfaces with phase-dependent scattering. Our algorithm is implemented in Python within the open-source starry mapping framework and is designed with efficient gradient-based inference in mind. The algorithm is ∼4–5 orders of magnitude faster than direct numerical evaluation methods and ∼10 orders of magnitude more precise. We show how the techniques developed here may one day lead to the construction of two-dimensional maps of terrestrial planet surfaces, potentially enabling the detection of continents and oceans on exoplanets in the habitable zone.6
Export citation and abstract BibTeX RIS
![](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017license.gif)
Original content from this work may be used under the terms of the Creative Commons Attribution 4.0 licence. Any further distribution of this work must maintain attribution to the author(s) and the title of the work, journal citation and DOI.
1. Introduction
Despite recent advances in instrumentation and the dawn of thirty-meter-class telescopes and kilometer-wide interferomer arrays, extrasolar planets will remain unresolved point sources for decades to come. Nevertheless, modulations in the light received from these distant bodies due to their rotation, changing illumination, and eclipses by their host stars or other bodies in the system can be harnessed to reconstruct two-dimensional views of their surfaces. In particular, next-generation space-based telescopes such as the Large UV/Optical/IR Surveyor (LUVOIR) may enable us to measure variations in the reflected light signature of terrestrial planets in the habitable zone, which can be used to map their surfaces and indirectly infer the presence of clouds, continents, oceans, and perhaps even life.
There is an extensive literature on techniques for mapping exoplanet surfaces based on their phase curves (e.g., Russell 1906; Lacis & Fix 1972; Knutson et al. 2007; Cowan & Agol 2008; Oakley & Cash 2009; Berdyugina & Kuhn 2017; Heng et al. 2021; Luger et al. 2021b, 2021c) and occultation light curves (e.g., Williams et al. 2006; Rauscher et al. 2007, 2018; de Wit et al. 2012; Majeau et al. 2012), both in thermal and reflected (scattered) light. In particular, much attention has been given to techniques for mapping Earth-like planets from visible-light reflected phase curves (e.g., Ford et al. 2001; Kawahara & Fujii 2010, 2011; Fujii & Kawahara 2012; Aizawa et al. 2020; Kawahara 2020). Unlike thermal phase curves, which primarily encode (often degenerate) information about longitudinal surface brightness variations (Russell 1906), reflected light curves often contain information about the full two-dimensional surface albedo distribution (e.g., Kawahara & Fujii 2010).
Occultation light curves in reflected light can encode even more information about the surface. Thus far, these have been studied primarily within our solar system. Mutual occultations among the Galilean moons of Jupiter have been extensively studied to infer surface properties of the moons and to refine their ephemerides (e.g., Arlot et al. 1974, 2014; Aksnes et al. 1984; de Kleer et al. 2017; Saquet et al. 2018; Morgado et al. 2019; Bartolić et al. 2022). Farther out in the solar system, mutual occultations of Pluto and Charon in the late 1980s were used to confirm Charon's existence (Stern 1992), establish the sizes and orbital parameters of the two bodies (Tholen & Buie 1990), and infer their surface properties (Marcialis 1990). In particular, Dunbar & Tedesco (1986) developed an efficient analytic algorithm to model Pluto–Charon occultation light curves in reflected light assuming uniform surfaces and used it to infer the two body's average geometrical albedos. Later, Buie et al. (1992) used a maximum entropy approach to reconstruct two-dimensional maps of the two bodies and Reinsch et al. (1994) analyzed the complete mutual occultation data set to infer longitudinal maps of Pluto's albedo.
Many studies have analyzed real Earth reflected light curves to infer surface properties of our planet as an exercise in preparation for the mapping of exoplanets. Cowan et al. (2009, 2011) analyzed visible-light disk-integrated light curves of the Earth taken by the Deep Impact spacecraft to produce longitudinal maps of the surface, harnessing multiband observations to disentangle static surface brightness features from temporally variable clouds. A transit of Earth by the Moon was observed as well (Livengood et al. 2011), although this data has yet to be exploited for mapping purposes. More recently, Jiang et al. (2018) and Fan et al. (2019) used data from the L1-stationed DSCOVR satellite to infer surface and cloud properties of the Earth, and Luger et al. (2019b) analyzed background scattered light in TESS photometry to reconstruct a cloud map of the Earth.
There have also been many developments on the open-source software front. These include ReflectDirect, a reflected light-curve analysis suite (Schwartz et al. 2016); samurai, a tool for rotational unmixing of reflected light curves (Lustig-Yaeger et al. 2018); spiderman, an efficient discretization scheme on the sphere that enables fast computation of exoplanet phase curves and occultation light curves (Louden & Kreidberg 2018); exocartographer, a Bayesian framework for doing inference on exoplanet phase curves based on a HEALPix (Górski et al. 2005) discretization scheme (Farr et al. 2018); the sot package for spin–orbit tomography of exo-Earths (Kawahara 2020; Kawahara & Masuda 2020); and neural_exocartography, a tool for mapping exoplanet surfaces with neural learned regularization (Asensio Ramos & Pallé 2021). Of particular relevance to the present work, Haggard & Cowan (2018) presented EARL (Exoplanet Analytic Reflected Lightcurves), a Mathematica code for computing analytic, closed-form solutions for the phase curve of a Lambert sphere, i.e., one that scatters light isotropically, in the case that the surface albedo distribution is characterized by either a sum of delta functions or a sum of spherical harmonics. And finally, Luger et al. (2019a) introduced starry, a light-curve-modeling package that computes thermal phase curves and occultation light curves, as well as their derivatives, analytically from a spherical harmonic expansion of the surface brightness.
The present paper is an extension to the starry algorithm, adapting it to model phase curves and occultation light curves in reflected light. The expressions we derive are analytic: they may all be expressed in closed form in terms of algebraic operations involving trigonometric functions and (at times) elliptic integrals. We derive numerically stable recursion relations for the efficient evaluation of all expressions and code them within an autodifferentiation framework to enable the computation of accurate derivatives for use in gradient-based inference and optimization schemes. Our code is fully open source, comprehensively unit tested, and supplemented with an extensive API documentation and suite of tutorials. As in all papers in the starry series, in the caption of each of the figures we provide links (inside parenthesis) to the exact Python scripts that generated them. Next to many of the equations we also provide links (as footnote) to Jupyter notebooks containing detailed derivations and/or validations. 7
2. Overview
Our goal in this paper is to derive analytic expressions for the flux received by a distant observer from a sphere of non-uniform albedo illuminated by a monochromatic source that may or may not be occulted by a (possibly different) spherical body. This applies, for example, to the case of planetary phase curves, secondary eclipse (occultation) light curves, and moon–moon, planet–moon, and planet–planet occultations (in the solar system or not; e.g., Cabrera & Schneider 2007; Luger et al. 2019b), all seen in reflected light. We derive all expressions in the limit that the reflecting body is Lambertian, i.e., it scatters light isotropically, but we relax this assumption in later sections. We model the general case of an intensity that varies across the surface of the body according to a spatially dependent albedo A. Throughout this paper, we will take A to mean the spherical albedo, the fraction of power incident on a body at a given wavelength that is scattered back out to space (in all directions). Note that the spherical albedo is closely related to the Bond albedo: the Bond albedo is the stellar flux-weighted integral of A(
As in Luger et al. (2019a), we compute fluxes by first expanding the surface in terms of spherical harmonics. While in Luger et al. (2019a) we expanded the emissivity of the surface, here we instead expand the spherical albedo A. Specifically, if
y
is the vector of spherical harmonic coefficients describing the albedo anywhere on the surface and is the spherical harmonics basis (Equation (A1)), the albedo A at a point (x, y) on the sky-projected disk of the body is given by the dot product
![Equation (1)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn1.gif)
The flux measured from this body is proportional to the surface integral over the projected disk of the albedo A times the illumination profile of the surface, given by Lambert's law as
![Equation (2)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn2.gif)
where ϑi is the angle between the incident radiation and the surface normal, and is the peak illumination. We show in Appendix A.2 that in the case of, say, a planet illuminated by its host star,
![Equation (3)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn3.gif)
where rs is the distance between the planet and the star (in units of the planet's radius) and fs is the stellar flux measured at the observer (in arbitrary units). Following the convention in Luger et al. (2019a), we assume throughout this paper that fs = 1, so all fluxes are defined as a fraction of the flux of the illumination source at the observer.
The piecewise nature of the illumination function at the day/night terminator makes the problem of computing the visible flux particularly difficult; most studies to date have tackled the problem numerically, either via Monte Carlo integration (e.g., Ford et al. 2001) or by discretizing the surface and computing the relevant integrals by summing over the visible pixels (e.g., Kawahara & Fujii 2010; Fujii & Kawahara 2012). Recently, Haggard & Cowan (2018) developed an analytic framework for computing light curves of unocculted bodies illuminated by a point source. In this paper, we rederive their solution under the starry framework and extend it, for the first time, to the case where the body is occulted by another spherical body, which may or may not be the illumination source. We also extend the solution to the case of an extended illumination source and to non-Lambertian scattering.
In Luger et al. (2019a), we reduced the problem of computing the flux from an occulted body in thermal (emitted) light to a series of efficient, analytical operations involving trigonometric functions of the position and size of the occultor and certain complete elliptic integrals. In the case of reflected light, however, the change in the limits of integration due to the unilluminated nightside breaks many of the symmetries that simplified the flux calculation. In particular, the limits of integration now depend on the solution to a quartic equation specifying the points of intersection between the occultor and the day/night terminator, and the solution to those integrals is now a function of incomplete elliptic integrals. The procedure for computing the flux is therefore significantly more complex. We therefore defer all calculations to the Appendix, and devote the body of the paper to validating and demonstrating applications of our approach.
This paper is organized as follows. In Section 3 we present sample light curves computed using our algorithm, validate it against numerical integration, and discuss its performance in terms of computational speed and precision. In Section 4 we extend the model to apply to illumination sources of finite size and surfaces that scatter light anisotropically. We discuss implications, applications, and limitations of our model in Section 5 and summarize our findings in Section 6. For convenience, Tables 1–4 at the end list all symbols and variables used in the text, with descriptions and links to the equations in which they are defined.
Table 1. List of Common Symbols Used in this Paper
Symbol | Description | References |
---|---|---|
Frames of reference | ||
![]() | frame in which surface map is specified | Appendix A.1 |
![]() | observer (sky) frame | Appendix A.1 |
![]() | integration frame (occultor present) | Appendix C |
![]() | integration frame (no occultor) | Appendix B |
Lines and surfaces | ||
S | region of integration enclosed by ![]() | Appendix C |
![]() | integration path along occultor limb | Appendix C |
![]() | integration path along body limb | Appendix C |
![]() | integration path along terminator | Appendix C |
Special functions | ||
![]() | quadrant-aware arctangent | (A10) |
F | incomplete elliptic integral of the first kind | (C47) |
2 F1 | Gauss hypergeometric function | Appendix C.6.4 |
E | incomplete elliptic integral of the second kind | (C48) |
gamma function | Appendix B | |
incomplete elliptic integral of the third kind | (C69) | |
Operators and symbols | ||
V | Vieta summation operator | (C40) |
pairwise difference operator | (C32) | |
∫ ϕ | vectorized integral | (C31) |
Download table as: ASCIITypeset image
Table 2. List of Common Scalar Quantities Used in this Paper
Symbol | Description | References |
---|---|---|
Integers | ||
l | spherical harmonic degree | (A2) |
m | spherical harmonic order | (A2) |
n | vector index | ⋯ |
| spherical harmonic index, | (A5) |
| spherical harmonic index, | (A5) |
Coordinates | ||
x | Cartesian x coordinate on the plane of the sky | ⋯ |
y | Cartesian y coordinate on the plane of the sky | ⋯ |
z | Cartesian z coordinate, ![]() | (A6) |
Geometrical parameters | ||
b | semiminor axis of terminator ellipse | (A9) |
bc | complement of b, ![]() | Appendix A.2 |
bo | occultor impact parameter, ![]() | Appendix A.1 |
k2 | elliptic parameter | (C46) |
I | bodyinclination | Appendix A.1 |
n | elliptic characteristic | (C70) |
ro | occultor radius | Appendix A.1 |
rs | distance to illumination source, ![]() | Appendix A.2 |
xo | occultor x position | Appendix A.1 |
xs | illumination source x position | Appendix A.2 |
yo | occultor y position | Appendix A.1 |
ys | illumination source y position | Appendix A.2 |
zs | illumination source z position | Appendix A.2 |
body obliquity | Appendix A.1 | |
| angle of rotation of the terminator ellipse | (A19), (A21) |
body rotational phasse | Appendix A.1 | |
Intensities and fluxes | ||
a | orbital semimajor axis | Section 4.1 |
A | albedo (spherical) | (1) |
f | reflected flux during an occultation | Appendix C |
f0 | reflected flux outside of an occultation | (B6) |
![]() | complement of reflected flux outside of an occultation | (B7) |
f1–f14 | case-dependent reflected flux during occultation | Appendix C |
fI | intensity-weighted flux during an occultation | (C5) |
fT | thermal flux during an occultation | (A3) |
![]() | thermal flux outside of an occultation | (A7) |
fS | reflected flux over integration region S | (C12) |
I | polynomial intensity at a point on the surface | (A12) |
![]() | true intensity at a point on the surface | (A11) |
Rp | planet radius | Section 4.1 |
R⋆ | stellar radius | Section 4.1 |
ϑi | polar angle of incidence | Figure 9 |
ϑr | polar angle of reflection | Figure 9 |
| Oren–Nayar surface roughness coefficient | Section 4.2 |
| Angular extent of terminator past | (4) |
ϕi | azimuthal angle of incidence | Figure 9 |
ϕr | azimuthal angle of reflection | Figure 9 |
Download table as: ASCIITypeset image
Table 3. List of Common Vector Quantities Used in this Paper
Symbol | Description | References |
---|---|---|
Bases | ||
![]() | Green's basis | (A4) |
![]() | polynomial basis | (A8) |
![]() | spherical harmonic basis | (A1) |
Angles and angular parameters | ||
q | cosine-like parameter of
| (C51) |
| modified angle along occultor limb | (C43) |
| angle along occulted body limb | Appendix C.9 |
ϕ | angle along occultor limb | Appendix C.6 |
| angle along terminator | Appendix C.8 |
Integrals | ||
r ⊤ | unocculted solution in emitted light | Appendix A.1 |
s ⊤ | occultation solution in emitted light | Appendix A.1 |
![]() | helper integral | (C42) |
![]() | helper integral | (C45) |
![]() | helper integral | (B3) |
![]() | primitive integral | (C27) |
![]() | primitive integral | (C29) |
![]() | unocculted solution in reflected light | (B1) |
![]() | occultation solution in reflected light | (C26) |
![]() | primitive integral | (C28) |
![]() | helper integral | (C56) |
![]() | helper integral | (C58) |
Other vector quantities | ||
a | vector of albedo values on a discrete surface grid | (12) |
d | data vector | Section 5.1 |
f | vector of flux values | Section 5.1 |
i | illumination profile in polynomial basis | (A15) |
x '' | solution to quartic in terminator frame | (C3) |
y | vector of spherical harmonic coefficients | Appendix A.1 |
| prior mean | Section 5.1 |
Download table as: ASCIITypeset image
Table 4. List of Common Matrices Used in this Paper
Symbol | Description | References |
---|---|---|
Linear operators | ||
A | change-of-basis matrix: ![]() | Appendix A.1 |
A 1 | change-of-basis matrix: ![]() | Appendix A.1 |
A 2 | change-of-basis matrix: ![]() | Appendix A.2 |
C | posterior covariance matrix | Section 5.1 |
I | illumination operator | (A17) |
P | pixelization operator | (12) |
P + | inverse pixelization operator | (14) |
R | rotation matrix: ![]() | Appendix A.1 |
![]() | rotation matrix: ![]() | Appendix A.1 |
R '' | rotation matrix: ![]() | Appendix A.1 |
X | starry design matrix | Section 5.1 |
| prior covariance matrix | Section 5.1 |
| data covariance matrix | Section 5.1 |
Integrals | ||
G | anti-exterior derivative of ![]() | (C25) |
![]() | helper integral | (C75) |
![]() | helper integral | (B3) |
![]() | helper integral | (B3) |
Download table as: ASCIITypeset image
3. Reflected Light Curves in Starry
3.1. Sample Light Curves
Figure 1 shows a sample application of the algorithm developed in this paper: a reflected light phase curve of the Earth over the course of one year. The model is computed using the methodology in Appendix B from an l = 25 spherical harmonic expansion of the cloudless Earth, where the oceans are given an albedo of zero and the continents an albedo of unity (note, however, that since the light curve is normalized, the model does not depend on the value of the latter). The Earth is assumed to be a perfect Lambertian scatterer, so effects like the phase dependence of Rayleigh scattering and specular reflection (glint) from the oceans are neglected (but see Section 4 for an extension of the model to non-Lambertian scatterers). The observer is assumed to be along the ecliptic, so the illumination source is along the x–z plane of a right-handed Cartesian coordinate system, with pointing toward the observer and
pointing to the right on the sky. The axis of rotation of the Earth is therefore tilted clockwise away from
by 23
5. The images at the top show snapshots of the disk of the Earth throughout the observation; below each one, we plot in blue the normalized phase curve at that phase over a single rotation. The orange dots correspond to a brute force numerical solution, obtained by discretizing the disk on a grid of ∼105 points and summing over the dayside. The models agree to within the numerical precision of the brute force solution (about 100 ppm of the planetary flux in this case).
Figure 1. Mock reflected light phase curve of the cloudless Earth expanded to spherical harmonic degree l = 25, viewed along the ecliptic. The main plot shows the phase curve over the course of one year. The images at the top show the corresponding progression of the phases of the Earth, from new phase to full phase and back to new phase. Below each image we show a normalized 24 hr segment of the light curve at that phase (blue). Orange dots correspond to the flux computed from brute force numerical integration on a grid of ∼105 points. 8
Download figure:
Standard image High-resolution imageWhile the dominant signal in the phase curve is the sine-like envelope due to the changing phases of the Earth, the local behavior of the light curve at each phase is complex and varies significantly over the course of the year. Unlike phase curves in thermal light, which primarily encode low-order spatial information (since the region of integration is always the full disk), phase curves in reflected light encode information at different scales depending on the phase. At crescent phase, the region of the disk contributing to the total flux is a narrow lune; these measurements therefore encode information primarily about high-l modes. At full phase, the region of integration is the full disk, so these measurements encode information about low-l modes. Furthermore, because of the obliquity of the Earth, the orientation of the crescent lune changes relative to features on the surface over the course of one orbit, changing the relative contribution of different portions of the surface to the flux and increasing the overall information content of the observation. As we will show in Section 5.2, the information content of reflected light phase curves is overwhelmingly higher than that of phase curves in thermal light, particularly for planets with significant obliquity.
Figure 2 shows another light curve of the rotating Earth, but this time taken during an occultation by the Moon. The map of the Earth is the same as before, but the observer is now along the equatorial plane of the Earth. The top panel is a reproduction of Figure 7 in Luger et al. (2019a) for the case of thermal light, where the Moon is seen to travel across the disk of the Earth from southwest to northeast, progressively occulting South America (dip), the Atlantic (peak), and Africa (dip). As before, the blue curve is the analytic solution and the orange dots correspond to the numerical solution.
Figure 2. Mock light curves of the Moon occulting a rotating, cloudless Earth expanded to spherical harmonic degree l = 25. Black curves show the analytic solution; orange dots correspond to brute force numerical integration on a grid of ∼105 points. The top panel shows the light curve in emitted light and is the same as in Figure 7 in Luger et al. (2019a). The bottom panel (this work) shows the same light curve in reflected light during northern summer. 9
Download figure:
Standard image High-resolution imageThe bottom panel of the figure shows a light curve for the same occultation geometry, but seen instead in reflected light, with the Sun to the top left and slightly out of the page, corresponding to some point during northern summer. Note the same dip-peak-dip pattern, albeit with significantly different amplitudes. In particular, the transit across South America is deeper, because it occurs close to local noon, when the illumination is highest; conversely, the transit across Africa occurs close to local dusk, when the illumination is close to zero. As before, the light curves computed using starry agree to within the numerical precision of the brute force solution.
Our last sample light curve is Figure 3, which shows a secondary eclipse light curve of the Earth as it is occulted by the Sun. The model for the Earth is the same as above, and the observer is now close to the ecliptic, but slightly misaligned so that the Earth is occulted behind a solar latitude of 30° (i.e., at a solar impact parameter of 0.5). The observation takes place at the June solstice, so the Earth is tilted by 235 out of the page. As before, the top panel shows the light curve in thermal light; this is similar to the top panel of Figure 13 in Luger et al. (2019a). The orange dots again correspond to the numerical solution. The center panel shows the same light curve in reflected light. Because the observation occurs very close to full phase, the normalized light curves look very similar to each other. The bottom panel shows the difference between the two (reflected minus thermal), which is only on the order of a few percent. In fact, because the illumination profile is proportional to the cosine of the viewing angle,
Figure 3. Mock secondary eclipse ingress light curves of the cloudless Earth expanded to spherical harmonic degree l = 25, viewed from an orientation where the Earth is occulted behind a solar latitude of 30°. Black curves show the analytic solution; orange dots correspond to brute force numerical integration on a grid of ∼105 points. The top panel shows the light curve in emitted light and is similar to Figure 13 in Luger et al. (2019a). The middle panel (this work) shows the same light curve in reflected light. The bottom panel shows the difference between the normalized reflected and emitted light curves. 10
Download figure:
Standard image High-resolution image3.2. Performance
As we discuss in the Appendix, the model for phase curves and occultation light curves in reflected light may be expressed analytically in terms of purely algebraic and trigonometric functions and in some cases incomplete elliptic integrals of the first, second, and third kinds. We have derived efficient and numerically stable recursion relations to compute the relevant expressions and their derivatives. At times, these involve the evaluation of certain expressions numerically, especially when doing so leads to either a speed-up or a significant gain in numerical precision. In particular, as we discuss in Appendix C.1, the integration boundaries during an occultation sometimes depend on the solution to a quartic equation. While this can be solved in closed form, the analytic solution can often be very unstable. We therefore solve the quartic numerically, attaining a precision for the roots within a few orders of magnitude of machine (double) precision.
Figures 4 and 5 summarize the precision and computation time of the starry algorithm for two typical scenarios: a phase curve evaluation (Figure 4) and an occultation evaluation (Figure 5). Blue points correspond to the reflected light algorithm developed in this paper, while purple points correspond to the thermal light algorithm from Luger et al. (2019a) for the same occultation geometry, but without an illumination source. Solid and dashed lines correspond to evaluations without and with gradient propagation, respectively (see Section 3.3 for details). The orange and red dots correspond to numerical evaluation of the flux: brute force integration by summation on a grid of ∼106 points (orange) and two-dimensional adaptive Gaussian quadrature using the dblquad function in scipy (Jones et al. 2001) with both absolute and relative error tolerances set to 10−3 (red). In both figures, the vertical axis corresponds to the evaluation time in seconds for a single flux computation, while the size of the points is proportional to the base-10 log of the relative error. For the starry solutions, the latter is estimated as the max-min difference in the flux over one thousand evaluations in which the input parameters are perturbed within an order of magnitude of machine epsilon; this is therefore a probe of the condition number of the starry algorithm and captures only error due to numerical instabilities. It is worth emphasizing that this is a measurement of the precision of the algorithm, rather than the accuracy, because it would be computationally intractable to compute a solution more accurate than this using a different algorithm. We argue that this measurement can be interpreted to mean that the algorithm is also accurate, but detailed quantification of this difference is beyond the scope of this paper. For the numerical solutions, the error is estimated as the difference between the numerical flux and the starry flux.
Figure 4. Evaluation time (vertical axis) and numerical precision (point size) for a single flux evaluation in the absence of an occultor as a function of spherical harmonic degree for different methods. In purple we show results for the emitted light starry algorithm from Luger et al. (2019a; solid: no gradient; dashed: with gradient), and in blue we show results for the reflected light algorithm from this paper (solid: no gradient; dashed: with gradient). For comparison, in we also show results for discrete integration on a grid (orange) and for numerical integration using two-dimensional Gaussian quadrature (red); neither of these include gradient evaluations. The reflected light algorithm is comparable in efficiency and precision to the emitted light algorithm. It is ∼5 orders of magnitude faster and ∼10 orders of magnitude more precise than numerical integration. 11
Download figure:
Standard image High-resolution imageFigure 5. Same as Figure 4, but for an occultation evaluation in which the occultor intersects the terminator (case 6 in Appendix C). The reflected light algorithm is around one order of magnitude slower and comparably precise to the emitted light algorithm. It is ∼4 orders of magnitude faster and ∼10 orders of magnitude more precise than numerical integration. 12
Download figure:
Standard image High-resolution imageFor both phase curves and occultations, the starry reflected light algorithm is 1–2 orders of magnitude slower than the emitted light algorithm, owing primarily to the increased complexity of the reflected light model. For phase curves (Figure 4), the thermal solution vector
r
⊤ (Equation (A7)) is a constant that can be precomputed, while the analogous vector in the reflected light case, (Equation (B2)), must be evaluated recursively each time. For occultations (Figure 5), the slower evaluation in the reflected light case is primarily due to the time spent solving the quartic equation for the points of intersection between the occultor and the day/night terminator of the illuminated body (Appendix C). This contributes the same overhead at all map degrees l, resulting in a gentler scaling in l than for the thermal case; for large l, the evaluation time for the two algorithms is within a factor of 2–3. In terms of precision, the algorithms are comparable, particularly for occultations. For both phase curves and occultations, the numerical error up to l = 10 is less than one part per trillion (10−12) for both thermal and reflected light curves.
Compared to either numerical evaluation method, the starry reflected light solutions are 4–5 orders of magnitude faster and about 10 orders of magnitude more precise. While different grid sizes and different error settings for the numerical integration change the balance slightly between these numbers, the starry solution is always many orders of magnitude faster and more precise than either method. In particular, because of the complicated integration boundaries (see, for example, Figure 15), two-dimensional Gaussian quadrature struggles to reach adequate accuracy in a reasonable amount of time, while integration on a grid fails to capture the curvature of the integration boundaries. Moreover, neither method yields the gradient of the solution with respect to the input parameters, which can be extremely useful for optimization and inference problems (see Section 3.3) below.
Note, importantly, that as we mentioned above, the reported error of the starry solution is only the numerical error of the algorithm: it does not capture any systematic error due to, say, an error in the derivation of the method. To this end, we rely on the Jupyter notebooks containing derivations and validations of the main equations in the Appendix, whose links (as footnote) appear below to the equation.We have also developed an extensive suite of unit tests comparing the starry solution to the numerical solution over a large grid of input parameter values, and verified that the solutions agree to within the precision of the numerical method. That said, there are specific cases in which the algorithm presented in the Appendix suffers from numerical instabilities. These generally happen due to division by small numbers or catastrophic cancellation in the recursion, and often occur near configurations involving grazing occultations, near-total occultations, terminator semiminor axis b ≈ 0 or b ≈ 1, etc. To mitigate these, we introduce various tolerance parameters in the code to either nudge the inputs away from these singular points or switch to a different evaluation method. These parameters are outlined in Table 5 at the end. In the vicinity of the cases described in that table, the precision of the starry algorithm will be reduced to (roughly) the value of the tolerance parameter, which in extremely rare cases can be as high as 10−5. 14
Table 5. Tolerance Parameters Used in the Code
Symbol | Description | Value |
---|---|---|
![]() | If ![]() ![]() ![]() | 10−13 |
![]() | If ![]() ![]() | 10−12 |
![]() | If k2 is within this value of unity, nudge it away | 10−12 |
![]() | If ∣bo − ro∣ is less than this value, nudge bo away from ro | 10−8 |
![]() | If bo is within this amount of ro − 1, nudge it away | 10−8 |
![]() | If bo is within this amount of ro + 1, nudge it away | 10−8 |
![]() | If ![]() | 10−8 |
![]() | If b is within this value of zero, nudge it away | 10−8 |
![]() | If bo is within this amount of 1 − ro, nudge it away | 10−7 |
![]() | If two quartic roots are this close, eliminate one of them | 10−7 |
![]() | If b is within this value of unity, set it to unity | 10−6 |
![]() | If ![]() | 10−5 |
Download table as: ASCIITypeset image
3.3. Implementation and Usage
The algorithm presented in this paper has been implemented in the Python package starry, which can be installed from GitHub or via the Python package manager pip. The algorithm is coded in a mixture of C++ with forward automatic differentiation using the Eigen library (Guennebaud & Jacob 2010) and Python with backward differentiation using just-in-time compiled theano operations (Theano Development Team 2016). The user interface, however, is purely in Python. The theano backend facilitates integration with the exoplanet modeling package (Foreman-Mackey et al. 2020) and in particular with pymc3 (Salvatier et al. 2016) for inference with gradient-based Markov Chain Monte Carlo (MCMC) schemes such as Hamiltonian Monte Carlo (HMC; Duane et al. 1987) and No-U-Turn Sampling (NUTS; Hoffman & Gelman 2011). Complete documentation and an extensive library of tutorials is available online. The links next to each of the figures (inside parenthesis) point to the Python scripts used to generate them and may also help in learning how to use starry. 15 , 16
4. Extensions
The algorithm discussed above and derived in the Appendix computes light curves in the limit that (1) the body is illuminated by a point source and (2) the body is an ideal Lambertian scatterer. Both of these assumptions can be relaxed within starry, and below we discuss modifications to the code to allow for this.
4.1. Extended Illumination Source
In the limit that the angular size of the star as seen from the planet is small, the illumination profile on the surface of the planet will decrease as the cosine of the angle between the surface normal and the star, reaching zero at the day/night terminator, an angle
![Equation (4)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn4.gif)
where a the semimajor axis of the orbit (where we implictly assume the eccentricity is zero). For planets like the Earth, this quantity is only about 026, resulting in a negligible effect on the planet's light curve. However, for very close-in planets, the effect can be significant (Knuth et al. 2017; Carter 2019). For instance, the hot Jupiter Kelt-9b has Rp/R⋆ = 0.083 and a/R⋆ = 3.16 planet (Wong et al. 2019). Assuming zero eccentricity and ignoring any stellar oblateness (see Ahlers et al. 2020), the day/night terminator extends
Figure 6. Normalized surface intensity on Kelt-9b viewed in a Mollweide projection assuming a point illumination source (left) and accounting for the finite extent of the star (right). The day/night terminator extends about 17° past where it is in the point-source case. The substellar intensity is higher in the extended source case, because the subplanet point on the star is closer to the planet than in the case where the star is a point source located at the center of the star. 13
Download figure:
Standard image High-resolution imageThe illumination profile in the extended source case may be computed as the two-dimensional integral of the point-source illumination profile over the visible portion of the stellar disk. While this integral may in theory be computed analytically (see, for instance, Kopal 1954, who derived series solutions to this problem), the resulting profile on the planet surface will not in general be exactly expressible in terms of spherical harmonics, a necessary condition for the starry algorithm. For simplicity, we therefore compute the illumination profile for extended sources by averaging the contribution of source_npts point sources uniformly distributed across the projected disk corresponding to the portion of the stellar surface visible from the planet, where source_npts is a user-supplied value. In the limit Rp ≪ R⋆, this is a spherical cap centered at the subplanet point with radius . In Figure 6 we set source_npts = 300, but in practice we find that ∼30 points are sufficient for even the most extreme cases such as Kelt-9b. Note, importantly, that while this method allows one to account for the effect of stellar limb darkening on the illumination profile of the planet, this has not been implemented in starry.
Figure 7 shows the practical implications of the finite stellar size for the phase curve of Kelt-9b. The left panel shows the reflected light phase curve of the planet in parts per million, assuming a spherical albedo of 0.2, for the point-source approximation (blue) and including the effect of the extended source with source_npts = 300 (purple). The increased illumination at the substellar point results in a ∼30 ppm increase in the value of the phase curve close to full phase (±1/2). Close to a phase of zero, the extended source results in decreased flux, since the portion of the star illuminating the planet (the region close to the limb) is slightly farther away, by a factor of . This results in a steeper phase curve, which can be seen in the right panel, where the light curves have been normalized to their maximum value.
Figure 7. Reflected light phase curve model for Kelt-9b, assuming a spherical albedo A = 0.2. The transit (phase zero) is not included. Blue is the starry model assuming a point-source illumination; purple accounts for the finite size of the star. The left panel shows the two models in parts per million of the stellar flux; the right panel shows the models normalized so their maximum value is unity. The primary effect of the extended source size is to increase the planet flux near full phase, since the stellar surface is on average slightly closer to the planet, and to change the overall curvature of the phase curve. The shape of secondary eclipse, however, is relatively insensitive to the point-source approximation (see Figure 8). 18
Download figure:
Standard image High-resolution imageWhile modeling the extended size of the star is essential to getting the shape of the phase curve correct, the same is not true for secondary eclipse. Figure 8 shows the normalized secondary eclipse model for Kelt-9b under the point-source approximation (blue) and the extended source model (purple). Neglecting the fact that the depth of secondary eclipse is significantly different between the two models (see the left panel of Figure 7), the difference in shape between the two curves is almost negligible. For reference, the figure shows two additional models one might consider using to fit a secondary eclipse light curve: a uniform (unilluminated) disk (solid orange) and a disk whose intensity falls as
Figure 8. Normalized reflected light secondary eclipse model for Kelt-9b, assuming a spherical albedo A = 0.2. Blue is the starry model assuming a point source illumination; purple accounts for the finite size of the star. The orange curves show approximate models computed using the Mandel & Agol (2002) model: a sphere of uniform intensity (solid orange) and a sphere whose intensity falls as the cosine of the viewing angle from the center of the planet disk (dashed orange). Because Kelt-9b is so close to its host star, the illumination phase changes significantly from ingress to egress, and neither approximation accurately captures the behavior of the light curve. On the other hand, the point-source approximation agrees well with the extended source solution, modulo the difference in the depth (see Figure 7). 19
Download figure:
Standard image High-resolution image4.2. Non-Lambertian Scatterers
The second assumption we now seek to relax is that of Lambertian scattering. A perfect Lambert sphere reflects light isotropically, so the measured intensity at a point on the surface is strictly proportional to the product of the cosine of the angle of incidence and the cosine of the viewing angle. While this is convenient from a modeling standpoint, it is hardly ever true in practice. For planets and moons in particular, there is often a strong phase dependence in the scattering. Rayleigh scattering in planetary atmospheres is preferentially in the forward/backward direction, while clouds and oceans can contribute strong specular reflection. Moreover, rough surfaces can have complex scattering behavior due to changes in the orientation of the surface normal on small scales and effects such as multiple reflections and self-shading.
In principle, any of these processes can be accounted for in the starry algorithm by modifying the linear operator I (Equation (A17)), which in the Lambertian case simply weights the spherical harmonic expansion of the albedo by the cosine-like illumination profile to obtain the observed intensity at a point on the surface (see Equations (A18) and (A20)). For non-Lambertian scattering, this matrix must also account for the phase dependence of the reflection: in particular, it will depend not only on the angle between the surface normal and the incident radiation, ϑi, but also on the angle between the surface normal and the reflected radiation (i.e., the direction toward the observer), ϑr. It may also depend on the azimuthal angles of the incident and reflected rays, ϕi and ϕr, respectively. These four angles are shown in Figure 9, showing the incoming radiation (source) vector s and the outgoing radiation (viewer) vector v in a frame in which the z-axis points along the surface normal.
Figure 9. Scattering geometry for non-Lambertian reflection. Based on Figure 3 of Oren & Nayar (1994). The incident radiation is labeled
s
and the outgoing radiation is labeled
v
. The shaded region is a small patch of surface, oriented so that the normal vector points along . The four angles relevant to the computation of the emergent intensity are also indicated.
20
Download figure:
Standard image High-resolution imageTreatment of a generalized, flexible scattering model is beyond the scope of this paper; see Heng et al. (2021) for recent results on this front. However, as an example of how a scattering model may be incorporated into the starry algorithm, we consider in detail the case of the rough surface scattering model of Oren & Nayar (1994), commonly used in computer graphics applications and solar system body modeling (e.g., Morgado et al. 2019). In this model, the surface is treated as a collection of a large number of Lambertian facets oriented at random angles relative to the average surface normal, whose net contribution to the total intensity can depart significantly from the Lambertian case. While the general model accounts for interreflections, shadowing, and an arbitrary distribution of facet orientations, in its simplest form the intensity observed at a point (x, y) on the (projected) surface of a body of unit spherical albedo may be approximated as (see Equation (30) in Oren & Nayar 1994)
![Equation (5)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn5.gif)
where
![Equation (6)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn6.gif)
and the angles ϑi, ϑr, ϕi, and ϕr are all implicit functions of x, y, and the illumination source position. The term is the Lambertian illumination profile, given by Equation (2). At a given point on the surface, and for a given source position, the intensity
is therefore a function of a single parameter,
In order to incorporate this scattering model into starry, we must weight the spherical harmonic expansion of the albedo,
y
, by Equation (5) instead of Equation (2). Weighting by Equation (2) is (relatively) straightforward, since is a piecewise function of the l = 1 spherical harmonics (see Appendix A.2). The function we must integrate when computing fluxes is therefore exactly expressible in terms of spherical harmonics and thus starry-integrable. However, Equation (5) cannot be expressed exactly in terms of spherical harmonics, so we must instead approximate it. To this end, we evaluate Equation (5) on a grid of x and y spanning the unit disk, as well as the illumination phase, parametrized by b, the semiminor axis of the elliptical segment defining the day/night terminator (see Appendix A.2). We then fit to this a polynomial of total degree 5 in x, y, and
and degree 5 in b and degree 4 in
. Then, for a given value of b and bc, we construct the operator
I
out of the polynomial coefficients in the same way as we constructed the Lambertian operator in Appendix A.2. More details about our approximation can be found in the Jupyter notebook accompanying Equation (5).
Figure 10 shows spheres of unit albedo with different surface roughness coefficients
Figure 10. Intensity measured from a sphere at varying illumination phase under the Oren & Nayar (1994) scattering model. The top panel shows spheres rendered with different surface roughness coefficients ranging from
Download figure:
Standard image High-resolution imageOur implementation of the scattering model extends just as easily to occultations and to cases where the surface does not have uniform albedo. Figure 11 shows a visible-light observation of the occultation of Io by Europa on 2009 December 4 taken by the PHEMU09 campaign (Arlot et al. 2014). The trajectory of Europa relative to Io, computed from the JPL Horizons database using ephemerides from Folkner et al. (2014) is shown at the top. We fit to this data a starry occultation model with the scattering law discussed above. For simplicity, we set the surface map equal too an l = 15 spherical harmonic expansion of the Galileo global color mosaic of Io (Becker & Geissler 2005) and use ephemerides from the JPL Horizons database, allowing for a small static x–y offset between Europa and Io as in Arlot et al. (2014) due to the uncertainty in the database. In total, we fit for five parameters: the two Cartesian offset terms, the flux contribution from Europa, the average albedo of Io, and the average surface roughness of Io,
Figure 11. Visible-light occultation of Io by Europa observed on 2009 December 4 by the PHEMU09 campaign (Arlot et al. 2014). The blue line is the starry model, based of an l = 15 spherical harmonic fit to the Galileo global color mosaic of Io (Becker & Geissler 2005), an l = 5 expansion of the Oren & Nayar (1994) scattering law, and orbital information from the JPL Horizons database. See text for details. 24
Download figure:
Standard image High-resolution image5. Discussion
5.1. Linearity
In the Appendix we derive closed-form expressions for the flux as a function of the spherical harmonic expansion of the albedo, y : Equation (A18) for occultations and Equation (A7) for phase curves. Inspection of those equations reveals that they are both linear in y : the flux is simply the dot product of several matrices and the vector of spherical harmonic coefficients. We may therefore write both expressions in the form
![Equation (7)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn7.gif)
where f is a scalar representing the model for the flux at a particular point in time and
x
⊤ is a row vector equal to (in the case of an occultation) or
(in the case of a phase curve; see Appendix A.2 for details on what each of the terms represent). Now, if we let
f
be the vector of values of f for each point in the timeseries and construct the matrix
X
out of the stacked row vectors
x
⊤, we may write our model for the entire timeseries as the dot product
![Equation (8)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn8.gif)
The linearity of the starry model is useful in several ways. For one, it can be exploited to cheaply compute the same model for different input vectors y . This is useful for multiband light curves, where the same matrix X dots into several vectors y , one for each observation band, or for time-dependent models, in which the model for the flux might be the Taylor series
![Equation (9)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn9.gif)
where
y
(t) is a time-dependent representation of the surface map, which we expand about t = t0 (Luger et al. 2019b); see also Kawahara & Masuda (2020) for an alternative linear model for time-dependent maps. But perhaps even more importantly, linear models are particularly useful for inference, since under Gaussian noise properties the posterior is analytic. In particular, if our light-curve measurements are given by the data vector
d
whose noise model is specified by the covariance matrix
![Equation (10)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn10.gif)
where C is the posterior covariance, given by
![Equation (11)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn11.gif)
Because of this linearity, and the analyticity of the starry model, inference on data sets comprising thousands of points and spherical harmonic degree l ≤ 20 takes a fraction of a second on a typical computer. Full posterior inference with starry can thus be faster than the numerical evaluation of a single forward model (see Figure 5).
It is important to note, however, that the starry model is linear only in the map coefficients y . In any real application, there will be uncertainty in the inputs of X , such as the orbital parameters, the occultor parameters, the scattering law, etc. These parameters must typically be sampled over, since the model is a nonlinear function of them. However, the analyticity—and in particular, the differentiability—of the starry model makes sampling via gradient-based MCMC easy. Moreover, the linearity of the model with respect to y allows one to efficiently marginalize over those parameters when sampling over the nonlinear parameters. Tutorials on how to do this can be found in the starry documentation. 27
5.2. The Information Content of Reflected Light Curves
One of the fundamental difficulties with the mapping problem is that the process of inferring a two-dimensional map from a light curve is almost always ill-posed. This has been known since at least the turn of the last century, when Russell (1906) discussed how, because of symmetry, all odd harmonics above l = 1 are in the null space for thermal phase curves of spherical bodies, meaning those terms do not contribute at all to the disk-integrated flux. As discussed in Luger et al. (2019a, 2021c), the problem is even more ill-posed than that: for any even degree l > 0, there are 2l + 1 modes on the surface (one for each value of m), but only 2 Fourier modes in the light curve (i.e., a sine and a cosine). Thus, for every mode that can be constrained from the light curve, there are far more modes that cannot, a problem that only gets worse as l increases.
The left panel of Figure 12 shows this issue in practice. We generate a mock thermal light curve (center left) from an l = 20 expansion of the Earth (top) with 1000 points over the course of one year with an exquisite photometric precision of 1 ppm. The Earth is given an obliquity of 235 on the plane of the sky but is viewed along the ecliptic, rotating edge-on with an inclination of 90°. The data are shown in black, and in blue is the posterior mean model (Equation (10)), in which we assume a prior variance of 10−3 for all spherical harmonic coefficients (and zero covariance). The corresponding surface map is shown at the bottom. As expected, this looks nothing like the true map of the Earth. For a body seen rotating edge-on, the information content of the light curve is strictly longitudinal. While the inferred map captures the average brightness of the Earth at each longitude fairly well, it is missing all latitudinal information. This is independent of the signal-to-noise or the cadence of the data set—it is a fundamental limitation of phase curves in thermal light.
28
Figure 12. Example of an inference problem for a thermal phase curve (center left) and a reflected phase curve (center right). In both cases, a mock phase curve is generated from an l = 20 expansion of the cloudless Earth (top) with 1000 evenly spaced points over the course of one year and an extremely small photometric uncertainty of 1 ppm. The observer sits along the ecliptic and the obliquity of the Earth is set to 235. Data is shown as the black points, and the maximum likelihood starry model is shown in blue. While both models fit the data equally well, the same is not true of the inferred surface maps (bottom row): only in the reflected case are the continental outlines recovered. The thermal phase curve problem is extremely ill-conditioned, but the analogous problem in reflected light is much better posed.
26
Download figure:
Standard image High-resolution imageThe same is not true for the case of reflected light phase curves. In the right panel of Figure 12 we show the same mock light curve and perform the same inference step, but this time for observations in reflected light; the light curve is similar to that in Figure 1. Because of the presence of a day-night terminator beyond which features on the surface contribute zero flux, none of the symmetry arguments above apply. In particular, the facts that (1) the Earth is seen at different phases and (2) the terminator is inclined relative to the rotational axis mean that the region of the surface contributing to the phase curve is always changing, resulting in a complex light curve that encodes significantly more information than its thermal counterpart. The result is an inferred map that is largely faithful to the true map (bottom). While the continental outlines are somewhat fuzzy and some artifacts are present at high latitudes, it is clear that the inference problem is much less ill-posed in this case.
Unlike thermal light curves, reflected light phase curves have the potential to robustly constrain two-dimensional maps of exoplanets. This result is not new, and has been discussed at length in the literature (e.g., Fujii & Kawahara 2012; Berdyugina & Kuhn 2017; Luger et al. 2019b; Aizawa et al. 2020; Kawahara 2020). In particular, Kawahara & Fujii (2010) demonstrated the uniqueness of their inferred map from mock reflected light curves of the Earth. As we argued above, for specific geometrical configurations, the mapping problem in reflected light can actually be well-posed, meaning it has no null space up to a certain degree l. Reflected light phase curves of terrestrial planets with James Webb Space Telescope (JWST) and future direct imaging missions thus have the potential to reveal detailed information about their surfaces.
Nevertheless, at finite signal to noise and for limited observation duration or cadence, there may still be significant degeneracies in the reflected phase curve problem. In Luger et al. (2019a), we argued that occultations can be used to break many of these degeneracies, since they directly probe the surface at scales inaccessible to phase curves. The same is true in reflected light. Figure 13 demonstrates this for mock observations of the same Earth-like planet as in Figure 12, but this time taken over ten days near quadrature, when the disk of the planet is seen at half phase. The top rows show the thermal and reflected phase curves and the inferred maps, which look similar to those in the previous figure. At the bottom we show the same light curve, but this time including seven equatorial occultations by a moon one-quarter the size of the planet. The moon's period and occultation duration are unrealistically short, but the inferred maps at the bottom show the exquisite constraining power of these occultations. In the thermal case, the presence of the moon allows us to infer the two-dimensional distribution of surface features along its equatorial occultation path; however, there is little information in the light curve about features at higher latitudes, and the starry model overfits. Conversely, in the reflected light case, there is information about all latitudes and longitudes, and the inferred map is largely faithful to the true map.
Figure 13. Similar to Figure 12, but for 500 high signal to noise observations taken over ten days near quadrature. At the top we show the thermal and reflected phase curves and the corresponding inferred maps. At the bottom, we show the same light curves but this time including seven equatorial occultations by a (very) short period moon one-quarter the size of the planet. The presence of the occultations significantly increases the fidelity of the recovered maps near the equator (the path of the occultor). While in the thermal case there is significant overfitting at high latitudes, in the reflected case the map accurately recovers features across the entire planet. 29
Download figure:
Standard image High-resolution imageIt should be kept in mind that the kinds of observations mentioned above will be very challenging for exoplanets, even with next-generation observatories such as HabEx or LUVOIR. Observations of occultations of planets by moons, in particular, are likely several decades away at least. There is some hope that planet–planet occultations may be detectable in the near future for specific planetary systems such as TRAPPIST-1 (Luger et al. 2019b), but at extremely limited signal-to-noise. Even phase curve observations will be difficult because of their limited signal-to-noise, and in practice many degeneracies will likely remain. Several studies have found that color information can greatly help in the interpretation of reflected phase curves (Cowan et al. 2009; Kawahara & Fujii 2011; Lustig-Yaeger et al. 2018; Kawahara 2020), while others have explored in detail the best kinds of priors to assume (e.g., Aizawa et al. 2020; Asensio Ramos & Pallé 2021). Future maps of exoplanets—particularly terrestrial ones in the habitable zone—will require every tool in the toolbox.
5.3. Limitations
There are a few limitations to the starry model that are important to bear in mind. The primary limitation concerns the maximum spherical harmonic degree of the model. While the expressions derived here are valid at arbitrary degree, we find that their numerical stability quickly degrades above l ∼ 20–25 for occultations and l ∼ 35–40 for phase curves. The same is true for the model in thermal light (Luger et al. 2019a), and is due to (1) the large condition number of the change-of-basis matrix from spherical harmonics to polynomials and (2) instabilities in the many recursion relations used to evaluate the solution vectors and
. In principle, one could improve the numerical stability by evaluating all expressions at higher floating-point precision, but in practice the computational cost of this becomes quickly prohibitive. However, it is important to keep in mind that our current best image of an exoplanet is the l = 1 map of HD189733b (Knutson et al. 2007; de Wit et al. 2012; Majeau et al. 2012). Next-generation facilities such as JWST may allow us to probe surface modes as small as l = 5 for some planets (R. Luger et al. 2022, in preparation), but even with future telescopes such as LUVOIR, it is extremely unlikely we will do better than l = 20. If cases arise requiring a resolution smaller than about 180°/20 = 9° on the surface, the starry algorithm will have to be revisited.
The second limitation concerns the flexibility of the starry model. While we presented ways to capture non-Lambertian scattering in starry (Section 4.2), there are certain aspects of light curves in reflected light that cannot be captured by the model. One example of this is shadowing. Craters on the moon or volcanoes on Io can cast large shadows visible from space, particularly if viewed near crescent phase. Unfortunately, there is no way to model this within the starry framework. Another example is multiple scattering, as in optically thick atmospheres, for which a proper radiative transfer model must be used. There is also the case of specular reflection, or "glint," which is a pronounced signal for the Earth due its oceans (Robinson et al. 2014) and on Titan due to its hydrocarbon lakes (Barnes et al. 2011). In principle, glint could be modeled in the same way as non-Lambertian scattering, by constructing the linear operator
I
in such a way as to downweight portions of the projected disk where ϑi ≠ ϑr. In practice, however, if the size of the glint spot is small (which is typically the case), an expansion at extremely high l (l ∼ 360 in the case of the Earth) would be required, which would not work for the reasons above. Instead, it may be possible to combine the starry algorithm with the formalism of Haggard & Cowan (2018), who derived analytic expressions for phase curves of delta function maps (
We would also like to emphasize that while spherical harmonics are a convenient basis for the purpose of computing light curves, they have a significant drawback when it comes to modeling real planetary surfaces: it can be difficult to strictly enforce physical values of the albedo everywhere on the surface map when doing inference. That is because there is no analytic way to determine whether a spherical harmonic representation is positive-valued (or restricted to a given range) everywhere on the sphere. Instead, this must be checked numerically, by evaluating the function on a discrete grid. This makes it somewhat cumbersome to implement positivity as a prior when doing inference; in particular, this prior cannot be expressed as a Gaussian, so the analytic expression for the posterior discussed in Section 5.1 will generally have nonzero support for negative albedo values. This is particularly problematic when the data is not very constraining and the posterior is prior-dominated, as positivity can be an extremely informative prior (e.g., Fienup 1978). We therefore recommend that in such cases users of the starry algorithm use HMC/MCMC to do inference, either (1) sampling over the spherical harmonic coefficients y and imposing a uniform prior in the range [0, 1] on the albedo values a evaluated on a discrete grid on the sphere or (2) sampling over the albedo values a with the same uniform prior, but using y to compute the actual light curve model (Bartolić et al. 2022). In both cases, there exists a linear operator that transforms between y and a :
![Equation (12)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn12.gif)
and
![Equation (13)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn13.gif)
where
![Equation (14)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn14.gif)
is the pseudoinverse of
P
, with (small) regularization parameter
Finally, while the algorithm presented here can be used to model planet–planet and planet–moon occultations in reflected light, we only account for the physical blocking of light rays from the planet by the occultor; we do not account for the attenuation of the reflected light due to the shadow of the occultor on the planet. This can be an important effect at certain orbital phases (e.g., Cabrera & Schneider 2007). However, since the shadow of the occultor is not necessarily circular, it is significantly harder to model in closed form. A proper treatment of this and other effects, such as occultations and shadows due to rings (e.g., Arnold & Schneider 2004), is deferred to future work.
6. Conclusions
We have presented an efficient, numerically stable, closed-form algorithm for computing phase curves and occultation light curves of spherical bodies in reflected (scattered) light. This algorithm is an extension of the algorithm presented in Luger et al. (2019a) for light curves in thermal light and is generally applicable to exoplanetary phase curves, secondary eclipses, and occultations by moons and other planets, as well as to light curves of planets and moons in our solar system. We derive the solution for the case of a Lambert sphere illuminated by a point source, but extend it to the case of an extended illumination source and non-Lambertian scattering parametrized by a surface roughness coefficient. The algorithm is ∼4–5 orders of magnitude faster and ∼10 orders of magnitude more precise than other numerical approaches for computing these light curves. The algorithm is also differentiable in all of the model parameters, enabling inference with efficient gradient-based samplers such as HMC, and linear in the spherical harmonic coefficients describing the surface albedo, enabling fast, closed-form solutions for the albedo posterior distribution under a Gaussian noise model. We implement the algorithm within the starry software, an open-source Python package for inferring surface maps of unresolved celestial bodies. The algorithm is coded in a combination of C++ and Python compiled using the theano package (Theano Development Team 2016). The interface was designed specifically for compatibility with the exoplanet modeling package (Foreman-Mackey et al. 2020) and the pymc3 inference suite (Salvatier et al. 2016).
Upcoming telescopes will enable measurements of exoplanet phase curves and secondary eclipses at unprecendented precision. While the JWST will be primarily sensitive to thermal emission from exoplanets (which can currently be modeled with starry), next-generation direct imaging facilities such as the LUVOIR will enable measurements in reflected light, in particular for terrestrial planets in the habitable zone. Because of the changing illumination pattern over the course of an orbit of the planet, phase curves and occultation light curves in reflected light contain vastly more information about the two-dimension albedo distribution of the body than their thermal counterparts. With careful modeling, light curves in reflected light are likely to give us the first images of potentially habitable exoplanets, enabling the detection of clouds, continents, oceans, and perhaps even life.
We would like to thank Nicolas Cowan, Christina Hedges, and the Astronomical Data Group at the Center for Computational Astrophysics for many thought-provoking discussions that helped shape this paper. R.L. is supported by a Flatiron Fellowship at the Flatiron Institute, a division of the Simons Foundation.
The software presented in this work is open source under the MIT License and is available at https://github.com/rodluger/starry, with documentation and tutorials hosted at https://starry.readthedocs.io. The code used to generate the figures in this paper is hosted at https://github.com/rodluger/starrynight.
Software: astroquery (Ginsburg et al. 2013, 2019), Eigen v3 (Guennebaud & Jacob 2010), exoplanet (Foreman-Mackey et al. 2020), pybind11 (Jakob et al. 2017), pymc3 (Salvatier et al. 2016), scipy (Jones et al. 2001), starry (Luger et al. 2018), theano (Theano Development Team 2016).
Appendix A: The Problem
This paper closely follows the notation and formalism introduced in Luger et al. (2019a). While we include all of the relevant equations and definitions below, the reader is encouraged to review Luger et al. (2019a) before proceeding. To improve the readability of this paper, Tables 1–4 at the end list the principal symbols and quantities used throughout the text, with links to the sections and equations in which they are defined. Because of the large number of symbols used in this paper, we adopt the following conventions: scalars are represented by regular lowercase or occasionally uppercase letters (i.e., x or X), vectors are represented by boldface lowercase letters (
x
), and matrices and other linear operators are represented by boldface capital letters (
X
). With a few exceptions, Greek letters are reserved for angular quantities and may be either scalars (). Primes are used to distinguish between frames of reference (x and
are used to denote the same quantity, but in frames
and
, respectively). Tildes are used to denote basis vectors (
). Finally, blackboard vectors (
) correspond to solutions to the various "primitive" integrals that arise in the occultation problem.
A.1. Review of the starry Algorithm in Emitted Light
Without loss of generality, assume the body whose flux we wish to compute has radius unity and sits at the origin of a right-handed Cartesian coordinate system in some frame . In this frame, the surface (emitted) intensity field of the body is described by a vector
y
of coefficients in the spherical harmonic basis
:
![Equation (A1)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn15.gif)
where the component at index n is the spherical harmonic Yl,m (x, y) with
![Equation (A2)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn16.gif)
The spherical harmonics are traditionally expressed in spherical coordinates, but for our purposes it is more convenient to express them in Cartesian coordinates on the sky-projected disk, in which case they are simply polynomials in x, y, and z (see Appendix A in Luger et al. 2019a).
An observer views the body from a large distance in the sky frame , in which the x-axis points to the right, the y-axis points up, and the z-axis points out of the sky toward the observer. Following Luger et al. (2019a), if an occultor of radius ro is located at sky position (xo, yo), we compute the visible thermal flux fT from
![Equation (A3)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn17.gif)
where, from right to left,
R
=
R
(I, to the sky frame
given the body's inclination I, obliquity
rotates the body on the plane of the sky into the integration frame
, in which the occultor lies along the
-axis,
A
(Equation (B13) in Luger et al. 2019a) is the change-of-basis matrix from
to the Green's basis
in which the integrals are computed, whose component at index n is
![Equation (A4)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn18.gif)
with
![Equation (A5)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn19.gif)
and
![Equation (A6)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn20.gif)
and
s
⊤ =
s
⊤(bo, ro) is the vector of solutions to the integral over the projected visible disk of the body for each term in (Equation (26) in Luger et al. 2019a), with
.
If instead no occultor is present, we compute the total visible thermal flux from this body as
![Equation (A7)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn21.gif)
where, as before,
R
=
R
(I, to the sky frame
,
R
'' rotates the body on the plane of the sky into the integration frame
,
A
1
(Equation (B11) in Luger et al. 2019a) is the change-of-basis matrix from the spherical harmonic basis
to the polynomial basis
in which the integrals are computed, whose component at index n is
![Equation (A8)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn22.gif)
and
r
⊤ is the vector of solutions to the integral over the projected visible disk of the body for each term in (Equation (19) in Luger et al. 2019a).
32
A.2. Adapting the Algorithm to the Reflected Light Case
In order to compute light curves in reflected light, we must make two modifications to the starry algorithm. First, the expressions above assume that the coefficient vector y describes the emissivity of the body, which (in the absence of limb darkening) is assumed to be Lambertian, i.e., all points on the surface emit equally in all directions. Here, we wish to derive the solution for the flux in the case of Lambertian reflectance, in which case the vector y is taken to describe the spherical albedo of the surface, A.
Second, we must explicitly model the illumination of the body. We assume the body is illuminated by a point-like source whose flux measured by the observer is unity. In this case, the observed intensity at any point on the surface is proportional to the cosine of the angle ϑi between the incident light and the surface normal. Points for which ϑi ≥
![Equation (A9)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn23.gif)
where is the distance to the source, and the angle by which its semimajor axis is rotated away from the + x-axis,
![Equation (A10)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn24.gif)
where is the quadrant-aware arctangent of a/b. Given this formulation, and assuming that rs ≫ 1, it is straightforward to show that the illumination
at a point (x, y) on the projected disk of the body is given by the function
![Equation (A11)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn25.gif)
where
![Equation (A12)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn26.gif)
with and
. The illumination
is a unitless quantity, normalized such that the integral of
over the unit disk is equal to the flux measured by the observer as a fraction of the flux of the illumination source., In particular, if we place the illumination source along the + z-axis at (0, 0, 1), the body is seen at full phase, so b = −1, bc = 0, and
![Equation (A13)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn27.gif)
Multiplying this by the albedo and integrating over the unit disk, we obtain the reflected flux measured by the observer in units of the flux of the illumination source:
![Equation (A14)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn28.gif)
which is precisely the geometric albedo of a Lambert sphere of spherical albedo A (see, e.g., Seager 2010). 33 , 34 , 35 , 36 , 37 , 38
In principle, our task is now straightforward: weight each of the terms in the Green's basis (Equation (A4)) and integrate them over the visible portion of the body's disk to obtain the reflected light solution vector, . Unfortunately, the piecewise nature of Equation (A11) makes direct evaluation of these integrals extremely difficult in practice. We find that it is more tractable to weight our basis terms by the function I (Equation (A12)) and to modify the limits of integration to exclude the nightside of the body, where I is (unphysically) negative. In particular, since I is just a polynomial in x, y, and z(x, y), we can express it as a vector
i
(b,
. Recalling the structure of the basis (Equation (A8)), we may write
![Equation (A15)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn29.gif)
This fact allows us to construct a linear operator
I
to weight a map vector in the polynomial basis by the illumination profile. If we think about how each of the terms in transforms under
I
,
![Equation (A16)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn30.gif)
we can compose I out of these column vectors:
![Equation (A17)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn31.gif)
where the dimensions of the matrix are , where l is the spherical harmonic degree of the map (this operator raises the degree of the map by one). Note, again, that this weighting is valid only on the dayside hemisphere (see Equation (A11)), as the operator
I
weights points on the nightside by a negative amount, which is clearly unphysical. As we will see momentarily, we account for this by excluding the nightside from the integration region in our flux integrals.
40
,
41
We may now re-write Equations (A3) and (A7) to account for this illumination transformation. The flux during an occultation is now given by
![Equation (A18)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn32.gif)
where
![Equation (A19)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn33.gif)
is the angle of the terminator in the frame . Note that we made use of the fact that
A
=
A
2
A
1
(Equation (14) in Luger et al. 2019a), where
A
1
transforms from the spherical harmonic basis
to the polynomial basis
, and
A
2
transforms from
to the Green's basis
.
Similarly, the flux when there is no occultation is now given by
![Equation (A20)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn34.gif)
where
![Equation (A21)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn35.gif)
is the angle of the terminator in the frame , by construction. The transformation
R
'' =
R
''(xs, ys) rotates the body through an angle
so the semimajor axis of the terminator is aligned with the x''-axis; as will become clear in Appendix B below, this greatly simplifies the integration step.
Note that in both equations we replaced the integral vectors
r
⊤ and
s
⊤(bo, ro) with the vectors and
, respectively. As we mentioned above, we must modify the integration limits to exclude the nightside, where the weighting by
I
is unphysical. The vectors
and
correspond to these modified integrals, which we devote the rest of this paper to computing.
Figure 14 summarizes the transformations involved in the two equations above. Starting on the right with a map vector
y
in the spherical harmonic basis , defined in some observer-independent frame
, we first rotate it via
R
to the sky frame
, in which the body is viewed by the observer. If an occultor is present (upper branch of the figure), we rotate the map from
via
to the frame
, in which the occultor lies along the
-axis. We then apply
A
1
to change basis to
and
I
to weight the map by the illumination. Finally, we change basis via
A
2
to the Green's basis, in which we compute and dot the integrals
. If, on the other hand, there is no occultation (lower branch of the figure), we instead rotate the map via
R
'' to the integration frame
, in which the terminator is parallel to the x''-axis. We then apply
A
1
to change basis to
, apply the illumination transform
I
, and finally dot in the solutions to the surface integrals
.
Figure 14. How starry computes the flux from a body in reflected light, tracking each of the linear transformations from the input map (far right) to the output (far left). The label below each map denotes the reference frame, while the label above each map denotes the basis in which the map is represented. Arrows indicate linear operations and are labeled accordingly. The upper branch corresponds to the occulted case (Equation (A18)), while the lower branch corresponds to the case where the body is unocculted (Equation (A20)). See text for details. 39
Download figure:
Standard image High-resolution imageAppendix B: The Solution: No Occultation
Before we tackle configurations involving occultations, we must address the simpler problem of computing the total visible flux from an unocculted body in reflected light (Equation (A20)). This problem was originally solved by Haggard & Cowan (2018) and subsequently by Luger et al. (2019b), but for completeness we present the detailed derivation in the starry formalism here.
As we discussed above, we perform the integration in a frame in which the semimajor axis of the terminator is aligned with the x''-axis, with the illumination source at y'' ≥ 0. The solution vector may then be computed from
![Equation (B1)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn36.gif)
which is identical to Equation (20) in Luger et al. (2019a) except for the lower integration limit of the inner integral. The lower limit is now the equation describing the terminator, which ensures we always exclude the nightside from the integration region. Equation (B1) may be solved analytically in terms of purely trigonometric and algebraic functions of b. The component of at index n is given by
![Equation (B2)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn37.gif)
where the components of ,
, and
are given by
![Equation (B3)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn38.gif)
where
![Equation (B4)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn39.gif)
we may compute all the required higher order terms from the recurrence relations
![Equation (B5)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn40.gif)
Once is known, the observed total flux in reflected light is computed from (see Equation (A20))
![Equation (B6)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn41.gif)
Finally, for future reference, we can also compute what we will call the complement of case 0:
![Equation (B7)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn42.gif)
This is the flux contribution from the unphysical nightside (if we were to integrate over it), where our polynomial illumination (Equation (A12)) function yields negative intensities. This quantity will be useful in negating the unphysical contribution in the integrals of the following section. 42 , 43 , 44 , 45
Appendix C: The Solution: Occultation
The integration in the unocculted case presented above is relatively straightforward, since the boundaries of integration are always the half-ellipse defining the terminator and the half-circle defining the upper limb of the body (Equation (B1)). When an occultor is present, however, the integration boundaries are far less trivial, since they may or may not include sections of the terminator, sections of the limb of the body, and sections of the limb of the occultor. The integration regions may also be disjoint; for instance, in case 7 of Figure 15, the portion of the dayside that is unocculted consists of two separate regions.
Whereas in Luger et al. (2019a) we compute the observed flux by always integrating over the unocculted portion of the disk, here we find that it is often easier and more computationally efficient to compute the integral of the intensity over the simplest region—meaning the one with the fewest boundaries—and combine it with the formalism from Appendix B to compute the visible flux. These integrals may be over the unocculted dayside, the occulted dayside, the unocculted nightside, or the occulted nightside; in the case of the latter three, a bit of algebra (Appendices C.3–C.4) is needed to relate these to the observed flux. Additionally, in some cases we can avoid computing new integrals entirely, as the solution can be obtained from a combination of the classical starry solution vector and the formalism from the unocculted case (Appendix B).
After exhaustive experimentation, we identified in total 14 families of geometrical configurations for the occultation problem, each defined by a distinct combination of integration boundaries; these are shown in Figures 15 and 17. Together, these cases encompass all possible occultation configurations, for any illumination angle, occultor size, and occultor position.
Figure 15. The 10 principal families of cases of occultations in reflected light. In these figures, the body with the solid outline is the one whose flux we are interested in, and the body with the dashed outline is the occultor. The nightside of the occulted body is colored black (dark gray if occulted), and the dayside is colored blue (bluish-gray if occulted). Case 0 is the unocculted case (Appendix B), while cases 1–5 involve configurations in which the limb of the occultor does not intersect with the terminator at any point, so the visible flux may be computed in terms of classical starry integrals. The remaining cases require integration along the orange boundary (the curves ,
, and
of Appendix C.3), which include the terminator. These involve the evaluation of incomplete elliptic integrals and are derived below. Note, finally, that there are additional subcases not shown above. For instance, cases 4, 5, 7, and 8 also encompass configurations in which the occultor does not intersect the limb of the occulted body. However, as this distinction does not affect the procedure for computing the flux in these cases (see text), we omit these subcases from the figure.
46
Download figure:
Standard image High-resolution imageBefore we discuss how to compute the occultation integrals, we must first develop a procedure to identify the relevant case given the occultor impact parameter and radius ro and the terminator semiminor axis b and angle
in the frame
. Then, once the case is determined, we must identify the relevant integration boundaries, which depend on the points of intersection between the limb of the body, the limb of the occultor, and the terminator. We do so in the following sections.
C.1. Case Determination
The key to identifying the case corresponding to a given configuration is to determine whether or not the limb of the occultor intersects the terminator of the body, and if so, the points of intersection. While we perform the integration in frame , finding the points of intersection with the terminator is easier if we temporarily switch to the frame
, in which the terminator is parallel to the x''-axis. In this frame, the equations defining the terminator and the limb of the occultor are, respectively,
![Equation (C1)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn43.gif)
where
![Equation (C2)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn44.gif)
are the coordinates of the occultor in ., We wish to find the vector of N points
for which
. Following Luger et al. (2017), we may express this condition as the quartic equation
![Equation (C3)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn45.gif)
with coefficients
![Equation (C4)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn46.gif)
Although closed-form solutions to quartic equations exist (see, e.g., Hughes & Chraibi 2011, who solve for the area of overlap between two ellipses analytically), they are prone to significant numerical instabilities. Instead, we solve for the roots of the quartic numerically by casting it as an eigenvalue problem (e.g., Edelman & Murakami 1995) and polish the results with a few iterations of Newton's method. We find that this is reasonably computationally efficient and yields roots with precision within a couple orders of magnitude of machine epsilon (see Section 3.2). 47 , 48 , 49 , 50
In general, the quartic defined by Equation (C3) has N = 4 (potentially degenerate) roots, some of which may be complex, and some of which correspond to intersections with the wrong half of the terminator ellipse (i.e., the section of the terminator on the far side of the body). After excluding the unphysical solutions, we are still left with anywhere between zero and four roots.
Cases with zero roots (case 1–case 5) are treated in Appendix C.2, while cases with one or two roots (case 6–case 10) are treated in Appendix C.3. Cases with three or four roots (case 11–case 14) are rarely encountered in practice, but are possible for some pathological configurations; these are treated in Appendix C.4.
C.2. Cases 1–5
Cases 1–5 (see Figure 15) involve configurations in which the occultor does not intersect with the terminator of the occulted body, and are therefore fairly straightforward to solve. In particular, we can use the original emitted light solution from Luger et al. (2019a), provided we weight the map by our polynomial illumination function:
![Equation (C5)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn47.gif)
where
s
⊤(bo, ro) is the emitted light solution vector (Equation (26) in Luger et al. 2019a). The flux fI is the flux one would measure from a body whose surface map is weighted by the illumination function during an occultation. Note that this is not necessarily the observed flux, since this may include the unphysical negative contribution from the nightside. We must compute the actual observed flux on a case-by-case basis.
Case 1 corresponds to any complete occultation of the body (bo ≤ ro − 1), so the solution for the flux is trivial:
![Equation (C6)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn48.gif)
Case 2 corresponds to occultations in which the occultor blocks all of the dayside of the body and some of the nightside. In this configuration, the unocculted part of the disk consists only of nightside, so the solution is again trivial:
![Equation (C7)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn49.gif)
Conversely, case 3 corresponds to occultations in which the occultor blocks all of the nightside of the body and some of the dayside. Since the visible portion of the disk consists only of dayside, we can simply use the weighted solution in emitted light (Equation (C5)):
![Equation (C8)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn50.gif)
Case 4 involves any occultation in which the occultor blocks only the nightside of the body (regardless of whether or not it intersects with the limb of the body). Since the nightside intensity is zero everywhere, this case is also trivial, as the flux is equal to the flux in the no occultation case (Equation (B6)):
![Equation (C9)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn51.gif)
Finally, case 5 involves any occultation in which the occultor blocks only the dayside of the body (regardless of whether or not it intersects with the limb). We first compute the illumination-weighted flux fI as above, then negate the unphysical nightside contribution using Equation (B7):
![Equation (C10)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn52.gif)
C.3. Cases 6–10
Cases 6–10 (see Figure 15) correspond to configurations in which the limb of the occultor intersects with the terminator at either one point (case 6) or two points (cases 7–10). Because of these intersections, we cannot simply reweight the emitted light solution, as the integration boundaries are now different. In general, we may compute the flux by integrating the components of the Green's basis over the region S bounded by three curves, which we denote
,
, and
. These are shown in orange in Figure 15 and presented in more detail in Figure 16. Curve
is a segment of the limb of the occultor, parametrized by the angle ϕ ∈ [ϕ0, ϕ1]; curve
is a segment of the terminator, parametrized by the angle
is a segment of the limb of the occulted body, parametrized by the angle
Figure 16. Geometry of an occultation in reflected light, corresponding to case 6 in Figure 15. The surface integral over the occulted portion of the dayside (bluish-gray region) is computed from the line integrals of the antiderivatives of the surface intensity map along the boundary curves ,
, and
. See text for details .
51
Download figure:
Standard image High-resolution imageLet be the integral of
over S:
![Equation (C11)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn53.gif)
We defer the solution to Equation (C11) to Appendix C.5 below, as it is quite lengthy. Given , the flux fS over the integration region S is computed from Equation (A18):
![Equation (C12)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn54.gif)
Note again that this is not necessarily the observed flux, which we must compute on a case-by-case basis below.
Case 6 corresponds to configurations in which the limb of the occultor intersects the terminator at a single point. The integration region (see Figures 15 and 16) is the occulted portion of the dayside, which is bounded by all three curves ,
, and
. The total flux may be computed by subtracting the occulted flux fS from the total dayside flux f0:
![Equation (C13)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn55.gif)
Cases 7–10 involve two points of intersection between the occultor limb and the terminator. Cases 7 and 8 correspond to occultors that block some of the nightside and some of the dayside, but neither of the extrema of the terminator ellipse. In case 7 a lens-shaped region is formed by the intersection of the occultor limb and the terminator on the nightside, while in case 8 this region is formed on the dayside. In case 7, we begin by computing the flux over the unocculted region, fI, which includes the spurious nightside contribution. We then remove this contribution by noting that it is equal to the total nightside contribution, , minus the occulted nightside flux, fS:
![Equation (C14)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn56.gif)
Case 8, on the other hand, is equivalent to case 6, since the integration region consists of occulted dayside:
![Equation (C15)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn57.gif)
Cases 9 and 10 correspond to occultors that also block some nightside and some dayside, along with both of the extrema of the ellipse; these are therefore exclusively for large occultors (ro > 1). Case 9 involves occultations in which only a small lens-shaped region of the nightside is visible. The total flux is the visible dayside plus unphysical nightside contribution, fI, minus the nightside contribution, which we compute from Equation (C12):
![Equation (C16)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn58.gif)
Conversely, case 10 involves occultations in which only a small lens-shaped region of the dayside is visible. In this case, we may compute the observed flux from Equation (C12) directly:
![Equation (C17)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn59.gif)
C.4. Cases 11–14
Cases 11–14 correspond to (rare) configurations involving three or four roots to Equation (C3) and are illustrated in Figure 17. All four involve integration over two disjoint regions (see the figure). Cases 11 and 12 involve three points of intersection between the terminator and the occultor limb. In case 11, the regions of integration S1 and S2 are the occulted portion of the dayside, so the solution is similar to that of cases 6 and 8:
![Equation (C18)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn60.gif)
where and
are computed from Equation (C12) for each of the integration regions. Conversely, in case 12 the two regions are the occulted portion of the nightside, so the solution is similar to that of case 7:
![Equation (C19)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn61.gif)
Finally, cases 13 and 14 involve four points of intersection between the terminator and the occultor limb. The regions of integration in case 13 are the visible portion of the nightside, so this case is equivalent to case 9:
![Equation (C20)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn62.gif)
Conversely, the regions of integration in case 14 are the visible portion of the dayside, so this case is equivalent to case 10:
![Equation (C21)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn63.gif)
Figure 17. Four additional families of occultations in reflected light, involving rare triple (cases 11 and 12, top) and quadruple (cases 13 and 14, bottom) intersections between the limb of the occultor and the terminator of the occulted body. All four cases involve integration over two disjoint regions (bounded by the orange curves in the figure). The insets next to each case show a zoomed-in version of four such regions. See text for more details. 52
Download figure:
Standard image High-resolution imageC.5. Computing the Integrals
In the previous sections, we discussed how to identify the case corresponding to a specific configuration of the occultor and the illumination source. We showed how in some cases (1–5; Appendix C.2) the total flux may be computed by exploiting the classical starry integrals (Equation (C5)). In all other cases (6–14; Appendices C.3 and C.4), however, the flux computation involves evaluation of Equation (C12), where the solution vector is the vector of integrals (in the frame
) of each of the terms in the Green's basis
over a region S of the projected disk of the occultor (Equation (C11)). As in Luger et al. (2019a), the approach to computing
is to use Green's theorem to transform the surface integrals into line integrals along the curves
,
, and
(see Figure 16). Specifically, we write
![Equation (C22)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn64.gif)
where is a vector of two-dimensional Cartesian vectors chosen such that its exterior derivative is
,
![Equation (C23)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn65.gif)
and
![Equation (C24)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn66.gif)
where
![Equation (C25)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn67.gif)
where the indices l, m,
We showed in the previous sections that there are at most three curves ,
, and
bounding a given closed surface of integration (see Figure 16). We may therefore express Equation (C22) as
![Equation (C26)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn68.gif)
where we define the primitive integrals
![Equation (C27)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn69.gif)
![Equation (C28)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn70.gif)
![Equation (C29)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn71.gif)
to be the line integrals of
G
along each of the curves ,
, and
, respectively,,
, where the coordinates along each curve are parametrized in terms of
![Equation (C30)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn72.gif)
and we define
![Equation (C31)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn73.gif)
to be the sum of definite integrals between pairs of limits
![Equation (C32)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn74.gif)
which sums the difference of successive pairs of values in a vector . This will come in handy when computing definite integrals. Specifically, if g is the antiderivative of some function f, we may use the fundamental theorem of calculus to compute the integral of f over the interval(s) given by the vector of limit pairs
![Equation (C33)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn75.gif)
where g is the vector given by
![Equation (C34)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn76.gif)
Note that most of the cases (1–10) involve integration over a single closed region, so Equations (C31) and (C32) reduce to
![Equation (C35)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn77.gif)
and
![Equation (C36)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn78.gif)
For cases 11–14, we must integrate over two disjoint regions, so we sum over two pairs of limits. In the next three sections, we derive the solutions to each of the primitive integrals ,
, and
.
54
,
55
,
56
,
57
,
58
,
59
C.6. The Integral Along the Occultor Limb,
In this section we present a solution to Equation (C27). The first order of business is to derive expressions for the integration limits ϕ . Depending on the integration case, these limits will correspond to the point of intersection between the limb of the occultor and the limb of the occulted body and/or the point of intersection between the limb of the occultor and the terminator of the occulted body. The former is given by (see Equation (24) in Luger et al. 2019a)
![Equation (C37)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn79.gif)
where the sign is chosen such that the point is on the dayside of the occulted body, and the latter (of which there may be multiple) is given by
![Equation (C38)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn80.gif)
where
x
'' are the roots of the quartic (Equation (C3)). These angles are then wrapped to the range [0, 22 corresponds to the point of intersection between the limbs of the two bodies and the upper integration limit ϕ1 = 223
3 corresponds to the limb-terminator intersection. Both angles are measured counter-clockwise from the line
.
60
,
61
In order to evaluate the integral in Equation (C27), we follow the reparametrization tricks of Appendix D.2.3 in Luger et al. (2019a). The algebra is long and tedious, so we merely present the result (alongside the usual validation links). The nth component of is
![Equation (C39)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn81.gif)
where and we define the Vieta operator
![Equation (C40)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn82.gif)
as the dot product of a vector x and the vector of Vieta's theorem coefficients, where (see Equation (D34) in Luger et al. 2019a)
![Equation (C41)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn83.gif)
The vectors ,
,
, and
are solutions to specific integrals, which we compute recursively below. As in Luger et al. (2019a) the n = 2 term of
,
, is handled separately; we also compute this below.
62
,
63
,
64
Note that several of the cases in Equation (C39) are identical to those in Equation (D35) of Luger et al. (2019a), provided we replace their integrals and
with our integrals
and
, respectively. The integrals themselves are similar, except for a change in the limits of integration, which are no longer symmetric about zero. As we will see, this leads to the dependence of these expressions on incomplete elliptic integrals. Note also that the integrals
and
are new, as certain cancellations in Luger et al. (2019a) resulted in the corresponding cases contributing zero net flux (last case in Equation (D35) of Luger et al. 2019a).
C.6.1. The Vector
The components of the vector are given by the integral
![Equation (C42)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn84.gif)
for , where we define the helper angle
![Equation (C43)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn85.gif)
The integral in the expression above is the same as that in Equation (D38) of Luger et al. (2019a), except for a change in the limits of integration. As in Luger et al. (2019a), we can compute the vector recursively given a trivial lower boundary condition:
![Equation (C44)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn86.gif)
where the last expression is valid for all v > 0. We find that this algorithm is generally stable, except when is small. In that limit, we evaluate
by numerical integration of Equation (C42) using Gauss–Legendre quadrature with 100 points. We then recurse downward by substituting v → v + 1 in Equation (C44) and solving for
.
65
C.6.2. The Vector
The components of the vector are given by the integral
![Equation (C45)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn87.gif)
where
![Equation (C46)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn88.gif)
The integral in this expression is again the same as that in Equation (D39) of Luger et al. (2019a), except for a change in the limits of integration. In that paper, we computed all terms from a three-term recurrence relation and two boundary conditions. In the case of upward recursion, the boundary conditions
and
were computed analytically from the complete elliptic integrals K(k2) and E(k2). In cases where upward recursion was not numerically stable, we evaluated
and
via a quickly convergent series expansion and recursed downward.
In order to solve Equation (C45), it is possible to replace the complete elliptic integrals K(k2) and E(k2) in the lower boundary conditions (Equation (D46) in Luger et al. 2019a) with the incomplete elliptic integrals
![Equation (C47)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn89.gif)
and
![Equation (C48)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn90.gif)
which we compute from the el2 parameterization of Bulirsch (1965), then use the same upward recursion relation to obtain analytic solutions for all :
![Equation (C49)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn91.gif)
where the last expression is valid for all v > 1 and
![Equation (C50)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn92.gif)
with
![Equation (C51)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn93.gif)
Note that when k2 < 1 we use the reciprocal-modulus transformation to evaluate the elliptic integrals:
![Equation (C52)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn94.gif)
![Equation (C53)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn95.gif)
In practice, however, we find that this procedure is even more numerically unstable than it was in Luger et al. (2019a). To address this, we express the recurrence structure of the problem as a tridiagonal system with one lower boundary condition and one upper boundary condition
:
![Equation (C54)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn96.gif)
where the recursion coefficients are given by
![Equation (C55)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn97.gif)
Solving this matrix system yields values for all intermediate . While efficient algorithms exist for solving tridiagonal problems, we obtain far better numerical stability by instead performing traditional LU decomposition. We find that this algorithm is stable in all the regimes that we tested.
68
,
69
We evaluate the upper boundary condition by numerical integration of Equation (C45) via Gauss–Legendre quadrature with 100 points. While the lower boundary condition may be computed analytically from Equation (C49), in practice we achieve better precision via numerical integration (as above), with negligible effects on computational performance.
C.6.3. The Vector
The components of the vector are given by the integral
![Equation (C56)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn98.gif)
This integral has an analytic solution for all v: 70
![Equation (C57)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn99.gif)
C.6.4. The Vector
The components of the vector are given by the integral
![Equation (C58)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn100.gif)
We may compute it by either upward or downward recursion. In both cases, we compute each of the from
![Equation (C59)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn101.gif)
In the upward case, we start with the lower boundary conditions
![Equation (C60)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn102.gif)
and recurse upward in b and c simultaneously:
![Equation (C61)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn103.gif)
for v > 0. In the case of downward recursion, we start with the upper boundary conditions
![Equation (C62)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn104.gif)
where
![Equation (C63)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn105.gif)
and 2 F 1(a, b; c; z ) is the Gauss hypergeometric function, 71 which we compute via its series definition. We recurse downward in b and c simultaneously:
![Equation (C64)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn106.gif)
C.7. The Term
The final integral we must solve is that corresponding to (
![Equation (C65)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn107.gif)
where z is the usual Cartesian coordinate (Equation (A6)). The solution is tricky, but fortunately a similar integral was solved in Equation (34) of Pál (2012). Adapting their solution to our formalism, we obtain
![Equation (C66)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn108.gif)
where 72
![Equation (C67)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn109.gif)
and 73
![Equation (C68)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn110.gif)
The quantities
F
(
![Equation (C69)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn111.gif)
is the incomplete elliptic integral of the third kind, with
![Equation (C70)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn112.gif)
While stable algorithms exist to evaluate
C.8. The Integral Along the Terminator,
In this section we present a solution to Equation (C28), the line integral along the day/night terminator of the occulted body. As before, the first thing we must do is derive expressions for the integration limits
![Equation (C71)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn113.gif)
where x '' are the roots of the quartic (Equation (C3)). 76 The latter is given by
![Equation (C72)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn114.gif)
As before, these angles are then wrapped to the range [0, 25 corresponds to the point of intersection between the occultor limb and the terminator and
. Recall that
The solution to Equation (C28) involves repeated application of the binomial theorem. If we define the quantities
![](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017ueqn1.gif)
and
![Equation (C73)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn115.gif)
we may express the solution
78
to the integral as
79
![Equation (C74)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn116.gif)
The solution to Equation (C74) depends on the matrix , whose components are given by the integral
![Equation (C75)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn117.gif)
The integral is the same as that in Equation (D27) of Luger et al. (2019a), except for a change in the limits of integration. We can compute this integral recursively given four lower boundary conditions:
![Equation (C76)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn118.gif)
The remaining terms may be computed 80 by upward recursion using the relations
![Equation (C77)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn119.gif)
for u < 2, v ≥ 2 and
![Equation (C78)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn120.gif)
C.9. The Integral Along the Occulted Body Limb,
The final line integral we must solve is the integral along the boundary of the occulted body, Equation (C29). Fortunately, this is also the easiest of the three. The limits of integration
![Equation (C79)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn121.gif)
and the point of intersection between the limb of the occultor and the limb of the occulted body, 83
![Equation (C80)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn122.gif)
where the sign is chosen such that the point is on the dayside of the occulted body.
84
As before, these angles are wrapped to the range [0, 2
5. Both angles are measured counter-clockwise from the x'-axis.
Given
![Equation (C81)](https://content.cld.iop.org/journals/1538-3881/164/1/4/revision1/ajac4017eqn123.gif)
Appendix D: Caveats
The starry code includes a large suite of unit tests that compare the flux computations to numerical models and to various benchmarks for a wide variety of inputs. While we have done our best to develop tests over the full range of occultation configurations, there may be edge cases in which the starry algorithm fails and returns the wrong flux. This could happen, for instance, if the quartic root solver (Appendix C.1) fails to find the points of intersection between the occultor and the day/night terminator, leading to an incorrect case identification (Figure 15) and thus the wrong value for the flux. In the development of the algorithm, these cases would occasionally show up as a single, obvious outlier in a light-curve model. All such cases we encountered have been fixed by adding consistency checks in the root solver and switching to alternate evaluation methods near known singularities. However, it is possible that there may still be rare cases in which this happens, in which case we ask that users raise an issue 86 on GitHub so that we can provide a fix.
Footnotes
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
This choice is equivalent to assuming a flat prior on the power spectrum with power 10−3 in each degree l of the surface map. This particular value is roughly the average power per degree in the input map, although the results in the figure are not sensitive to this choice. For a detailed discussion of how to set one's priors in a realistic setting in which the true map is not known, see Luger et al. (2021a).
- 29
- 30
- 31
- 32
In Luger et al. (2019a),
, so this rotation is trivial: R '' is just the identity matrix.
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
In this section, we deliberately drop the dependence of
and the primitive integrals on the geometrical parameters
for clarity.
- 54
- 55
The components of the vectors
and
are analogous to the primitive integrals
and
defined in Equations (30)–(32) in Luger et al. (2019a), although the integration limits of both and the sense of integration of
are different.
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86