From 8255ceb5cfe5d91fa7eecde0f864fed3e8955d5f Mon Sep 17 00:00:00 2001 From: Will Barnes Date: Thu, 12 Feb 2026 11:49:58 -0500 Subject: [PATCH 1/5] temporary ci job for paper build --- .github/workflows/draft-pdf.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/draft-pdf.yml diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml new file mode 100644 index 00000000..0eed338e --- /dev/null +++ b/.github/workflows/draft-pdf.yml @@ -0,0 +1,29 @@ +# Remove this once JOSS paper is published +name: Draft PDF +on: + pull_request: + paths: + - joss/** + - .github/workflows/draft-pdf.yml + +jobs: + paper: + runs-on: ubuntu-latest + name: Paper Draft + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Build draft PDF + uses: openjournals/openjournals-draft-action@master + with: + journal: joss + # This should be the path to the paper within your repo. + paper-path: joss/paper.md + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: paper + # This is the output path where Pandoc will write the compiled + # PDF. Note, this should be the same directory as the input + # paper.md + path: joss/paper.pdf From 21a32531d5befb3710407a3a5d943b9e25392499 Mon Sep 17 00:00:00 2001 From: Will Barnes Date: Thu, 12 Feb 2026 14:38:08 -0500 Subject: [PATCH 2/5] first pass at new joss format --- joss/paper.bib | 31 +++++++++++++++++++++++++ joss/paper.md | 62 ++++++++++++++++++++++++++++++++------------------ 2 files changed, 71 insertions(+), 22 deletions(-) diff --git a/joss/paper.bib b/joss/paper.bib index 08923995..e12e7ef6 100644 --- a/joss/paper.bib +++ b/joss/paper.bib @@ -212,3 +212,34 @@ @book{press_numerical_1992 publisher = {Cambridge University Press}, address = {Cambridge, UK ; New York} } + +@article{barnes_understanding_2019, + title = {Understanding {{Heating}} in {{Active Region Cores}} through {{Machine Learning}}. {{I}}. {{Numerical Modeling}} and {{Predicted Observables}}}, + author = {Barnes, W. T. and Bradshaw, S. J. and Viall, N. M.}, + year = 2019, + month = jul, + journal = {The Astrophysical Journal}, + volume = {880}, + number = {1}, + pages = {56}, + doi = {10.3847/1538-4357/ab290c}, + url = {https://ui.adsabs.harvard.edu/abs/2019ApJ...880...56B/abstract}, + urldate = {2019-08-06}, + copyright = {All rights reserved}, + langid = {english} +} + +@article{marsh_hard_2018, + title = {Hard {{X-Ray Constraints}} on {{Small-scale Coronal Heating Events}}}, + author = {Marsh, Andrew J. and Smith, David M. and Glesener, Lindsay and Klimchuk, James A. and Bradshaw, Stephen J. and Vievering, Juliana and Hannah, Iain G. and Christe, Steven and Ishikawa, Shin-nosuke and Krucker, S{\"a}m}, + year = 2018, + month = sep, + journal = {The Astrophysical Journal}, + volume = {864}, + number = {1}, + pages = {5}, + doi = {10.3847/1538-4357/aad380}, + url = {https://ui.adsabs.harvard.edu/#abs/2018ApJ...864....5M/abstract}, + urldate = {2018-09-27}, + langid = {english} +} diff --git a/joss/paper.md b/joss/paper.md index 7dacfd94..aff6a464 100644 --- a/joss/paper.md +++ b/joss/paper.md @@ -50,7 +50,7 @@ affiliations: index: 8 - name: Department of Physics and Astronomy, Rice University, Houston, TX 77005, USA index: 9 -date: 18 October 2025 +date: 12 February 2026 bibliography: paper.bib --- @@ -64,8 +64,7 @@ As such, the explicit dependence on the magnetic field can be neglected and the However, the large range of spatial and temporal scales necessary to resolve this system, in particular the severe time step limitations imposed by thermal conduction, mean that even field-aligned models are computationally expensive enough to make large parameter explorations prohibitive. The enthalpy-based thermal evolution of loops (EBTEL) model [@klimchuk_highly_2008;@cargill_enthalpy-based_2012] was originally developed in order to provide a simple and efficient way to study the coronal plasma response to time-dependent plasma heating. EBTEL accomplishes this by computing spatial integrals of the aforementioned field-aligned hydrodynamic equations. -Comparisons to spatially-averaged results from field-aligned hydrodynamic models show very good agreement [@cargill_enthalpy-based_2012]. -Because of its relative simplicity and computational efficiency, EBTEL has been widely used since its initial development [e.g. @qiu_heating_2012;@ugarte-urra_determining_2014] with @klimchuk_highly_2008 and @cargill_enthalpy-based_2012 having nearly 400 citations combined according to the Astrophysics Data System. +The `ebtelplusplus` software package is a Python and C++ implementation of the EBTEL model and includes effects due to cross-sectional coronal loop expansion, electron-ion coupling, and variable elemental abundances. # Statement of Need @@ -75,12 +74,11 @@ EBTEL equates an enthalpy flux with an imbalance between the heat flux out of th If TR radiation cannot balance the downward heat flux, this drives an upflow of material into the corona and if the TR is radiating away more energy than the coronal heat flux can supply this drives a downflow. This approximation is valid for bulk velocities below the local sound speed [@klimchuk_highly_2008]. -The original software implementation of the EBTEL model of @klimchuk_highly_2008 was in the proprietary Interactive Data Language (IDL). +The EBTEL model was originally developed by @klimchuk_highly_2008. Subsequent improvements to the gravitational stratification and radiative losses by @cargill_enthalpy-based_2012 gave better agreement with field-aligned hydrodynamic models[^ebtel2]. -@barnes_inference_2016 modified the EBTEL model to relax the single-fluid assumption and treat electrons and ions separately, allowing for differential heating between the two species and implemented these modifications in C++. +@barnes_inference_2016 modified the EBTEL model to relax the single-fluid assumption and treat electrons and ions separately, allowing for differential heating between the two species. @cargill_static_2021 later extended EBTEL to include effects due to cross-sectional area expansion and @reep_modeling_2024 added the ability to vary the abundance model for the radiative losses as a function of time. - -`ebtelplusplus` unifies all of the aforementioned features into a single set of equations and C++ and Python software implementation. +`ebtelplusplus` unifies all of the aforementioned features into a single set of equations. In particular, `ebtelplusplus` solves the following equations for the spatially-averaged electron pressure ($p_e$), ion pressure ($p_i$), and number density ($n$) of a semi-circular coronal loop of half-length $L$, \begin{eqnarray*} @@ -93,29 +91,19 @@ where $Q_{e,i}$ are the user-specified heating terms for the electrons and ions, The remaining terms are fixed constants. This set of equations is closed by an ideal gas law for the electrons and ions: $p_e=k_BnT_e,p_i=k_BnT_i$ and $n_e=n_i=n$ due to the assumption of a fully-ionized hydrogen plasma. These equations and their derivations are explained more fully in the aforementioned publications and the [`ebtelplusplus` documentation](https://ebtelplusplus.readthedocs.io/en/stable/topic_guides/derivation.html). - `ebtelplusplus` solves the above equations using a Runge-Kutta Cash-Karp integration method [see section 16.2 of @press_numerical_1992] and an (optional) adaptive time-stepping scheme to ensure the principal physical timescales are resolved at each phase of the loop evolution[^boost]. -Where appropriate, all inputs and outputs are expressed as `astropy.units.Quantity` objects [@astropy_collaboration_astropy_2022]. -Additionally, `ebtelplusplus` is very fast (a single run modeling $10^4$ seconds of simulation time takes only a few milliseconds) and nearly two orders of magnitude faster than the previous IDL implementation because it is implemented in C++ and due to its use of an adaptive time-stepping scheme. \autoref{fig:figure1} shows example output from `ebtelplusplus` with different model parameters for the same time-dependent heating function. -`ebtelplusplus` is implemented in C++ for computational efficiency and is wrapped in Python using `pybind11` [@wenzel_jakob_2025_16929811] to enable easier installation and a user-friendly API. -Precompiled binary wheels are built using [`cibuildwheel`](https://cibuildwheel.pypa.io/en/stable/) run on GitHub Actions[^oatemplates] and distributed via [PyPI](https://pypi.org/project/ebtelplusplus/) at every release. -These wheels are provided for all major operating systems and the versions of Python recommended by SPEC 0[^spec0]. -This alleviates the need for a user to compile the C++ code locally. -`ebtelplusplus` is openly-developed on [GitHub](https://github.com/rice-solar-physics/ebtelplusplus). -Documentation, including an example gallery and a guide to contributing to the package, is hosted online on [Read the Docs](https://ebtelplusplus.readthedocs.io). -`ebtelplusplus` also includes a comprehensive test suite built on the [`pytest` testing framework](https://docs.pytest.org/) that is run on GitHub Actions at each check-in. -Test coverage is assessed using [Codecov](https://about.codecov.io/). - ![Temperature (top right), density (bottom left), and temperature-density phase space (bottom right) of a coronal loop with half-length $L=40$ Mm for five different cases with the same heating input (top left panel). In the nominal case (blue), the electron and ion populations are kept in equilibrium, the cross-sectional area of the loop is constant, and the radiative losses are determined by a power-law function. If the electrons (solid) and ions (dashed) are allowed to evolve separately, heating only the electrons (orange) causes the ions to take about 250 s to fully equilibrate with the electrons while heating only the ions (green) causes the ions to become over three times hotter than the electrons due to the relative inefficiency of ion thermal conduction. Incorporating area expansion through the corona (red) leads to a higher peak temperature and a more delayed peak in the density while calculating the radiative losses using a time-varying abundance (purple) leads to a slightly higher peak density.\label{fig:figure1}](figure.pdf) -# Other Implementations +# State of the Field -The aforementioned IDL implementation, which includes features described in @cargill_enthalpy-based_2012 and @cargill_static_2021, is referred to as [`EBTEL-IDL`](https://github.com/rice-solar-physics/EBTEL) [@cargill_2024_13351770]. +There are currently three separate though slightly different implementations of the EBTEL model. +The original software implementation of the EBTEL model was in the proprietary Interactive Data Language (IDL). +This implementation, which includes features described in @cargill_enthalpy-based_2012 and @cargill_static_2021, is referred to as [`EBTEL-IDL`](https://github.com/rice-solar-physics/EBTEL) [@cargill_2024_13351770]. +Comparisons between `EBTEL-IDL` and spatially-averaged results from field-aligned hydrodynamic models show very good agreement [@cargill_enthalpy-based_2012]. @rajhans_flows_2022 relaxed the assumption of subsonic flows in EBTEL such that the Mach numbers and velocities produced are in better agreement with field-aligned hydrodynamic simulations for some heating scenarios. The IDL software implementation of this model is referred to as `EBTEL3-IDL`. -As such, there are currently three separate though slightly different implementations of the EBTEL model. The table below summarizes the features included in each implementation. | Feature | Citation | `EBTEL-IDL` | `EBTEL3-IDL` | `ebtelplusplus` | @@ -126,6 +114,36 @@ The table below summarizes the features included in each implementation. | Supersonic flows | @rajhans_flows_2022 | no | yes | no | | Time-variable abundances | @reep_modeling_2024 | no | no | yes | +Additionally, `ebtelplusplus` is very fast (a single run modeling $10^4$ seconds of simulation time takes only a few milliseconds) and nearly two orders of magnitude faster than previous IDL implementations because it is implemented in C++ and due to its use of an adaptive time-stepping scheme. + +# Software Design + +The design of the `ebtelplusplus` software is motivated by two primary needs: 1. computational efficiency and 2. a high-level, intuitive interface. +Both are essential for exploratory analysis of time-dependent heating of the coronal plasma, including large-scale parameter explorations. +`ebtelplusplus` is implemented in C++ for computational efficiency and is wrapped in Python using `pybind11` [@wenzel_jakob_2025_16929811] to enable easier installation and a user-friendly API. +Where appropriate, all inputs and outputs are expressed as `astropy.units.Quantity` objects [@astropy_collaboration_astropy_2022] to maximize flexibility and avoid ambiguity. +As an example, two of the primary inputs for configuring an `ebtelplusplus` simulation are the total simulation time and the loop length. +These inputs can be expressed in any units provided they can be converted to seconds and centimeters, respectively. +High-level Python objects are provided for configuring additional inputs, including the time-dependent heating, and include default values to avoid overly-verbose configuration procedures unless necessary. + +To make the installation process easier for users, precompiled binary wheels are built using [`cibuildwheel`](https://cibuildwheel.pypa.io/en/stable/) run on GitHub Actions[^oatemplates] and distributed via [PyPI](https://pypi.org/project/ebtelplusplus/) at every release. +These wheels are provided for all major operating systems and the versions of Python recommended by SPEC 0[^spec0]. +This alleviates the need to compile the C++ code locally and allows new users to start using the software more quickly. +`ebtelplusplus` is openly-developed on [GitHub](https://github.com/rice-solar-physics/ebtelplusplus). +Documentation, including an example gallery and a guide to contributing to the package, is hosted online on [Read the Docs](https://ebtelplusplus.readthedocs.io). +`ebtelplusplus` also includes a comprehensive test suite built on the [`pytest` testing framework](https://docs.pytest.org/) that is run on GitHub Actions at each check-in. +Test coverage is assessed using [Codecov](https://about.codecov.io/). + +# Research Impact Statement + +Because of its relative simplicity and computational efficiency, EBTEL has been widely used since its initial development [e.g. @qiu_heating_2012;@ugarte-urra_determining_2014] with @klimchuk_highly_2008 and @cargill_enthalpy-based_2012 having nearly 400 citations combined according to the Astrophysics Data System (ADS). +@barnes_inference_2016, which describes the original implementation of the `ebtelplusplus` model, has over 50 citations per ADS. +In particular, `ebtelplusplus` has been used to model thousands of impulsively-heated loops in coronal active regions [@barnes_understanding_2019] and constrain properties of microflares via comparisons with hard x-ray observations [@marsh_hard_2018]. + +# AI Usage Disclosure + +No generative AI tools were used in the development of this software, the writing of this manuscript, or the preparation of supporting materials. + # References [^stellar]: This also applies to the coronae of F, G, K, and M dwarf stars. From aae78d6793eaf0540d5bc1c3ac97babb1a050d4f Mon Sep 17 00:00:00 2001 From: Will Barnes Date: Thu, 12 Feb 2026 15:00:41 -0500 Subject: [PATCH 3/5] minor tweaks --- joss/paper.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/joss/paper.md b/joss/paper.md index aff6a464..1779de72 100644 --- a/joss/paper.md +++ b/joss/paper.md @@ -89,6 +89,7 @@ In particular, `ebtelplusplus` solves the following equations for the spatially- where $Q_{e,i}$ are the user-specified heating terms for the electrons and ions, $\psi_{c,TR}$ denote integrals of the electron-ion coupling terms over the TR and corona, respectively, $A_{c,TR,0}$ are the cross-sectional area averaged over the corona and TR and at the TR/corona boundary, respectively, $R_c$ is the energy lost to radiation in the corona, $c_1$ is the ratio of energy lost to radiation in the TR and corona, $\xi=T_e/T_i$ is the ratio between the electron and ion temperatures, $F_{e,0;i,0}$ are the conductive heat fluxes at the TR/corona boundary for the electrons and ions, $L_{c,TR}$ are the lengths of the corona and TR such that $L=L_c+L_{TR}$, and $L_*=L_c + (A_{TR}/A_c)L_{TR}$. The remaining terms are fixed constants. + This set of equations is closed by an ideal gas law for the electrons and ions: $p_e=k_BnT_e,p_i=k_BnT_i$ and $n_e=n_i=n$ due to the assumption of a fully-ionized hydrogen plasma. These equations and their derivations are explained more fully in the aforementioned publications and the [`ebtelplusplus` documentation](https://ebtelplusplus.readthedocs.io/en/stable/topic_guides/derivation.html). `ebtelplusplus` solves the above equations using a Runge-Kutta Cash-Karp integration method [see section 16.2 of @press_numerical_1992] and an (optional) adaptive time-stepping scheme to ensure the principal physical timescales are resolved at each phase of the loop evolution[^boost]. @@ -104,6 +105,8 @@ This implementation, which includes features described in @cargill_enthalpy-base Comparisons between `EBTEL-IDL` and spatially-averaged results from field-aligned hydrodynamic models show very good agreement [@cargill_enthalpy-based_2012]. @rajhans_flows_2022 relaxed the assumption of subsonic flows in EBTEL such that the Mach numbers and velocities produced are in better agreement with field-aligned hydrodynamic simulations for some heating scenarios. The IDL software implementation of this model is referred to as `EBTEL3-IDL`. +The initial C++ implementation of `ebtelplusplus` was developed by @barnes_inference_2016 with modifications later made by @reep_modeling_2024 and the Python interface added later. +This is the software implementation described in this paper. The table below summarizes the features included in each implementation. | Feature | Citation | `EBTEL-IDL` | `EBTEL3-IDL` | `ebtelplusplus` | @@ -114,17 +117,16 @@ The table below summarizes the features included in each implementation. | Supersonic flows | @rajhans_flows_2022 | no | yes | no | | Time-variable abundances | @reep_modeling_2024 | no | no | yes | -Additionally, `ebtelplusplus` is very fast (a single run modeling $10^4$ seconds of simulation time takes only a few milliseconds) and nearly two orders of magnitude faster than previous IDL implementations because it is implemented in C++ and due to its use of an adaptive time-stepping scheme. - # Software Design The design of the `ebtelplusplus` software is motivated by two primary needs: 1. computational efficiency and 2. a high-level, intuitive interface. Both are essential for exploratory analysis of time-dependent heating of the coronal plasma, including large-scale parameter explorations. `ebtelplusplus` is implemented in C++ for computational efficiency and is wrapped in Python using `pybind11` [@wenzel_jakob_2025_16929811] to enable easier installation and a user-friendly API. +As a result, `ebtelplusplus` is very fast (a single run modeling $10^4$ seconds of simulation time takes only a few milliseconds) and nearly two orders of magnitude faster than previous IDL implementations because it is implemented in C++ and due to its use of an adaptive time-stepping scheme. Where appropriate, all inputs and outputs are expressed as `astropy.units.Quantity` objects [@astropy_collaboration_astropy_2022] to maximize flexibility and avoid ambiguity. As an example, two of the primary inputs for configuring an `ebtelplusplus` simulation are the total simulation time and the loop length. These inputs can be expressed in any units provided they can be converted to seconds and centimeters, respectively. -High-level Python objects are provided for configuring additional inputs, including the time-dependent heating, and include default values to avoid overly-verbose configuration procedures unless necessary. +High-level Python objects are provided for configuring additional inputs, including the time-dependent heating, and include default values to avoid overly-verbose input configurations. To make the installation process easier for users, precompiled binary wheels are built using [`cibuildwheel`](https://cibuildwheel.pypa.io/en/stable/) run on GitHub Actions[^oatemplates] and distributed via [PyPI](https://pypi.org/project/ebtelplusplus/) at every release. These wheels are provided for all major operating systems and the versions of Python recommended by SPEC 0[^spec0]. From e011207947a436a7c6a22f2599b7fb11a31cd779 Mon Sep 17 00:00:00 2001 From: Will Barnes Date: Thu, 12 Feb 2026 15:14:50 -0500 Subject: [PATCH 4/5] minor tweaks --- joss/paper.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/joss/paper.md b/joss/paper.md index 1779de72..e46dd933 100644 --- a/joss/paper.md +++ b/joss/paper.md @@ -99,7 +99,7 @@ These equations and their derivations are explained more fully in the aforementi # State of the Field -There are currently three separate though slightly different implementations of the EBTEL model. +There are currently three separate implementations of the EBTEL model. The original software implementation of the EBTEL model was in the proprietary Interactive Data Language (IDL). This implementation, which includes features described in @cargill_enthalpy-based_2012 and @cargill_static_2021, is referred to as [`EBTEL-IDL`](https://github.com/rice-solar-physics/EBTEL) [@cargill_2024_13351770]. Comparisons between `EBTEL-IDL` and spatially-averaged results from field-aligned hydrodynamic models show very good agreement [@cargill_enthalpy-based_2012]. @@ -122,7 +122,7 @@ The table below summarizes the features included in each implementation. The design of the `ebtelplusplus` software is motivated by two primary needs: 1. computational efficiency and 2. a high-level, intuitive interface. Both are essential for exploratory analysis of time-dependent heating of the coronal plasma, including large-scale parameter explorations. `ebtelplusplus` is implemented in C++ for computational efficiency and is wrapped in Python using `pybind11` [@wenzel_jakob_2025_16929811] to enable easier installation and a user-friendly API. -As a result, `ebtelplusplus` is very fast (a single run modeling $10^4$ seconds of simulation time takes only a few milliseconds) and nearly two orders of magnitude faster than previous IDL implementations because it is implemented in C++ and due to its use of an adaptive time-stepping scheme. +As a result, `ebtelplusplus` is very fast (a single run modeling $10^4$ seconds of simulation time takes only a few milliseconds) and nearly two orders of magnitude faster than previous IDL implementations. Where appropriate, all inputs and outputs are expressed as `astropy.units.Quantity` objects [@astropy_collaboration_astropy_2022] to maximize flexibility and avoid ambiguity. As an example, two of the primary inputs for configuring an `ebtelplusplus` simulation are the total simulation time and the loop length. These inputs can be expressed in any units provided they can be converted to seconds and centimeters, respectively. From c86f48af08a4f898b01015520c42bb7576a4a3aa Mon Sep 17 00:00:00 2001 From: Will Barnes Date: Thu, 26 Feb 2026 01:12:53 -0500 Subject: [PATCH 5/5] remove pdf build action --- .github/workflows/draft-pdf.yml | 29 ----------------------------- 1 file changed, 29 deletions(-) delete mode 100644 .github/workflows/draft-pdf.yml diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml deleted file mode 100644 index 0eed338e..00000000 --- a/.github/workflows/draft-pdf.yml +++ /dev/null @@ -1,29 +0,0 @@ -# Remove this once JOSS paper is published -name: Draft PDF -on: - pull_request: - paths: - - joss/** - - .github/workflows/draft-pdf.yml - -jobs: - paper: - runs-on: ubuntu-latest - name: Paper Draft - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Build draft PDF - uses: openjournals/openjournals-draft-action@master - with: - journal: joss - # This should be the path to the paper within your repo. - paper-path: joss/paper.md - - name: Upload - uses: actions/upload-artifact@v4 - with: - name: paper - # This is the output path where Pandoc will write the compiled - # PDF. Note, this should be the same directory as the input - # paper.md - path: joss/paper.pdf