-
+
+
-
+
diff --git a/search/search_index.json b/search/search_index.json
index 9be883e..6b51d03 100644
--- a/search/search_index.json
+++ b/search/search_index.json
@@ -1 +1 @@
-{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"ebtel++","text":"ebtel++ is a two-fluid version of the original enthalpy-based thermal evolution of loops (EBTEL) model implemented in C++. This code provides an enhanced description of plasma behavior above roughly 5 MK. Further generic details about EBTEL can be found in the repository for the original IDL code and in the references listed below.
The EBTEL model, originally developed by Klimchuk et al. (2008) efficiently computes spatially-averaged, time-dependent plasma parameters ( e.g. temperature, pressure, density) of dynamically-heated coronal loops. It is often desirable to compute solutions for a large number of coronal loops, but the spatial and temporal scales needed to solve the full 1D-hydrodynamic equations lead to long compute times for even 1D hydrodynamic codes. EBTEL computes quick and accurate solutions for spatially-averaged quantities, allowing efficient insight into how these monolithic structures evolve. Barnes et al. (2016) improved upon this model by extending the treatment to the two-fluid hydrodynamic equations, allowing for differential heating between electrons and ions. Experienced EBTEL users should note the slightly different model for calculating the the c1 parameter during conductive cooling (see Appendix A of Barnes et al., 2016).
EBTEL also calculates the differential emission measure (DEM) for both the transition region and the corona. Details regarding this formulation can be found in Klimchuk et al. (2008)
"},{"location":"#dependencies","title":"Dependencies","text":"To compile ebtel++, first install the following dependencies,
- gcc (at least v4.7)
- included with OS X as well as most Linux distributions
- cygwin on Windows
- scons
pip install scons
with PyPI conda install scons
with Anaconda
- boost (at least v1.53)
conda install boost
with Anaconda brew install boost
with Homebrew sudo port install boost
with Macports sudo apt-get install libboost-all-dev
on Debian Linux - from source
Additionally, if you'd like to run the included tests and examples, you'll need the following Python dependencies, all easily installed with anaconda,
- Python
- numpy
- matplotlib
- seaborn
"},{"location":"#installation","title":"Installation","text":"To download the code from GitHub and compile the code,
$ git clone https://github.com/rice-solar-physics/ebtelPlusPlus.git\n$ cd ebtelPlusPlus\n$ scons\n
This will create an executable bin/ebtel++.run
. To see the available command line parameters,
$ bin/ebtel++.run --help\n
and to run the executable with the default configuration file config/ebtel.example.cfg.xml
,
$ bin/ebtel++.run\n
"},{"location":"#a-note-on-compiling-against-the-boost-libraries","title":"A Note on Compiling against the boost
Libraries","text":"The included scons
configuration will do it's best to guess where to find the needed boost
headers and how to link against the needed libraries. However, depending on your operating system and or installation method, the locations and names of these libraries can vary. As such, you may find that, when compiling using scons
, you get errors like,
ld: library not found for -lboost_program_options-mt\n
Similarly, you may find that you get runtime errors about not being able to find the needed libraries when running the executable such as,
dyld[21052]: Library not loaded: '@rpath/libboost_program_options.dylib'\nReferenced from: '/home/user/ebtelPlusPlus/bin/ebtel++.run'\nReason: tried: '/usr/local/lib/libboost_program_options.dylib' (no such file), '/usr/lib/libboost_program_options.dylib' (no such file)\n[1] 21052 abort bin/ebtel++.run\n
To resolve these issues, there are a number of optional flags that you can pass to scons
when compiling the executable. For more information about the available flags, you can run scons -h
. Additionally, this GitHub issue may be helpful when debugging compile-time or runtime issues related to correctly compiling and linking against boost
.
As an example, if you have installed boost
with Anaconda in the environment ebtel-env
and your Anaconda installation is located at /home/user/anaconda
, then you will likely need to pass the following flags to scons
,
$ scons \\\n--includepath=/home/user/anaconda/envs/ebtel-env/include \\\n--libpath=/home/user/anaconda/envs/ebtel-env/lib \\\n--linkflags=\"-rpath /home/user/anaconda/envs/ebtel-env/lib\" \\\n--libs=boost_program_options\n
If instead you've installed boost
in the base Anaconda environment, then you can just drop the envs/ebtel-env
portion of each of the above paths. Note that the line breaks are only for readability and are not actually necessary when you compile your code.
"},{"location":"#testing","title":"Testing","text":"To install the needed Python dependencies and run the tests,
$ pip install -r requirements/requirements-test.txt\n$ pytest\n
or run any of the three included examples,
$ python examples/ex1.py\n$ python examples/ex2.py\n$ python examples/ex3.py\n
"},{"location":"#citation","title":"Citation","text":"If you use ebtel++ in any published work, please include the following citations and mention the use of this code.
- Klimchuk et al. (2008)
- Cargill et al. (2012a)
- Cargill et al. (2012b)
- Barnes et al. (2016)
The first three papers detail the original single-fluid EBTEL model while the last paper gives the details of the two-fluid model. In particular, the details of how the two-fluid EBTEL equations are derived can be found in the appendix of Barnes et al. (2016).
"},{"location":"configuration/","title":"Configuration","text":"An ebtel++ run is configured by a single XML configuration file. The table below lists all of the input parameters needed for a run. An example configuration file is included in the GitHub repository. The configuration file can be written manually or configured via Python as is done in the included examples.
Parameter Type Description total_time float
duration of the simulation (in s) tau float
timestep (in s); if using adaptive solver, the initial timestep tau_max float
maximum allowed timestep (in s) when using adaptive solver loop_length float
Loop half-length (in cm) saturation_limit float
Flux limiter, f in section 2.1 of Barnes et al. (2016) force_single_fluid bool
if True, electron and ion populations forced into equilibrium use_c1_loss_correction bool
use correction in Eq. 16 of Cargill et al. (2012a) use_c1_grav_correction bool
use correction in Eq. 12 of Cargill et al. (2012a) use_flux_limiting bool
impose a flux limiter according to Eq. 22 of Klimchuk et al. (2008) calculate_dem bool
if True, do the TR and coronal DEM calculation; increases compute time significantly save_terms bool
if True, save heat flux, c_1 parameter, and radiative loss to a separate file <output_filename>.terms
use_adaptive_solver bool
if True, use adaptive timestep; significantly smaller compute times. In both cases, a Runge-Kutta Cash-Karp integration method is used (see section 16.2 of Press et al. (1992)) output_filename string
path to output file adaptive_solver_error float
Allowed truncation error in adaptive timestep routine adaptive_solver_safety float
Refinement factor, between 0 and 1, used if timestep becomes too large and solution contains NaNs. Especially important for short, infrequently heated loops. Also controls decreases in timestep due to thermal conduction timestep. Suggested value is 0.5 c1_cond0 float
Nominal value of c_1 during the conduction phase; see Appendix A of Barnes et al. (2016) c1_rad0 float
Nominal value of c_1 during radiative phase; see Eq. 16 of Cargill et al. (2012a) helium_to_hydrogen_ratio float
Ratio of helium to hydrogen abundance; used in correction to ion mass, ion equation of state surface_gravity float
Surface gravity in units of solar surface gravity; should be set to 1.0 unless using for extra-solar cases"},{"location":"configuration/#heating","title":"Heating","text":"The time dependent heating is configured in a separate node. It includes the following parameters,
Parameter Type Description partition float
partition of heating between electrons and ions, between 0 and 1; 1 is pure electron heating, 0 pure ion heating background float
constant background heating (in ergs cm^{-3} s^{-1}) The heating function is constructed by a list of discrete events and should be specified in the following way,
<events>\n<event magnitude=\"0.1\" rise_start=\"0.0\" rise_end=\"50.0\" decay_start=\"50.0\" decay_end=\"100.0\"/>\n<event magnitude=\"0.05\" rise_start=\"1000.0\" rise_end=\"1250.0\" decay_start=\"1350.0\" decay_end=\"1450.0\"/>\n</events>\n
Here, we've configured two separate heating events. The first starts at 0 seconds, rises linearly to a maximum heating rate of 0.1 erg cm^{-3} s^{-1} in 50 seconds, and then immediately falls off with the event concluding at 100 seconds, i.e. a triangular heating profile. The second starts at 1000 seconds, rises to a maximum heating rate of 0.05 erg cm^{-3} s^{-1} in 250 seconds, is sustained at 0.05 for 100 seconds and then the event concludes at 1450 seconds.
Using this format, it is easy to specify either symmetric or asymmetric events of many different shapes. For more examples, see the example configuration file or the included examples.
"},{"location":"configuration/#differential-emission-measure","title":"Differential Emission Measure","text":"Optionally, ebtel++ can can also calculate the differential emission measure (DEM) in both the transition region and the corona. See sections 2.2 and 3 of Klimchuk et al. (2008) for the details of this calculation. To enable this calculation, set calculate_dem
to True
in the configuration file (as described above). Note that this will result in much longer computation times.
If calculate_dem
is set to True
, ebtel++ will read in the dem
node from the configuration file which should be structured as follows,
<dem>\n<use_new_method>True</use_new_method>\n<temperature bins=\"451\" log_min=\"4\" log_max=\"8.5\"/>\n</dem>\n
If use_new_method
is set to True (False), the transition region DEM is calculated using the method outlined in section 3 (the appendix) of Klimchuk et al. (2008). The temperature
node configures the range and number of bins used when calculating the DEM. Here, for example, there are 450 bins of equal width between 10^4 and 10^{8.5} K.
If you do not need to calculate the DEM, set the calculate_dem
parameter to False and this section of the configuration file need not be included.
"},{"location":"configuration/#output","title":"Output","text":"Once the EBTEL run has finished, the results are printed to the file specified in output_filename
in the configuration file (as described above). Several examples of how to parse the results in Python can be found here. In general, the results file follows the structure,
t_0 T_e(t_0) T_i(t_0) n(t_0) p_e(t_0) p_i(t_0) v(t_0) h(t_0) ... ... ... ... ... ... ... ... t_i T_e(t_i) T_i(t_i) n(t_i) p_e(t_i) p_i(t_i) v(t_i) h(t_i) ... ... ... ... ... ... ... ... t_{N-1} T_e(t_{N-1}) T_i(t_{N-1}) n(t_{N-1}) p_e(t_{N-1}) p_i(t_{N-1}) v(t_{N-1}) h(t_{N-1}) Here t is the time, T_e is the electron temperature, T_i is the ion temperature, p_e is the electron pressure, p_i is the ion pressure, n is the density, v is the velocity, and h is the heating rate.
If calculate_dem
is set to True, the TR and coronal DEM results are printed to <output_filename>.dem_tr
and <output_filename>.dem_corona
, respectively. These output files are structured in the following way,
T_0 ... T_j ... T_{M-1} DEM(t_0,T_0) ... DEM(t_0,T_j) ... DEM(t_0,T_{M-1}) ... ... ... ... ... DEM(t_i,T_0) ... DEM(t_i,T_j) ... DEM(t_i,T_{M-1}) ... ... ... ... ... DEM(t_{N-1},T_0) ... DEM(t_{N-1},T_j) ... DEM(t_{N-1},T_{M-1}) where M is the number of temperature bins and N is again the number of timesteps.
"},{"location":"examples/","title":"Examples","text":"Included below are a few examples of how to run ebtel++
and plot the results using Python. The results files can be parsed very easily by any language (e.g. IDL,Matlab). Configuration files can also be easily manipulated by hand, but in practice, particularly when computing many EBTEL runs, it is better to script this. The util.py script provides several convenient utilities for manipulating these configuration files.
"},{"location":"examples/#electron-heating","title":"Electron Heating","text":"In this example, only the electrons are heated by a single triangular pulse lasting 500 seconds and injecting 10 ergs per cubic centimeter into the loop plasma. The code used to make this figure can be found here.
"},{"location":"examples/#ion-heating","title":"Ion Heating","text":"In this second example, only the ions are heated. In this case, we heat the ions with five distinct pulses, each lasting 200 seconds and separated by about 2000 seconds. The energies are uniformly distributed between 0.001 and 0.1 ergs per cubic centimeter per second. The example code can be found here. Note how easy it is to programmatically generate the configurations for these different heating profiles.
"},{"location":"examples/#single-fluid","title":"Single Fluid","text":"Lastly, we show an example where the electron and ion populations are forced into equilibrium at all times, i.e. the single-fluid case. The loop plasma is heated by a single pulse lasting 2000 seconds that rises quickly (in 250 seconds), is sustained at 0.005 ergs per cubic centimeter per second for 750 seconds, and then decays back to the background value over 1000 seconds. The example code can be found here.
"}]}
\ No newline at end of file
+{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"ebtel++","text":"ebtel++ is a two-fluid version of the original enthalpy-based thermal evolution of loops (EBTEL) model implemented in C++. This code provides an enhanced description of plasma behavior above roughly 5 MK. Further generic details about EBTEL can be found in the repository for the original IDL code and in the references listed below.
The EBTEL model, originally developed by Klimchuk et al. (2008) efficiently computes spatially-averaged, time-dependent plasma parameters ( e.g. temperature, pressure, density) of dynamically-heated coronal loops. It is often desirable to compute solutions for a large number of coronal loops, but the spatial and temporal scales needed to solve the full 1D-hydrodynamic equations lead to long compute times for even 1D hydrodynamic codes. EBTEL computes quick and accurate solutions for spatially-averaged quantities, allowing efficient insight into how these monolithic structures evolve. Barnes et al. (2016) improved upon this model by extending the treatment to the two-fluid hydrodynamic equations, allowing for differential heating between electrons and ions. Experienced EBTEL users should note the slightly different model for calculating the the c1 parameter during conductive cooling (see Appendix A of Barnes et al., 2016).
EBTEL also calculates the differential emission measure (DEM) for both the transition region and the corona. Details regarding this formulation can be found in Klimchuk et al. (2008)
"},{"location":"#dependencies","title":"Dependencies","text":"To compile ebtel++, first install the following dependencies,
- gcc (at least v4.7)
- included with OS X as well as most Linux distributions
- cygwin on Windows
- scons
pip install scons
with PyPI conda install scons
with Anaconda
- boost (at least v1.53)
conda install boost
with Anaconda brew install boost
with Homebrew sudo port install boost
with Macports sudo apt-get install libboost-all-dev
on Debian Linux - from source
Additionally, if you'd like to run the included tests and examples, you'll need the following Python dependencies, all easily installed with anaconda,
- Python
- numpy
- matplotlib
- seaborn
"},{"location":"#installation","title":"Installation","text":"To download the code from GitHub and compile the code,
$ git clone https://github.com/rice-solar-physics/ebtelPlusPlus.git\n$ cd ebtelPlusPlus\n$ scons\n
This will create an executable bin/ebtel++.run
. To see the available command line parameters,
$ bin/ebtel++.run --help\n
and to run the executable with the default configuration file config/ebtel.example.cfg.xml
,
$ bin/ebtel++.run\n
"},{"location":"#a-note-on-compiling-against-the-boost-libraries","title":"A Note on Compiling against the boost
Libraries","text":"The included scons
configuration will do it's best to guess where to find the needed boost
headers and how to link against the needed libraries. However, depending on your operating system and or installation method, the locations and names of these libraries can vary. As such, you may find that, when compiling using scons
, you get errors like,
ld: library not found for -lboost_program_options-mt\n
Similarly, you may find that you get runtime errors about not being able to find the needed libraries when running the executable such as,
dyld[21052]: Library not loaded: '@rpath/libboost_program_options.dylib'\n Referenced from: '/home/user/ebtelPlusPlus/bin/ebtel++.run'\n Reason: tried: '/usr/local/lib/libboost_program_options.dylib' (no such file), '/usr/lib/libboost_program_options.dylib' (no such file)\n[1] 21052 abort bin/ebtel++.run\n
To resolve these issues, there are a number of optional flags that you can pass to scons
when compiling the executable. For more information about the available flags, you can run scons -h
. Additionally, this GitHub issue may be helpful when debugging compile-time or runtime issues related to correctly compiling and linking against boost
.
As an example, if you have installed boost
with Anaconda in the environment ebtel-env
and your Anaconda installation is located at /home/user/anaconda
, then you will likely need to pass the following flags to scons
,
$ scons \\\n --includepath=/home/user/anaconda/envs/ebtel-env/include \\\n --libpath=/home/user/anaconda/envs/ebtel-env/lib \\\n --linkflags=\"-rpath /home/user/anaconda/envs/ebtel-env/lib\" \\\n --libs=boost_program_options\n
If instead you've installed boost
in the base Anaconda environment, then you can just drop the envs/ebtel-env
portion of each of the above paths. Note that the line breaks are only for readability and are not actually necessary when you compile your code.
"},{"location":"#testing","title":"Testing","text":"To install the needed Python dependencies and run the tests,
$ pip install -r requirements/requirements-test.txt\n$ pytest\n
or run any of the three included examples,
$ python examples/ex1.py\n$ python examples/ex2.py\n$ python examples/ex3.py\n
"},{"location":"#citation","title":"Citation","text":"If you use ebtel++ in any published work, please include the following citations and mention the use of this code.
- Klimchuk et al. (2008)
- Cargill et al. (2012a)
- Cargill et al. (2012b)
- Barnes et al. (2016)
The first three papers detail the original single-fluid EBTEL model while the last paper gives the details of the two-fluid model. In particular, the details of how the two-fluid EBTEL equations are derived can be found in the appendix of Barnes et al. (2016).
"},{"location":"configuration/","title":"Configuration","text":"An ebtel++ run is configured by a single XML configuration file. The table below lists all of the input parameters needed for a run. An example configuration file is included in the GitHub repository. The configuration file can be written manually or configured via Python as is done in the included examples.
Parameter Type Description total_time float
duration of the simulation (in s) tau float
timestep (in s); if using adaptive solver, the initial timestep tau_max float
maximum allowed timestep (in s) when using adaptive solver loop_length float
Loop half-length (in cm) saturation_limit float
Flux limiter, f in section 2.1 of Barnes et al. (2016) force_single_fluid bool
if True, electron and ion populations forced into equilibrium use_c1_loss_correction bool
use correction in Eq. 16 of Cargill et al. (2012a) use_c1_grav_correction bool
use correction in Eq. 12 of Cargill et al. (2012a) use_flux_limiting bool
impose a flux limiter according to Eq. 22 of Klimchuk et al. (2008) calculate_dem bool
if True, do the TR and coronal DEM calculation; increases compute time significantly save_terms bool
if True, save heat flux, c_1 parameter, and radiative loss to a separate file <output_filename>.terms
use_adaptive_solver bool
if True, use adaptive timestep; significantly smaller compute times. In both cases, a Runge-Kutta Cash-Karp integration method is used (see section 16.2 of Press et al. (1992)) output_filename string
path to output file adaptive_solver_error float
Allowed truncation error in adaptive timestep routine adaptive_solver_safety float
Refinement factor, between 0 and 1, used if timestep becomes too large and solution contains NaNs. Especially important for short, infrequently heated loops. Also controls decreases in timestep due to thermal conduction timestep. Suggested value is 0.5 c1_cond0 float
Nominal value of c_1 during the conduction phase; see Appendix A of Barnes et al. (2016) c1_rad0 float
Nominal value of c_1 during radiative phase; see Eq. 16 of Cargill et al. (2012a) helium_to_hydrogen_ratio float
Ratio of helium to hydrogen abundance; used in correction to ion mass, ion equation of state surface_gravity float
Surface gravity in units of solar surface gravity; should be set to 1.0 unless using for extra-solar cases"},{"location":"configuration/#heating","title":"Heating","text":"The time dependent heating is configured in a separate node. It includes the following parameters,
Parameter Type Description partition float
partition of heating between electrons and ions, between 0 and 1; 1 is pure electron heating, 0 pure ion heating background float
constant background heating (in ergs cm^{-3} s^{-1}) The heating function is constructed by a list of discrete events and should be specified in the following way,
<events>\n <event magnitude=\"0.1\" rise_start=\"0.0\" rise_end=\"50.0\" decay_start=\"50.0\" decay_end=\"100.0\"/>\n <event magnitude=\"0.05\" rise_start=\"1000.0\" rise_end=\"1250.0\" decay_start=\"1350.0\" decay_end=\"1450.0\"/>\n</events>\n
Here, we've configured two separate heating events. The first starts at 0 seconds, rises linearly to a maximum heating rate of 0.1 erg cm^{-3} s^{-1} in 50 seconds, and then immediately falls off with the event concluding at 100 seconds, i.e. a triangular heating profile. The second starts at 1000 seconds, rises to a maximum heating rate of 0.05 erg cm^{-3} s^{-1} in 250 seconds, is sustained at 0.05 for 100 seconds and then the event concludes at 1450 seconds.
Using this format, it is easy to specify either symmetric or asymmetric events of many different shapes. For more examples, see the example configuration file or the included examples.
"},{"location":"configuration/#differential-emission-measure","title":"Differential Emission Measure","text":"Optionally, ebtel++ can can also calculate the differential emission measure (DEM) in both the transition region and the corona. See sections 2.2 and 3 of Klimchuk et al. (2008) for the details of this calculation. To enable this calculation, set calculate_dem
to True
in the configuration file (as described above). Note that this will result in much longer computation times.
If calculate_dem
is set to True
, ebtel++ will read in the dem
node from the configuration file which should be structured as follows,
<dem>\n <use_new_method>True</use_new_method>\n <temperature bins=\"451\" log_min=\"4\" log_max=\"8.5\"/>\n</dem>\n
If use_new_method
is set to True (False), the transition region DEM is calculated using the method outlined in section 3 (the appendix) of Klimchuk et al. (2008). The temperature
node configures the range and number of bins used when calculating the DEM. Here, for example, there are 450 bins of equal width between 10^4 and 10^{8.5} K.
If you do not need to calculate the DEM, set the calculate_dem
parameter to False and this section of the configuration file need not be included.
"},{"location":"configuration/#output","title":"Output","text":"Once the EBTEL run has finished, the results are printed to the file specified in output_filename
in the configuration file (as described above). Several examples of how to parse the results in Python can be found here. In general, the results file follows the structure,
t_0 T_e(t_0) T_i(t_0) n(t_0) p_e(t_0) p_i(t_0) v(t_0) h(t_0) ... ... ... ... ... ... ... ... t_i T_e(t_i) T_i(t_i) n(t_i) p_e(t_i) p_i(t_i) v(t_i) h(t_i) ... ... ... ... ... ... ... ... t_{N-1} T_e(t_{N-1}) T_i(t_{N-1}) n(t_{N-1}) p_e(t_{N-1}) p_i(t_{N-1}) v(t_{N-1}) h(t_{N-1}) Here t is the time, T_e is the electron temperature, T_i is the ion temperature, p_e is the electron pressure, p_i is the ion pressure, n is the density, v is the velocity, and h is the heating rate.
If calculate_dem
is set to True, the TR and coronal DEM results are printed to <output_filename>.dem_tr
and <output_filename>.dem_corona
, respectively. These output files are structured in the following way,
T_0 ... T_j ... T_{M-1} DEM(t_0,T_0) ... DEM(t_0,T_j) ... DEM(t_0,T_{M-1}) ... ... ... ... ... DEM(t_i,T_0) ... DEM(t_i,T_j) ... DEM(t_i,T_{M-1}) ... ... ... ... ... DEM(t_{N-1},T_0) ... DEM(t_{N-1},T_j) ... DEM(t_{N-1},T_{M-1}) where M is the number of temperature bins and N is again the number of timesteps.
"},{"location":"examples/","title":"Examples","text":"Included below are a few examples of how to run ebtel++
and plot the results using Python. The results files can be parsed very easily by any language (e.g. IDL,Matlab). Configuration files can also be easily manipulated by hand, but in practice, particularly when computing many EBTEL runs, it is better to script this. The util.py script provides several convenient utilities for manipulating these configuration files.
"},{"location":"examples/#electron-heating","title":"Electron Heating","text":"In this example, only the electrons are heated by a single triangular pulse lasting 500 seconds and injecting 10 ergs per cubic centimeter into the loop plasma. The code used to make this figure can be found here.
"},{"location":"examples/#ion-heating","title":"Ion Heating","text":"In this second example, only the ions are heated. In this case, we heat the ions with five distinct pulses, each lasting 200 seconds and separated by about 2000 seconds. The energies are uniformly distributed between 0.001 and 0.1 ergs per cubic centimeter per second. The example code can be found here. Note how easy it is to programmatically generate the configurations for these different heating profiles.
"},{"location":"examples/#single-fluid","title":"Single Fluid","text":"Lastly, we show an example where the electron and ion populations are forced into equilibrium at all times, i.e. the single-fluid case. The loop plasma is heated by a single pulse lasting 2000 seconds that rises quickly (in 250 seconds), is sustained at 0.005 ergs per cubic centimeter per second for 750 seconds, and then decays back to the background value over 1000 seconds. The example code can be found here.
"}]}
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
index 8e1e8ed..45f74b2 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -2,17 +2,17 @@
https://rice-solar-physics.github.io/ebtelPlusPlus/
- 2023-04-12
+ 2023-11-17
daily
https://rice-solar-physics.github.io/ebtelPlusPlus/configuration/
- 2023-04-12
+ 2023-11-17
daily
https://rice-solar-physics.github.io/ebtelPlusPlus/examples/
- 2023-04-12
+ 2023-11-17
daily
\ No newline at end of file
diff --git a/sitemap.xml.gz b/sitemap.xml.gz
index 8b37b1b..ae4a68f 100644
Binary files a/sitemap.xml.gz and b/sitemap.xml.gz differ