<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="research-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Astron. Space Sci.</journal-id>
<journal-title>Frontiers in Astronomy and Space Sciences</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Astron. Space Sci.</abbrev-journal-title>
<issn pub-type="epub">2296-987X</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">1066480</article-id>
<article-id pub-id-type="doi">10.3389/fspas.2022.1066480</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Astronomy and Space Sciences</subject>
<subj-group>
<subject>Technology and Code</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>sami2py&#x2014;Overview and applications</article-title>
<alt-title alt-title-type="left-running-head">Klenzing et&#xa0;al.</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/fspas.2022.1066480">10.3389/fspas.2022.1066480</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Klenzing</surname>
<given-names>Jeff</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/133543/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Smith</surname>
<given-names>Jonathon M.</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<xref ref-type="fn" rid="fn1">
<sup>&#x2020;</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2057223/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Halford</surname>
<given-names>Alexa J.</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1681155/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Huba</surname>
<given-names>J. D.</given-names>
</name>
<xref ref-type="aff" rid="aff3">
<sup>3</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/622195/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Burrell</surname>
<given-names>Angeline G.</given-names>
</name>
<xref ref-type="aff" rid="aff4">
<sup>4</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1490937/overview"/>
</contrib>
</contrib-group>
<aff id="aff1">
<sup>1</sup>
<institution>ITM Physics Laboratory NASA Goddard</institution>, <addr-line>Greenbelt</addr-line>, <addr-line>MD</addr-line>, <country>United States</country>
</aff>
<aff id="aff2">
<sup>2</sup>
<institution>Department of Physics</institution>, <institution>Catholic University of America</institution>, <addr-line>Washington</addr-line>, <addr-line>DC</addr-line>, <country>United States</country>
</aff>
<aff id="aff3">
<sup>3</sup>
<institution>Syntek Technologies Inc</institution>, <addr-line>Fairfax</addr-line>, <addr-line>VA</addr-line>, <country>United States</country>
</aff>
<aff id="aff4">
<sup>4</sup>
<institution>Space Science Division</institution>, <institution>Naval Research Laboratory</institution>, <addr-line>Washington</addr-line>, <addr-line>DC</addr-line>, <country>United States</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/510848/overview">Guozhu Li</ext-link>, Institute of Geology and Geophysics (CAS), China</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2047333/overview">Zhipeng Ren</ext-link>, Institute of Geology and Geophysics (CAS), China</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2054956/overview">Tong Dang</ext-link>, University of Science and Technology of China, China</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Jeff Klenzing, <email>jeff.klenzing@nasa.gov</email>
</corresp>
<fn fn-type="equal" id="fn1">
<label>
<sup>&#x2020;</sup>
</label>
<p>These authors have contributed equally to this work and share first authorship</p>
</fn>
<fn fn-type="other">
<p>This article was submitted to Space Physics, a section of the journal Frontiers in Astronomy and Space Sciences</p>
</fn>
</author-notes>
<pub-date pub-type="epub">
<day>02</day>
<month>12</month>
<year>2022</year>
</pub-date>
<pub-date pub-type="collection">
<year>2022</year>
</pub-date>
<volume>9</volume>
<elocation-id>1066480</elocation-id>
<history>
<date date-type="received">
<day>10</day>
<month>10</month>
<year>2022</year>
</date>
<date date-type="accepted">
<day>04</day>
<month>11</month>
<year>2022</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2022 Klenzing, Smith, Halford, Huba and Burrell.</copyright-statement>
<copyright-year>2022</copyright-year>
<copyright-holder>Klenzing, Smith, Halford, Huba and Burrell</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>
<italic>sami2py</italic> is a <italic>Python</italic> module that runs the SAMI2 (Sami2 is Another Model of the Ionosphere) ionospheric model, as well as load and archive the results. SAMI2 is a model developed by the Naval Research Laboratory to simulate the motions of plasma in a two-dimensional ionospheric environment along a dipole magnetic field. SAMI2 solves for the chemical and dynamical evolution of seven ion species in this environment (H<sup>&#x2b;</sup>, He<sup>&#x2b;</sup>, N<sup>&#x2b;</sup>, O<sup>&#x2b;</sup>, <inline-formula id="inf1">
<mml:math id="m1">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>, NO<sup>&#x2b;</sup>, and <inline-formula id="inf2">
<mml:math id="m2">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="normal">O</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>). The <italic>Python</italic> implementation allows for additional modifications to the empirical models within SAMI2, including the exospheric temperature in the empirical thermosphere and the input of E&#xd7;B ion drifts. The code is open source and available to the community on GitHub. The work here discusses the implementation and use of <italic>sami2py</italic>, including integration with the pysat ecosystem and the <italic>growin</italic> python package for ionospheric calculations. As part of the Application Usability Level (AUL) framework, we will discuss the usability of this code in terms of several ionospheric applications.</p>
</abstract>
<kwd-group>
<kwd>ionosphere</kwd>
<kwd>ionospheric model</kwd>
<kwd>SAMI2 model</kwd>
<kwd>python (programming language)</kwd>
<kwd>open source software</kwd>
<kwd>software</kwd>
<kwd>plasma instability</kwd>
</kwd-group>
<contract-sponsor id="cn001">National Aeronautics and Space Administration<named-content content-type="fundref-id">10.13039/100000104</named-content>
</contract-sponsor>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>SAMI2 is a model developed at the Naval Research Laboratory to simulate the motions of plasma in a two dimensional (2D) ionospheric environment along dipole magnetic field lines (<xref ref-type="bibr" rid="B20">Huba&#xa0;et&#xa0;al.,&#xa0;2000</xref>). The model itself is written in FORTRAN (<xref ref-type="bibr" rid="B2">Backus and Heising,&#xa0;1964</xref>) and distributed under an open source license. It has been applied to a variety of low-latitude ionospheric physics problems, including longitudinal variation of airglow measurements (<xref ref-type="bibr" rid="B10">England&#xa0;et&#xa0;al.,&#xa0;2008</xref>), the effect of neutral winds on instability growth rates (<xref ref-type="bibr" rid="B38">Zhan and Rodrigues.,&#xa0;2018</xref>), and plasma bubble refilling rates (<xref ref-type="bibr" rid="B27">Otsuka&#xa0;et&#xa0;al.,&#xa0;2021</xref>). Because of the open source nature of the code, other variations have been built with additional physics considerations such as photoelectron transport (<xref ref-type="bibr" rid="B36">Varney&#xa0;et&#xa0;al.,&#xa0;2012</xref>; <xref ref-type="bibr" rid="B25">Krall and Huba,&#xa0;2019</xref>).</p>
<p>The <italic>sami2py</italic> software package (<xref ref-type="bibr" rid="B23">Klenzing&#xa0;et&#xa0;al.,&#xa0;2022</xref>) is an interface built in <italic>Python</italic> (<xref ref-type="bibr" rid="B35">Van&#xa0;Rossum and Drake,&#xa0;2009</xref>) designed to initiate, modify, and manage runs of the SAMI2 model for ionospheric studies. The original version was written in MatLab (<xref ref-type="bibr" rid="B17">Higham and Higham,&#xa0;2016</xref>) as part of a systematic study of solar minimum (<xref ref-type="bibr" rid="B21">Klenzing&#xa0;et&#xa0;al.,&#xa0;2013</xref>), but has been rewritten and modified to comply with the Heliophysics <italic>Python</italic> ecosystem (e.g., <xref ref-type="bibr" rid="B1">Annex&#xa0;et&#xa0;al.,&#xa0;2018</xref>; <xref ref-type="bibr" rid="B3">Burrell&#xa0;et&#xa0;al.,&#xa0;2018</xref>). The software has been made open source and available to the community for modification to better improve reproducability of ionospheric research (e.g., <xref ref-type="bibr" rid="B12">Gil&#xa0;et&#xa0;al.,&#xa0;2016</xref>). <xref ref-type="sec" rid="s2">Section&#xa0;2</xref> will discuss the implementation of <italic>sami2py</italic>. <xref ref-type="sec" rid="s3">Section&#xa0;3</xref> will discuss a brief overview of a standard workflow of the code, including example output and plots. <xref ref-type="sec" rid="s4">Section&#xa0;4</xref> will describe several ongoing applications of the <italic>sami2py</italic> project using the Application Usability Level (AUL) Framework (<xref ref-type="bibr" rid="B14">Halford&#xa0;et&#xa0;al.,&#xa0;2019</xref>). This framework was recently developed to help track the progress of a product and ensure that it will be usable by the intended user community. The framework matches the progress to similar frameworks such as the technology readiness levels used by the space hardware community and the readiness levels used by the National Oceanic and Atmospheric Administration (NOAA).</p>
</sec>
<sec id="s2">
<title>2 The sami2py project</title>
<p>The <italic>sami2py</italic> project will be discussed in terms of the three major components: the core ionospheric solver, the component models, and the <italic>Python</italic> interface.</p>
<sec id="s2-1">
<title>2.1 SAMI2 core code</title>
<p>The core of the code is the FORTRAN ionospheric dynamics engine. At this stage of development, this is numerically unchanged from the original release of the SAMI2 model, though the handling of some variables has been updated to accommodate compilation using GNU compilers (e.g., <xref ref-type="bibr" rid="B11">gfortran&#xa0;team,&#xa0;2022</xref>). SAMI2 solves for the chemical and dynamical evolution of seven ion species in this environment (H<sup>&#x2b;</sup>, He<sup>&#x2b;</sup>, N<sup>&#x2b;</sup>, O<sup>&#x2b;</sup>, <inline-formula id="inf3">
<mml:math id="m3">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>, NO<sup>&#x2b;</sup>, and <inline-formula id="inf4">
<mml:math id="m4">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="normal">O</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>). The temperature equation is solved for three ion species (H<sup>&#x2b;</sup>, He<sup>&#x2b;</sup> and O<sup>&#x2b;</sup>) and for the electrons. Ion inertia is included in the ion momentum equation for motion along the geomagnetic field. This is important in modeling the topside ionosphere where the plasma transitions from collisional to collisionless. SAMI2 uses a nonorthogonal, nonuniform, fixed grid. The grid is designed to optimize the numerical mesh so that the spatial resolution decreases with increasing altitude. The plasma is transported along the magnetic field using a semi-implicit transport algorithm, and transverse to the geomagnetic field using a finite volume method in conjunction with the donor cell method (<xref ref-type="bibr" rid="B19">Huba,&#xa0;2003</xref>). The numerical solutions are well documented in <xref ref-type="bibr" rid="B20">Huba&#xa0;et&#xa0;al.&#xa0;(2000)</xref>. A brief summary follows.</p>
<p>The SAMI2 model simulates the production, motion, and loss of ions along a two-dimensional slice of Earth&#x2019;s ionosphere, as shown in <xref ref-type="fig" rid="F1">Figure&#xa0;1</xref>. This slice is aligned with magnetic field lines as calculated for an offset tilted dipole field. The continuity, momentum, and temperature equations for ions and electrons are solved. The model is initialized and driven by empirical models, as discussed in <xref ref-type="sec" rid="s2-2">Section&#xa0;2.2</xref>. A series of scaling factors can be used to alter the magnitude of these empirical values through the namelist file. In general, the model is run for 24&#xa0;h before modelled values are output to files. This is done to clear transients from the system.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Example output of the SAMI2 model.</p>
</caption>
<graphic xlink:href="fspas-09-1066480-g001.tif"/>
</fig>
</sec>
<sec id="s2-2">
<title>2.2 Component models</title>
<p>The <italic>sami2py</italic> software builds on the modular nature of the SAMI2 model. In the original release, SAMI2 used four key empirical models to prime the ionospheric solutions: NRLMSISe-00 (<xref ref-type="bibr" rid="B28">Picone,&#xa0;2002</xref>) to provide the neutral atmosphere, EUVAC (<xref ref-type="bibr" rid="B29">Richards&#xa0;et&#xa0;al.,&#xa0;1994</xref>) to provide the EUV spectrum, HWM-93 to provide neutral winds (<xref ref-type="bibr" rid="B16">Hedin&#xa0;et&#xa0;al.,&#xa0;1993b</xref>,<xref ref-type="bibr" rid="B15">a</xref>), and the Fejer-Scherliess model of low-latitude <bold>E</bold>&#xd7;<bold>B</bold> drifts (<xref ref-type="bibr" rid="B30">Scherliess and Fejer,&#xa0;1999</xref>). <italic>sami2py</italic> updates these component models, whose acronyms are defined below, to the latest versions and includes the older versions as optional inputs. Additionally, the number of scalable parameters has been expanded. A full list of the available models and scalable parameters is included in <xref ref-type="table" rid="T1">Table&#xa0;1</xref>.</p>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Component Models in sami2py 0.3.0.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Physical Mechanism</th>
<th align="left">Model Name</th>
<th align="left">Scalable Parameters</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">Neutral Atmosphere</td>
<td align="left">NRLMSISe-00</td>
<td align="left">Neutral Species, Exospheric Temperature</td>
</tr>
<tr>
<td align="left">Photoionization Rate</td>
<td align="left">EUVAC</td>
<td align="left">Total Ionization</td>
</tr>
<tr>
<td align="left">Neutral Winds</td>
<td align="left">HWM-14 (default)</td>
<td align="left">Wind Magnitude</td>
</tr>
<tr>
<td align="left"/>
<td align="left">HWM-07</td>
<td align="left"/>
</tr>
<tr>
<td align="left"/>
<td align="left">HWM-93</td>
<td align="left"/>
</tr>
<tr>
<td align="left">ExB drifts</td>
<td align="left">Fejer-Scherliess (default)</td>
<td align="left">Drift magnitude, offset from zero</td>
</tr>
<tr>
<td align="left"/>
<td align="left">Fourier coefficients F(SLT)</td>
<td align="left"/>
</tr>
</tbody>
</table>
</table-wrap>
<p>The Naval Research Laboratory Mass Spectrometer and Incoherent Scatter radar (NRLMSIS) model is a semi-empirical model representing multiple decades of neutral atmospheric measurements, including mass spectrometer, radar, and satellite drag data (<xref ref-type="bibr" rid="B28">Picone,&#xa0;2002</xref>). The version implemented in <italic>sami2py</italic> is a modification of the extended version of the model released in 2000 (NRLMSISe-00). During the solar minimum between cycles 23 and 24, record low densities in the thermosphere were observed through satellite drag measurements <xref ref-type="bibr" rid="B9">Emmert&#xa0;et&#xa0;al.&#xa0;(2010)</xref> and direct measurement of neutral pressure density (<xref ref-type="bibr" rid="B13">Haaser&#xa0;et&#xa0;al.,&#xa0;2010</xref>). These measurements were outside of the underlying database used to construct the model. <xref ref-type="bibr" rid="B33">Solomon&#xa0;et&#xa0;al.&#xa0;(2010)</xref> suggested that anomalously low Extreme Ultraviolet (EUV) radiation during this period resulted in a much cooler thermosphere than expected from the radio flux proxy for solar activity (F<sub>10.7</sub>). Since F<sub>10.7</sub> rather than EUV is used to drive the thermospheric model, <xref ref-type="bibr" rid="B21">Klenzing&#xa0;et&#xa0;al.&#xa0;(2013)</xref> implemented a scalar factor for the exospheric temperature in their empirical study of altered electrodynamics during extreme solar minima. The SAMI2 model already allows users to scale the resultant density profiles independently for each species after NRLMSISe-00 has run. The modification implemented here adds the capability to scale the exospheric temperature directly in NRLMSISe-00 in addition to constantly scaling each species. An example of the effect of this reduced temperature run is shown in <xref ref-type="fig" rid="F2">Figure&#xa0;2</xref>.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Modification of the NRLMSISe exospheric temperature.</p>
</caption>
<graphic xlink:href="fspas-09-1066480-g002.tif"/>
</fig>
<p>The Extreme Ultraviolet for Aeronomic Calculations (EUVAC) model provides a calculation of the EUV flux as a function of the solar radio flux proxy F<sub>10.7</sub> (<xref ref-type="bibr" rid="B29">Richards&#xa0;et&#xa0;al.,&#xa0;1994</xref>). For SAMI2, the model is used to calculate the photo-ionization rate of the ionosphere. While the implementation is unchanged from the SAMI2 1.00 release, a scalar parameter has been added to the code to allow sensitivity studies for directly changing the total photo-ionization rate.</p>
<p>The Horizontal Wind Model (HWM) provides a statistical view of neutral winds gathered from world-wide Fabry-Perot Interferometers, Incoherent Scatter Radars, satellites, and rockets (<xref ref-type="bibr" rid="B7">Drob&#xa0;et&#xa0;al.,&#xa0;2015</xref>). The latest version (HWM14) is incorporated as the default, thought users can run numerical experiments with HWM07 (<xref ref-type="bibr" rid="B8">Drob&#xa0;et&#xa0;al.,&#xa0;2008</xref>) and HWM93 as options.</p>
<p>The Fejer-Scherliess model of <bold>E</bold>&#xd7;<bold>B</bold> drift climatology (e.g., <xref ref-type="bibr" rid="B30">Scherliess and Fejer,&#xa0;1999</xref>) provides the two-dimensional drifts perpendicular to the magnetic field lines as a function of local time, solar activity, day of year, and longitude. This is done through cubic spline fits to data from the Jicamarca Incoherent Scatter Radar and the Atmospheric Explorer E satellite. The model is unchanged in the <italic>sami2py</italic> implementation. As in SAMI2, scalar parameters allow users to directly change the magnitude and offset of the drifts.</p>
<p>An alternative <bold>E</bold>&#xd7;<bold>B</bold> is provided for users wanting to investigate alternate drift climatologies. Since the model is constrained to a local series of flow tubes in a single magnetic meridian, the alternate model is incorporated as a series of Fourier coefficients that are user-specified that describe a function of Solar Local Time (SLT), as shown in <xref ref-type="disp-formula" rid="e1">Eq.&#xa0;1</xref>.<disp-formula id="e1">
<mml:math id="m5">
<mml:mi>E</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">total</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>L</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3a3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>10</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>cos</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>S</mml:mi>
<mml:mi>L</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>12</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>sin</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>S</mml:mi>
<mml:mi>L</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>12</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(1)</label>
</disp-formula>This allows users with direct measurements to create a localized drift model. Examples of this type of usage are presented in <xref ref-type="bibr" rid="B21">Klenzing&#xa0;et&#xa0;al.&#xa0;(2013)</xref> and <xref ref-type="bibr" rid="B32">Smith and Klenzing&#xa0;(2022)</xref>. An additional input file to the FORTRAN code names <italic>exb.inp</italic> was added so that the localized model can be changed without recompiling the FORTRAN engine. Note that this creates a function that averages to zero over all local times, ensuring that there is no net upward or downward drift over the course of a day.</p>
</sec>
<sec id="s2-3">
<title>2.3 <italic>Python</italic> interface</title>
<p>The <italic>sami2py Python</italic> code wraps the compiled SAMI2 FORTRAN engine (see <xref ref-type="fig" rid="F3">Figure&#xa0;3</xref>) in a standardized <italic>Python</italic> package. It provides an interface for users to directly update the namelist and <bold>E</bold>&#xd7;<bold>B</bold> input files <italic>via</italic> keywords, and returns the results in an <italic>xarray.Dataset</italic> object (<xref ref-type="bibr" rid="B18">Hoyer and Hamman,&#xa0;2017</xref>).</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Block diagram of the sami2py workflow.</p>
</caption>
<graphic xlink:href="fspas-09-1066480-g003.tif"/>
</fig>
<p>The core SAMI2 code in <italic>sami2py</italic> is compatible with FORTRAN 90 and is suitable for compilation under multiple compilers. The variable parameters, such as geographic location, solar activity, and season, are input <italic>via</italic> a namelist file, and the resulting modelled parameters are sent to binary output files. An additional <italic>exb.inp</italic> file is included to generate alternate <bold>E</bold>&#xd7;<bold>B</bold> drift models <italic>via</italic> a Fourier series over solar local time. The <italic>sami2py</italic> code provides a user interface to both the input namelist files (through the <italic>sami2py.run&#x5f;model</italic> method) and the output binaries (through the <italic>sami2py.Model</italic> class).</p>
<p>The method <italic>sami2py.run&#x5f;model</italic> allows the user to directly run the compiled FORTRAN executable. The namelist that specifies the parameters of the model run can be adjusted <italic>via</italic> keyword arguments, which are fully documented in the code docstrings and in the detailed documentation that is available in the GitHub repository and online at readthedocs. This includes a user-specified &#x201c;tag&#x201d; to quickly describe the run for archival purposes (e.g., &#x201c;solarmin&#x201d;). The FORTRAN executable saves each variable as a separate file. By default, this method will move all of the output files, as well as the input namelist and <italic>exb.inp</italic> files, to an archival directory. All files are grouped under subdirectories by the tag name, longitude, and date in case a user runs multiple dates or locations for the same input conditions.</p>
<p>The <italic>sami2py.Model</italic> class loads the raw output of the model run. It loads each individual file and reshapes them into a single <italic>xarray. Dataset</italic> object for convenience of use. This class will also load the namelist info as metadata to allow inspection of input parameters, as well as any custom <bold>E</bold>&#xd7;<bold>B</bold> input that was used. When working within <italic>sami2py</italic>, this information is stored in the <italic>model.MetaData</italic> object as a dictionary. The parameters are reshaped as 4D arrays with appropriate coordinates. Examples are shown in the sample code in <xref ref-type="sec" rid="s3">Section&#xa0;3</xref>. Users may run analysis directly from the <italic>Model</italic> object or save to a single file.</p>
<p>For portability and reproducability, both data and metadata can be exported to a netCDF4 file (<xref ref-type="bibr" rid="B37">Whitaker&#xa0;et&#xa0;al.,&#xa0;2020</xref>) using the <italic>to&#x5f;netcdf</italic> method on the model. The metadata will be included as top-level attributes in the output file, documenting how the run was initialized and including both the sami2py version number and commit hash (in case a custom branch based on an official version was created). The netCDF4 versions of the file are constructed to be compatible with pysat.</p>
</sec>
<sec id="s2-4">
<title>2.4 Integration into the pysat ecosystem</title>
<p>The pysat ecosystem (<xref ref-type="bibr" rid="B34">Stoneback&#xa0;et&#xa0;al.,&#xa0;2018</xref>) has evolved to support management and analysis of a number of data sets throughout the space science community. The core pysat engine provides a framework to manage data sets, including acquisition, archival, and management. As a management tool, it has been used operationally in missions and analysis projects, including the ICON and COSMIC2 missions. A series of libraries has been written to translate between the core pysat commands and individual data sets. This standardization allows pysat to manage the metadata as well.</p>
<p>These files can be integrated into the pysat ecosystem by using the custom <italic>sami2py</italic> instrument module at pysatModels (<xref ref-type="bibr" rid="B4">Burrell&#xa0;et&#xa0;al.,&#xa0;2022</xref>). This package includes a number of other tools to compare observational data with models.</p>
</sec>
</sec>
<sec id="s3">
<title>3 Sample workflow</title>
<p>This section demonstrates how <italic>sami2py</italic> can be used in a research workflow to run and analyze the SAMI2 model and output.</p>
<sec id="s3-1">
<title>3.1 Environment and compilation</title>
<p>The code here has been tested in linux, Mac, and Windows environments through Github Actions. Each environment is tested through a unit test suite with 97.6% code coverage as of version 0.3.0. The unit tests are configured to use the latest python packages under python 3.9 and 3.10 environments, as well as a version limited to numpy 1.20 under python 3.8. The specific versions used for the core requirements as of the publication of this paper are listed in <xref ref-type="table" rid="T2">Table&#xa0;2</xref>.</p>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>Environments currently tested for sami2py 0.3.0.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Requirement</th>
<th align="left">Versions tested</th>
<th align="left">NEP029 tests</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="3" align="left">Operating System</td>
<td align="left">Ubuntu 20.04.5</td>
<td rowspan="3" align="left">Ubuntu 20.04.5</td>
</tr>
<tr>
<td align="left">Mac OS 12.6</td>
</tr>
<tr>
<td align="left">Windows Server 2022</td>
</tr>
<tr>
<td align="left">
<italic>Python</italic>
</td>
<td align="left">3.9, 3.10</td>
<td align="left">3.8</td>
</tr>
<tr>
<td align="left">gcc</td>
<td align="left">12.2.0</td>
<td align="left">12.2.0</td>
</tr>
<tr>
<td align="left">netCDF4</td>
<td align="left">1.6.1</td>
<td align="left">1.6.1</td>
</tr>
<tr>
<td align="left">numpy</td>
<td align="left">1.23.4</td>
<td align="left">1.20.0</td>
</tr>
<tr>
<td align="left">pandas</td>
<td align="left">1.5.1</td>
<td align="left">1.4.4</td>
</tr>
<tr>
<td align="left">scipy</td>
<td align="left">1.9.3</td>
<td align="left">1.9.3</td>
</tr>
<tr>
<td align="left">xarray</td>
<td align="left">2022.10.0</td>
<td align="left">2022.10.0</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s3-2">
<title>3.2 Preparing to run the model</title>
<p>The <italic>sami2py.run&#x5f;model</italic> method and <italic>sami2py.Model</italic> class provide the core functionality of <italic>sami2py</italic>. The following code snippet prepares the archive directory, and specifies the time and location for the run as well as declaring custom <bold>E</bold>&#xd7;<bold>B</bold> input.</p>
<p>
<inline-graphic xlink:href="fspas-09-1066480-fx1.tif"/>
</p>
<p>Note that setting the user archive directory only needs to be run when the package is first installed.</p>
</sec>
<sec id="s3-3">
<title>3.3 Running the model</title>
<p>Now that the custom input has been declared and the environment is prepared for archival, the model can now be executed. The time, location, F10.7 and <bold>E</bold>&#xd7;<bold>B</bold> are provided to the <italic>sami2py.run&#x5f;model</italic> method. Upon completion the model output is loaded as a <italic>sami2py.Model</italic> object and archived as a netCDF file.</p>
<p>
<inline-graphic xlink:href="fspas-09-1066480-fx2.tif"/>
</p>
</sec>
<sec id="s3-4">
<title>3.4 Plotting the model output</title>
<p>The following code snippet loads the archived model run, adds a new variable to the data set which consists of the total plasma density, and then plots the total plasma density as a function of local time and altitude with the <bold>E</bold>&#xd7;<bold>B</bold> drift superimposed over the density. Note that by default, the ion density variable (<italic>deni</italic>) is a four-dimensional object, with one of the dimensions (retrievable as <italic>ion</italic>) specifies the individual ion species. A summation over this third axis is needed to extract total ion density.</p>
<p>
<inline-graphic xlink:href="fspas-09-1066480-fx3.tif"/>
</p>
<p>The resulting figure is shown in <xref ref-type="fig" rid="F4">Figure&#xa0;4</xref>.</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Example output ionosphere driven by custom drifts from the Fejer-Scherliess model.</p>
</caption>
<graphic xlink:href="fspas-09-1066480-g004.tif"/>
</fig>
</sec>
</sec>
<sec id="s4">
<title>4 Application overview</title>
<p>The AUL framework is divided into three phases with three levels each as shown in <xref ref-type="table" rid="T3">Table&#xa0;3</xref> <xref ref-type="bibr" rid="B14">Halford&#xa0;et&#xa0;al.&#xa0;(2019)</xref>. Examples of use are in the paper and a full example of the AUL framework applied to the development of a project can be found in <xref ref-type="bibr" rid="B6">Cid&#xa0;et&#xa0;al.&#xa0;(2020)</xref>. The first phase focuses on basic research, the identification of the user, and agreement between the researcher and users of the intended application and requirements. The second phase develops and tests the application in a similar environment to where it will be operational. In the case of a software development such as <italic>sami2py</italic> this may include common operating systems and <italic>Python</italic> installations. The third phase includes the delivery of the application into the operational environment for routine use. The definitions of these AUL parameters are defined in the context of <italic>sami2py</italic> in <xref ref-type="table" rid="T4">Table&#xa0;4</xref>.</p>
<table-wrap id="T3" position="float">
<label>TABLE 3</label>
<caption>
<p>A brief description of the AUL phases and levels as outlined in Halford et&#xa0;al. (2019).</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Phase</th>
<th align="left">Phase definition</th>
<th align="left">AUL</th>
<th align="left">Level description</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="3" align="left">Phase 1</td>
<td rowspan="3" align="left">Discovery and Viability</td>
<td align="left">1</td>
<td align="left">Basic research</td>
</tr>
<tr>
<td align="left">2</td>
<td align="left">Establishment of users and requirements</td>
</tr>
<tr>
<td align="left">3</td>
<td align="left">Assess viability and current state of the art</td>
</tr>
<tr>
<td rowspan="3" align="left">Phase 2</td>
<td rowspan="3" align="left">Development, Testing, and Validation</td>
<td align="left">4</td>
<td align="left">Initial integration and verification</td>
</tr>
<tr>
<td align="left">5</td>
<td align="left">Demonstration in the relevant context</td>
</tr>
<tr>
<td align="left">6</td>
<td align="left">Completed validation</td>
</tr>
<tr>
<td rowspan="3" align="left">Phase 3</td>
<td rowspan="3" align="left">Implementation and Integration into Operation</td>
<td align="left">7</td>
<td align="left">Application prototype</td>
</tr>
<tr>
<td align="left">8</td>
<td align="left">Validation in relevant context</td>
</tr>
<tr>
<td align="left">9</td>
<td align="left">Approved for on-demand use</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="T4" position="float">
<label>TABLE 4</label>
<caption>
<p>AUL definitions for sami2py.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">AUL parameter</th>
<th align="left">Definition for <italic>sami2py</italic>
</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">End User</td>
<td align="left">Scientific researcher or Course Instructor</td>
</tr>
<tr>
<td align="left">Operational Environment</td>
<td align="left">End User&#x2019;s computer workstation (unix/mac/windows)</td>
</tr>
<tr>
<td align="left">Simulated Operational Environment</td>
<td align="left">GitHub Actions Continuous Integration environment</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>At this phase in project development, we have identified three core use cases of the software: The use of early-phase research projects to perform key sensitivity studies, as a key dependency in the <italic>growin</italic> software package (<xref ref-type="bibr" rid="B31">Smith and Klenzing,&#xa0;2020</xref>), and as an educational tool for classes to teach ionospheric electrodynamics. We will discuss each of these individually through the framework of the AUL framework summarized in <xref ref-type="table" rid="T3">Table&#xa0;3</xref> as each as different users and requirements. The AUL framework provides a standardized scale for software and other projects on a scale of 1&#x2013;9, analogous to the Technology Readiness Levels often used for flight hardware projects. The first two applications have been identified as having completed validation (AUL 6), whereas the third application (use as an educational tool) is still at an AUL 1. This section will document the steps we have taken to reach these AUL levels.</p>
<sec id="s4-1">
<title>4.1 Application: Early phase research test projects&#x2013;AUL 7</title>
<p>One of the applications of <italic>sami2py</italic> is for early-phase research projects. The user is the broader ionospheric research community who are communicated with on a direct basis with the development team and at conferences such as CEDAR. The operational environment is then considered to be an individual&#x2019;s work computer.</p>
<p>An example of the early-phase research projects is running sensitivity studies on proposed physical forcing mechanisms. For this paper, an example of an identified user for this application is <xref ref-type="bibr" rid="B21">Klenzing&#xa0;et&#xa0;al.&#xa0;(2013)</xref> where the early phase research includes a series of sensitivity studies for proposed modifications to ionospheric drivers under extremely low levels of solar activity. This study was originally conducted using a prototype of the <italic>sami2py</italic> model written in MatLab, but the functionality applies to the <italic>Python</italic> version as well. Each empirical model that drives the SAMI2 ion dynamics engine can be modified to reflect proposed changes to the forcing of the ionosphere, including reductions in exospheric temperature for the MSIS model and the direct input of user-specified <bold>E</bold>&#xd7;<bold>B</bold> drift profiles as a function of local time.</p>
<p>Examples of how the ionospheric density changes by altering the <bold>E</bold>&#xd7;<bold>B</bold> drift assumptions are shown in <xref ref-type="fig" rid="F4">Figures&#xa0;4</xref>, <xref ref-type="fig" rid="F5">5</xref>. Each plot shows the evolution of the vertical ionospheric density profile over time. The white line plotted above the ionospheric density represents the driving <bold>E</bold>&#xd7;<bold>B</bold> timeseries used in <italic>sami2py</italic>, with <xref ref-type="fig" rid="F4">Figure&#xa0;4</xref> driven by the Fejer-Scherliess model (<xref ref-type="bibr" rid="B30">Scherliess and Fejer,&#xa0;1999</xref>) and <xref ref-type="fig" rid="F5">Figure&#xa0;5</xref> driven by climatology measured by the Coupled Ion-Neutral Dynamics Investigation (CINDI) mission of opportunity (<xref ref-type="bibr" rid="B32">Smith and Klenzing,&#xa0;2022</xref>).</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>Example output ionosphere driven by custom drift climatology fit to C/NOFS data.</p>
</caption>
<graphic xlink:href="fspas-09-1066480-g005.tif"/>
</fig>
<p>The work discussed above has shown how a <italic>Python</italic> version of SAMI2 will provide a path beyond the current state of the art capabilities for individual research projects. The <italic>Python</italic> interface for the SAMI2 model also provides a new capability making it easier for more researchers to access and use this model, as well as document results. Moving from a MatLab interface to an open source language improves the accessibility of the work. Incorporation of the resulting modeled data into an <italic>xarray. Dataset</italic> object improves the usability of the output. The primary requirement for this application at this phase is to ensure that this <italic>Python</italic> package is open access and works across computer operating systems. We have satisfied the milestones for AUL 3 with the release of <italic>sami2py</italic> version 0.2.0 in December 2019 (<xref ref-type="bibr" rid="B22">Klenzing&#xa0;et&#xa0;al.,&#xa0;2019</xref>).</p>
<p>The AUL four to six milestones require improved documentation and testing of the beta prototype of the model. Changes incorporated since version 0.2.0 include docstrings for all functions, improved Continuous Integration (CI) testing, and improved compatibility with external <italic>Python</italic> packages, including numpy, xarray, and pysat. The model undergoes continuous integration tests in the GitHub Actions environment with <inline-formula id="inf5">
<mml:math id="m6">
<mml:mo>&#x3e;</mml:mo>
<mml:mn>97</mml:mn>
<mml:mi>%</mml:mi>
</mml:math>
</inline-formula> coverage, fulfilling simulation in an operational environment. The CI tests are run for Linux, mac, and windows systems to satisfy AUL 5 (demonstration in a relevant context). Additionally, tests for older versions of numpy are included to maintain compliance with NEP029 (<xref ref-type="bibr" rid="B5">Caswell&#xa0;et&#xa0;al.,&#xa0;2019</xref>). Since <italic>sami2py</italic> is being developed on GitHub, it is easily transferred from the development environment to the operational environment (end user&#x2019;s workstation) across the community. Regular updates are given at community workshops. With the documentation of the code, including the online documentation at <italic>readthedocs</italic> and the examples within this paper, and the release of version 0.2.5 (<xref ref-type="bibr" rid="B24">Klenzing&#xa0;et&#xa0;al.,&#xa0;2021</xref>) all milestones through AUL six have been completed.</p>
<p>AUL level 7 is the Application Prototype of the project. This requires demonstration of the prototype and dissemination of results. Both of these goals are achieved with the release of version 0.3.0 (<xref ref-type="bibr" rid="B23">Klenzing&#xa0;et&#xa0;al.,&#xa0;2022</xref>) and the publication of this paper. Improvements to the user interface and code style have been implemented in version 0.3.0 to maintain PyHC standards and improve code maintainability.</p>
<p>For AUL 8 and 9, a finalized project for on-demand usage needs to be released. In the context of this application for <italic>sami2py</italic>, a series of updates focusing on an improved workflow and code maintainability have been identified. These are demarcated as a future 0.4.0 release. Input from the community will be evaluated alongside these updates as the user base grows.</p>
</sec>
<sec id="s4-2">
<title>4.2 As a core dependency of the growin software tools&#x2013;AUL 7</title>
<p>As an additional demonstration of the prototype, the <italic>sami2py</italic> module is a central dependency for the <italic>growin</italic> python module which was written to compute the Rayleigh-Taylor instability (RTI) growth rate. The calculation of the RTI growth rate is central to the development and growth of plumes of depleted plasma, or plasma bubbles, in the bottomside of the equatorial ionosphere. The <italic>growin</italic> module uses the <italic>sami2py</italic> module to run the SAMI2 model, archive the output, and load the output into <italic>Python</italic> data structures (<xref ref-type="bibr" rid="B23">Klenzing&#xa0;et&#xa0;al.,&#xa0;2022</xref>). Similar to the example code above, drift measurements are used to create a climatological drift profile from <italic>in-situ</italic> measurements. These drifts are then passed to <italic>sami2py</italic> and an ionosphere is simulated with the typical ionospheric indices for the corresponding time period. Subsequently the produced ionospheric plasma densities, drifts, and winds are used to compute flux-tube integrated quantities necessary to compute the RTI growth rate. These growth rates have been previously used to discuss bubble occurrence frequencies obtained from the CINDI (<xref ref-type="bibr" rid="B32">Smith and Klenzing,&#xa0;2022</xref>) and Global Observations of the Limb and Disk (GOLD) (<xref ref-type="bibr" rid="B26">Martinis&#xa0;et&#xa0;al.,&#xa0;2021</xref>) missions.</p>
<p>Similar to the previous application, the broader ionospheric research community is the user and will benefit from a <italic>Python</italic> version of <italic>growin</italic> and the inclusion of <italic>sami2py</italic> within it. The feasibility, viability, and expected improvements can all be found within <xref ref-type="bibr" rid="B32">Smith and Klenzing&#xa0;(2022)</xref>. Thus many of the milestones have been completed for this application through the previously discussed application in <xref ref-type="sec" rid="s4-1">Section&#xa0;4.1</xref>. As shown in <xref ref-type="table" rid="T5">Table&#xa0;5</xref>, the key additional requirement here is the output of neutral atmospheric data, which is required to perform the RTI calculations. This has been added to <italic>sami2py</italic> as an optional output. As the other components <italic>growin</italic> were already within the operational/end user environment, the final AUL is now dependent on the progress of <italic>sami2py</italic>. Similar to the previous application, the usage of <italic>sami2py</italic> in the <italic>growin</italic> package is at an AUL of 7.</p>
<table-wrap id="T5" position="float">
<label>TABLE 5</label>
<caption>
<p>Requirements and Metrics for the sami2py project.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Requirements</th>
<th align="left"/>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="5" align="left">Application 1</td>
<td align="left">Generate a 2-D ionospheric slice in the geomagnetic plane</td>
</tr>
<tr>
<td align="left">Modify and switch between available empirical models <italic>via Python</italic> keywords</td>
</tr>
<tr>
<td align="left">Archive model runs for a user to access later, including code commit hash</td>
</tr>
<tr>
<td align="left">Load and return the resultant modeled ionosphere <italic>via</italic> an xarray object</td>
</tr>
<tr>
<td align="left">Do so consistently under a variety of possible computer configurations</td>
</tr>
<tr>
<td rowspan="2" align="left">Application 2</td>
<td align="left">All of the above</td>
</tr>
<tr>
<td align="left">The code should output neutral density background in addition to the ions</td>
</tr>
<tr>
<td rowspan="5" align="left">Metrics</td>
<td align="left">Unit tests capturing above requirements</td>
</tr>
<tr>
<td align="left">Continuous integration support under Linux and windows configurations</td>
</tr>
<tr>
<td align="left">Continuous integration testing compatible with NEP 029 (Caswell et&#xa0;al.,&#xa0;2019)</td>
</tr>
<tr>
<td align="left">Unit test coverage <inline-formula id="inf6">
<mml:math id="m7">
<mml:mo>&#x3e;</mml:mo>
<mml:mn>95</mml:mn>
<mml:mi>%</mml:mi>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">Documentation consistent with PyHC Standards (Annex et&#xa0;al.,&#xa0;2018)</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s4-3">
<title>4.3 Application: Educational tool&#x2013;AUL 1</title>
<p>Beyond the research community, another user community has been identified but not yet contacted. The code here can also be used as an educational tool as part of a Space Weather of Ionospheric Electrodynamics curriculum. The straightforward and modular nature of the code makes it practical to incorporate into homework or class projects as needed. As this application has been identified, but specific requirements have not been defined and incorporated into the code, this is defined as an AUL 1 project. Work is ongoing, and interested parties should contact the authors to help better refine this project and requirements for these purposes.</p>
</sec>
</sec>
<sec id="s5">
<title>5 Summary and further work</title>
<p>This work documents an overview of the <italic>sami2py</italic> code and several potential applications. The proposed applications are documented here and their progress towards on-demand use using the Application Usability Level framework. Ongoing assessment and progress of these AULs will be updated online at the projects page of the GitHub repository.</p>
<p>Full documentation of the code including examples is available at <ext-link ext-link-type="uri" xlink:href="https://sami2py.readthedocs.io">
<italic>https://sami2py.readthedocs.io</italic>
</ext-link>.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s6">
<title>Data availability statement</title>
<p>The data sets generated for the figures in this study can be found at zenodo: <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.5281/zenodo.7182786">https://doi.org/10.5281/zenodo.7182786</ext-link>.</p>
</sec>
<sec id="s7">
<title>Author contributions</title>
<p>JK and JS wrote the <italic>Python</italic> interface to SAMI2, as well as modified the FORTRAN code. JH is the original author (with Dr. Glenn Joyce) of the FORTRAN SAMI2 code. AB contributed to overall design and interface of the code, as well as the integration into the pysat ecosystem. JK wrote the first draft of the manuscript. JS and AH wrote sections of the manuscript. All authors contributed to manuscript revision, read, and approved the submitted version.</p>
</sec>
<sec id="s8">
<title>Funding</title>
<p>JK and AH are supported by the Space Precipitation Impacts project at Goddard Space Flight Center through the Heliophysics Internal Science Funding Model. JS is supported by NASA NNH20ZDA001N-NASA. The research of JH was supported by NSF (AGS-1931415). AB is supported by the Office of Naval Research. This work uses the SAMI2 ionosphere model written and developed at the Naval Research Laboratory. The <italic>sami2py Python</italic> model is freely available to the community at <ext-link ext-link-type="uri" xlink:href="http://www.github.com/sami2py/sami2py">
<italic>www.github.com/sami2py/sami2py</italic>
</ext-link>.</p>
</sec>
<sec sec-type="COI-statement" id="s9">
<title>Conflict of interest</title>
<p>Author JH was employed by company Syntek Technologies Inc..</p>
<p>The remaining authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="disclaimer" id="s10">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Annex</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Alterman</surname>
<given-names>B. L.</given-names>
</name>
<name>
<surname>Azari</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Barnes</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Bobra</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Cecconi</surname>
<given-names>B.</given-names>
</name>
<etal/>
</person-group> (<year>2018</year>). <source>Python in heliophysics community (pyhc) standards (v1.0)</source>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.5281/zenodo.2529131">https://doi.org/10.5281/zenodo.2529131</ext-link>
</comment>
</citation>
</ref>
<ref id="B2">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Backus</surname>
<given-names>J. W.</given-names>
</name>
<name>
<surname>Heising</surname>
<given-names>W. P.</given-names>
</name>
</person-group> (<year>1964</year>). <article-title>Fortran</article-title>. <source>IEEE Trans. Electron. Comput.</source> <volume>13</volume> (<issue>4</issue>), <fpage>382</fpage>&#x2013;<lpage>385</lpage>. <pub-id pub-id-type="doi">10.1109/pgec.1964.263818</pub-id>
</citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Burrell</surname>
<given-names>A. G.</given-names>
</name>
<name>
<surname>Halford</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Klenzing</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Stoneback</surname>
<given-names>R. A.</given-names>
</name>
<name>
<surname>Morley</surname>
<given-names>S. K.</given-names>
</name>
<name>
<surname>Annex</surname>
<given-names>A. M.</given-names>
</name>
<etal/>
</person-group> (<year>2018</year>). <article-title>Snakes on a spaceship&#x2014;An overview of python in heliophysics</article-title>. <source>J. Geophys. Res. Space Phys.</source> <volume>123</volume> (<issue>1210384&#x2013;10</issue>), <fpage>402</fpage>. <pub-id pub-id-type="doi">10.1029/2018ja025877</pub-id>
</citation>
</ref>
<ref id="B4">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Burrell</surname>
<given-names>A. G.</given-names>
</name>
<name>
<surname>Klenzing</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Stoneback</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2022</year>). <source>pysat/pysatModels: v0.1.0 Release (v0.1.0)</source> <publisher-name>Zenodo</publisher-name>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.5281/zenodo.6567105">https://doi.org/10.5281/zenodo.6567105</ext-link>
</comment>.</citation>
</ref>
<ref id="B5">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Caswell</surname>
<given-names>T. A.</given-names>
</name>
<name>
<surname>Mueller</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Granger</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Munk</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Gommers</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Haberland</surname>
<given-names>M.</given-names>
</name>
<etal/>
</person-group> (<year>2019</year>). <source>Nep 29&#x2013;recommend python and numpy version support as a community policy standard</source>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="https://numpy.org/neps/nep-0029-deprecation_policy.html">https://numpy.org/neps/nep-0029-deprecation_policy.html</ext-link>
</comment>
</citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Cid</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Guerrero</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Saiz</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Halford</surname>
<given-names>A. J.</given-names>
</name>
<name>
<surname>Kellerman</surname>
<given-names>A. C.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Developing the ldi and lci geomagnetic indices, an example of application of the auls framework</article-title>. <source>Space weather.</source> <volume>18</volume>, <fpage>e2019SW002171</fpage>. <pub-id pub-id-type="doi">10.1029/2019sw002171</pub-id>
</citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Drob</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Emmert</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Meriwether</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Makela</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Doornbos</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Conde</surname>
<given-names>M.</given-names>
</name>
<etal/>
</person-group> (<year>2015</year>). <article-title>An update to the horizontal wind model (hwm): The quiet time thermosphere</article-title>. <source>Earth Space Sci.</source> <volume>2</volume> (<issue>7</issue>), <fpage>301</fpage>&#x2013;<lpage>319</lpage>. <pub-id pub-id-type="doi">10.1002/2014ea000089</pub-id>
</citation>
</ref>
<ref id="B8">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Drob</surname>
<given-names>D. P.</given-names>
</name>
<name>
<surname>Emmert</surname>
<given-names>J. T.</given-names>
</name>
<name>
<surname>Crowley</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Picone</surname>
<given-names>J. M.</given-names>
</name>
<name>
<surname>Shepherd</surname>
<given-names>G. G.</given-names>
</name>
<name>
<surname>Skinner</surname>
<given-names>W.</given-names>
</name>
<etal/>
</person-group> (<year>2008</year>). <article-title>An empirical model of the earth&#x2019;s horizontal wind fields: Hwm07</article-title>. <source>J. Geophys. Res.</source> <volume>113</volume> (<issue>A12</issue>), <fpage>A12304</fpage>. <pub-id pub-id-type="doi">10.1029/2008ja013668</pub-id>
</citation>
</ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Emmert</surname>
<given-names>J. T.</given-names>
</name>
<name>
<surname>Lean</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Picone</surname>
<given-names>J. M.</given-names>
</name>
</person-group> (<year>2010</year>). <article-title>Record-low thermospheric density during the 2008 solar minimum</article-title>. <source>Geophys. Res. Lett.</source> <volume>37</volume>. <pub-id pub-id-type="doi">10.1029/2010gl043671</pub-id>
</citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>England</surname>
<given-names>S. L.</given-names>
</name>
<name>
<surname>Immel</surname>
<given-names>T. J.</given-names>
</name>
<name>
<surname>Huba</surname>
<given-names>J. D.</given-names>
</name>
</person-group> (<year>2008</year>). <article-title>Modeling the longitudinal variation in the post-sunset far-ultraviolet oi airglow using the Sami2 model</article-title>. <source>J. Geophys. Res.</source> <volume>113</volume> (<issue>A1</issue>). <pub-id pub-id-type="doi">10.1029/2007ja012536</pub-id>
</citation>
</ref>
<ref id="B11">
<citation citation-type="book">
<collab>gfortran team</collab> (<year>2022</year>). <source>The gnu fortran compiler</source>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gfortran/">https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gfortran/</ext-link>
</comment>
</citation>
</ref>
<ref id="B12">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gil</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>David</surname>
<given-names>C. H.</given-names>
</name>
<name>
<surname>Demir</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Essawy</surname>
<given-names>B. T.</given-names>
</name>
<name>
<surname>Fulweiler</surname>
<given-names>R. W.</given-names>
</name>
<name>
<surname>Goodall</surname>
<given-names>J. L.</given-names>
</name>
<etal/>
</person-group> (<year>2016</year>). <article-title>Toward the geoscience paper of the future: Best practices for documenting and sharing research from data to software to provenance</article-title>. <source>Earth Space Sci.</source> <volume>3</volume> (<issue>10</issue>), <fpage>388</fpage>&#x2013;<lpage>415</lpage>. <pub-id pub-id-type="doi">10.1002/2015ea000136</pub-id>
</citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Haaser</surname>
<given-names>R. A.</given-names>
</name>
<name>
<surname>Earle</surname>
<given-names>G. D.</given-names>
</name>
<name>
<surname>Heelis</surname>
<given-names>R. A.</given-names>
</name>
<name>
<surname>Coley</surname>
<given-names>W. R.</given-names>
</name>
<name>
<surname>Klenzing</surname>
<given-names>J. H.</given-names>
</name>
</person-group> (<year>2010</year>). <article-title>Low-latitude measurements of neutral thermospheric helium dominance near 400 km during extreme solar minimum</article-title>. <source>J. Geophys. Res.</source> <volume>115</volume> (<issue>11</issue>), <fpage>1</fpage>&#x2013;<lpage>5</lpage>. <pub-id pub-id-type="doi">10.1029/2010ja015325</pub-id>
</citation>
</ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Halford</surname>
<given-names>A. J.</given-names>
</name>
<name>
<surname>Kellerman</surname>
<given-names>A. C.</given-names>
</name>
<name>
<surname>Garcia-Sage</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Klenzing</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Carter</surname>
<given-names>B. A.</given-names>
</name>
<name>
<surname>McGranaghan</surname>
<given-names>R. M.</given-names>
</name>
<etal/>
</person-group> (<year>2019</year>). <article-title>Application usability levels: A framework for tracking project product progress</article-title>. <source>J. Space Weather Space Clim.</source> <volume>9</volume>, <fpage>A34</fpage>. <pub-id pub-id-type="doi">10.1051/swsc/2019030</pub-id>
</citation>
</ref>
<ref id="B15">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Hedin</surname>
<given-names>A. E.</given-names>
</name>
<name>
<surname>Fleming</surname>
<given-names>E. L.</given-names>
</name>
<name>
<surname>Manson</surname>
<given-names>A. H.</given-names>
</name>
<name>
<surname>Schmidlin</surname>
<given-names>F. J.</given-names>
</name>
<name>
<surname>Avery</surname>
<given-names>S. K.</given-names>
</name>
<name>
<surname>Clark</surname>
<given-names>R. R.</given-names>
</name>
<etal/>
</person-group> (<year>1993a</year>). <article-title>Empirical wind model for the middle and lower atmosphere &#x2013; part 2: Local time variations</article-title>.&#x201d; in <source>NASA technical memorandum 104592</source>. <publisher-loc>Greenbelt, MD, United States</publisher-loc>: <publisher-name>NASA</publisher-name>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="https://ntrs.nasa.gov/citations/19940017389">https://ntrs.nasa.gov/citations/19940017389</ext-link>
</comment>
</citation>
</ref>
<ref id="B16">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Hedin</surname>
<given-names>A. E.</given-names>
</name>
<name>
<surname>Schmidlin</surname>
<given-names>F. J.</given-names>
</name>
<name>
<surname>Fleming</surname>
<given-names>E. L.</given-names>
</name>
<name>
<surname>Avery</surname>
<given-names>S. K.</given-names>
</name>
<name>
<surname>Manson</surname>
<given-names>A. H.</given-names>
</name>
<name>
<surname>Franke</surname>
<given-names>S. J.</given-names>
</name>
</person-group> (<year>1993b</year>). <source>NASA technical memorandum 104581</source>. <publisher-loc>Greenbelt, MD, United States</publisher-loc>: <publisher-name>NASA</publisher-name>. <article-title>Empirical wind model for the middle and lower atmosphere &#x2013; part 1: Local time average</article-title>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="https://ntrs.nasa.gov/citations/19930015971">https://ntrs.nasa.gov/citations/19930015971</ext-link>
</comment>
</citation>
</ref>
<ref id="B17">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Higham</surname>
<given-names>D. J.</given-names>
</name>
<name>
<surname>Higham</surname>
<given-names>N. J.</given-names>
</name>
</person-group> (<year>2016</year>). <source>MATLAB guide</source>, <volume>Vol. 150</volume>. <publisher-loc>Philadelphia, PA, United States</publisher-loc>: <publisher-name>Society for Industrial and Applied Mathematics</publisher-name>.</citation>
</ref>
<ref id="B18">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hoyer</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Hamman</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>xarray: N-d labeled arrays and datasets in python</article-title>. <source>J. Open Res. Softw.</source> <volume>5</volume>, <fpage>10</fpage>. <pub-id pub-id-type="doi">10.5334/jors.148</pub-id>
</citation>
</ref>
<ref id="B19">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Huba</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2003</year>). <source>A tutorial on hall magnetohydrodynamics</source>. <article-title>Space Plasma Simulation</article-title>. <comment>Lecture Notes in Physics</comment>, <volume>Vol. 615</volume>. <publisher-loc>Heidelberg</publisher-loc>: <publisher-name>Springer</publisher-name>. <comment>
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1007/3-540-36530-3_9">https://doi.org/10.1007/3-540-36530-3_9</ext-link>
</comment>
</citation>
</ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Huba</surname>
<given-names>J. D.</given-names>
</name>
<name>
<surname>Joyce</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Fedder</surname>
<given-names>J. A.</given-names>
</name>
</person-group> (<year>2000</year>). <article-title>Sami2 is another model of the ionosphere (Sami2): A new low-latitude ionosphere model</article-title>. <source>J. Geophys. Res.</source> <volume>105</volume> (<issue>A10</issue>), <fpage>23035</fpage>&#x2013;<lpage>23053</lpage>. <pub-id pub-id-type="doi">10.1029/2000ja000035</pub-id>
</citation>
</ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Klenzing</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Burrell</surname>
<given-names>A. G.</given-names>
</name>
<name>
<surname>Heelis</surname>
<given-names>R. A.</given-names>
</name>
<name>
<surname>Huba</surname>
<given-names>J. D.</given-names>
</name>
<name>
<surname>Pfaff</surname>
<given-names>R. F.</given-names>
</name>
<name>
<surname>Sim&#xf5;es</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2013</year>). <article-title>Exploring the role of ionospheric drivers during the extreme solar minimum of 2008</article-title>. <source>Ann. Geophys.</source> <volume>31</volume> (<issue>12</issue>), <fpage>2147</fpage>&#x2013;<lpage>2156</lpage>. <pub-id pub-id-type="doi">10.5194/angeo-31-2147-2013</pub-id>
</citation>
</ref>
<ref id="B22">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Klenzing</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Smith</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Hirsch</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2019</year>). <source>sami2py/sami2py: Version 0.2.0 &#x2013; Support for xarray (v0.2.0).</source> <publisher-name>Zenodo</publisher-name>. <comment>
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.5281/zenodo.3581453">https://doi.org/10.5281/zenodo.3581453</ext-link>
</comment>
</citation>
</ref>
<ref id="B23">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Klenzing</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Smith</surname>
<given-names>J. M.</given-names>
</name>
<name>
<surname>Burrell</surname>
<given-names>A. G.</given-names>
</name>
<name>
<surname>Kitano</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Hirsch</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2022</year>). <source>sami2py/sami2py: v0.3.0 (v0.3.0)</source>. <publisher-name>Zenodo</publisher-name>. <comment>
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.5281/zenodo.7277517">https://doi.org/10.5281/zenodo.7277517</ext-link>
</comment>
</citation>
</ref>
<ref id="B24">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Klenzing</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Smith</surname>
<given-names>J. M.</given-names>
</name>
<name>
<surname>Kitano</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Hirsch</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Burrell</surname>
<given-names>A. G.</given-names>
</name>
</person-group>, (<year>2021</year>). <source>sami2py/sami2py: Version 0.2.5 (v0.2.5)</source>. <publisher-name>Zenodo</publisher-name>. <comment>
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.5281/zenodo.5575825">https://doi.org/10.5281/zenodo.5575825</ext-link>
</comment>
</citation>
</ref>
<ref id="B25">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Krall</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Huba</surname>
<given-names>J. D.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Simulation of counterstreaming h&#x2b; outflows during plasmasphere refilling</article-title>. <source>Geophys. Res. Lett.</source> <volume>46</volume> (<issue>6</issue>), <fpage>3052</fpage>&#x2013;<lpage>3060</lpage>. <pub-id pub-id-type="doi">10.1029/2019gl082130</pub-id>
</citation>
</ref>
<ref id="B26">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Martinis</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Daniell</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Eastes</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Norrell</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Smith</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Klenzing</surname>
<given-names>J.</given-names>
</name>
<etal/>
</person-group> (<year>2021</year>). <article-title>Longitudinal variation of post-sunset plasma depletions from the global-scale observations of the limb and disk (gold) mission</article-title>. <source>JGR. Space Phys.</source> <volume>6</volume> (<issue>2</issue>), <fpage>1</fpage>&#x2013;<lpage>10</lpage>. <pub-id pub-id-type="doi">10.1029/2020ja028510</pub-id>
</citation>
</ref>
<ref id="B27">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Otsuka</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Shinbori</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Sori</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Tsugawa</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Nishioka</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Huba</surname>
<given-names>J. D.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Plasma depletions lasting into daytime during the recovery phase of a geomagnetic storm in may 2017: Analysis and simulation of gps total electron content observations</article-title>. <source>Earth Planet. Phys.</source> <volume>5</volume> (<issue>5</issue>), <fpage>1</fpage>&#x2013;<lpage>8</lpage>. <pub-id pub-id-type="doi">10.26464/epp2021046</pub-id>
</citation>
</ref>
<ref id="B28">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Picone</surname>
<given-names>J. M.</given-names>
</name>
<name>
<surname>Hedin</surname>
<given-names>A. E.</given-names>
</name>
<name>
<surname>Drob</surname>
<given-names>D. P.</given-names>
</name>
<name>
<surname>Aikin</surname>
<given-names>A. C.</given-names>
</name>
</person-group> (<year>2002</year>). <article-title>NRLMSISE-00 empirical model of the atmosphere: Statistical comparisons and scientific issues</article-title>. <source>J. Geophys. Res.</source> <volume>107</volume> (<issue>A12</issue>), <fpage>SIA 15-21</fpage>&#x2013;<lpage>SIA 15-16</lpage>. <comment>SIA 15&#x2013;16</comment>. <pub-id pub-id-type="doi">10.1029/2002ja009430</pub-id>
</citation>
</ref>
<ref id="B29">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Richards</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Fennelly</surname>
<given-names>J. A.</given-names>
</name>
<name>
<surname>Torr</surname>
<given-names>D. G.</given-names>
</name>
</person-group> (<year>1994</year>). <article-title>Euvac - a solar euv flux model for aeronomic calculations</article-title>. <source>J. Geophys. Res.</source> <volume>99</volume> (<issue>A5</issue>), <fpage>8981</fpage>&#x2013;<lpage>8992</lpage>. <pub-id pub-id-type="doi">10.1029/94ja00518</pub-id>
</citation>
</ref>
<ref id="B30">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Scherliess</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Fejer</surname>
<given-names>B. G.</given-names>
</name>
</person-group> (<year>1999</year>). <article-title>Radar and satellite global equatorial f region vertical drift model</article-title>. <source>J. Geophys. Res.</source> <volume>104</volume> (<issue>A4</issue>), <fpage>6829</fpage>&#x2013;<lpage>6842</lpage>. <pub-id pub-id-type="doi">10.1029/1999ja900025</pub-id>
</citation>
</ref>
<ref id="B31">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Smith</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Klenzing</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2020</year>). <source>JonathonMSmith/growin: Beta (0.1-beta.1)</source> <publisher-name>Zenodo</publisher-name>. <comment>
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.5281/zenodo.3678866">https://doi.org/10.5281/zenodo.3678866</ext-link>
</comment>
</citation>
</ref>
<ref id="B32">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Smith</surname>
<given-names>J. M.</given-names>
</name>
<name>
<surname>Klenzing</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Growin: Modeling ionospheric instability growth rates</article-title>. <source>J. Space Weather Space Clim.</source> <volume>12</volume>, <fpage>26</fpage>. <pub-id pub-id-type="doi">10.1051/swsc/2022021</pub-id>
</citation>
</ref>
<ref id="B33">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Solomon</surname>
<given-names>S. C.</given-names>
</name>
<name>
<surname>Woods</surname>
<given-names>T. N.</given-names>
</name>
<name>
<surname>Didkovsky</surname>
<given-names>L. V.</given-names>
</name>
<name>
<surname>Emmert</surname>
<given-names>J. T.</given-names>
</name>
<name>
<surname>Qian</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2010</year>). <article-title>Anomalously low solar extreme-ultraviolet irradiance and thermospheric density during solar minimum</article-title>. <source>Geophys. Res. Lett.</source> <volume>37</volume> (<issue>16</issue>), <fpage>1</fpage>&#x2013;<lpage>5</lpage>. <pub-id pub-id-type="doi">10.1029/2010gl044468</pub-id>
</citation>
</ref>
<ref id="B34">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Stoneback</surname>
<given-names>R. A.</given-names>
</name>
<name>
<surname>Burrell</surname>
<given-names>A. G.</given-names>
</name>
<name>
<surname>Klenzing</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Depew</surname>
<given-names>M. D.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Pysat: Python satellite data analysis toolkit</article-title>. <source>JGR. Space Phys.</source> <volume>123</volume> (<issue>6</issue>), <fpage>5271</fpage>&#x2013;<lpage>5283</lpage>. <pub-id pub-id-type="doi">10.1029/2018ja025297</pub-id>
</citation>
</ref>
<ref id="B35">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Van Rossum</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Drake</surname>
<given-names>F. L.</given-names>
</name>
</person-group> (<year>2009</year>). <source>Python 3 reference manual</source>. <publisher-loc>Scotts Valley, CA</publisher-loc>: <publisher-name>CreateSpace</publisher-name>.</citation>
</ref>
<ref id="B36">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Varney</surname>
<given-names>R. H.</given-names>
</name>
<name>
<surname>Swartz</surname>
<given-names>W. E.</given-names>
</name>
<name>
<surname>Hysell</surname>
<given-names>D. L.</given-names>
</name>
<name>
<surname>Huba</surname>
<given-names>J. D.</given-names>
</name>
</person-group> (<year>2012</year>). <article-title>Sami2-pe: A model of the ionosphere including multistream interhemispheric photoelectron transport</article-title>. <source>J. Geophys. Res.</source> <volume>117</volume> (<issue>A6</issue>), <fpage>7280</fpage>. <pub-id pub-id-type="doi">10.1029/2011ja017280</pub-id>
</citation>
</ref>
<ref id="B37">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Whitaker</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Khrulev</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Huard</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Paulik</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Hoyer</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>FilipePastewka</surname>
<given-names>L.</given-names>
</name>
<etal/>
</person-group> (<year>2020</year>). <source>Unidata/netcdf4-python: version 1.5.5 release (v1.5.5rel2)</source> <publisher-name>Zenodo</publisher-name>. <comment>
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.5281/zenodo.4308773">https://doi.org/10.5281/zenodo.4308773</ext-link>
</comment>
</citation>
</ref>
<ref id="B38">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhan</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Rodrigues</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>June solstice equatorial spread f in the American sector: A numerical assessment of linear stability aided by incoherent scatter radar measurements</article-title>. <source>JGR. Space Phys.</source> <volume>123</volume> (<issue>1</issue>), <fpage>755</fpage>&#x2013;<lpage>767</lpage>. <pub-id pub-id-type="doi">10.1002/2017ja024969</pub-id>
</citation>
</ref>
</ref-list>
</back>
</article>