Skip to content
Open
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,41 @@ namespace shammodels::basegodunov::modules {
*/
template<class UserAcc, class... T>
void gen_refine_block_changes(
shambase::DistributedData<OptIndexList> &refine_list,
shambase::DistributedData<OptIndexList> &derefine_list,
shambase::DistributedData<sycl::buffer<u32>> &refine_flags,
shambase::DistributedData<sycl::buffer<u32>> &derefine_flags,
T &&...args);

/**
* @brief Enforces the 2:1 refinement ratio for blocks.
*
* This function iterates through blocks marked for refinement and ensures that
* adjacent, coarser blocks are also marked for refinement to maintain the 2:1
* grid balance. This is done iteratively to propagate the refinement as needed.
* @param refine_flags refinement flags
* @param refine_list refinement maps
*/
void enforce_two_to_one_for_refinement(
shambase::DistributedData<sycl::buffer<u32>> &&refine_flags,
Comment thread
Akos299 marked this conversation as resolved.
Outdated
shambase::DistributedData<OptIndexList> &refine_list);

/**
* @brief Check geometrical validity for derefinement
*
* This function iterates over all blocks flagged for derefinement and checks
* whether all of their siblings also request derefinement, and if the merge operation can
* be done. If these conditions are satisfied, the merge (coarsening) operation is
* considered valid.
*
* To avoid duplicate operations, only the first block among each group of
* eight siblings is retained when all validity checks succeed.
*
* @param derefine_flags Derefinement flags
* @param refine_flags Refinement flags
*/
void check_geometrical_validity_for_derefinement(
shambase::DistributedData<sycl::buffer<u32>> &&derefine_flags,
shambase::DistributedData<sycl::buffer<u32>> &&refine_flags);
Comment thread
Akos299 marked this conversation as resolved.
Outdated

template<class UserAcc>
bool internal_refine_grid(shambase::DistributedData<OptIndexList> &&refine_list);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ namespace shammodels::basegodunov {
using Tscal = shambase::VecComponent<Tvec>;
using Tgridscal = shambase::VecComponent<TgridVec>;
static constexpr u32 dim = shambase::VectorProperties<Tvec>::dimension;
using TgridUint = typename std::make_unsigned<shambase::VecComponent<TgridVec>>::type;

using RTree = RadixTree<Tmorton, TgridVec>;

Expand Down Expand Up @@ -141,6 +142,9 @@ namespace shammodels::basegodunov {

std::shared_ptr<shamrock::solvergraph::DDSharedBuffers<u32>> idx_in_ghost;

std::shared_ptr<shamrock::solvergraph::ScalarsEdge<TgridVec>> level0_size;
std::shared_ptr<shamrock::solvergraph::Field<TgridUint>> amr_block_levels;

std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_xp;
std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_xm;
std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_yp;
Expand Down
Loading