<divclass="fragment"><divclass="line"><aname="l00001"></a><spanclass="lineno"> 1</span> <spanclass="comment">// Copyright 2020, the Aether Development Team (see doc/dev_team.md for members)</span></div>
<divclass="line"><aname="l00002"></a><spanclass="lineno"> 2</span> <spanclass="comment">// Full license can be found in License.md</span></div>
<divclass="line"><aname="l00012"></a><spanclass="lineno"> 12</span> <spanclass="comment"> * The Euv class defines the EUV environment above the atmosphere. It</span></div>
<divclass="line"><aname="l00013"></a><spanclass="lineno"> 13</span> <spanclass="comment"> * does this through the use of a CSV file that contains a bunch of</span></div>
<divclass="line"><aname="l00015"></a><spanclass="lineno"> 15</span> <spanclass="comment"> * - Upper and lower wavelengths of bins in the EUV spectrum</span></div>
<divclass="line"><aname="l00016"></a><spanclass="lineno"> 16</span> <spanclass="comment"> * - How to relate the wavelengths to brightness (using a model like EUVAC)</span></div>
<divclass="line"><aname="l00017"></a><spanclass="lineno"> 17</span> <spanclass="comment"> * - Absorption, ionization, and dissociation cross sections for species</span></div>
<divclass="line"><aname="l00081"></a><spanclass="lineno"> 81</span> <spanclass="comment"> \brief Initialize the Euv class</span></div>
<divclass="line"><aname="l00082"></a><spanclass="lineno"> 82</span> <spanclass="comment"> \param input info about how user has configured things</span></div>
<divclass="line"><aname="l00083"></a><spanclass="lineno"><aclass="line" href="classEuv.html#adb11fb159e6d16cd9e3abe98a2b6de98"> 83</a></span> <spanclass="comment"> \param report allow reporting to occur</span></div>
<divclass="line"><aname="l00088"></a><spanclass="lineno"> 88</span> <spanclass="comment"> \brief Compute the EUV spectrum given F107 and F107a</span></div>
<divclass="line"><aname="l00089"></a><spanclass="lineno"><aclass="line" href="classEuv.html#a5a75e039023db8654020eececb37ff4c"> 89</a></span> <spanclass="comment"> \param time The times within the model (dt is needed)</span></div>
<divclass="line"><aname="l00090"></a><spanclass="lineno"> 90</span> <spanclass="comment"> \param indices Need the F107 and F107a</span></div>
<divclass="line"><aname="l00091"></a><spanclass="lineno"><aclass="line" href="classEuv.html#a6f59e3b491618b9021d16d8b78821f84"> 91</a></span> <spanclass="comment"> \param report allow reporting to occur</span></div>
<divclass="line"><aname="l00096"></a><spanclass="lineno"> 96</span> <spanclass="comment"> \brief Scale the EUV spectrum given the star - planet distance</span></div>
<divclass="line"><aname="l00097"></a><spanclass="lineno"> 97</span> <spanclass="comment"> \param planet needed to compute the star - planet distance</span></div>
<divclass="line"><aname="l00098"></a><spanclass="lineno"> 98</span> <spanclass="comment"> \param time Needed to compute orbital position around star</span></div>
<divclass="line"><aname="l00099"></a><spanclass="lineno"> 99</span> <spanclass="comment"> \param report allow reporting to occur</span></div>
<divclass="line"><aname="l00104"></a><spanclass="lineno"> 104</span> <spanclass="comment"> \brief Pairs rows in the EUV CSV file with neutral and ions</span></div>
<divclass="line"><aname="l00106"></a><spanclass="lineno"> 106</span> <spanclass="comment"> Reads through each row in the EUV CSV file and figures out whether</span></div>
<divclass="line"><aname="l00107"></a><spanclass="lineno"> 107</span> <spanclass="comment"> the row is abs, ion, diss, and then figures out which neutral it is</span></div>
<divclass="line"><aname="l00108"></a><spanclass="lineno"> 108</span> <spanclass="comment"> acting on and which neutral or ion results from the action </span></div>
<divclass="line"><aname="l00109"></a><spanclass="lineno"> 109</span> <spanclass="comment"> (e.g. O + photon -> O+, identifies O as ionization "loss" and</span></div>
<divclass="line"><aname="l00110"></a><spanclass="lineno"> 110</span> <spanclass="comment"> O+ as an ionization "source")</span></div>
<divclass="line"><aname="l00112"></a><spanclass="lineno"> 112</span> <spanclass="comment"> \param neutrals Needs names of the neutrals, stores lines in Neutrals</span></div>
<divclass="line"><aname="l00113"></a><spanclass="lineno"> 113</span> <spanclass="comment"> \param ions Needs names of the ions</span></div>
<divclass="line"><aname="l00114"></a><spanclass="lineno"> 114</span> <spanclass="comment"> \param report allow reporting to occur</span></div>
<divclass="line"><aname="l00123"></a><spanclass="lineno"> 123</span> <spanclass="comment"> Read in the EUV CSV file that describes all of the wavelengths and</span></div>
<divclass="line"><aname="l00124"></a><spanclass="lineno"> 124</span> <spanclass="comment"> cross sections (and any other EUV - related things that are a </span></div>
<divclass="line"><aname="l00125"></a><spanclass="lineno"> 125</span> <spanclass="comment"> function of wavelength)</span></div>
<divclass="line"><aname="l00127"></a><spanclass="lineno"> 127</span> <spanclass="comment"> \param input info about how user has configured things</span></div>
<divclass="line"><aname="l00128"></a><spanclass="lineno"> 128</span> <spanclass="comment"> \param report allow reporting to occur</span></div>
<divclass="line"><aname="l00133"></a><spanclass="lineno"> 133</span> <spanclass="comment"> \brief Interprets the EUV CSV rows and returns the relevant row</span></div>
<divclass="line"><aname="l00135"></a><spanclass="lineno"> 135</span> <spanclass="comment"> Find the correct row in the EUV CSV file information, and return</span></div>
<divclass="line"><aname="l00136"></a><spanclass="lineno"> 136</span> <spanclass="comment"> the values in that row.</span></div>
<divclass="line"><aname="l00138"></a><spanclass="lineno"> 138</span> <spanclass="comment"> \param item The string value to search for in the first column</span></div>
<divclass="line"><aname="l00139"></a><spanclass="lineno"> 139</span> <spanclass="comment"> \param item2 If not blank, the string value to search for in the 2nd col.</span></div>
<divclass="line"><aname="l00140"></a><spanclass="lineno"> 140</span> <spanclass="comment"> \return values The values in the CSV row that matches the item (and item2) </span></div>
<divclass="line"><aname="l00141"></a><spanclass="lineno"> 141</span> <spanclass="comment"> \param report Allow reporting to occur</span></div>
<divclass="ttc" id="aclassEuv_html_a0c0da767a3795d1ff105dd731151ded2"><divclass="ttname"><ahref="classEuv.html#a0c0da767a3795d1ff105dd731151ded2">Euv::wavelengths_energy</a></div><divclass="ttdeci">std::vector< float > wavelengths_energy</div><divclass="ttdoc">EUV Spectrum, energy of bin:</div><divclass="ttdef"><b>Definition:</b> euv.h:80</div></div>
<divclass="ttc" id="aclassEuv_html_a5a75e039023db8654020eececb37ff4c"><divclass="ttname"><ahref="classEuv.html#a5a75e039023db8654020eececb37ff4c">Euv::euvac_f74113</a></div><divclass="ttdeci">std::vector< float > euvac_f74113</div><divclass="ttdoc">EUVAC model linear coefficients (1):</div><divclass="ttdef"><b>Definition:</b> euv.h:89</div></div>
<divclass="ttc" id="astructEuv_1_1waveinfotype_html_a18823833ea6a7ac86617515ea10d5cfa"><divclass="ttname"><ahref="structEuv_1_1waveinfotype.html#a18823833ea6a7ac86617515ea10d5cfa">Euv::waveinfotype::note</a></div><divclass="ttdeci">std::string note</div><divclass="ttdoc">Any notes for the particular row:</div><divclass="ttdef"><b>Definition:</b> euv.h:65</div></div>
<divclass="ttc" id="aclassEuv_html_ab58c095258a9137e7fbcd31af8a133ba"><divclass="ttname"><ahref="classEuv.html#ab58c095258a9137e7fbcd31af8a133ba">Euv::wavelengths_intensity_top</a></div><divclass="ttdeci">std::vector< float > wavelengths_intensity_top</div><divclass="ttdoc">EUV Spectrum, intensity flux of each spectral bin scaled to Earth:</div><divclass="ttdef"><b>Definition:</b> euv.h:86</div></div>
<divclass="ttc" id="astructEuv_1_1waveinfotype_html_a7096dd22a30829b95099a8f3191f4c8f"><divclass="ttname"><ahref="structEuv_1_1waveinfotype.html#a7096dd22a30829b95099a8f3191f4c8f">Euv::waveinfotype::units</a></div><divclass="ttdeci">std::string units</div><divclass="ttdoc">Unit of cross-section, wavelength, etc (in the row):</div><divclass="ttdef"><b>Definition:</b> euv.h:63</div></div>
<divclass="ttc" id="aclassEuv_html_a82f06ae141b038a30d7631b9bf6b9572"><divclass="ttname"><ahref="classEuv.html#a82f06ae141b038a30d7631b9bf6b9572">Euv::nWavelengths</a></div><divclass="ttdeci">int nWavelengths</div><divclass="ttdoc">number of wavelengths in spectrum:</div><divclass="ttdef"><b>Definition:</b> euv.h:49</div></div>
<divclass="ttc" id="astructEuv_1_1waveinfotype_html"><divclass="ttname"><ahref="structEuv_1_1waveinfotype.html">Euv::waveinfotype</a></div><divclass="ttdoc">struct to describe a single line in the EUV CSV file:</div><divclass="ttdef"><b>Definition:</b> euv.h:55</div></div>
<divclass="ttc" id="astructEuv_1_1waveinfotype_html_aad15b649553394a5ee648272d9e39f8a"><divclass="ttname"><ahref="structEuv_1_1waveinfotype.html#aad15b649553394a5ee648272d9e39f8a">Euv::waveinfotype::values</a></div><divclass="ttdeci">std::vector< float > values</div><divclass="ttdoc">The actual numerical values of the cross-section/wavelength/whatever.</div><divclass="ttdef"><b>Definition:</b> euv.h:67</div></div>
<divclass="ttc" id="aclassEuv_html_a6f59e3b491618b9021d16d8b78821f84"><divclass="ttname"><ahref="classEuv.html#a6f59e3b491618b9021d16d8b78821f84">Euv::euvac_afac</a></div><divclass="ttdeci">std::vector< float > euvac_afac</div><divclass="ttdoc">EUVAC model linear coefficients (2):</div><divclass="ttdef"><b>Definition:</b> euv.h:91</div></div>
<divclass="ttc" id="astructEuv_1_1waveinfotype_html_a1abac67363991a6eb6a9b712984b6971"><divclass="ttname"><ahref="structEuv_1_1waveinfotype.html#a1abac67363991a6eb6a9b712984b6971">Euv::waveinfotype::type</a></div><divclass="ttdeci">std::string type</div><divclass="ttdoc">Type of cross-section (abs, ion, diss):</div><divclass="ttdef"><b>Definition:</b> euv.h:61</div></div>
<divclass="ttc" id="aclassEuv_html_aa28d0be6d9ed69414baa0cf391620751"><divclass="ttname"><ahref="classEuv.html#aa28d0be6d9ed69414baa0cf391620751">Euv::waveinfo</a></div><divclass="ttdeci">std::vector< waveinfotype > waveinfo</div><divclass="ttdoc">All of the information in the EUV CSV file.</div><divclass="ttdef"><b>Definition:</b> euv.h:71</div></div>
<divclass="ttc" id="aclassEuv_html_acfc888b1a3048c059a80f2432fc2e156"><divclass="ttname"><ahref="classEuv.html#acfc888b1a3048c059a80f2432fc2e156">Euv::wavelengths_long</a></div><divclass="ttdeci">std::vector< float > wavelengths_long</div><divclass="ttdoc">EUV Spectrum, upper wavelength of the bins:</div><divclass="ttdef"><b>Definition:</b> euv.h:77</div></div>
<divclass="ttc" id="astructEuv_1_1waveinfotype_html_a80397d31198fdf6b51524e3085e7e602"><divclass="ttname"><ahref="structEuv_1_1waveinfotype.html#a80397d31198fdf6b51524e3085e7e602">Euv::waveinfotype::to</a></div><divclass="ttdeci">std::string to</div><divclass="ttdoc">If a cross-section, what is species becoming:</div><divclass="ttdef"><b>Definition:</b> euv.h:59</div></div>
<divclass="ttc" id="aclassEuv_html_ac7e6053bc83d161ec4fc3a96780eef73"><divclass="ttname"><ahref="classEuv.html#ac7e6053bc83d161ec4fc3a96780eef73">Euv::wavelengths_short</a></div><divclass="ttdeci">std::vector< float > wavelengths_short</div><divclass="ttdoc">EUV Spectrum, lower wavelength of the bins:</div><divclass="ttdef"><b>Definition:</b> euv.h:74</div></div>
<divclass="ttc" id="astructEuv_1_1waveinfotype_html_af0fe683631599409b24cf26d0f0208e2"><divclass="ttname"><ahref="structEuv_1_1waveinfotype.html#af0fe683631599409b24cf26d0f0208e2">Euv::waveinfotype::name</a></div><divclass="ttdeci">std::string name</div><divclass="ttdoc">Key name of the line (describes wavelength or species acting upon):</div><divclass="ttdef"><b>Definition:</b> euv.h:57</div></div>
<divclass="ttc" id="aclassEuv_html_adb11fb159e6d16cd9e3abe98a2b6de98"><divclass="ttname"><ahref="classEuv.html#adb11fb159e6d16cd9e3abe98a2b6de98">Euv::wavelengths_intensity_1au</a></div><divclass="ttdeci">std::vector< float > wavelengths_intensity_1au</div><divclass="ttdoc">EUV Spectrum, intensity flux of each spectral bin at 1 AU:</div><divclass="ttdef"><b>Definition:</b> euv.h:83</div></div>