From 42a7b2e3262e23b8cd767054a32b5c660b78c16b Mon Sep 17 00:00:00 2001 From: Leodasce Sewanou Date: Thu, 11 Dec 2025 10:14:34 +0100 Subject: [PATCH 01/29] level 0 sizes [Ramses][Solvergraph] AMR level zero sizes Added a solvergraph node to compute level zero sizes for each patch. This will be used for instance to compute the amr level for blocks in each patch. updates --- .../ramses/modules/ComputeLevel0CellSize.hpp | 69 +++++++++++++++++++ .../ramses/modules/SolverStorage.hpp | 10 ++- src/shammodels/ramses/src/Solver.cpp | 15 ++++ 3 files changed, 91 insertions(+), 3 deletions(-) create mode 100644 src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp diff --git a/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp b/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp new file mode 100644 index 0000000000..ec0021a224 --- /dev/null +++ b/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp @@ -0,0 +1,69 @@ +// -------------------------------------------------------// +// +// SHAMROCK code for hydrodynamics +// Copyright (c) 2021-2025 Timothée David--Cléris +// SPDX-License-Identifier: CeCILL Free Software License Agreement v2.1 +// Shamrock is licensed under the CeCILL 2.1 License, see LICENSE for more information +// +// -------------------------------------------------------// + +#pragma once + +/** + * @file ComputeLevel0CellSize.hpp + * @author Léodasce Sewanou (leodasce.sewanou@ens-lyon.fr) + * @author Timothée David--Cléris (tim.shamrock@proton.me) --no git blame-- + * @brief + * + */ + +#include "shammath/AABB.hpp" +#include "shamrock/solvergraph/INode.hpp" +#include "shamrock/solvergraph/IPatchDataLayerRefs.hpp" +#include "shamrock/solvergraph/ScalarsEdge.hpp" +#include + +namespace shammodels::basegodunov::modules { + + template + class ComputeLevel0CellSize : public shamrock::solvergraph::INode { + public: + ComputeLevel0CellSize() {} + + struct Edges { + const shamrock::solvergraph::ScalarsEdge> &patch_boxes; + const shamrock::solvergraph::IPatchDataLayerRefs &refs; + shamrock::solvergraph::ScalarsEdge &level0_size; + }; + + void set_edges( + std::shared_ptr>> + patch_boxes, + std::shared_ptr refs, + std::shared_ptr> level0_size) { + __internal_set_ro_edges({patch_boxes, refs}); + __internal_set_rw_edges({level0_size}); + } + + Edges get_edges() { + return Edges{ + get_ro_edge>>(0), + get_ro_edge(1), + get_rw_edge>(0)}; + } + + void _impl_evaluate_internal() { + auto edges = get_edges(); + edges.level0_size.values = edges.refs.get_const_refs().template map( + [&](u64 id_patch, const shamrock::patch::PatchDataLayer & /*pdat*/) { + shammath::AABB patch_box = edges.patch_boxes.values.get(id_patch); + return patch_box.delt(); + }); + } + + inline virtual std::string _impl_get_label() const { return "ComputeLevel0CellSize"; }; + + virtual std::string _impl_get_tex() const { return "ComputeLevel0CellSize"; }; + }; + +} // namespace shammodels::basegodunov::modules diff --git a/src/shammodels/ramses/include/shammodels/ramses/modules/SolverStorage.hpp b/src/shammodels/ramses/include/shammodels/ramses/modules/SolverStorage.hpp index 0800aa6a67..aa7fbed4c9 100644 --- a/src/shammodels/ramses/include/shammodels/ramses/modules/SolverStorage.hpp +++ b/src/shammodels/ramses/include/shammodels/ramses/modules/SolverStorage.hpp @@ -11,6 +11,7 @@ /** * @file SolverStorage.hpp + * @author Léodasce Sewanou (leodasce.sewanou@ens-lyon.fr) * @author Timothée David--Cléris (tim.shamrock@proton.me) * @brief */ @@ -56,9 +57,10 @@ namespace shammodels::basegodunov { template class SolverStorage { public: - using Tmorton = Tmorton_; - using Tscal = shambase::VecComponent; - using Tgridscal = shambase::VecComponent; + using Tmorton = Tmorton_; + using Tscal = shambase::VecComponent; + using Tgridscal = shambase::VecComponent; + using TgridUint = typename std::make_unsigned>::type; static constexpr u32 dim = shambase::VectorProperties::dimension; using RTree = RadixTree; @@ -74,6 +76,8 @@ namespace shammodels::basegodunov { std::shared_ptr> refs_block_min; std::shared_ptr> refs_block_max; + std::shared_ptr> level0_size; + std::shared_ptr> block_counts; std::shared_ptr> block_counts_with_ghost; std::shared_ptr> refs_rho; diff --git a/src/shammodels/ramses/src/Solver.cpp b/src/shammodels/ramses/src/Solver.cpp index deb468fb62..4d9048a117 100644 --- a/src/shammodels/ramses/src/Solver.cpp +++ b/src/shammodels/ramses/src/Solver.cpp @@ -26,6 +26,7 @@ #include "shammodels/ramses/modules/BlockNeighToCellNeigh.hpp" #include "shammodels/ramses/modules/ComputeCFL.hpp" #include "shammodels/ramses/modules/ComputeCellAABB.hpp" +#include "shammodels/ramses/modules/ComputeLevel0CellSize.hpp" #include "shammodels/ramses/modules/ComputeMass.hpp" #include "shammodels/ramses/modules/ComputeSumOverV.hpp" #include "shammodels/ramses/modules/ComputeTimeDerivative.hpp" @@ -408,6 +409,10 @@ void shammodels::basegodunov::Solver::init_solver_graph() { storage.cell0block_aabb_lower = std::make_shared>( 1, "cell0block_aabb_lower", "\\mathbf{s}_{\\rm inf,block}"); + // get blocks at level0 sizes for all patches + storage.level0_size = std::make_shared>( + "level0_amr", "level0_amr"); + storage.grad_rho = std::make_shared>( AMRBlock::block_size, "grad_rho", "\\nabla \\rho"); storage.dx_v = std::make_shared>( @@ -906,6 +911,16 @@ void shammodels::basegodunov::Solver::init_solver_graph() { solver_sequence.push_back(std::make_shared(std::move(node))); } + { // compute level0 sizes in patch + modules::ComputeLevel0CellSize node_level0_sizes{}; + node_level0_sizes.set_edges( + graph.get_edge_ptr>>("global_patch_boxes"), + storage.source_patches, + storage.level0_size); + solver_sequence.push_back( + std::make_shared(std::move(node_level0_sizes))); + } + if (solver_config.should_compute_rho_mean()) { modules::NodeComputeMass node{AMRBlock::block_size}; node.set_edges( From c898fe8ed793de5c015d3ef1681ec15be148333e Mon Sep 17 00:00:00 2001 From: Leodasce Sewanou Date: Mon, 5 Jan 2026 12:52:07 +0100 Subject: [PATCH 02/29] made refinement as experimental --- .../ramses/include/shammodels/ramses/SolverConfig.hpp | 10 ++++++++-- src/shammodels/ramses/src/pyRamsesModel.cpp | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp index 2c27485254..c6846ef34c 100644 --- a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp +++ b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp @@ -24,6 +24,7 @@ #include "shambase/string.hpp" #include "shambackends/vec.hpp" #include "shamcomm/logs.hpp" +#include "shamcomm/worldInfo.hpp" #include "shammodels/common/amr/AMRBlock.hpp" #include "shamrock/experimental_features.hpp" #include "shamrock/io/units_json.hpp" @@ -128,8 +129,8 @@ namespace shammodels::basegodunov { using mode = std::variant; - mode config = None{}; - + mode config = None{}; + bool do_refinement = false; void set_refine_none() { config = None{}; } void set_refine_density_based(Tscal crit_mass) { config = DensityBased{crit_mass}; } }; @@ -244,6 +245,7 @@ struct shammodels::basegodunov::SolverConfig { /// AMR refinement mode AMRMode amr_mode = {}; + inline bool do_amr_refinement() { return amr_mode.do_refinement; } ////////////////////////////////////////////////////////////////////////////////////////////// // Units Config @@ -318,6 +320,10 @@ struct shammodels::basegodunov::SolverConfig { npscal_gas_config.npscal_gas)); } } + + if (do_amr_refinement()) { + ON_RANK_0(logger::warn_ln("Ramses::SolverConfig", "AMR Refinement is experimental")); + } } }; diff --git a/src/shammodels/ramses/src/pyRamsesModel.cpp b/src/shammodels/ramses/src/pyRamsesModel.cpp index 502f6b6ce3..192e85470b 100644 --- a/src/shammodels/ramses/src/pyRamsesModel.cpp +++ b/src/shammodels/ramses/src/pyRamsesModel.cpp @@ -177,11 +177,13 @@ namespace shammodels::basegodunov { "set_amr_mode_none", [](TConfig &self) { self.amr_mode.set_refine_none(); + self.amr_mode.do_refinement = false; }) .def( "set_amr_mode_density_based", [](TConfig &self, Tscal crit_mass) { self.amr_mode.set_refine_density_based(crit_mass); + self.amr_mode.do_refinement = true; }, py::kw_only(), py::arg("crit_mass")) From b19f7f2078ceeb4a0b2f2a5383adc9790ae4013a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David--Cl=C3=A9ris=20Timoth=C3=A9e?= Date: Tue, 20 Jan 2026 09:02:24 +0100 Subject: [PATCH 03/29] Update src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp --- src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp index c6846ef34c..86eddcbab8 100644 --- a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp +++ b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp @@ -130,7 +130,6 @@ namespace shammodels::basegodunov { using mode = std::variant; mode config = None{}; - bool do_refinement = false; void set_refine_none() { config = None{}; } void set_refine_density_based(Tscal crit_mass) { config = DensityBased{crit_mass}; } }; From 243fa08e15b2b008a09a9a0079bddf1042b2e528 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David--Cl=C3=A9ris=20Timoth=C3=A9e?= Date: Tue, 20 Jan 2026 09:02:33 +0100 Subject: [PATCH 04/29] Update src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp --- .../ramses/include/shammodels/ramses/SolverConfig.hpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp index 86eddcbab8..308a4e1bdf 100644 --- a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp +++ b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp @@ -319,10 +319,6 @@ struct shammodels::basegodunov::SolverConfig { npscal_gas_config.npscal_gas)); } } - - if (do_amr_refinement()) { - ON_RANK_0(logger::warn_ln("Ramses::SolverConfig", "AMR Refinement is experimental")); - } } }; From c8ed07ba65e38ae3cb1967b39c392fe5ebba51ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David--Cl=C3=A9ris=20Timoth=C3=A9e?= Date: Tue, 20 Jan 2026 09:02:39 +0100 Subject: [PATCH 05/29] Update src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp --- src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp index 308a4e1bdf..a7609518c2 100644 --- a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp +++ b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp @@ -244,7 +244,6 @@ struct shammodels::basegodunov::SolverConfig { /// AMR refinement mode AMRMode amr_mode = {}; - inline bool do_amr_refinement() { return amr_mode.do_refinement; } ////////////////////////////////////////////////////////////////////////////////////////////// // Units Config From 4c38506106824b1996c5b63637c1d4e9f075aa57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David--Cl=C3=A9ris=20Timoth=C3=A9e?= Date: Tue, 20 Jan 2026 09:02:44 +0100 Subject: [PATCH 06/29] Update src/shammodels/ramses/src/pyRamsesModel.cpp --- src/shammodels/ramses/src/pyRamsesModel.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/shammodels/ramses/src/pyRamsesModel.cpp b/src/shammodels/ramses/src/pyRamsesModel.cpp index 192e85470b..870ddb5c38 100644 --- a/src/shammodels/ramses/src/pyRamsesModel.cpp +++ b/src/shammodels/ramses/src/pyRamsesModel.cpp @@ -177,7 +177,6 @@ namespace shammodels::basegodunov { "set_amr_mode_none", [](TConfig &self) { self.amr_mode.set_refine_none(); - self.amr_mode.do_refinement = false; }) .def( "set_amr_mode_density_based", From ea4a92b15a6211407e9cb41169d8fe1a1a7470cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David--Cl=C3=A9ris=20Timoth=C3=A9e?= Date: Tue, 20 Jan 2026 09:02:49 +0100 Subject: [PATCH 07/29] Update src/shammodels/ramses/src/pyRamsesModel.cpp --- src/shammodels/ramses/src/pyRamsesModel.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/shammodels/ramses/src/pyRamsesModel.cpp b/src/shammodels/ramses/src/pyRamsesModel.cpp index 870ddb5c38..502f6b6ce3 100644 --- a/src/shammodels/ramses/src/pyRamsesModel.cpp +++ b/src/shammodels/ramses/src/pyRamsesModel.cpp @@ -182,7 +182,6 @@ namespace shammodels::basegodunov { "set_amr_mode_density_based", [](TConfig &self, Tscal crit_mass) { self.amr_mode.set_refine_density_based(crit_mass); - self.amr_mode.do_refinement = true; }, py::kw_only(), py::arg("crit_mass")) From 32c02a24121df93bfa40e92ef996670d5f7bbce6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David--Cl=C3=A9ris=20Timoth=C3=A9e?= Date: Tue, 20 Jan 2026 09:02:55 +0100 Subject: [PATCH 08/29] Update src/shammodels/ramses/src/Solver.cpp --- src/shammodels/ramses/src/Solver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shammodels/ramses/src/Solver.cpp b/src/shammodels/ramses/src/Solver.cpp index 3dbf834acd..3a7bd289dc 100644 --- a/src/shammodels/ramses/src/Solver.cpp +++ b/src/shammodels/ramses/src/Solver.cpp @@ -926,7 +926,7 @@ void shammodels::basegodunov::Solver::init_solver_graph() { solver_sequence.push_back(std::make_shared(std::move(node))); } - { // compute level0 sizes in patch + if(false) { // compute level0 sizes in patch (to be enabled later when needed) modules::ComputeLevel0CellSize node_level0_sizes{}; node_level0_sizes.set_edges( graph.get_edge_ptr>>("global_patch_boxes"), From b84ac143cdc5b6b380d3a6b53cf85feee4c0ab61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David--Cl=C3=A9ris=20Timoth=C3=A9e?= Date: Tue, 20 Jan 2026 09:03:00 +0100 Subject: [PATCH 09/29] Update src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp --- src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp index a7609518c2..091889f769 100644 --- a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp +++ b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp @@ -24,7 +24,6 @@ #include "shambase/string.hpp" #include "shambackends/vec.hpp" #include "shamcomm/logs.hpp" -#include "shamcomm/worldInfo.hpp" #include "shammodels/common/amr/AMRBlock.hpp" #include "shamrock/experimental_features.hpp" #include "shamrock/io/units_json.hpp" From c29f16658a53ac793f195425e1504c83be9e82c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David--Cl=C3=A9ris=20Timoth=C3=A9e?= Date: Tue, 20 Jan 2026 09:04:01 +0100 Subject: [PATCH 10/29] Update src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp --- src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp index 091889f769..0ae4463ea8 100644 --- a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp +++ b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp @@ -131,6 +131,7 @@ namespace shammodels::basegodunov { mode config = None{}; void set_refine_none() { config = None{}; } void set_refine_density_based(Tscal crit_mass) { config = DensityBased{crit_mass}; } + bool need_level_zero_compute(){return false;} }; struct BCConfig { From f5a8c1c39aa560b59691eed6c96d2aadf5d45517 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David--Cl=C3=A9ris=20Timoth=C3=A9e?= Date: Tue, 20 Jan 2026 09:04:07 +0100 Subject: [PATCH 11/29] Update src/shammodels/ramses/src/Solver.cpp --- src/shammodels/ramses/src/Solver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shammodels/ramses/src/Solver.cpp b/src/shammodels/ramses/src/Solver.cpp index 3a7bd289dc..71c85b95d5 100644 --- a/src/shammodels/ramses/src/Solver.cpp +++ b/src/shammodels/ramses/src/Solver.cpp @@ -926,7 +926,7 @@ void shammodels::basegodunov::Solver::init_solver_graph() { solver_sequence.push_back(std::make_shared(std::move(node))); } - if(false) { // compute level0 sizes in patch (to be enabled later when needed) + if(solver_config.need_level_zero_compute()) { // compute level0 sizes in patch (to be enabled later when needed) modules::ComputeLevel0CellSize node_level0_sizes{}; node_level0_sizes.set_edges( graph.get_edge_ptr>>("global_patch_boxes"), From 628ec014b2242f5b8b9eac62c3cba3fc3cfd2d50 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Tue, 20 Jan 2026 08:09:32 +0000 Subject: [PATCH 12/29] [autofix.ci] automatic fix: pre-commit hooks --- .../ramses/include/shammodels/ramses/SolverConfig.hpp | 4 ++-- src/shammodels/ramses/src/Solver.cpp | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp index ceb247ccfb..28b0240147 100644 --- a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp +++ b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp @@ -128,10 +128,10 @@ namespace shammodels::basegodunov { using mode = std::variant; - mode config = None{}; + mode config = None{}; void set_refine_none() { config = None{}; } void set_refine_density_based(Tscal crit_mass) { config = DensityBased{crit_mass}; } - bool need_level_zero_compute(){return false;} + bool need_level_zero_compute() { return false; } }; struct BCConfig { diff --git a/src/shammodels/ramses/src/Solver.cpp b/src/shammodels/ramses/src/Solver.cpp index 658dfb6146..6425b36823 100644 --- a/src/shammodels/ramses/src/Solver.cpp +++ b/src/shammodels/ramses/src/Solver.cpp @@ -926,7 +926,8 @@ void shammodels::basegodunov::Solver::init_solver_graph() { solver_sequence.push_back(std::make_shared(std::move(node))); } - if(solver_config.need_level_zero_compute()) { // compute level0 sizes in patch (to be enabled later when needed) + if (solver_config.need_level_zero_compute()) { // compute level0 sizes in patch (to be enabled + // later when needed) modules::ComputeLevel0CellSize node_level0_sizes{}; node_level0_sizes.set_edges( graph.get_edge_ptr>>("global_patch_boxes"), From bf2aa9c89313a87bb5433410d320578a9987e574 Mon Sep 17 00:00:00 2001 From: Leodasce Sewanou Date: Wed, 11 Feb 2026 13:29:57 +0100 Subject: [PATCH 13/29] changed AMR level0 computation --- .../ramses/modules/ComputeLevel0CellSize.hpp | 46 +++++++++++++++++-- src/shammodels/ramses/src/Solver.cpp | 6 ++- 2 files changed, 46 insertions(+), 6 deletions(-) diff --git a/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp b/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp index ec0021a224..0cfd9595e7 100644 --- a/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp +++ b/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp @@ -17,7 +17,9 @@ * */ +#include "shamalgs/primitives/reduction.hpp" #include "shammath/AABB.hpp" +#include "shamrock/solvergraph/IFieldRefs.hpp" #include "shamrock/solvergraph/INode.hpp" #include "shamrock/solvergraph/IPatchDataLayerRefs.hpp" #include "shamrock/solvergraph/ScalarsEdge.hpp" @@ -33,6 +35,8 @@ namespace shammodels::basegodunov::modules { struct Edges { const shamrock::solvergraph::ScalarsEdge> &patch_boxes; const shamrock::solvergraph::IPatchDataLayerRefs &refs; + const shamrock::solvergraph::IFieldRefs &spans_block_min; + const shamrock::solvergraph::IFieldRefs &spans_block_max; shamrock::solvergraph::ScalarsEdge &level0_size; }; @@ -40,8 +44,10 @@ namespace shammodels::basegodunov::modules { std::shared_ptr>> patch_boxes, std::shared_ptr refs, + std::shared_ptr> spans_block_min, + std::shared_ptr> spans_block_max, std::shared_ptr> level0_size) { - __internal_set_ro_edges({patch_boxes, refs}); + __internal_set_ro_edges({patch_boxes, refs, spans_block_min, spans_block_max}); __internal_set_rw_edges({level0_size}); } @@ -49,15 +55,47 @@ namespace shammodels::basegodunov::modules { return Edges{ get_ro_edge>>(0), get_ro_edge(1), + get_ro_edge>(2), + get_ro_edge>(3), get_rw_edge>(0)}; } void _impl_evaluate_internal() { auto edges = get_edges(); edges.level0_size.values = edges.refs.get_const_refs().template map( - [&](u64 id_patch, const shamrock::patch::PatchDataLayer & /*pdat*/) { - shammath::AABB patch_box = edges.patch_boxes.values.get(id_patch); - return patch_box.delt(); + [&](u64 id_patch, const shamrock::patch::PatchDataLayer &pdat) { + auto dev_sched = shamsys::instance::get_compute_scheduler_ptr(); + sham::DeviceQueue &q = shamsys::instance::get_compute_scheduler().get_queue(); + sham::DeviceBuffer block_size_buf(pdat.get_obj_cnt(), dev_sched); + + sham::EventList depends_list; + auto block_min_acc + = edges.spans_block_min.get_field(id_patch).get_buf().get_read_access( + depends_list); + auto block_max_acc + = edges.spans_block_max.get_field(id_patch).get_buf().get_read_access( + depends_list); + auto block_size_acc = block_size_buf.get_write_access(depends_list); + + auto e = q.submit(depends_list, [&](sycl::handler &cgh) { + cgh.parallel_for( + sycl::range<1>(pdat.get_obj_cnt()), [=](sycl::item<1> gid) { + u32 id = gid.get_linear_id(); + block_size_acc[id] = block_max_acc[id] - block_min_acc[id]; + }); + }); + edges.spans_block_min.get_field(id_patch).get_buf().complete_event_state(e); + edges.spans_block_max.get_field(id_patch).get_buf().complete_event_state(e); + block_size_buf.complete_event_state(e); + + auto patch_min = shamalgs::primitives::min( + dev_sched, block_size_buf, 0, pdat.get_obj_cnt()); + auto patch_max = shamalgs::primitives::max( + dev_sched, block_size_buf, 0, pdat.get_obj_cnt()); + + // shammath::AABB patch_box = edges.patch_boxes.values.get(id_patch); + // return patch_box.delt(); + return patch_max; }); } diff --git a/src/shammodels/ramses/src/Solver.cpp b/src/shammodels/ramses/src/Solver.cpp index 6425b36823..2679697e06 100644 --- a/src/shammodels/ramses/src/Solver.cpp +++ b/src/shammodels/ramses/src/Solver.cpp @@ -926,12 +926,14 @@ void shammodels::basegodunov::Solver::init_solver_graph() { solver_sequence.push_back(std::make_shared(std::move(node))); } - if (solver_config.need_level_zero_compute()) { // compute level0 sizes in patch (to be enabled - // later when needed) + if (solver_config.amr_mode.need_level_zero_compute()) { // compute level0 sizes in patch (to be + // enabled later when needed) modules::ComputeLevel0CellSize node_level0_sizes{}; node_level0_sizes.set_edges( graph.get_edge_ptr>>("global_patch_boxes"), storage.source_patches, + storage.refs_block_min, + storage.refs_block_max, storage.level0_size); solver_sequence.push_back( std::make_shared(std::move(node_level0_sizes))); From ed2184c422d06a97ee6a1cec77d63100cbd2115a Mon Sep 17 00:00:00 2001 From: Leodasce Sewanou Date: Wed, 11 Feb 2026 13:37:12 +0100 Subject: [PATCH 14/29] changed license in hearder file 2021-2015 to 2021-2026 --- .../include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp b/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp index 0cfd9595e7..9eeda0362f 100644 --- a/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp +++ b/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp @@ -1,7 +1,7 @@ // -------------------------------------------------------// // // SHAMROCK code for hydrodynamics -// Copyright (c) 2021-2025 Timothée David--Cléris +// Copyright (c) 2021-2026 Timothée David--Cléris // SPDX-License-Identifier: CeCILL Free Software License Agreement v2.1 // Shamrock is licensed under the CeCILL 2.1 License, see LICENSE for more information // From 3e9ac8b5a22993d825efa13b9e05082c3b1507e4 Mon Sep 17 00:00:00 2001 From: Leodasce Sewanou Date: Wed, 11 Feb 2026 14:09:29 +0100 Subject: [PATCH 15/29] [Ramses][AMR][get amr levels] New PR to compute amr levels. --- .../include/shammodels/ramses/SolverConfig.hpp | 6 ++++-- .../shammodels/ramses/modules/SolverStorage.hpp | 1 + src/shammodels/ramses/src/Solver.cpp | 13 +++++++++++++ src/shammodels/ramses/src/pyRamsesModel.cpp | 2 ++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp index 28b0240147..4ef5ab8cb6 100644 --- a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp +++ b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp @@ -119,7 +119,8 @@ namespace shammodels::basegodunov { template struct AMRMode { - using Tscal = shambase::VecComponent; + using Tscal = shambase::VecComponent; + bool no_none_cfg = false; struct None {}; struct DensityBased { @@ -131,7 +132,8 @@ namespace shammodels::basegodunov { mode config = None{}; void set_refine_none() { config = None{}; } void set_refine_density_based(Tscal crit_mass) { config = DensityBased{crit_mass}; } - bool need_level_zero_compute() { return false; } + bool need_level_zero_compute() { return no_none_cfg; } + bool need_amr_level_compute() { return no_none_cfg; } }; struct BCConfig { diff --git a/src/shammodels/ramses/include/shammodels/ramses/modules/SolverStorage.hpp b/src/shammodels/ramses/include/shammodels/ramses/modules/SolverStorage.hpp index 36465fda01..05c81a45ea 100644 --- a/src/shammodels/ramses/include/shammodels/ramses/modules/SolverStorage.hpp +++ b/src/shammodels/ramses/include/shammodels/ramses/modules/SolverStorage.hpp @@ -77,6 +77,7 @@ namespace shammodels::basegodunov { std::shared_ptr> refs_block_max; std::shared_ptr> level0_size; + std::shared_ptr> amr_block_levels; std::shared_ptr> block_counts; std::shared_ptr> block_counts_with_ghost; diff --git a/src/shammodels/ramses/src/Solver.cpp b/src/shammodels/ramses/src/Solver.cpp index 2679697e06..c3a7aa29c4 100644 --- a/src/shammodels/ramses/src/Solver.cpp +++ b/src/shammodels/ramses/src/Solver.cpp @@ -24,6 +24,7 @@ #include "shammodels/ramses/SolverConfig.hpp" #include "shammodels/ramses/modules/AMRGridRefinementHandler.hpp" #include "shammodels/ramses/modules/BlockNeighToCellNeigh.hpp" +#include "shammodels/ramses/modules/ComputeAMRLevel.hpp" #include "shammodels/ramses/modules/ComputeCFL.hpp" #include "shammodels/ramses/modules/ComputeCellAABB.hpp" #include "shammodels/ramses/modules/ComputeLevel0CellSize.hpp" @@ -939,6 +940,18 @@ void shammodels::basegodunov::Solver::init_solver_graph() { std::make_shared(std::move(node_level0_sizes))); } + if (solver_config.amr_mode.need_amr_level_compute()) { // compute block amr level in patch + modules::ComputeAMRLevel node_amr_level{}; + node_amr_level.set_edges( + storage.block_counts, + storage.level0_size, + storage.refs_block_min, + storage.refs_block_max, + storage.amr_block_levels); + solver_sequence.push_back( + std::make_shared(std::move(node_amr_level))); + } + if (solver_config.should_compute_rho_mean()) { modules::NodeComputeMass node{AMRBlock::block_size}; node.set_edges( diff --git a/src/shammodels/ramses/src/pyRamsesModel.cpp b/src/shammodels/ramses/src/pyRamsesModel.cpp index b569a21349..18bc1dc968 100644 --- a/src/shammodels/ramses/src/pyRamsesModel.cpp +++ b/src/shammodels/ramses/src/pyRamsesModel.cpp @@ -176,11 +176,13 @@ namespace shammodels::basegodunov { .def( "set_amr_mode_none", [](TConfig &self) { + self.amr_mode.no_none_cfg = false; self.amr_mode.set_refine_none(); }) .def( "set_amr_mode_density_based", [](TConfig &self, Tscal crit_mass) { + self.amr_mode.no_none_cfg = true; self.amr_mode.set_refine_density_based(crit_mass); }, py::kw_only(), From f144a7e7febb2cb3e83603117f26f230367c844d Mon Sep 17 00:00:00 2001 From: Leodasce Sewanou Date: Wed, 11 Feb 2026 16:09:01 +0100 Subject: [PATCH 16/29] [Ramses][AMR] Histogram of AMR Levels and New Block Index Map --- .../modules/AMRGridRefinementHandler.hpp | 14 ++++ .../src/modules/AMRGridRefinementHandler.cpp | 83 +++++++++++++++++++ 2 files changed, 97 insertions(+) diff --git a/src/shammodels/ramses/include/shammodels/ramses/modules/AMRGridRefinementHandler.hpp b/src/shammodels/ramses/include/shammodels/ramses/modules/AMRGridRefinementHandler.hpp index b68e9a96cd..db15f4686c 100644 --- a/src/shammodels/ramses/include/shammodels/ramses/modules/AMRGridRefinementHandler.hpp +++ b/src/shammodels/ramses/include/shammodels/ramses/modules/AMRGridRefinementHandler.hpp @@ -47,6 +47,7 @@ namespace shammodels::basegodunov::modules { using AMRBlock = typename Config::AMRBlock; using BlockCoord = shamrock::amr::AMRBlockCoord; using OrientedAMRGraph = OrientedAMRGraph; + using TgridUint = typename std::make_unsigned>::type; ShamrockCtx &context; Config &solver_config; @@ -58,6 +59,19 @@ namespace shammodels::basegodunov::modules { void update_refinement(); private: + /** @brief build histrogram for amr block levels + * + */ + void amr_block_levels_histogram( + const sham::DeviceScheduler_ptr &sched, + const sham::DeviceBuffer &amr_levels, + const u32 nb_levels, + sham::DeviceBuffer &block_count_per_level, + sham::DeviceBuffer &block_reordered_indx_map, + const u32 len, + TgridUint level_min, + TgridUint level_max); + /** * @brief Generate the list of blocks that need to be refined or derefined. * diff --git a/src/shammodels/ramses/src/modules/AMRGridRefinementHandler.cpp b/src/shammodels/ramses/src/modules/AMRGridRefinementHandler.cpp index e95b85190c..6c0fa5d464 100644 --- a/src/shammodels/ramses/src/modules/AMRGridRefinementHandler.cpp +++ b/src/shammodels/ramses/src/modules/AMRGridRefinementHandler.cpp @@ -20,6 +20,89 @@ #include "shammodels/ramses/modules/AMRSortBlocks.hpp" #include +/** + * @brief build histrogram for amr block levels + * @tparam Tvec + * @tparam TgridVec + * @param sched pointer to device scheduler + * @param amr_levels block's amr level + * @param nb_levels number of levels from level_min to level_max + * @param block_count_per_level buffer of levels ordered from level_min to level_max + * @param block_reordered_indx_map + */ +template +void shammodels::basegodunov::modules::AMRGridRefinementHandler:: + amr_block_levels_histogram( + const sham::DeviceScheduler_ptr &sched, + const sham::DeviceBuffer &amr_levels, + const u32 nb_levels, + sham::DeviceBuffer &block_count_per_level, + sham::DeviceBuffer &block_reordered_indx_map, + const u32 len, + TgridUint level_min, + TgridUint level_max) { + + SHAM_ASSERT(amr_levels.get_size() == len); + SHAM_ASSERT(block_count_per_level.get_size() == nb_levels); + + // compute histogramm to count the number of blocks per level + block_count_per_level.fill(0); + auto &q1 = shambase::get_check_ref(sched).get_queue(); + sham::kernel_call( + q1, + sham::MultiRef{amr_levels}, + sham::MultiRef{block_count_per_level}, + len, + [](u32 i, const TgridUint *__restrict amr_levels, u32 *__restrict block_count_per_level) { + auto cur_level = amr_levels[i]; + sycl::atomic_ref< + u32, + sycl::memory_order::relaxed, + sycl::memory_scope::system, + sycl::access::address_space::global_space> + bin_count(block_count_per_level[cur_level]); + bin_count++; + }); + + // // build block index map such that from the left to right + // // amr_levl[reordered_blocks] ===> L_min,L_min,L_min...| L1,L1,L1...| .... |L_max L_max L_max + block_reordered_indx_map.fill(0); + sham::DeviceBuffer idx_counter_per_lev(nb_levels, sched); + idx_counter_per_lev.fill(0); + auto &q2 = shambase::get_check_ref(sched).get_queue(); + sham::kernel_call( + q2, + sham::MultiRef{amr_levels, block_count_per_level}, + sham::MultiRef{idx_counter_per_lev, block_reordered_indx_map}, + len, + [level_min]( + u32 i, + const TgridUint *__restrict amr_levels, + const u32 *__restrict block_cnt_per_lev, + u32 *__restrict idx_counter_per_lev, + u32 *__restrict reordered_blocks) { + auto amr_lev = amr_levels[i]; + sycl::atomic_ref< + u32, + sycl::memory_order::relaxed, + sycl::memory_scope::system, + sycl::access::address_space::global_space> + atomic_cnt_idx_per_lev(idx_counter_per_lev[amr_lev]); + u32 old_loc_pos = atomic_cnt_idx_per_lev.fetch_add(1); + u32 offset; + if (amr_lev == level_min) + offset = 0; + else { + offset = 0; + for (auto k = level_min; k < amr_lev; k++) { + offset += block_cnt_per_lev[k]; + } + } + u32 glob_pos_idx = offset + old_loc_pos; + reordered_blocks[glob_pos_idx] = i; + }); +} + template template void shammodels::basegodunov::modules::AMRGridRefinementHandler:: From 0e8c625b0383b3f771d14cd888426f041f7f1c30 Mon Sep 17 00:00:00 2001 From: Leodasce Sewanou Date: Fri, 13 Feb 2026 13:32:27 +0100 Subject: [PATCH 17/29] [Ramses][AMR] Histogram for amr levels 1. Replaced sycl::memory_scope::system by sycl::memory_scope::device 2. Compute offset using exclusive scan --- .../src/modules/AMRGridRefinementHandler.cpp | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/shammodels/ramses/src/modules/AMRGridRefinementHandler.cpp b/src/shammodels/ramses/src/modules/AMRGridRefinementHandler.cpp index 6c0fa5d464..c6aaad6dcb 100644 --- a/src/shammodels/ramses/src/modules/AMRGridRefinementHandler.cpp +++ b/src/shammodels/ramses/src/modules/AMRGridRefinementHandler.cpp @@ -16,6 +16,8 @@ #include "shammodels/ramses/modules/AMRGridRefinementHandler.hpp" #include "shamalgs/details/algorithm/algorithm.hpp" +#include "shamalgs/details/numeric/numeric.hpp" +#include "shambackends/DeviceBuffer.hpp" #include "shamcomm/logs.hpp" #include "shammodels/ramses/modules/AMRSortBlocks.hpp" #include @@ -63,6 +65,9 @@ void shammodels::basegodunov::modules::AMRGridRefinementHandler: bin_count(block_count_per_level[cur_level]); bin_count++; }); + // computes offsets for each level + sham::DeviceBuffer offset_buf + = shamalgs::numeric::scan_exclusive(sched, block_count_per_level, nb_levels); // // build block index map such that from the left to right // // amr_levl[reordered_blocks] ===> L_min,L_min,L_min...| L1,L1,L1...| .... |L_max L_max L_max @@ -72,33 +77,26 @@ void shammodels::basegodunov::modules::AMRGridRefinementHandler: auto &q2 = shambase::get_check_ref(sched).get_queue(); sham::kernel_call( q2, - sham::MultiRef{amr_levels, block_count_per_level}, + sham::MultiRef{amr_levels, block_count_per_level, offset_buf}, sham::MultiRef{idx_counter_per_lev, block_reordered_indx_map}, len, [level_min]( u32 i, const TgridUint *__restrict amr_levels, const u32 *__restrict block_cnt_per_lev, + const u32 *__restrict offsets, u32 *__restrict idx_counter_per_lev, u32 *__restrict reordered_blocks) { auto amr_lev = amr_levels[i]; sycl::atomic_ref< u32, sycl::memory_order::relaxed, - sycl::memory_scope::system, + sycl::memory_scope::device, sycl::access::address_space::global_space> atomic_cnt_idx_per_lev(idx_counter_per_lev[amr_lev]); u32 old_loc_pos = atomic_cnt_idx_per_lev.fetch_add(1); - u32 offset; - if (amr_lev == level_min) - offset = 0; - else { - offset = 0; - for (auto k = level_min; k < amr_lev; k++) { - offset += block_cnt_per_lev[k]; - } - } - u32 glob_pos_idx = offset + old_loc_pos; + + u32 glob_pos_idx = offsets[i] + old_loc_pos; reordered_blocks[glob_pos_idx] = i; }); } From 31614ade6c35cca403d9e789a24f15fb43dd3d57 Mon Sep 17 00:00:00 2001 From: Leodasce Sewanou Date: Fri, 13 Feb 2026 13:49:18 +0100 Subject: [PATCH 18/29] fix template deduction conflict in atomic by static_cast --- src/shammodels/ramses/src/modules/AMRGridRefinementHandler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shammodels/ramses/src/modules/AMRGridRefinementHandler.cpp b/src/shammodels/ramses/src/modules/AMRGridRefinementHandler.cpp index c6aaad6dcb..bb376599e5 100644 --- a/src/shammodels/ramses/src/modules/AMRGridRefinementHandler.cpp +++ b/src/shammodels/ramses/src/modules/AMRGridRefinementHandler.cpp @@ -94,7 +94,7 @@ void shammodels::basegodunov::modules::AMRGridRefinementHandler: sycl::memory_scope::device, sycl::access::address_space::global_space> atomic_cnt_idx_per_lev(idx_counter_per_lev[amr_lev]); - u32 old_loc_pos = atomic_cnt_idx_per_lev.fetch_add(1); + u32 old_loc_pos = atomic_cnt_idx_per_lev.fetch_add(static_cast(1)); u32 glob_pos_idx = offsets[i] + old_loc_pos; reordered_blocks[glob_pos_idx] = i; From c71474ac249d72b812f7c2bb60539a6dff97a0eb Mon Sep 17 00:00:00 2001 From: Leodasce Sewanou Date: Mon, 16 Feb 2026 09:59:15 +0100 Subject: [PATCH 19/29] updates --- .../ramses/modules/ComputeLevel0CellSize.hpp | 42 ++----------------- src/shammodels/ramses/src/Solver.cpp | 2 - 2 files changed, 3 insertions(+), 41 deletions(-) diff --git a/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp b/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp index 9eeda0362f..7ee025a373 100644 --- a/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp +++ b/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp @@ -35,8 +35,6 @@ namespace shammodels::basegodunov::modules { struct Edges { const shamrock::solvergraph::ScalarsEdge> &patch_boxes; const shamrock::solvergraph::IPatchDataLayerRefs &refs; - const shamrock::solvergraph::IFieldRefs &spans_block_min; - const shamrock::solvergraph::IFieldRefs &spans_block_max; shamrock::solvergraph::ScalarsEdge &level0_size; }; @@ -44,10 +42,8 @@ namespace shammodels::basegodunov::modules { std::shared_ptr>> patch_boxes, std::shared_ptr refs, - std::shared_ptr> spans_block_min, - std::shared_ptr> spans_block_max, std::shared_ptr> level0_size) { - __internal_set_ro_edges({patch_boxes, refs, spans_block_min, spans_block_max}); + __internal_set_ro_edges({patch_boxes, refs}); __internal_set_rw_edges({level0_size}); } @@ -55,8 +51,6 @@ namespace shammodels::basegodunov::modules { return Edges{ get_ro_edge>>(0), get_ro_edge(1), - get_ro_edge>(2), - get_ro_edge>(3), get_rw_edge>(0)}; } @@ -64,38 +58,8 @@ namespace shammodels::basegodunov::modules { auto edges = get_edges(); edges.level0_size.values = edges.refs.get_const_refs().template map( [&](u64 id_patch, const shamrock::patch::PatchDataLayer &pdat) { - auto dev_sched = shamsys::instance::get_compute_scheduler_ptr(); - sham::DeviceQueue &q = shamsys::instance::get_compute_scheduler().get_queue(); - sham::DeviceBuffer block_size_buf(pdat.get_obj_cnt(), dev_sched); - - sham::EventList depends_list; - auto block_min_acc - = edges.spans_block_min.get_field(id_patch).get_buf().get_read_access( - depends_list); - auto block_max_acc - = edges.spans_block_max.get_field(id_patch).get_buf().get_read_access( - depends_list); - auto block_size_acc = block_size_buf.get_write_access(depends_list); - - auto e = q.submit(depends_list, [&](sycl::handler &cgh) { - cgh.parallel_for( - sycl::range<1>(pdat.get_obj_cnt()), [=](sycl::item<1> gid) { - u32 id = gid.get_linear_id(); - block_size_acc[id] = block_max_acc[id] - block_min_acc[id]; - }); - }); - edges.spans_block_min.get_field(id_patch).get_buf().complete_event_state(e); - edges.spans_block_max.get_field(id_patch).get_buf().complete_event_state(e); - block_size_buf.complete_event_state(e); - - auto patch_min = shamalgs::primitives::min( - dev_sched, block_size_buf, 0, pdat.get_obj_cnt()); - auto patch_max = shamalgs::primitives::max( - dev_sched, block_size_buf, 0, pdat.get_obj_cnt()); - - // shammath::AABB patch_box = edges.patch_boxes.values.get(id_patch); - // return patch_box.delt(); - return patch_max; + shammath::AABB patch_box = edges.patch_boxes.values.get(id_patch); + return patch_box.delt(); }); } diff --git a/src/shammodels/ramses/src/Solver.cpp b/src/shammodels/ramses/src/Solver.cpp index c3a7aa29c4..ca920f90f1 100644 --- a/src/shammodels/ramses/src/Solver.cpp +++ b/src/shammodels/ramses/src/Solver.cpp @@ -933,8 +933,6 @@ void shammodels::basegodunov::Solver::init_solver_graph() { node_level0_sizes.set_edges( graph.get_edge_ptr>>("global_patch_boxes"), storage.source_patches, - storage.refs_block_min, - storage.refs_block_max, storage.level0_size); solver_sequence.push_back( std::make_shared(std::move(node_level0_sizes))); From 3c20e15c8eff42af3c8a2c751d31c2c892b64896 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 27 Feb 2026 14:44:20 +0000 Subject: [PATCH 20/29] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp b/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp index 75f8f62ae6..0cef6b4d95 100644 --- a/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp +++ b/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp @@ -27,7 +27,7 @@ namespace shammodels::basegodunov::modules { - template + template class ComputeLevel0CellSize : public shamrock::solvergraph::INode { public: ComputeLevel0CellSize() {} From fdf8fa942b216145b292f13c34a4bcd622764dc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David--Cl=C3=A9ris=20Timoth=C3=A9e?= Date: Fri, 27 Feb 2026 15:49:10 +0100 Subject: [PATCH 21/29] Update src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp --- .../ramses/include/shammodels/ramses/SolverConfig.hpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp index e5161d4bb6..da8f722c54 100644 --- a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp +++ b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp @@ -105,10 +105,6 @@ namespace shammodels::basegodunov { mode config = None{}; void set_refine_none() { config = None{}; } void set_refine_density_based(Tscal crit_mass) { config = DensityBased{crit_mass}; } -<<<<<<< blocks_level_histrogram - bool need_level_zero_compute() { return no_none_cfg; } - bool need_amr_level_compute() { return no_none_cfg; } -======= bool need_level_zero_compute() { return false; } bool need_amr_level_compute() { return false; } From 74279d3be003d0bc7261dcd7e7ea035390957f1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David--Cl=C3=A9ris=20Timoth=C3=A9e?= Date: Fri, 27 Feb 2026 15:49:16 +0100 Subject: [PATCH 22/29] Update src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp --- src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp index da8f722c54..8ffddb4f2d 100644 --- a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp +++ b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp @@ -93,7 +93,6 @@ namespace shammodels::basegodunov { struct AMRMode { using Tscal = shambase::VecComponent; - bool no_none_cfg = false; struct None {}; struct DensityBased { From a1dc233229049144d8f41601ee44e9016c0f1748 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David--Cl=C3=A9ris=20Timoth=C3=A9e?= Date: Fri, 27 Feb 2026 15:49:24 +0100 Subject: [PATCH 23/29] Update src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp --- .../include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp b/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp index 0cef6b4d95..008b744194 100644 --- a/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp +++ b/src/shammodels/ramses/include/shammodels/ramses/modules/ComputeLevel0CellSize.hpp @@ -26,7 +26,6 @@ #include namespace shammodels::basegodunov::modules { - template class ComputeLevel0CellSize : public shamrock::solvergraph::INode { public: From d1e55415d0a1b7b40ee791427790f3c001e368bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David--Cl=C3=A9ris=20Timoth=C3=A9e?= Date: Fri, 27 Feb 2026 15:49:30 +0100 Subject: [PATCH 24/29] Update src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp --- src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp index 8ffddb4f2d..fe37794564 100644 --- a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp +++ b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp @@ -107,7 +107,6 @@ namespace shammodels::basegodunov { bool need_level_zero_compute() { return false; } bool need_amr_level_compute() { return false; } ->>>>>>> main }; struct BCConfig { From 2de8cc01ab72bf9d5f9aeea938be8593ff81d1c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David--Cl=C3=A9ris=20Timoth=C3=A9e?= Date: Fri, 27 Feb 2026 15:49:35 +0100 Subject: [PATCH 25/29] Update src/shammodels/ramses/include/shammodels/ramses/modules/AMRGridRefinementHandler.hpp --- .../shammodels/ramses/modules/AMRGridRefinementHandler.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/shammodels/ramses/include/shammodels/ramses/modules/AMRGridRefinementHandler.hpp b/src/shammodels/ramses/include/shammodels/ramses/modules/AMRGridRefinementHandler.hpp index 15d692ae56..4e21a130bf 100644 --- a/src/shammodels/ramses/include/shammodels/ramses/modules/AMRGridRefinementHandler.hpp +++ b/src/shammodels/ramses/include/shammodels/ramses/modules/AMRGridRefinementHandler.hpp @@ -54,8 +54,8 @@ namespace shammodels::basegodunov::modules { void update_refinement(); private: - /** @brief build histrogram for amr block levels - * + /** + * @brief build histrogram for amr block levels */ void amr_block_levels_histogram( const sham::DeviceScheduler_ptr &sched, From d9b41ca661917f6841fe92a09f9dbeebec9f24c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David--Cl=C3=A9ris=20Timoth=C3=A9e?= Date: Fri, 27 Feb 2026 15:49:41 +0100 Subject: [PATCH 26/29] Update src/shammodels/ramses/src/pyRamsesModel.cpp --- src/shammodels/ramses/src/pyRamsesModel.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/shammodels/ramses/src/pyRamsesModel.cpp b/src/shammodels/ramses/src/pyRamsesModel.cpp index bdac6da397..d6c81545c6 100644 --- a/src/shammodels/ramses/src/pyRamsesModel.cpp +++ b/src/shammodels/ramses/src/pyRamsesModel.cpp @@ -181,7 +181,6 @@ namespace shammodels::basegodunov { .def( "set_amr_mode_none", [](TConfig &self) { - self.amr_mode.no_none_cfg = false; self.amr_mode.set_refine_none(); }) .def( From a0bb0bbf8f8d12d29ebc7df8796f9a7e40544819 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David--Cl=C3=A9ris=20Timoth=C3=A9e?= Date: Fri, 27 Feb 2026 15:49:48 +0100 Subject: [PATCH 27/29] Update src/shammodels/ramses/src/pyRamsesModel.cpp --- src/shammodels/ramses/src/pyRamsesModel.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/shammodels/ramses/src/pyRamsesModel.cpp b/src/shammodels/ramses/src/pyRamsesModel.cpp index d6c81545c6..499a4bd0bf 100644 --- a/src/shammodels/ramses/src/pyRamsesModel.cpp +++ b/src/shammodels/ramses/src/pyRamsesModel.cpp @@ -186,7 +186,6 @@ namespace shammodels::basegodunov { .def( "set_amr_mode_density_based", [](TConfig &self, Tscal crit_mass) { - self.amr_mode.no_none_cfg = true; self.amr_mode.set_refine_density_based(crit_mass); }, py::kw_only(), From 8aeeaeede71411d44a9e70a63ad99fcaa0bda006 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 27 Feb 2026 14:50:15 +0000 Subject: [PATCH 28/29] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../ramses/include/shammodels/ramses/SolverConfig.hpp | 2 +- .../shammodels/ramses/modules/AMRGridRefinementHandler.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp index fe37794564..a3ff6a11aa 100644 --- a/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp +++ b/src/shammodels/ramses/include/shammodels/ramses/SolverConfig.hpp @@ -92,7 +92,7 @@ namespace shammodels::basegodunov { template struct AMRMode { - using Tscal = shambase::VecComponent; + using Tscal = shambase::VecComponent; struct None {}; struct DensityBased { diff --git a/src/shammodels/ramses/include/shammodels/ramses/modules/AMRGridRefinementHandler.hpp b/src/shammodels/ramses/include/shammodels/ramses/modules/AMRGridRefinementHandler.hpp index 4e21a130bf..49d1e986b9 100644 --- a/src/shammodels/ramses/include/shammodels/ramses/modules/AMRGridRefinementHandler.hpp +++ b/src/shammodels/ramses/include/shammodels/ramses/modules/AMRGridRefinementHandler.hpp @@ -54,7 +54,7 @@ namespace shammodels::basegodunov::modules { void update_refinement(); private: - /** + /** * @brief build histrogram for amr block levels */ void amr_block_levels_histogram( From 2e96796fea43132d84db5c90ab9e744d4ea3c6ea Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 27 Feb 2026 16:49:59 +0000 Subject: [PATCH 29/29] [gh-action] trigger CI with empty commit