wind_ae 2.0.0__tar.gz → 2.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. {wind_ae-2.0.0/wind_ae.egg-info → wind_ae-2.0.2}/PKG-INFO +8 -8
  2. {wind_ae-2.0.0 → wind_ae-2.0.2}/README.md +7 -7
  3. {wind_ae-2.0.0 → wind_ae-2.0.2}/docs/conf.py +3 -2
  4. {wind_ae-2.0.0 → wind_ae-2.0.2}/pyproject.toml +1 -1
  5. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/setup.py +1 -1
  6. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/wrapper/relax_wrapper.py +14 -13
  7. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/wrapper/wrapper_utils/plots.py +7 -3
  8. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/wrapper/wrapper_utils/windsoln.py +28 -18
  9. {wind_ae-2.0.0 → wind_ae-2.0.2/wind_ae.egg-info}/PKG-INFO +8 -8
  10. {wind_ae-2.0.0 → wind_ae-2.0.2}/LICENSE +0 -0
  11. {wind_ae-2.0.0 → wind_ae-2.0.2}/MANIFEST.in +0 -0
  12. {wind_ae-2.0.0 → wind_ae-2.0.2}/setup.cfg +0 -0
  13. {wind_ae-2.0.0 → wind_ae-2.0.2}/tests/__init__.py +0 -0
  14. {wind_ae-2.0.0 → wind_ae-2.0.2}/tests/test_bcs.py +0 -0
  15. {wind_ae-2.0.0 → wind_ae-2.0.2}/tests/test_load_planet.py +0 -0
  16. {wind_ae-2.0.0 → wind_ae-2.0.2}/tests/test_metals.py +0 -0
  17. {wind_ae-2.0.0 → wind_ae-2.0.2}/tests/test_misc.py +0 -0
  18. {wind_ae-2.0.0 → wind_ae-2.0.2}/tests/test_physics.py +0 -0
  19. {wind_ae-2.0.0 → wind_ae-2.0.2}/tests/test_polish_bcs.py +0 -0
  20. {wind_ae-2.0.0 → wind_ae-2.0.2}/tests/test_ramp_to.py +0 -0
  21. {wind_ae-2.0.0 → wind_ae-2.0.2}/tests/test_run_wind.py +0 -0
  22. {wind_ae-2.0.0 → wind_ae-2.0.2}/tests/test_spectrum.py +0 -0
  23. {wind_ae-2.0.0 → wind_ae-2.0.2}/tests/test_system.py +0 -0
  24. {wind_ae-2.0.0 → wind_ae-2.0.2}/tests/test_windsoln.py +0 -0
  25. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/__init__.py +0 -0
  26. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/atoms/Lodders.dat +0 -0
  27. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/atoms/Verner.csv +0 -0
  28. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/atoms/__init__.py +0 -0
  29. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/atoms/atomic_masses.csv +0 -0
  30. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/atoms/atomic_species.py +0 -0
  31. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/atoms/atomic_table.txt +0 -0
  32. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/atoms/solarZ_mass_fracs.csv +0 -0
  33. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/planets/Ballistic.py +0 -0
  34. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/planets/__init__.py +0 -0
  35. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/planets/atmosphere.py +0 -0
  36. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/planets/insolation/euv.py +0 -0
  37. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/planets/insolation/glq_rates.py +0 -0
  38. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/planets/insolation/glq_spectrum.py +0 -0
  39. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/planets/insolation/stellar_euv.py +0 -0
  40. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/radiation/__init__.py +0 -0
  41. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/radiation/image_plane.py +0 -0
  42. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/radiation/imaging.py +0 -0
  43. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/radiation/lines/CII_1.py +0 -0
  44. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/radiation/lines/chiantiline.py +0 -0
  45. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/radiation/lines/lyman_alpha.py +0 -0
  46. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/radiation/radiative_transfer.py +0 -0
  47. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/radiation/ray_generators/relax_ray.py +0 -0
  48. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/radiation/ray_generators/yt_ray.py +0 -0
  49. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/radiation/ray_trace.py +0 -0
  50. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/radiation/rtw.py +0 -0
  51. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/stars/__init__.py +0 -0
  52. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/stars/classification/mass_classification.py +0 -0
  53. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/stars/relations/colour_relation.py +0 -0
  54. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/stars/relations/colour_relation_models/Mamajek2008.py +0 -0
  55. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/stars/relations/mass_relation.py +0 -0
  56. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/stars/relations/mass_relation_models/Eker2018.py +0 -0
  57. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/stars/relations/temperature_relation.py +0 -0
  58. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/stars/relations/temperature_relation_models/Ballesteros2012.py +0 -0
  59. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/stars/relations/temperature_relation_models/Sung2013.py +0 -0
  60. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/stars/spectrum/black_body.py +0 -0
  61. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/stars/spectrum/high_energy.py +0 -0
  62. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/stars/spectrum/high_energy_models/Chadney2015.py +0 -0
  63. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/stars/spectrum/high_energy_models/Jackson2012.py +0 -0
  64. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/stars/spectrum/high_energy_models/Linsky2014.py +0 -0
  65. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/stars/spectrum/high_energy_models/SanzForcada2011.py +0 -0
  66. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/stars/spectrum/high_energy_models/Tu2015.py +0 -0
  67. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/stars/spectrum/high_energy_models/Wright2018.py +0 -0
  68. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/stars/spectrum/lisird.py +0 -0
  69. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/stars/spectrum/phoenix.py +0 -0
  70. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/stars/winds/isentropic.py +0 -0
  71. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/stars/winds/polytropic.py +0 -0
  72. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/utils/__init__.py +0 -0
  73. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/utils/constants.py +0 -0
  74. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/utils/data_download.py +0 -0
  75. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/utils/fetch_core_data.py +0 -0
  76. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/McAstro/utils/timedate.py +0 -0
  77. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/__init__.py +0 -0
  78. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/bin/relaxed_ae +0 -0
  79. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/inputs/add_params.inp +0 -0
  80. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/inputs/bcs.inp +0 -0
  81. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/inputs/goal_spectrum.inp +0 -0
  82. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/inputs/guess.inp +0 -0
  83. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/inputs/phys_params.inp +0 -0
  84. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/inputs/planet_params.inp +0 -0
  85. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/inputs/spectrum.inp +0 -0
  86. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/inputs/tech_params.inp +0 -0
  87. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/inputs/term_ind.inp +0 -0
  88. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/saves/temp.csv +0 -0
  89. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/saves/test.csv +0 -0
  90. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/saves/test_easy_output.csv +0 -0
  91. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/saves/test_save.csv +0 -0
  92. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/saves/windsoln.csv +0 -0
  93. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/src/Makefile +0 -0
  94. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/src/defs-master.h +0 -0
  95. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/src/defs.h +0 -0
  96. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/src/difeq.c +0 -0
  97. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/src/globals.h +0 -0
  98. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/src/glq_rates.c +0 -0
  99. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/src/intode.c +0 -0
  100. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/src/io.c +0 -0
  101. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/src/ion_pots.h +0 -0
  102. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/src/line_cooling_coeffs.h +0 -0
  103. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/src/main.c +0 -0
  104. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/src/prototypes.h +0 -0
  105. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/src/rate_coeffs.h +0 -0
  106. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/src/recombo_vars.h +0 -0
  107. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/src/relax.c +0 -0
  108. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/src/soe.c +0 -0
  109. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/src/utils.c +0 -0
  110. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/src/wind.h +0 -0
  111. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/wrapper/__init__.py +0 -0
  112. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/wrapper/wrapper_utils/__init__.py +0 -0
  113. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/wrapper/wrapper_utils/atmosphere.py +0 -0
  114. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/wrapper/wrapper_utils/constants.py +0 -0
  115. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/wrapper/wrapper_utils/constants_compare.py +0 -0
  116. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/wrapper/wrapper_utils/dere_table29.dat +0 -0
  117. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/wrapper/wrapper_utils/inputs.py +0 -0
  118. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/wrapper/wrapper_utils/ion_pots.dat +0 -0
  119. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/wrapper/wrapper_utils/line_cooling_coeffs.dat +0 -0
  120. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/wrapper/wrapper_utils/metals.py +0 -0
  121. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/wrapper/wrapper_utils/observations.py +0 -0
  122. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/wrapper/wrapper_utils/physics.py +0 -0
  123. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/wrapper/wrapper_utils/recombo_vars.dat +0 -0
  124. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/wrapper/wrapper_utils/spectrum.py +0 -0
  125. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae/wrapper/wrapper_utils/system.py +0 -0
  126. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae.egg-info/SOURCES.txt +0 -0
  127. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae.egg-info/dependency_links.txt +0 -0
  128. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae.egg-info/requires.txt +0 -0
  129. {wind_ae-2.0.0 → wind_ae-2.0.2}/wind_ae.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wind_ae
