Skip to content

Commit 6f0785d

Browse files
committed
[Ramses][AMR] AMR levels
Get AMR levels for all blocks in each patch. This is done by using the ComputeAMRLvel node implemented by @tdavidcl.
1 parent 42a7b2e commit 6f0785d

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

src/shammodels/ramses/include/shammodels/ramses/modules/SolverStorage.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ namespace shammodels::basegodunov {
7777
std::shared_ptr<shamrock::solvergraph::FieldRefs<TgridVec>> refs_block_max;
7878

7979
std::shared_ptr<shamrock::solvergraph::ScalarsEdge<TgridVec>> level0_size;
80+
std::shared_ptr<shamrock::solvergraph::Field<TgridUint>> amr_block_levels;
8081

8182
std::shared_ptr<shamrock::solvergraph::Indexes<u32>> block_counts;
8283
std::shared_ptr<shamrock::solvergraph::Indexes<u32>> block_counts_with_ghost;

src/shammodels/ramses/src/Solver.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include "shammodels/ramses/SolverConfig.hpp"
2525
#include "shammodels/ramses/modules/AMRGridRefinementHandler.hpp"
2626
#include "shammodels/ramses/modules/BlockNeighToCellNeigh.hpp"
27+
#include "shammodels/ramses/modules/ComputeAMRLevel.hpp"
2728
#include "shammodels/ramses/modules/ComputeCFL.hpp"
2829
#include "shammodels/ramses/modules/ComputeCellAABB.hpp"
2930
#include "shammodels/ramses/modules/ComputeLevel0CellSize.hpp"
@@ -412,6 +413,9 @@ void shammodels::basegodunov::Solver<Tvec, TgridVec>::init_solver_graph() {
412413
// get blocks at level0 sizes for all patches
413414
storage.level0_size = std::make_shared<shamrock::solvergraph::ScalarsEdge<TgridVec>>(
414415
"level0_amr", "level0_amr");
416+
// get blocks amr leves
417+
using TgridUint = typename std::make_unsigned<shambase::VecComponent<TgridVec>>::type;
418+
storage.amr_block_levels = std::make_shared<shamrock::solvergraph::Field<TgridUint>>(1, "", "");
415419

416420
storage.grad_rho = std::make_shared<shamrock::solvergraph::Field<Tvec>>(
417421
AMRBlock::block_size, "grad_rho", "\\nabla \\rho");
@@ -921,6 +925,18 @@ void shammodels::basegodunov::Solver<Tvec, TgridVec>::init_solver_graph() {
921925
std::make_shared<decltype(node_level0_sizes)>(std::move(node_level0_sizes)));
922926
}
923927

928+
{ // compute block amr level in patch
929+
modules::ComputeAMRLevel<TgridVec> node_amr_level{};
930+
node_amr_level.set_edges(
931+
storage.block_counts,
932+
storage.level0_size,
933+
storage.refs_block_min,
934+
storage.refs_block_max,
935+
storage.amr_block_levels);
936+
solver_sequence.push_back(
937+
std::make_shared<decltype(node_amr_level)>(std::move(node_amr_level)));
938+
}
939+
924940
if (solver_config.should_compute_rho_mean()) {
925941
modules::NodeComputeMass<Tvec, TgridVec> node{AMRBlock::block_size};
926942
node.set_edges(

0 commit comments

Comments
 (0)