diff --git a/CHANGES.md b/CHANGES.md index 8a5be8752f..7b7e78a0da 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,35 @@ +# 24.08 + + * lazy QueueReduction has been enabled for the timing diagnostics + (#2926) + + * The `job_info` file output now correctly labels the compute time + as GPU-hours instead of CPU-hours when running on GPUs (#2930) + + * We can now output warnings when running on GPUs if you build + with `USE_GPU_PRINTF=TRUE`(#2923, #2928) + + * Code clean-ups / sync with Microphysics (#2900, #2901, #2905, + #2906, #2909, #2912, #2919, #2922, #2932, #2933, #2936, #2938, + #2940) + + * The area weighting in the diagnostics in `subch_planar` was fixed + (#2885) + + * A script to produce a resolution study for the `circular_det` + problem was added (#2857) + + * science problem updates: `xrb_layered` (#2917), `nova` (#2913), + `wdmerger` (#2907, #2918, #2931), `Detonation` (#2902) + + * updated scaling results on Frontier (#2904, #2914, #2915) + + * more exact Riemann solver clean-up (#2896, #2897, #2898) + and clean-ups to the two shock solvers (#2895) + + * fix issues with eigenvectors and clang-tidy in the MHD solver + (#2880) + # 24.07 * Reorganizing of the existing 2-shock and HLL Riemann solvers diff --git a/Exec/hydro_tests/Noh/problem_bc_fill.H b/Exec/hydro_tests/Noh/problem_bc_fill.H index 3a6470744f..ea58ac7f35 100644 --- a/Exec/hydro_tests/Noh/problem_bc_fill.H +++ b/Exec/hydro_tests/Noh/problem_bc_fill.H @@ -29,7 +29,7 @@ void problem_bc_fill(int i, int j, int k, eos_t zone_state; zone_state.rho = rho_init * std::pow(1.0_rt + time / r, AMREX_SPACEDIM - 1); - zone_state.p = pres_init * std::pow(zone_state.rho / rho_init, 1.0_rt + eos_gamma); + zone_state.p = pres_init * std::pow(zone_state.rho / rho_init, 1.0_rt + eos_rp::eos_gamma); for (int n = 0; n < NumSpec; ++n) { zone_state.xn[n] = 1.0_rt / static_cast(NumSpec); } diff --git a/Exec/hydro_tests/RT/problem_initialize_state_data.H b/Exec/hydro_tests/RT/problem_initialize_state_data.H index 5c76f05ba3..ef1867125e 100644 --- a/Exec/hydro_tests/RT/problem_initialize_state_data.H +++ b/Exec/hydro_tests/RT/problem_initialize_state_data.H @@ -29,13 +29,13 @@ void problem_initialize_state_data (int i, int j, int k, if (r[AMREX_SPACEDIM-1] < problem::split[AMREX_SPACEDIM-1]) { Real pres = problem::p0_base - problem::rho_1 * r[AMREX_SPACEDIM-1]; - state(i,j,k,UEDEN) = pres / (eos_gamma - 1.0_rt); - state(i,j,k,UEINT) = pres / (eos_gamma - 1.0_rt); + state(i,j,k,UEDEN) = pres / (eos_rp::eos_gamma - 1.0_rt); + state(i,j,k,UEINT) = pres / (eos_rp::eos_gamma - 1.0_rt); } else { Real pres = presmid - problem::rho_2 * (r[AMREX_SPACEDIM-1] - problem::split[AMREX_SPACEDIM-1]); - state(i,j,k,UEDEN) = pres / (eos_gamma - 1.0_rt); - state(i,j,k,UEINT) = pres / (eos_gamma - 1.0_rt); + state(i,j,k,UEDEN) = pres / (eos_rp::eos_gamma - 1.0_rt); + state(i,j,k,UEINT) = pres / (eos_rp::eos_gamma - 1.0_rt); } Real pertheight; diff --git a/Exec/hydro_tests/Vortices_LWAcoustics/problem_initialize.H b/Exec/hydro_tests/Vortices_LWAcoustics/problem_initialize.H index fcb2e675d8..ac7925209c 100644 --- a/Exec/hydro_tests/Vortices_LWAcoustics/problem_initialize.H +++ b/Exec/hydro_tests/Vortices_LWAcoustics/problem_initialize.H @@ -13,11 +13,11 @@ void problem_initialize () // Define rho_0 - problem::rho_0 = std::pow(problem::p_ref, 1.0_rt/eos_gamma); + problem::rho_0 = std::pow(problem::p_ref, 1.0_rt/eos_rp::eos_gamma); // Define c_0 - problem::c_0 = std::sqrt(eos_gamma * problem::p_ref / problem::rho_0); + problem::c_0 = std::sqrt(eos_rp::eos_gamma * problem::p_ref / problem::rho_0); // Define r_c, radius of each vortex diff --git a/Exec/hydro_tests/Vortices_LWAcoustics/problem_initialize_state_data.H b/Exec/hydro_tests/Vortices_LWAcoustics/problem_initialize_state_data.H index 4ad9d2f6d6..19ffcbe555 100644 --- a/Exec/hydro_tests/Vortices_LWAcoustics/problem_initialize_state_data.H +++ b/Exec/hydro_tests/Vortices_LWAcoustics/problem_initialize_state_data.H @@ -60,7 +60,7 @@ void problem_initialize_state_data (int i, int j, int k, // internal energy - state(i,j,k,UEINT) = problem::p_ref / (eos_gamma - 1.0_rt); + state(i,j,k,UEINT) = problem::p_ref / (eos_rp::eos_gamma - 1.0_rt); // Total energy diff --git a/Exec/hydro_tests/acoustic_pulse/problem_initialize_state_data.H b/Exec/hydro_tests/acoustic_pulse/problem_initialize_state_data.H index 6ea18ace62..d63c4a8ffc 100644 --- a/Exec/hydro_tests/acoustic_pulse/problem_initialize_state_data.H +++ b/Exec/hydro_tests/acoustic_pulse/problem_initialize_state_data.H @@ -60,8 +60,8 @@ void problem_initialize_state_data (int i, int j, int k, state(i,j,k,UMZ) = 0.0_rt; // we are isentropic, so p = (dens/rho0)**Gamma_1 - Real p = std::pow(state(i,j,k,URHO) / problem::rho0, eos_gamma); - Real eint = p / (eos_gamma - 1.0_rt); + Real p = std::pow(state(i,j,k,URHO) / problem::rho0, eos_rp::eos_gamma); + Real eint = p / (eos_rp::eos_gamma - 1.0_rt); state(i,j,k,UEDEN) = eint; state(i,j,k,UEINT) = eint; diff --git a/Exec/hydro_tests/gamma_law_bubble/Problem_Derive.cpp b/Exec/hydro_tests/gamma_law_bubble/Problem_Derive.cpp index 5c82caa1a8..128640929d 100644 --- a/Exec/hydro_tests/gamma_law_bubble/Problem_Derive.cpp +++ b/Exec/hydro_tests/gamma_law_bubble/Problem_Derive.cpp @@ -177,8 +177,8 @@ void ca_derrhopert(const Box& bx, FArrayBox& derfab, int dcomp, int /*ncomp*/, if (problem::do_isentropic) { Real z = static_cast(j) * dx[AMREX_SPACEDIM-1]; density[j] = problem::dens_base * - std::pow((gravity::const_grav * problem::dens_base * (eos_gamma - 1.0_rt) * z/ - (eos_gamma * problem::pres_base) + 1.0_rt), 1.0_rt/(eos_gamma - 1.0_rt)); + std::pow((gravity::const_grav * problem::dens_base * (eos_rp::eos_gamma - 1.0_rt) * z/ + (eos_rp::eos_gamma * problem::pres_base) + 1.0_rt), 1.0_rt/(eos_rp::eos_gamma - 1.0_rt)); } else { Real z = (static_cast(j) + 0.5_rt) * dx[AMREX_SPACEDIM-1]; density[j] = problem::dens_base * std::exp(-z/H); diff --git a/Exec/hydro_tests/gamma_law_bubble/initial_model.H b/Exec/hydro_tests/gamma_law_bubble/initial_model.H index 2ab295d96b..1335d8414d 100644 --- a/Exec/hydro_tests/gamma_law_bubble/initial_model.H +++ b/Exec/hydro_tests/gamma_law_bubble/initial_model.H @@ -66,8 +66,8 @@ generate_initial_model(const int npts_model, const Real xmin, const Real xmax, density = model_params.dens_base * std::pow(gravity::const_grav * model_params.dens_base * - (eos_gamma - 1.0) * z / - (eos_gamma * model_params.p_base) + 1.0_rt, 1.0_rt/(eos_gamma - 1.0_rt)); + (eos_rp::eos_gamma - 1.0) * z / + (eos_rp::eos_gamma * model_params.p_base) + 1.0_rt, 1.0_rt/(eos_rp::eos_gamma - 1.0_rt)); } else { Real z = xmin + (static_cast(i) + 0.5_rt) * dx; diff --git a/Exec/hydro_tests/gamma_law_bubble/prob_util.H b/Exec/hydro_tests/gamma_law_bubble/prob_util.H index 96c0ebd21c..b67f2182c5 100644 --- a/Exec/hydro_tests/gamma_law_bubble/prob_util.H +++ b/Exec/hydro_tests/gamma_law_bubble/prob_util.H @@ -29,8 +29,8 @@ gamma_law_initial_model(Real* const pressure, Real* const density, Real* const t if (problem::do_isentropic) { Real z = static_cast(j) * dx[AMREX_SPACEDIM-1]; density[j] = problem::dens_base * - std::pow((gravity::const_grav * problem::dens_base * (eos_gamma - 1.0_rt) * z/ - (eos_gamma * problem::pres_base) + 1.0_rt), 1.0_rt/(eos_gamma - 1.0_rt)); + std::pow((gravity::const_grav * problem::dens_base * (eos_rp::eos_gamma - 1.0_rt) * z/ + (eos_rp::eos_gamma * problem::pres_base) + 1.0_rt), 1.0_rt/(eos_rp::eos_gamma - 1.0_rt)); } else { Real z = (static_cast(j) + 0.5_rt) * dx[AMREX_SPACEDIM-1]; density[j] = problem::dens_base * std::exp(-z/H); diff --git a/Exec/hydro_tests/riemann_2d/problem_initialize_state_data.H b/Exec/hydro_tests/riemann_2d/problem_initialize_state_data.H index 95cc0b33f4..7f33ea2373 100644 --- a/Exec/hydro_tests/riemann_2d/problem_initialize_state_data.H +++ b/Exec/hydro_tests/riemann_2d/problem_initialize_state_data.H @@ -54,8 +54,8 @@ void problem_initialize_state_data(int i, int j, int k, state(i, j, k, UMX) = state(i, j, k, URHO) * problem::ux_3; state(i, j, k, UMY) = state(i, j, k, URHO) * problem::uy_3; - state(i, j, k, UEINT) = problem::p_3 / (eos_gamma - 1.0_rt); - state(i, j, k, UEDEN) = problem::p_3 / (eos_gamma - 1.0_rt) + state(i, j, k, UEINT) = problem::p_3 / (eos_rp::eos_gamma - 1.0_rt); + state(i, j, k, UEDEN) = problem::p_3 / (eos_rp::eos_gamma - 1.0_rt) + 0.5 * problem::rho_3 * problem::ux_3 * problem::ux_3 + 0.5 * problem::rho_3 * problem::uy_3 * problem::uy_3; @@ -66,9 +66,9 @@ void problem_initialize_state_data(int i, int j, int k, state(i, j, k, UMX) = state(i, j, k, URHO) * problem::ux_4; state(i, j, k, UMY) = state(i, j, k, URHO) * problem::uy_4; - state(i, j, k, UEINT) = problem::p_4 / (eos_gamma - 1.0_rt); + state(i, j, k, UEINT) = problem::p_4 / (eos_rp::eos_gamma - 1.0_rt); - state(i, j, k, UEDEN) = problem::p_4 / (eos_gamma - 1.0_rt) + state(i, j, k, UEDEN) = problem::p_4 / (eos_rp::eos_gamma - 1.0_rt) + 0.5 * problem::rho_4 * problem::ux_4 * problem::ux_4 + 0.5 * problem::rho_4 * problem::uy_4 * problem::uy_4; @@ -79,9 +79,9 @@ void problem_initialize_state_data(int i, int j, int k, state(i, j, k, UMX) = state(i, j, k, URHO) * problem::ux_2; state(i, j, k, UMY) = state(i, j, k, URHO) * problem::uy_2; - state(i, j, k, UEINT) = problem::p_2 / (eos_gamma - 1.0_rt); + state(i, j, k, UEINT) = problem::p_2 / (eos_rp::eos_gamma - 1.0_rt); - state(i, j, k, UEDEN) = problem::p_2 / (eos_gamma - 1.0_rt) + state(i, j, k, UEDEN) = problem::p_2 / (eos_rp::eos_gamma - 1.0_rt) + 0.5 * problem::rho_2 * problem::ux_2 * problem::ux_2 + 0.5 * problem::rho_2 * problem::uy_2 * problem::uy_2; } else if (xx > problem::center[0] & yy > problem::center[1]) @@ -91,9 +91,9 @@ void problem_initialize_state_data(int i, int j, int k, state(i, j, k, UMX) = state(i, j, k, URHO) * problem::ux_1; state(i, j, k, UMY) = state(i, j, k, URHO) * problem::uy_1; - state(i, j, k, UEINT) = problem::p_1 / (eos_gamma - 1.0_rt); + state(i, j, k, UEINT) = problem::p_1 / (eos_rp::eos_gamma - 1.0_rt); - state(i, j, k, UEDEN) = problem::p_1 / (eos_gamma - 1.0_rt) + state(i, j, k, UEDEN) = problem::p_1 / (eos_rp::eos_gamma - 1.0_rt) + 0.5 * problem::rho_1 * problem::ux_1 * problem::ux_1 + 0.5 * problem::rho_1 * problem::uy_1 * problem::uy_1; } diff --git a/Exec/mhd_tests/RT/problem_initialize_state_data.H b/Exec/mhd_tests/RT/problem_initialize_state_data.H index bb0aed8046..ee35b672b8 100644 --- a/Exec/mhd_tests/RT/problem_initialize_state_data.H +++ b/Exec/mhd_tests/RT/problem_initialize_state_data.H @@ -29,12 +29,12 @@ void problem_initialize_state_data (int i, int j, int k, Real pres; if (r[AMREX_SPACEDIM-1] < problem::split[AMREX_SPACEDIM-1]) { pres = problem::p0_base - problem::rho_1 * r[AMREX_SPACEDIM-1]; - state(i,j,k,UEDEN) = pres / (eos_gamma - 1.0_rt); - state(i,j,k,UEINT) = pres / (eos_gamma - 1.0_rt); + state(i,j,k,UEDEN) = pres / (eos_rp::eos_gamma - 1.0_rt); + state(i,j,k,UEINT) = pres / (eos_rp::eos_gamma - 1.0_rt); } else { pres = presmid - problem::rho_2 * (r[AMREX_SPACEDIM-1] - problem::split[AMREX_SPACEDIM-1]); - state(i,j,k,UEDEN) = pres / (eos_gamma - 1.0_rt); - state(i,j,k,UEINT) = pres / (eos_gamma - 1.0_rt); + state(i,j,k,UEDEN) = pres / (eos_rp::eos_gamma - 1.0_rt); + state(i,j,k,UEINT) = pres / (eos_rp::eos_gamma - 1.0_rt); } // doing it similar to 2d, will be something in x-z though @@ -61,4 +61,3 @@ void problem_initialize_state_data (int i, int j, int k, } #endif - diff --git a/Exec/science/wdmerger/ci-benchmarks/wdmerger_collision_2D.out b/Exec/science/wdmerger/ci-benchmarks/wdmerger_collision_2D.out index 79afb42eba..88fbaf4f88 100644 --- a/Exec/science/wdmerger/ci-benchmarks/wdmerger_collision_2D.out +++ b/Exec/science/wdmerger/ci-benchmarks/wdmerger_collision_2D.out @@ -5,16 +5,16 @@ xmom -5.4964100651e+14 1.3559128302e+14 ymom -2.5530096328e+15 2.5530122744e+15 zmom 0 0 - rho_E 7.4982062146e+11 5.0669247218e+24 - rho_e 7.1077581849e+11 5.0640768325e+24 - Temp 242288.68588 1409652233.4 - rho_He4 8.693611703e-17 3.5999032939 + rho_E 7.4982062146e+11 5.0669247219e+24 + rho_e 7.1077581849e+11 5.0640768326e+24 + Temp 242288.68588 1409652233.6 + rho_He4 8.693611703e-17 3.599903302 rho_C12 3.4774446812e-05 7825956.6934 rho_O16 5.2161670217e-05 11739149.75 - rho_Ne20 8.693611703e-17 181951.05614 - rho_Mg24 8.693611703e-17 1192.7969442 - rho_Si28 8.693611703e-17 6.6913701534 - rho_S32 8.693611703e-17 0.00019493290914 + rho_Ne20 8.693611703e-17 181951.0571 + rho_Mg24 8.693611703e-17 1192.7969729 + rho_Si28 8.693611703e-17 6.6913702949 + rho_S32 8.693611703e-17 0.00019493291655 rho_Ar36 8.693611703e-17 1.9565534609e-05 rho_Ca40 8.693611703e-17 1.9565534331e-05 rho_Ti44 8.693611703e-17 1.9565534308e-05 @@ -25,5 +25,5 @@ grav_x -684991644 -51428.243166 grav_y -739606241.84 739606820.44 grav_z 0 0 - rho_enuc -3.2975004417e+12 7.6429034637e+23 + rho_enuc -2.7633982574e+12 7.6429034885e+23 diff --git a/Source/driver/Castro.cpp b/Source/driver/Castro.cpp index 283cdf1e11..8cacbcf560 100644 --- a/Source/driver/Castro.cpp +++ b/Source/driver/Castro.cpp @@ -566,7 +566,7 @@ Castro::read_params () // in Amr::InitAmr(), right before the ParmParse checks, so if the user opts to // override our overriding, they can do so. - Amr::setComputeNewDtOnRegrid(1); + Amr::setComputeNewDtOnRegrid(true); // Read in custom refinement scheme. diff --git a/Source/driver/_cpp_parameters b/Source/driver/_cpp_parameters index 5279f85f6a..b97a48a33f 100644 --- a/Source/driver/_cpp_parameters +++ b/Source/driver/_cpp_parameters @@ -29,7 +29,7 @@ update_sources_after_reflux bool 1 # Castro was originally written assuming dx = dy = dz. This assumption is # enforced at runtime. Setting allow_non_unit_aspect_zones = 1 opts out. -allow_non_unit_aspect_zones int 0 +allow_non_unit_aspect_zones bool 0 #----------------------------------------------------------------------------- diff --git a/Source/rotation/Castro_rotation.cpp b/Source/rotation/Castro_rotation.cpp index 9c98f878ca..67cbf15384 100644 --- a/Source/rotation/Castro_rotation.cpp +++ b/Source/rotation/Castro_rotation.cpp @@ -91,13 +91,13 @@ Castro::construct_new_rotation_source(MultiFab& source, MultiFab& state_old, Mul { const int IOProc = ParallelDescriptor::IOProcessorNumber(); Real run_time = ParallelDescriptor::second() - strt_time; - + Real llevel = level; #ifdef BL_LAZY Lazy::QueueReduction( [=] () mutable { #endif ParallelDescriptor::ReduceRealMax(run_time,IOProc); - amrex::Print() << "Castro::construct_new_rotation_source() time = " << run_time << " on level " << level << "\n" << "\n"; + amrex::Print() << "Castro::construct_new_rotation_source() time = " << run_time << " on level " << llevel << "\n" << "\n"; #ifdef BL_LAZY }); #endif diff --git a/external/Microphysics b/external/Microphysics index c2795ec391..14b8b0e317 160000 --- a/external/Microphysics +++ b/external/Microphysics @@ -1 +1 @@ -Subproject commit c2795ec391217dd0bb7d56044eaccac128d5112f +Subproject commit 14b8b0e3173041968943d4bbac2c4803a33abceb diff --git a/external/amrex b/external/amrex index 672e7bcd0d..ac5dde35b6 160000 --- a/external/amrex +++ b/external/amrex @@ -1 +1 @@ -Subproject commit 672e7bcd0d1e0b66e0baf3a9ff7322bd01b3ec69 +Subproject commit ac5dde35b6c10f5d91e289edeff218bde84878a4