Skip to content

Commit a977735

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

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-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: 18 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"
@@ -40,6 +41,7 @@
4041
#include "shammodels/ramses/modules/InterpolateToFace.hpp"
4142
#include "shammodels/ramses/modules/NodeComputeFlux.hpp"
4243
#include "shammodels/ramses/modules/SlopeLimitedGradient.hpp"
44+
#include "shammodels/ramses/modules/SolverStorage.hpp"
4345
#include "shammodels/ramses/modules/TimeIntegrator.hpp"
4446
#include "shammodels/ramses/modules/TransformGhostLayer.hpp"
4547
#include "shammodels/ramses/solvegraph/OrientedAMRGraphEdge.hpp"
@@ -412,6 +414,10 @@ void shammodels::basegodunov::Solver<Tvec, TgridVec>::init_solver_graph() {
412414
// get blocks at level0 sizes for all patches
413415
storage.level0_size = std::make_shared<shamrock::solvergraph::ScalarsEdge<TgridVec>>(
414416
"level0_amr", "level0_amr");
417+
// get blocks amr leves
418+
using TgridUint_ = typename SolverStorage<Tvec, TgridVec, u_morton>::TgridUint;
419+
storage.amr_block_levels = std::make_shared<shamrock::solvergraph::Field<TgridUint_>>(
420+
1, "amr_block_levels", "L_{\\rm amr}");
415421

416422
storage.grad_rho = std::make_shared<shamrock::solvergraph::Field<Tvec>>(
417423
AMRBlock::block_size, "grad_rho", "\\nabla \\rho");
@@ -921,6 +927,18 @@ void shammodels::basegodunov::Solver<Tvec, TgridVec>::init_solver_graph() {
921927
std::make_shared<decltype(node_level0_sizes)>(std::move(node_level0_sizes)));
922928
}
923929

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

0 commit comments

Comments
 (0)