|
24 | 24 | #include "shammodels/ramses/SolverConfig.hpp" |
25 | 25 | #include "shammodels/ramses/modules/AMRGridRefinementHandler.hpp" |
26 | 26 | #include "shammodels/ramses/modules/BlockNeighToCellNeigh.hpp" |
| 27 | +#include "shammodels/ramses/modules/ComputeAMRLevel.hpp" |
27 | 28 | #include "shammodels/ramses/modules/ComputeCFL.hpp" |
28 | 29 | #include "shammodels/ramses/modules/ComputeCellAABB.hpp" |
29 | 30 | #include "shammodels/ramses/modules/ComputeLevel0CellSize.hpp" |
|
40 | 41 | #include "shammodels/ramses/modules/InterpolateToFace.hpp" |
41 | 42 | #include "shammodels/ramses/modules/NodeComputeFlux.hpp" |
42 | 43 | #include "shammodels/ramses/modules/SlopeLimitedGradient.hpp" |
| 44 | +#include "shammodels/ramses/modules/SolverStorage.hpp" |
43 | 45 | #include "shammodels/ramses/modules/TimeIntegrator.hpp" |
44 | 46 | #include "shammodels/ramses/modules/TransformGhostLayer.hpp" |
45 | 47 | #include "shammodels/ramses/solvegraph/OrientedAMRGraphEdge.hpp" |
@@ -412,6 +414,10 @@ void shammodels::basegodunov::Solver<Tvec, TgridVec>::init_solver_graph() { |
412 | 414 | // get blocks at level0 sizes for all patches |
413 | 415 | storage.level0_size = std::make_shared<shamrock::solvergraph::ScalarsEdge<TgridVec>>( |
414 | 416 | "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}"); |
415 | 421 |
|
416 | 422 | storage.grad_rho = std::make_shared<shamrock::solvergraph::Field<Tvec>>( |
417 | 423 | AMRBlock::block_size, "grad_rho", "\\nabla \\rho"); |
@@ -921,6 +927,18 @@ void shammodels::basegodunov::Solver<Tvec, TgridVec>::init_solver_graph() { |
921 | 927 | std::make_shared<decltype(node_level0_sizes)>(std::move(node_level0_sizes))); |
922 | 928 | } |
923 | 929 |
|
| 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 | + |
924 | 942 | if (solver_config.should_compute_rho_mean()) { |
925 | 943 | modules::NodeComputeMass<Tvec, TgridVec> node{AMRBlock::block_size}; |
926 | 944 | node.set_edges( |
|
0 commit comments