Tabulated optically thin radiative cooling module with Townsend integration#349
Tabulated optically thin radiative cooling module with Townsend integration#349dutta-alankar wants to merge 39 commits into
Conversation
|
@glesur I noticed that use of CGS quantities has now been incorporated into |
Updated energy calculation in addSourceTerms.hpp to use energy per unit volume instead of specific energy.
|
I have now updated the Townsend radiative cooling module to utilize the code units to CGS units conversion as a runtime parameter from the ini file and the documentation has been updated accordingly along with the addition of a test problem of an advecting uniform box undergoing cooling in |
|
Hi @dutta-alankar |
@neutrinoceros I understand. Apologies for my lack of knowledge on the latest developments and dynamics in the Idefix development team. |
|
No worries |
|
@dutta-alankar thanks for the heads up and the additional test. I owe you an applogy for the delay in working on your PR... I'll submit a review shortly, but in the meantime, I think you can probably start with fixing the pre-commit issues. |
[FIX] `pre-commit` linting
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@glesur I agree and should have noted this earlier. Anyway, now I changed the base branch to |
| // tabulated data does not enclose the temperature value | ||
| printf("RadCooling::TownsendIntegration Temperature out of range: T=%e, " | ||
| "valid range=[%e, %e]\n", | ||
| temperature, temperature_min_data, temperature_max_data); | ||
| Kokkos::abort("RadCooling::TownsendIntegration Temperature out of range"); |
There was a problem hiding this comment.
It might be okay to let it pass.
Fix to not have radiative cooling in isothermal setup Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
|
@dutta-alankar : good idea for the CIs. Drop me a message when you think this is ready so that I can trigger the workflow on our side. |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
| explicit Fluid_AddSourceTermsFunctor(Fluid<Phys> *hydro, real dt): | ||
| hydroin(hydro) { |
There was a problem hiding this comment.
Not related to my PR and I leave it to @glesur to consider this or not.
| IdefixArray3D<real> csIsoArr; | ||
| IdefixArray3D<real> delta_eng_cool; | ||
|
|
||
| Fluid<Phys> *hydroin; |
There was a problem hiding this comment.
Again not related to this PR and left to @glesur to decide
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@glesur I think now you can trigger the CI/CD workflow from your end. |
|
@glesur In case you missed my previous comment. I think that this PR is now at a good state when you can trigger a CI/CD workflow. |
I have implemented optically thin radiative cooling module for Idefix. I have tested this for by allowing cooling of a collection of cells (initially at$2\times 10^6 \ \rm K$ ) in a uniform domain (and calculating temperature and $-\dot{e}/n_H^2$ from the code over time) which seems to exactly reproduce the cooling rate as supplied by the table read during runtime by the code (screenshot attached). The setup and analysis code is attached here for reference and further testing. I have also put in a sample
Cloudygenerated equilibrium cooling rate table for plasma at solar metallicity in presence of HM12 UV photo-ionizing background at redshift 0.The integration method follows the Townsend algorithm (https://ui.adsabs.harvard.edu/abs/2009ApJS..181..391T/abstract), which is quite efficient in calculating the pressure drop due to radiative cooling. There is also a way to set a floor that switches off cooling below some temperature, as required by many popular setups. I have also included a small
.rstdocumentation for this module.Let me know if this is something worth integrating to the main repo and if something additional needs to be done.
Test setup:
cooling-test.tar.gz
Test result (purple: supplied table; green: code result):