3
- Version: 2.0.0
3
+ Version: 2.0.2
4
4
  Summary: 1D relaxation Parker wind model with metal and X-ray physics based on Murray-Clay et al. (2009)
5
5
  Author: Madelyn Broome, John McCann, Ruth Murray-Clay
6
6
  License-Expression: BSD-3-Clause
@@ -35,7 +35,7 @@ I <img src="docs/windae_logo_blue_light.png" alt="Wind-AE Logo" width="350"/>
35
35
  `Wind-AE` updates [Murray-Clay et al. (2009)](https://ui.adsabs.harvard.edu/abs/2009ApJ...693...23M/abstract) to allow for the modeling of atomic metals and multifrequency XUV stellar spectra (Broome et al. 2025). If you use `Wind-AE`, please cite [Broome et al. (2025)](https://ui.adsabs.harvard.edu/abs/2025ApJ...995..198B/abstract).
36
36
 
37
37
 
38
- Take advantage of `Notebooks/Quickstart.ipynb` to get a quick orientation to `Wind-AE` and please report any bugs via [Github](https://github.com/mabroome/wind-ae/issues) or via email to broome.astro@gmail.com.
38
+ Take advantage of `Notebooks/Quickstart.ipynb` to get a quick orientation to `Wind-AE` and please report any bugs via [Github](https://github.com/mibroome/wind-ae/issues) or via email to broome.astro@gmail.com.
39
39
 
40
40
  ![Build Status](https://github.com/mibroome/wind-ae/actions/workflows/python-pkg.yml/badge.svg)
41
41
  [![Coverage Status](https://coveralls.io/repos/github/mibroome/wind-ae/badge.svg?branch=main)](https://coveralls.io/github/mibroome/wind-ae?branch=main)
@@ -53,7 +53,7 @@ Take advantage of `Notebooks/Quickstart.ipynb` to get a quick orientation to `Wi
53
53
 
54
54
  Is Wind-AE the right tool for me?
55
55
  ----------------------
56
- `Wind-AE` is well-suited for users interested in **quickly estimating mass loss rates** or outflow structure. Outflow structure includes bulk temperature and per-species ionization fractions as a function of radius, so can be easily translated into approximating and **predicting observables and transits**, including metastable helium (He 10830$\AA$) transits, though a He transit module is not yet included. Precise modeling of lower atmosphere ($\lssim 100 \mu$bar) is considered necessary for highly accurate transit models, but Wind-AE can be easily coupled to lower atmosphere photochemistry models whose outputs can (e.g., radius, temperature, abundances, ionization fractions, etc. at 1 $\mu$bar) can be fed into Wind-AE as inputs.
56
+ `Wind-AE` is well-suited for users interested in **quickly estimating mass loss rates** or outflow structure. Outflow structure includes bulk temperature and per-species ionization fractions as a function of radius, so can be easily translated into approximating and **predicting observables and transits**, including metastable helium (He 10830 Å) transits, though a He transit module is not yet included. Precise modeling of lower atmosphere (< ~100 $\mu$bar) is considered necessary for highly accurate transit models, but Wind-AE can be easily coupled to lower atmosphere photochemistry models whose outputs can (e.g., radius, temperature, abundances, ionization fractions, etc. at 1 $\mu$bar) can be fed into Wind-AE as inputs.
57
57
 
58
58
  >*If you are interested in outflow structure:* Past the Coriolis turning radius (a few planetary radii) 3D physics dominates, so `Wind-AE` does not integrate past that point. `Wind-AE` also makes simplifying assumptions about the region below the region below the wind-launch radius (~10 nanobars).
59
59
 
@@ -64,11 +64,11 @@ Because `Wind-AE` runs on the order of seconds to minutes, it can be (and has be
64
64
  - Multiple ionization states of the same species (e.g., simultaneously tracking C I and C II as a linked ionization chain)
65
65
  - X-ray physics (secondary ionizations and K-shell ionization cross-sections for relevant metals)
66
66
  - Both low and high stellar XUV flux
67
- - **Heating & Cooling**: Ionization heating, bolometric heating & cooling (negligible in wind), PdV cooling (work done due to expansion of gas), radiative / atomic line cooling (Lyman-$\alpha$; O, C, Fe, Mg, Ca, and Ne lines), recombination cooling, free-free (bremsstrahlung) cooling, and, optionally, self-consistent conductive cooling (see note below)
67
+ - **Heating & Cooling**: Ionization heating, bolometric heating & cooling (negligible in wind), PdV cooling (work done due to expansion of gas), radiative / atomic line cooling (Lyman-alpha; O, C, Fe, Mg, Ca, and Ne lines), recombination cooling, free-free (bremsstrahlung) cooling, and, optionally, self-consistent conductive cooling (see note below)
68
68
  #### `Wind-AE` does not (currently) include:
69
69
  - **Magnetic fields**
70
70
  - **Time dependence**
71
- - **Diffusion/drag** - the atomic species set by the user are assumed to be entrained in the outflow and in thermal equilibrium. This is an appropriate assumption for species below the [crossover mass](https://ui.adsabs.harvard.edu/abs/1987Icar...69..532H) and a warning will be raised.
71
+ - **Fractionation/diffusion/drag** - the atomic species set by the user are assumed to be entrained in the outflow and in thermal equilibrium. This is an appropriate assumption for species below the [crossover mass](https://ui.adsabs.harvard.edu/abs/1987Icar...69..532H) and a warning will be raised.
72
72
  - **Heating & Cooling**: H3+ line cooling (not planned)
73
73
 
74
74
  > **Note (v2.0+):** Conductive, recombination, and free-free cooling are each independently toggleable via flags. Turning on conduction (`sim.turn_on_conduction()`) introduces numerically stiff ODEs and should only be done after all other ramping is complete. The temperature dependence of free-free and recombination cooling can make ramping to higher metallicities numerically unstable — if so, try ramping with them off and turning them back on afterwards.
@@ -85,7 +85,7 @@ See [Broome et al. (2025)](https://ui.adsabs.harvard.edu/abs/2025ApJ...995..198B
85
85
  - Just want a grid of mass loss rates for pure-Hydrogen, low-flux-EUV-irradiated planets? See [Kubyshkina & Fossati](https://ui.adsabs.harvard.edu/abs/2021RNAAS...5...74K/abstract)
86
86
  - Want a grid of mass loss rates for pure-Hydrogen, high-flux-XUV-irradiated planets? See [Owen & Jackson (2012)](https://ui.adsabs.harvard.edu/abs/2012MNRAS.425.2931O/abstract)
87
87
 
88
- >Want your model added to this list or to update the short bio? Email mabroome@ucsc.edu
88
+ >Want your model added to this list or to update the short bio? Email broome.astro@gmail.com
89
89
 
90
90
  Requirements
91
91
  ------------
@@ -199,8 +199,8 @@ sim.ramp_molecular_erfc(v_drop=erf_loc, rate=erf_rate)
199
199
  - **(v2.0)** Ramping to high metallicity with recombination and/or free-free cooling on can be numerically unstable in some cases — see the cooling-flags note above.
200
200
 
201
201
  --------
202
- ### Check out the [open issues](https://github.com/mabroome/wind-ae/issues).
202
+ ### Check out the [open issues](https://github.com/mibroome/wind-ae/issues).
203
203
 
204
204
  --------
205
205
  ## AI Use Statement
206
- We used Claude web (primarily model Sonnet 5.0) in `Wind-AE`'s v2.0 development to assist with refactoring `Wind-AE` for runtime improvements, with the implementation of the conductive cooling scheme in the code, and updating the docs for v2.0 release. All scientific content, methodology, and interpretations are the authors' own. The authors have reviewed and verified all code, outputs, and text, and take full responsibility for the integrity and accuracy of the work.
206
+ Claude web (primarily model Sonnet 5.0) was used in `Wind-AE`'s v2.0 development to assist with refactoring `Wind-AE` for runtime improvements, with the implementation of the conductive cooling scheme in the code, and updating the docs for v2.0 release. All scientific content, methodology, and interpretations are the authors' own. The authors have reviewed and verified all code, outputs, and text, and take full responsibility for the integrity and accuracy of the work.
@@ -8,7 +8,7 @@ I <img src="docs/windae_logo_blue_light.png" alt="Wind-AE Logo" width="350"/>
8
8
  `Wind-AE` updates [Murray-Clay et al. (2009)](https://ui.adsabs.harvard.edu/abs/2009ApJ...693...23M/abstract) to allow for the modeling of atomic metals and multifrequency XUV stellar spectra (Broome et al. 2025). If you use `Wind-AE`, please cite [Broome et al. (2025)](https://ui.adsabs.harvard.edu/abs/2025ApJ...995..198B/abstract).
9
9
 
10
10
 
11
- Take advantage of `Notebooks/Quickstart.ipynb` to get a quick orientation to `Wind-AE` and please report any bugs via [Github](https://github.com/mabroome/wind-ae/issues) or via email to broome.astro@gmail.com.
11
+ Take advantage of `Notebooks/Quickstart.ipynb` to get a quick orientation to `Wind-AE` and please report any bugs via [Github](https://github.com/mibroome/wind-ae/issues) or via email to broome.astro@gmail.com.
12
12
 
13
13
  ![Build Status](https://github.com/mibroome/wind-ae/actions/workflows/python-pkg.yml/badge.svg)
14
14
  [![Coverage Status](https://coveralls.io/repos/github/mibroome/wind-ae/badge.svg?branch=main)](https://coveralls.io/github/mibroome/wind-ae?branch=main)
@@ -26,7 +26,7 @@ Take advantage of `Notebooks/Quickstart.ipynb` to get a quick orientation to `Wi
26
26
 
27
27
  Is Wind-AE the right tool for me?
28
28
  ----------------------
29
- `Wind-AE` is well-suited for users interested in **quickly estimating mass loss rates** or outflow structure. Outflow structure includes bulk temperature and per-species ionization fractions as a function of radius, so can be easily translated into approximating and **predicting observables and transits**, including metastable helium (He 10830$\AA$) transits, though a He transit module is not yet included. Precise modeling of lower atmosphere ($\lssim 100 \mu$bar) is considered necessary for highly accurate transit models, but Wind-AE can be easily coupled to lower atmosphere photochemistry models whose outputs can (e.g., radius, temperature, abundances, ionization fractions, etc. at 1 $\mu$bar) can be fed into Wind-AE as inputs.
29
+ `Wind-AE` is well-suited for users interested in **quickly estimating mass loss rates** or outflow structure. Outflow structure includes bulk temperature and per-species ionization fractions as a function of radius, so can be easily translated into approximating and **predicting observables and transits**, including metastable helium (He 10830 Å) transits, though a He transit module is not yet included. Precise modeling of lower atmosphere (< ~100 $\mu$bar) is considered necessary for highly accurate transit models, but Wind-AE can be easily coupled to lower atmosphere photochemistry models whose outputs can (e.g., radius, temperature, abundances, ionization fractions, etc. at 1 $\mu$bar) can be fed into Wind-AE as inputs.
30
30
 
31
31
  >*If you are interested in outflow structure:* Past the Coriolis turning radius (a few planetary radii) 3D physics dominates, so `Wind-AE` does not integrate past that point. `Wind-AE` also makes simplifying assumptions about the region below the region below the wind-launch radius (~10 nanobars).
32
32
 
@@ -37,11 +37,11 @@ Because `Wind-AE` runs on the order of seconds to minutes, it can be (and has be
37
37
  - Multiple ionization states of the same species (e.g., simultaneously tracking C I and C II as a linked ionization chain)
38
38
  - X-ray physics (secondary ionizations and K-shell ionization cross-sections for relevant metals)
39
39
  - Both low and high stellar XUV flux
40
- - **Heating & Cooling**: Ionization heating, bolometric heating & cooling (negligible in wind), PdV cooling (work done due to expansion of gas), radiative / atomic line cooling (Lyman-$\alpha$; O, C, Fe, Mg, Ca, and Ne lines), recombination cooling, free-free (bremsstrahlung) cooling, and, optionally, self-consistent conductive cooling (see note below)
40
+ - **Heating & Cooling**: Ionization heating, bolometric heating & cooling (negligible in wind), PdV cooling (work done due to expansion of gas), radiative / atomic line cooling (Lyman-alpha; O, C, Fe, Mg, Ca, and Ne lines), recombination cooling, free-free (bremsstrahlung) cooling, and, optionally, self-consistent conductive cooling (see note below)
41
41
  #### `Wind-AE` does not (currently) include:
42
42
  - **Magnetic fields**
43
43
  - **Time dependence**
44
- - **Diffusion/drag** - the atomic species set by the user are assumed to be entrained in the outflow and in thermal equilibrium. This is an appropriate assumption for species below the [crossover mass](https://ui.adsabs.harvard.edu/abs/1987Icar...69..532H) and a warning will be raised.
44
+ - **Fractionation/diffusion/drag** - the atomic species set by the user are assumed to be entrained in the outflow and in thermal equilibrium. This is an appropriate assumption for species below the [crossover mass](https://ui.adsabs.harvard.edu/abs/1987Icar...69..532H) and a warning will be raised.
45
45
  - **Heating & Cooling**: H3+ line cooling (not planned)
46
46
 
47
47
  > **Note (v2.0+):** Conductive, recombination, and free-free cooling are each independently toggleable via flags. Turning on conduction (`sim.turn_on_conduction()`) introduces numerically stiff ODEs and should only be done after all other ramping is complete. The temperature dependence of free-free and recombination cooling can make ramping to higher metallicities numerically unstable — if so, try ramping with them off and turning them back on afterwards.
@@ -58,7 +58,7 @@ See [Broome et al. (2025)](https://ui.adsabs.harvard.edu/abs/2025ApJ...995..198B
58
58
  - Just want a grid of mass loss rates for pure-Hydrogen, low-flux-EUV-irradiated planets? See [Kubyshkina & Fossati](https://ui.adsabs.harvard.edu/abs/2021RNAAS...5...74K/abstract)
59
59
  - Want a grid of mass loss rates for pure-Hydrogen, high-flux-XUV-irradiated planets? See [Owen & Jackson (2012)](https://ui.adsabs.harvard.edu/abs/2012MNRAS.425.2931O/abstract)
60
60
 
61
- >Want your model added to this list or to update the short bio? Email mabroome@ucsc.edu
61
+ >Want your model added to this list or to update the short bio? Email broome.astro@gmail.com
62
62
 
63
63
  Requirements
64
64
  ------------
@@ -172,8 +172,8 @@ sim.ramp_molecular_erfc(v_drop=erf_loc, rate=erf_rate)
172
172
  - **(v2.0)** Ramping to high metallicity with recombination and/or free-free cooling on can be numerically unstable in some cases — see the cooling-flags note above.
173
173
 
174
174
  --------
175
- ### Check out the [open issues](https://github.com/mabroome/wind-ae/issues).
175
+ ### Check out the [open issues](https://github.com/mibroome/wind-ae/issues).
176
176
 
177
177
  --------
178
178
  ## AI Use Statement
179
- We used Claude web (primarily model Sonnet 5.0) in `Wind-AE`'s v2.0 development to assist with refactoring `Wind-AE` for runtime improvements, with the implementation of the conductive cooling scheme in the code, and updating the docs for v2.0 release. All scientific content, methodology, and interpretations are the authors' own. The authors have reviewed and verified all code, outputs, and text, and take full responsibility for the integrity and accuracy of the work.
179
+ Claude web (primarily model Sonnet 5.0) was used in `Wind-AE`'s v2.0 development to assist with refactoring `Wind-AE` for runtime improvements, with the implementation of the conductive cooling scheme in the code, and updating the docs for v2.0 release. All scientific content, methodology, and interpretations are the authors' own. The authors have reviewed and verified all code, outputs, and text, and take full responsibility for the integrity and accuracy of the work.
@@ -35,5 +35,6 @@ exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
35
35
 
36
36
  html_theme = 'sphinx_rtd_theme'
37
37
  html_static_path = ['_static']
38
- html_logo = 'windae_logo_blue.png'
39
- html_favicon = 'windae_logo_blue_favicon_16.gif'
38
+ html_css_files = ['custom.css',]
39
+ html_logo = 'windae_logo_blue_light.png'
40
+ html_favicon = 'windae_logo_blue_favicon_48x48.png'
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "wind_ae"
7
- version = "2.0.0"
7
+ version = "2.0.2"
8
8
  authors = [
9
9
  { name = "Madelyn Broome" },
10
10
  { name = "John McCann" },
@@ -13,7 +13,7 @@ setup(
13
13
  name="wind_ae",
14
14
  version="1.0",
15
15
  author='Madelyn Broome',
16
- author_email='mabroome@ucsc.edu',
16
+ author_email='broome.astro@gmail.com',
17
17
  description="1D relaxation Parker wind model based on Murray-Clay et al. (2009)",
18
18
  install_requires=[line.strip() for line in
19
19
  open('requirements.txt', 'r').readlines()],
@@ -485,7 +485,7 @@ class wind_simulation:
485
485
  sub = Popen(self.path+'bin/relaxed_ae',cwd=self.workdir, stdout=PIPE, stderr=PIPE,bufsize=1, universal_newlines=True)
486
486
  output, error_output = sub.communicate()
487
487
  if error_output:
488
- if verbose:
488
+ if verbose is True:
489
489
  print(output)
490
490
  print(error_output)
491
491
  if error_output[0:55] == 'Numerical Recipes run-time error...\nstep size underflow':
@@ -573,7 +573,7 @@ class wind_simulation:
573
573
  return self.run_wind(expedite,calc_postfacto,verbose)
574
574
 
575
575
  def ramp_to(self, system=None, intermediate_converge_bcs=False, final_polish=False,
576
- integrate_out=True, static_bcs=False, make_plot=False):
576
+ integrate_out=True, static_bcs=False, make_plot=False,verbose=False):
577
577
  """
578
578
  Ramps the current wind solution to a new system. Wrapper for ramp_Ftot(), ramp_grav(), ramp_star().
579
579
 
@@ -611,7 +611,7 @@ class wind_simulation:
611
611
  result = self.ramp_var("Ftot", system.value("Ftot"),
612
612
  converge_bcs=intermediate_converge_bcs, make_plot=make_plot,
613
613
  expedite=True,static_bcs=static_bcs,
614
- integrate_out=False)
614
+ integrate_out=False,verbose=verbose)
615
615
  fail = result
616
616
 
617
617
  if (fail != 0) and (fail != 5):
@@ -620,7 +620,7 @@ class wind_simulation:
620
620
  # Ramps Mp and Rp simultaneously, ~constant surface gravity
621
621
  result = self.ramp_grav(system, converge_bcs=intermediate_converge_bcs,
622
622
  make_plot=make_plot, expedite=True,static_bcs=static_bcs,
623
- integrate_out=False)
623
+ integrate_out=False,verbose=verbose)
624
624
  fail = result
625
625
 
626
626
  if (fail != 0) and (fail != 5):
@@ -629,7 +629,7 @@ class wind_simulation:
629
629
  # Ramps Mstar and semimajor simultaneously, ~constant Hill radius
630
630
  result = self.ramp_star(system, converge_bcs=intermediate_converge_bcs,
631
631
  make_plot=make_plot, expedite=True,static_bcs=static_bcs,
632
- integrate_out=False)
632
+ integrate_out=False,verbose=verbose)
633
633
  fail = result
634
634
 
635
635
  if final_polish == True:
@@ -666,7 +666,7 @@ class wind_simulation:
666
666
 
667
667
  def ramp_var(self, var, var_end, var_class=None, delta=0.02,
668
668
  delta_additive=False, converge_bcs=False, make_plot=True,
669
- expedite=False, integrate_out=True, static_bcs=False):
669
+ expedite=False, integrate_out=True, static_bcs=False,verbose=False):
670
670
  """
671
671
  Ramps a variable in the system or physics class to a target value with adaptive stepsizes.
672
672
 
@@ -880,7 +880,7 @@ class wind_simulation:
880
880
  self.inputs.write_flags(*expedite_flag_tuple,integrate_out) #user defined integrate out will override
881
881
  if integrate_out == True:
882
882
  self.inputs.write_flags(*self.windsoln.flags_tuple,integrate_out)
883
- result = self.run_wind(verbose=True,calc_postfacto=False)
883
+ result = self.run_wind(verbose=verbose,calc_postfacto=False)
884
884
 
885
885
  if result == 0:
886
886
  if converge_bcs:
@@ -901,6 +901,7 @@ class wind_simulation:
901
901
 
902
902
 
903
903
  def ramp_grav(self, system, delta=0.02, converge_bcs=False, make_plot=True,
904
+ verbose=False,
904
905
  expedite=False, integrate_out=True, static_bcs=False):
905
906
  """
906
907
  Ramps planet mass and radius along lines of constant surface gravity with adaptive stepsizes.
@@ -1140,7 +1141,7 @@ class wind_simulation:
1140
1141
  expedite_flag_tuple[3] = self.windsoln.bolo_heat_cool
1141
1142
  expedite_flag_tuple[0] = 1
1142
1143
  self.inputs.write_flags(*expedite_flag_tuple,integrate_out) #user defined integrate out will override
1143
- result = self.run_wind(verbose=True,calc_postfacto=False)
1144
+ result = self.run_wind(verbose=verbose,calc_postfacto=False)
1144
1145
 
1145
1146
  if result == 0:
1146
1147
  if converge_bcs:
@@ -1161,7 +1162,7 @@ class wind_simulation:
1161
1162
 
1162
1163
 
1163
1164
  def ramp_star(self, system, delta=0.02, converge_bcs=True, make_plot=True,
1164
- expedite=False, integrate_out=True, static_bcs=False):
1165
+ expedite=False, integrate_out=True, static_bcs=False,verbose=False):
1165
1166
  """
1166
1167
  Ramps stellar mass (Mstar), semimajor axis (semimajor), and stellar bolometric luminosity (Lstar).
1167
1168
  If Mstar and semimajor axis change, ramps linearly along Hill radius rate of change.
@@ -1403,7 +1404,7 @@ class wind_simulation:
1403
1404
  return 1
1404
1405
  # Write ramped variables to input file and try updating relaxation
1405
1406
  self.inputs.write_planet_params(*temp.system_tuple())
1406
- result = self.run_wind(expedite=True,verbose=True,calc_postfacto=False)
1407
+ result = self.run_wind(expedite=True,verbose=verbose,calc_postfacto=False)
1407
1408
  fail=0
1408
1409
  while result == 4:
1409
1410
  fail+=1
@@ -3594,7 +3595,7 @@ class wind_simulation:
3594
3595
 
3595
3596
  #Spectrum tools
3596
3597
  def flux_norm(self,goal_flux_in_range,eV_range=[13.6,100],ramp=False,plot=True,
3597
- integrate_out=True,converge_bcs=True):
3598
+ integrate_out=True,converge_bcs=True,verbose=False):
3598
3599
  """
3599
3600
  Computes the total flux (across the loaded spectrum range) necessary to achieve the goal_flux_in_range in the eV_range identified. If ramp=True, also ramps the solution to that Ftot.
3600
3601
 
@@ -3619,7 +3620,7 @@ class wind_simulation:
3619
3620
  if ramp == True:
3620
3621
  if abs(goal_total_flux-self.windsoln.Ftot)/self.windsoln.Ftot > 0.01:
3621
3622
  return self.ramp_var("Ftot",goal_total_flux,make_plot=plot,
3622
- converge_bcs=converge_bcs,integrate_out=integrate_out)
3623
+ converge_bcs=converge_bcs,integrate_out=integrate_out,verbose=verbose)
3623
3624
  else:
3624
3625
  self._normal_print(" Flux ramping already done.")
3625
3626
  return 0
@@ -3631,7 +3632,7 @@ class wind_simulation:
3631
3632
  def ramp_spectrum(self,Fnorm=0.0,norm_spec_range=[],
3632
3633
  goal_spec_range=[],units='eV',normalize=True,plot=False):
3633
3634
  """
3634
- Ramps stellar spectrum wavelength/energy range to new wavelength/energy range. To change to a monofrequncy spectrum, e.g., at 20 eV, set goal_spec_range=[20] or [20,20] and kind='mono'. (Note: for numerical reason, a `monofrequency' spectrum is actually two wavelength bins with the same wavelength and the appropriately normalized wPhi_wl/Ftot.)
3635
+ Ramps stellar spectrum wavelength/energy range to new wavelength/energy range. To change to a monofrequncy spectrum, e.g., at 20 eV, set goal_spec_range=[20] or [20,20] and kind='mono'. (Note: for numerical reason, a ``monofrequency`` spectrum is actually two wavelength bins with the same wavelength and the appropriately normalized wPhi_wl/Ftot.)
3635
3636
 
3636
3637
  Args:
3637
3638
  Fnorm (float, optional): Flux in ergs/s/cm2 AT SEMIMAJOR AXIS OF PLANET. If 0.0, flux is normalized to the current value in norm_spec_range. Otherwise, ramps to given Fnorm. Defaults to 0.0.
@@ -605,13 +605,17 @@ def energy_plot(windsoln, ax=None, alpha=1, plot_dom_lines=True, N_top_lines=2,
605
605
  r = windsoln.soln_norm['r']
606
606
 
607
607
  profiles = {}
608
- for species in ['OI', 'OII', 'CI', 'CII', 'FeI', 'MgI','CaII', 'NeII']:
608
+ for species in ['OI', 'OII', 'CI', 'CII', 'FeI','FeII', 'MgI','MgII','CaI','CaII','NeII','NeIII']:
609
609
  if species in windsoln.species_list_unspaced:
610
610
  species_spaced = McAtom.formatting_species_list([species])[0]
611
611
  element_name, lowest_state = species_spaced.split()
612
612
  highest_state = McAtom.arabic_to_roman(McAtom.roman_to_arabic(lowest_state) + 1)
613
- ion_name = element_name + highest_state
614
-
613
+ lower_ion = element_name + lowest_state
614
+ higher_ion = element_name + highest_state
615
+ if lower_ion in coeff_table['Species'].values:
616
+ ion_name = lower_ion
617
+ else:
618
+ ion_name = higher_ion
615
619
  lines = coeff_table.loc[coeff_table['Species'] == ion_name, 'Line'].astype(int).tolist()
616
620
  for line_num in lines:
617
621
  key = f'cool_{ion_name}_{line_num:.0f}A'
@@ -368,7 +368,7 @@ class wind_solution:
368
368
  self.R_exo = np.nan
369
369
  # Skip unnecessary calculations when users is expediting windsoln
370
370
  if calc_postfacto:
371
- self.add_user_vars(expedite = expedite_postfacto)
371
+ self.add_user_vars(expedite = expedite_postfacto, print_warnings=print_warnings)
372
372
 
373
373
 
374
374
  def _rate_coeff_interpolater(self,species):
@@ -881,8 +881,12 @@ class wind_solution:
881
881
  highest_state = McAtom.arabic_to_roman(
882
882
  McAtom.roman_to_arabic(lowest_state) + 1
883
883
  )
884
-
885
- ion_name = element_name + highest_state
884
+ lower_ion = element_name + lowest_state
885
+ higher_ion = element_name + highest_state
886
+ if lower_ion in coeff_table['Species'].values:
887
+ ion_name = lower_ion
888
+ else:
889
+ ion_name = higher_ion
886
890
  mask = (coeff_table['Species'] == ion_name)
887
891
  line, A, T_line, nc = (
888
892
  coeff_table[mask]["Line"],
@@ -892,6 +896,7 @@ class wind_solution:
892
896
  )
893
897
  nIONj = self.soln["n_"+ion_name]
894
898
  for idx in range(len(A.T)):
899
+ # print(ion_name)
895
900
  line_cool_cols[f'cool_{ion_name}_{line.iloc[idx]:.0f}A'] = (
896
901
  -nIONj
897
902
  * n_e
@@ -900,8 +905,9 @@ class wind_solution:
900
905
  / (n_e * (1 + nc.iloc[idx] / n_e))
901
906
  )
902
907
 
903
- for species in ['OI', 'OII', 'CI', 'CII', 'FeI', 'MgI', 'CaI', 'NeII']:
908
+ for species in ['OI', 'OII', 'CI', 'CII', 'FeI', 'FeII', 'MgI', 'MgII', 'CaI', 'CaII', 'NeII', 'NeIII']:
904
909
  if species in self.species_list_unspaced:
910
+ # print(f"Computing line cooling for species: {species}")
905
911
  compute_line_cool(species)
906
912
 
907
913
  _assign_soln_cols(line_cool_cols)
@@ -1212,9 +1218,12 @@ class wind_solution:
1212
1218
  def calc_mu(self):
1213
1219
  '''Calculates mean molecular weight (mu in physical units, grams).
1214
1220
 
1215
- 1/mu = sum_roots[mr_root * HX_root] (one atom per atom, roots only)
1216
- + n_e * m_H / rho (one entry per free electron)
1217
- Mirrors the refactored get_mu() in soe.c exactly.
1221
+ ::
1222
+
1223
+ 1/mu = sum_roots[mr_root * HX_root] (one atom per atom, roots only)
1224
+ + n_e * m_H / rho (one entry per free electron)
1225
+
1226
+ Mirrors the refactored ``get_mu()`` in ``soe.c`` exactly.
1218
1227
  '''
1219
1228
  if (self.species_list[0]).replace(" ", "") != "HI":
1220
1229
  if self.print_warnings is True:
@@ -1472,20 +1481,21 @@ class wind_solution:
1472
1481
 
1473
1482
 
1474
1483
  def calc_R_exo(self, Kn="Kn_mx_HI"):
1475
- '''Calculating exosphere radius in Rp and index.
1476
- DEPRECATED, requires updated Knudsen number calculations for all species.
1477
-
1484
+ '''Calculating exosphere radius in Rp and index.
1485
+ DEPRECATED, requires updated Knudsen number calculations for all species.
1486
+
1478
1487
  Args:
1479
- Kn (str): Knudsen collision number for a given species.
1480
- Default: "Kn_mx_HI", which is a weighted mix of hardbody and Coulomb Kn for HI.
1481
- Where a Kn > 1 indicates that the flow is collisionless for that species and a
1482
- fluid solution is no longer valid.
1488
+ Kn (str): Knudsen collision number for a given species.
1489
+ Default: "Kn_mx_HI", which is a weighted mix of hardbody and Coulomb
1490
+ Kn for HI. A Kn > 1 indicates that the flow is collisionless for
1491
+ that species and a fluid solution is no longer valid.
1483
1492
 
1484
1493
  Returns:
1485
- float: R_exo: exosphere radius in Rp.
1486
- If Kn always < 1, then R_exo = NaN (R_exo is outside of the range of the simulation).
1487
- If R_exo > R_sp, then R_exo = Rmax
1488
- int: exo_index: index of exosphere radius in soln
1494
+ float: R_exo: exosphere radius in Rp.
1495
+ If Kn always < 1, then R_exo = NaN (R_exo is outside of the range
1496
+ of the simulation).
1497
+ If R_exo > R_sp, then R_exo = Rmax.
1498
+ int: exo_index: index of exosphere radius in soln.
1489
1499
  '''
1490
1500
  try:
1491
1501
  index = self.soln[self.soln[Kn] > 1].index[0]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wind_ae
3
- Version: 2.0.0
3
+ Version: 2.0.2
4
4
  Summary: 1D relaxation Parker wind model with metal and X-ray physics based on Murray-Clay et al. (2009)
5
5
  Author: Madelyn Broome, John McCann, Ruth Murray-Clay
6
6
  License-Expression: BSD-3-Clause
@@ -35,7 +35,7 @@ I <img src="docs/windae_logo_blue_light.png" alt="Wind-AE Logo" width="350"/>
35
35
  `Wind-AE` updates [Murray-Clay et al. (2009)](https://ui.adsabs.harvard.edu/abs/2009ApJ...693...23M/abstract) to allow for the modeling of atomic metals and multifrequency XUV stellar spectra (Broome et al. 2025). If you use `Wind-AE`, please cite [Broome et al. (2025)](https://ui.adsabs.harvard.edu/abs/2025ApJ...995..198B/abstract).
36
36
 
37
37
 
38
- Take advantage of `Notebooks/Quickstart.ipynb` to get a quick orientation to `Wind-AE` and please report any bugs via [Github](https://github.com/mabroome/wind-ae/issues) or via email to broome.astro@gmail.com.
38
+ Take advantage of `Notebooks/Quickstart.ipynb` to get a quick orientation to `Wind-AE` and please report any bugs via [Github](https://github.com/mibroome/wind-ae/issues) or via email to broome.astro@gmail.com.
39
39
 
40
40
  ![Build Status](https://github.com/mibroome/wind-ae/actions/workflows/python-pkg.yml/badge.svg)
41
41
  [![Coverage Status](https://coveralls.io/repos/github/mibroome/wind-ae/badge.svg?branch=main)](https://coveralls.io/github/mibroome/wind-ae?branch=main)
@@ -53,7 +53,7 @@ Take advantage of `Notebooks/Quickstart.ipynb` to get a quick orientation to `Wi
53
53
 
54
54
  Is Wind-AE the right tool for me?
55
55
  ----------------------
56
- `Wind-AE` is well-suited for users interested in **quickly estimating mass loss rates** or outflow structure. Outflow structure includes bulk temperature and per-species ionization fractions as a function of radius, so can be easily translated into approximating and **predicting observables and transits**, including metastable helium (He 10830$\AA$) transits, though a He transit module is not yet included. Precise modeling of lower atmosphere ($\lssim 100 \mu$bar) is considered necessary for highly accurate transit models, but Wind-AE can be easily coupled to lower atmosphere photochemistry models whose outputs can (e.g., radius, temperature, abundances, ionization fractions, etc. at 1 $\mu$bar) can be fed into Wind-AE as inputs.
56
+ `Wind-AE` is well-suited for users interested in **quickly estimating mass loss rates** or outflow structure. Outflow structure includes bulk temperature and per-species ionization fractions as a function of radius, so can be easily translated into approximating and **predicting observables and transits**, including metastable helium (He 10830 Å) transits, though a He transit module is not yet included. Precise modeling of lower atmosphere (< ~100 $\mu$bar) is considered necessary for highly accurate transit models, but Wind-AE can be easily coupled to lower atmosphere photochemistry models whose outputs can (e.g., radius, temperature, abundances, ionization fractions, etc. at 1 $\mu$bar) can be fed into Wind-AE as inputs.
57
57
 
58
58
  >*If you are interested in outflow structure:* Past the Coriolis turning radius (a few planetary radii) 3D physics dominates, so `Wind-AE` does not integrate past that point. `Wind-AE` also makes simplifying assumptions about the region below the region below the wind-launch radius (~10 nanobars).
59
59
 
@@ -64,11 +64,11 @@ Because `Wind-AE` runs on the order of seconds to minutes, it can be (and has be
64
64
  - Multiple ionization states of the same species (e.g., simultaneously tracking C I and C II as a linked ionization chain)
65
65
  - X-ray physics (secondary ionizations and K-shell ionization cross-sections for relevant metals)
66
66
  - Both low and high stellar XUV flux
67
- - **Heating & Cooling**: Ionization heating, bolometric heating & cooling (negligible in wind), PdV cooling (work done due to expansion of gas), radiative / atomic line cooling (Lyman-$\alpha$; O, C, Fe, Mg, Ca, and Ne lines), recombination cooling, free-free (bremsstrahlung) cooling, and, optionally, self-consistent conductive cooling (see note below)
67
+ - **Heating & Cooling**: Ionization heating, bolometric heating & cooling (negligible in wind), PdV cooling (work done due to expansion of gas), radiative / atomic line cooling (Lyman-alpha; O, C, Fe, Mg, Ca, and Ne lines), recombination cooling, free-free (bremsstrahlung) cooling, and, optionally, self-consistent conductive cooling (see note below)
68
68
  #### `Wind-AE` does not (currently) include:
69
69
  - **Magnetic fields**
70
70
  - **Time dependence**
71
- - **Diffusion/drag** - the atomic species set by the user are assumed to be entrained in the outflow and in thermal equilibrium. This is an appropriate assumption for species below the [crossover mass](https://ui.adsabs.harvard.edu/abs/1987Icar...69..532H) and a warning will be raised.
71
+ - **Fractionation/diffusion/drag** - the atomic species set by the user are assumed to be entrained in the outflow and in thermal equilibrium. This is an appropriate assumption for species below the [crossover mass](https://ui.adsabs.harvard.edu/abs/1987Icar...69..532H) and a warning will be raised.
72
72
  - **Heating & Cooling**: H3+ line cooling (not planned)
73
73
 
74
74
  > **Note (v2.0+):** Conductive, recombination, and free-free cooling are each independently toggleable via flags. Turning on conduction (`sim.turn_on_conduction()`) introduces numerically stiff ODEs and should only be done after all other ramping is complete. The temperature dependence of free-free and recombination cooling can make ramping to higher metallicities numerically unstable — if so, try ramping with them off and turning them back on afterwards.
@@ -85,7 +85,7 @@ See [Broome et al. (2025)](https://ui.adsabs.harvard.edu/abs/2025ApJ...995..198B
85
85
  - Just want a grid of mass loss rates for pure-Hydrogen, low-flux-EUV-irradiated planets? See [Kubyshkina & Fossati](https://ui.adsabs.harvard.edu/abs/2021RNAAS...5...74K/abstract)
86
86
  - Want a grid of mass loss rates for pure-Hydrogen, high-flux-XUV-irradiated planets? See [Owen & Jackson (2012)](https://ui.adsabs.harvard.edu/abs/2012MNRAS.425.2931O/abstract)
87
87
 
88
- >Want your model added to this list or to update the short bio? Email mabroome@ucsc.edu
88
+ >Want your model added to this list or to update the short bio? Email broome.astro@gmail.com
89
89
 
90
90
  Requirements
91
91
  ------------
@@ -199,8 +199,8 @@ sim.ramp_molecular_erfc(v_drop=erf_loc, rate=erf_rate)
199
199
  - **(v2.0)** Ramping to high metallicity with recombination and/or free-free cooling on can be numerically unstable in some cases — see the cooling-flags note above.
200
200
 
201
201
  --------
202
- ### Check out the [open issues](https://github.com/mabroome/wind-ae/issues).
202
+ ### Check out the [open issues](https://github.com/mibroome/wind-ae/issues).
203
203
 
204
204
  --------
205
205
  ## AI Use Statement
206
- We used Claude web (primarily model Sonnet 5.0) in `Wind-AE`'s v2.0 development to assist with refactoring `Wind-AE` for runtime improvements, with the implementation of the conductive cooling scheme in the code, and updating the docs for v2.0 release. All scientific content, methodology, and interpretations are the authors' own. The authors have reviewed and verified all code, outputs, and text, and take full responsibility for the integrity and accuracy of the work.
206
+ Claude web (primarily model Sonnet 5.0) was used in `Wind-AE`'s v2.0 development to assist with refactoring `Wind-AE` for runtime improvements, with the implementation of the conductive cooling scheme in the code, and updating the docs for v2.0 release. All scientific content, methodology, and interpretations are the authors' own. The authors have reviewed and verified all code, outputs, and text, and take full responsibility for the integrity and accuracy of the work.
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes