Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
GhostZones.hpp
Go to the documentation of this file.
1// -------------------------------------------------------//
2//
3// SHAMROCK code for hydrodynamics
4// Copyright (c) 2021-2026 Timothée David--Cléris <tim.shamrock@proton.me>
5// SPDX-License-Identifier: CeCILL Free Software License Agreement v2.1
6// Shamrock is licensed under the CeCILL 2.1 License, see LICENSE for more information
7//
8// -------------------------------------------------------//
9
10#pragma once
11
19#include "shambackends/vec.hpp"
22
24
25 template<class Tvec, class TgridVec>
26 class GhostZones {
27 public:
28 using Tscal = shambase::VecComponent<Tvec>;
29 using Tgridscal = shambase::VecComponent<TgridVec>;
31
34
35 ShamrockCtx &context;
36 Config &solver_config;
37 Storage &storage;
38
39 GhostZones(ShamrockCtx &context, Config &solver_config, Storage &storage)
40 : context(context), solver_config(solver_config), storage(storage) {}
41
42 void build_ghost_cache();
43
45 const std::shared_ptr<shamrock::patch::PatchDataLayerLayout> &pdl_ptr,
47
48 template<class T>
51
52 template<class T, class Tmerged>
55 std::function<
57 std::function<void(Tmerged &, T &)> appender);
58
59 void exchange_ghost();
60
61 template<class T>
62 shamrock::ComputeField<T> exchange_compute_field(shamrock::ComputeField<T> &in);
63
64 private:
65 inline PatchScheduler &scheduler() { return shambase::get_check_ref(context.sched); }
66 };
67} // namespace shammodels::zeus::modules
std::uint32_t u32
32 bit unsigned integer
The MPI scheduler.
Container for objects shared between two distributed data elements.
Represents a collection of objects distributed across patches identified by a u64 id.
PatchDataLayer container class, the layout is described in patchdata_layout.
T & get_check_ref(const std::unique_ptr< T > &ptr, SourceLocation loc=SourceLocation())
Takes a std::unique_ptr and returns a reference to the object it holds. It throws a std::runtime_erro...
Definition memory.hpp:110
namespace for the zeus model modules
Definition AMRTree.hpp:23
Patch object that contain generic patch information.
Definition Patch.hpp:33