From c29e41fb0977a5c0604bac3b78d63a8bcd152c1b Mon Sep 17 00:00:00 2001 From: Khanak Bhargava Date: Tue, 5 May 2026 10:31:50 -0400 Subject: [PATCH 1/2] reverse eos data inline --- CMakeLists.txt | 9 ++++++--- interfaces/Make.package | 1 + interfaces/eos_data.H | 33 +++++++++++++++++---------------- interfaces/eos_data.cpp | 21 +++++++++++++++++++++ 4 files changed, 45 insertions(+), 19 deletions(-) create mode 100644 interfaces/eos_data.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 715018f53..9df6fabce 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,7 +41,8 @@ function(setup_target_for_microphysics_compilation network_name output_dir) execute_process(COMMAND python3 "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/util/build_scripts/write_probin.py" --pa "${EOSparamfile} ${networkparamfile} ${VODEparamfile} ${integrationparamfile}" --use_namespace WORKING_DIRECTORY ${output_dir}/) - set(gamma_law_sources ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/interfaces/network_initialization.cpp + set(gamma_law_sources ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/interfaces/eos_data.cpp + ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/interfaces/network_initialization.cpp ${output_dir}/extern_parameters.cpp PARENT_SCOPE) execute_process(COMMAND python3 "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/networks/general_null/write_network.py" --header_template "${networkheadertemplatefile}" --header_output "${networkpropfile}" -s "${networkfile}" WORKING_DIRECTORY ${output_dir}/) @@ -81,7 +82,8 @@ function(setup_target_for_microphysics_compilation network_name output_dir) ${networkparamfile} ${VODEparamfile} ${integrationparamfile} " --use_namespace WORKING_DIRECTORY ${output_dir}/) endif() - set(primordial_chem_sources ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/interfaces/network_initialization.cpp + set(primordial_chem_sources ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/interfaces/eos_data.cpp + ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/interfaces/network_initialization.cpp ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/networks/primordial_chem/actual_network_data.cpp ${output_dir}/extern_parameters.cpp PARENT_SCOPE) @@ -127,7 +129,8 @@ function(setup_target_for_microphysics_compilation network_name output_dir) endif() #unlike primordial chem, we also include actual_network_data.cpp here because it is in there that we read in the Semenov opacity table - set(metal_chem_sources ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/interfaces/network_initialization.cpp + set(metal_chem_sources ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/interfaces/eos_data.cpp + ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/interfaces/network_initialization.cpp ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/networks/metal_chem/actual_network_data.cpp ${output_dir}/extern_parameters.cpp PARENT_SCOPE) diff --git a/interfaces/Make.package b/interfaces/Make.package index f945ec583..38fbc8cee 100644 --- a/interfaces/Make.package +++ b/interfaces/Make.package @@ -4,6 +4,7 @@ CEXE_headers += eos.H CEXE_headers += eos_data.H CEXE_headers += eos_type.H CEXE_headers += eos_override.H +CEXE_sources += eos_data.cpp CEXE_headers += network.H CEXE_headers += rhs_type.H diff --git a/interfaces/eos_data.H b/interfaces/eos_data.H index 159c6edbc..4d418c689 100644 --- a/interfaces/eos_data.H +++ b/interfaces/eos_data.H @@ -9,22 +9,23 @@ namespace EOSData { inline bool initialized; - inline AMREX_GPU_MANAGED amrex::Real mintemp; - inline AMREX_GPU_MANAGED amrex::Real maxtemp; - inline AMREX_GPU_MANAGED amrex::Real mindens; - inline AMREX_GPU_MANAGED amrex::Real maxdens; - inline AMREX_GPU_MANAGED amrex::Real minx; - inline AMREX_GPU_MANAGED amrex::Real maxx; - inline AMREX_GPU_MANAGED amrex::Real minye; - inline AMREX_GPU_MANAGED amrex::Real maxye; - inline AMREX_GPU_MANAGED amrex::Real mine; - inline AMREX_GPU_MANAGED amrex::Real maxe; - inline AMREX_GPU_MANAGED amrex::Real minp; - inline AMREX_GPU_MANAGED amrex::Real maxp; - inline AMREX_GPU_MANAGED amrex::Real mins; - inline AMREX_GPU_MANAGED amrex::Real maxs; - inline AMREX_GPU_MANAGED amrex::Real minh; - inline AMREX_GPU_MANAGED amrex::Real maxh; + + extern AMREX_GPU_MANAGED amrex::Real mintemp; + extern AMREX_GPU_MANAGED amrex::Real maxtemp; + extern AMREX_GPU_MANAGED amrex::Real mindens; + extern AMREX_GPU_MANAGED amrex::Real maxdens; + extern AMREX_GPU_MANAGED amrex::Real minx; + extern AMREX_GPU_MANAGED amrex::Real maxx; + extern AMREX_GPU_MANAGED amrex::Real minye; + extern AMREX_GPU_MANAGED amrex::Real maxye; + extern AMREX_GPU_MANAGED amrex::Real mine; + extern AMREX_GPU_MANAGED amrex::Real maxe; + extern AMREX_GPU_MANAGED amrex::Real minp; + extern AMREX_GPU_MANAGED amrex::Real maxp; + extern AMREX_GPU_MANAGED amrex::Real mins; + extern AMREX_GPU_MANAGED amrex::Real maxs; + extern AMREX_GPU_MANAGED amrex::Real minh; + extern AMREX_GPU_MANAGED amrex::Real maxh; } #endif diff --git a/interfaces/eos_data.cpp b/interfaces/eos_data.cpp new file mode 100644 index 000000000..bd2bc0ff9 --- /dev/null +++ b/interfaces/eos_data.cpp @@ -0,0 +1,21 @@ +#include + +namespace EOSData +{ + AMREX_GPU_MANAGED amrex::Real mintemp; + AMREX_GPU_MANAGED amrex::Real maxtemp; + AMREX_GPU_MANAGED amrex::Real mindens; + AMREX_GPU_MANAGED amrex::Real maxdens; + AMREX_GPU_MANAGED amrex::Real minx; + AMREX_GPU_MANAGED amrex::Real maxx; + AMREX_GPU_MANAGED amrex::Real minye; + AMREX_GPU_MANAGED amrex::Real maxye; + AMREX_GPU_MANAGED amrex::Real mine; + AMREX_GPU_MANAGED amrex::Real maxe; + AMREX_GPU_MANAGED amrex::Real minp; + AMREX_GPU_MANAGED amrex::Real maxp; + AMREX_GPU_MANAGED amrex::Real mins; + AMREX_GPU_MANAGED amrex::Real maxs; + AMREX_GPU_MANAGED amrex::Real minh; + AMREX_GPU_MANAGED amrex::Real maxh; +} \ No newline at end of file From c89ad46ad6a313493d851df0a0c29c23d7010204 Mon Sep 17 00:00:00 2001 From: Khanak Bhargava Date: Tue, 5 May 2026 15:24:59 -0400 Subject: [PATCH 2/2] reverse helmholtz --- EOS/helmholtz/Make.package | 2 ++ EOS/helmholtz/actual_eos_data.H | 38 +++++++++++++++---------------- EOS/helmholtz/actual_eos_data.cpp | 33 +++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 19 deletions(-) create mode 100644 EOS/helmholtz/actual_eos_data.cpp diff --git a/EOS/helmholtz/Make.package b/EOS/helmholtz/Make.package index da15fce10..dd79db981 100644 --- a/EOS/helmholtz/Make.package +++ b/EOS/helmholtz/Make.package @@ -1,2 +1,4 @@ CEXE_headers += actual_eos.H CEXE_headers += actual_eos_data.H + +CEXE_sources += actual_eos_data.cpp diff --git a/EOS/helmholtz/actual_eos_data.H b/EOS/helmholtz/actual_eos_data.H index 73da23d8f..25c706df6 100644 --- a/EOS/helmholtz/actual_eos_data.H +++ b/EOS/helmholtz/actual_eos_data.H @@ -9,8 +9,8 @@ namespace helmholtz using namespace amrex::literals; - inline AMREX_GPU_MANAGED int do_coulomb; - inline AMREX_GPU_MANAGED int input_is_constant; + extern AMREX_GPU_MANAGED int do_coulomb; + extern AMREX_GPU_MANAGED int input_is_constant; // for the tables @@ -26,34 +26,34 @@ namespace helmholtz constexpr amrex::Real dstp = (dhi - dlo) / (static_cast(imax-1)); constexpr amrex::Real dstpi = 1.0e0_rt / dstp; - inline AMREX_GPU_MANAGED amrex::Real d[imax]; - inline AMREX_GPU_MANAGED amrex::Real t[jmax]; + extern AMREX_GPU_MANAGED amrex::Real d[imax]; + extern AMREX_GPU_MANAGED amrex::Real t[jmax]; - inline AMREX_GPU_MANAGED amrex::Real ttol; - inline AMREX_GPU_MANAGED amrex::Real dtol; + extern AMREX_GPU_MANAGED amrex::Real ttol; + extern AMREX_GPU_MANAGED amrex::Real dtol; // for the helmholtz free energy tables - inline AMREX_GPU_MANAGED amrex::Real f[jmax][imax][9]; + extern AMREX_GPU_MANAGED amrex::Real f[jmax][imax][9]; // for the pressure derivative with density tables - inline AMREX_GPU_MANAGED amrex::Real dpdf[jmax][imax][4]; + extern AMREX_GPU_MANAGED amrex::Real dpdf[jmax][imax][4]; // for chemical potential tables - inline AMREX_GPU_MANAGED amrex::Real ef[jmax][imax][4]; + extern AMREX_GPU_MANAGED amrex::Real ef[jmax][imax][4]; // for the number density tables - inline AMREX_GPU_MANAGED amrex::Real xf[jmax][imax][4]; + extern AMREX_GPU_MANAGED amrex::Real xf[jmax][imax][4]; // for storing the differences - inline AMREX_GPU_MANAGED amrex::Real dt_sav[jmax]; - inline AMREX_GPU_MANAGED amrex::Real dt2_sav[jmax]; - inline AMREX_GPU_MANAGED amrex::Real dti_sav[jmax]; - inline AMREX_GPU_MANAGED amrex::Real dt2i_sav[jmax]; - - inline AMREX_GPU_MANAGED amrex::Real dd_sav[imax]; - inline AMREX_GPU_MANAGED amrex::Real dd2_sav[imax]; - inline AMREX_GPU_MANAGED amrex::Real ddi_sav[imax]; - inline AMREX_GPU_MANAGED amrex::Real dd2i_sav[imax]; + extern AMREX_GPU_MANAGED amrex::Real dt_sav[jmax]; + extern AMREX_GPU_MANAGED amrex::Real dt2_sav[jmax]; + extern AMREX_GPU_MANAGED amrex::Real dti_sav[jmax]; + extern AMREX_GPU_MANAGED amrex::Real dt2i_sav[jmax]; + + extern AMREX_GPU_MANAGED amrex::Real dd_sav[imax]; + extern AMREX_GPU_MANAGED amrex::Real dd2_sav[imax]; + extern AMREX_GPU_MANAGED amrex::Real ddi_sav[imax]; + extern AMREX_GPU_MANAGED amrex::Real dd2i_sav[imax]; // 2006 CODATA physical constants constexpr amrex::Real h = 6.6260689633e-27; diff --git a/EOS/helmholtz/actual_eos_data.cpp b/EOS/helmholtz/actual_eos_data.cpp new file mode 100644 index 000000000..f76c74b07 --- /dev/null +++ b/EOS/helmholtz/actual_eos_data.cpp @@ -0,0 +1,33 @@ +#include + +AMREX_GPU_MANAGED int helmholtz::do_coulomb; +AMREX_GPU_MANAGED int helmholtz::input_is_constant; + +AMREX_GPU_MANAGED amrex::Real helmholtz::d[imax]; +AMREX_GPU_MANAGED amrex::Real helmholtz::t[jmax]; + +AMREX_GPU_MANAGED amrex::Real helmholtz::ttol; +AMREX_GPU_MANAGED amrex::Real helmholtz::dtol; + +// for the helmholtz free energy tables +AMREX_GPU_MANAGED amrex::Real helmholtz::f[jmax][imax][9]; + +// for the pressure derivative with density tables +AMREX_GPU_MANAGED amrex::Real helmholtz::dpdf[jmax][imax][4]; + +// for chemical potential tables +AMREX_GPU_MANAGED amrex::Real helmholtz::ef[jmax][imax][4]; + +// for the number density tables +AMREX_GPU_MANAGED amrex::Real helmholtz::xf[jmax][imax][4]; + +// for storing the differences +AMREX_GPU_MANAGED amrex::Real helmholtz::dt_sav[jmax]; +AMREX_GPU_MANAGED amrex::Real helmholtz::dt2_sav[jmax]; +AMREX_GPU_MANAGED amrex::Real helmholtz::dti_sav[jmax]; +AMREX_GPU_MANAGED amrex::Real helmholtz::dt2i_sav[jmax]; + +AMREX_GPU_MANAGED amrex::Real helmholtz::dd_sav[imax]; +AMREX_GPU_MANAGED amrex::Real helmholtz::dd2_sav[imax]; +AMREX_GPU_MANAGED amrex::Real helmholtz::ddi_sav[imax]; +AMREX_GPU_MANAGED amrex::Real helmholtz::dd2i_sav[imax]; \ No newline at end of file