21 #ifndef FUB_AMREX_COUPLED_GRIDDING_ALGORITHM2_HPP
22 #define FUB_AMREX_COUPLED_GRIDDING_ALGORITHM2_HPP
39 template <
typename TubeEquation,
typename PlenumEquation>
41 const TubeEquation& tube_equation,
const PlenumEquation& plenum_equation,
42 std::vector<std::shared_ptr<GriddingAlgorithm>> tubes,
43 std::vector<std::shared_ptr<cutcell::GriddingAlgorithm>> plena,
44 std::vector<BlockConnection> connectivity);
68 return boundaries_[
static_cast<std::size_t
>(level)];
74 std::vector<std::shared_ptr<GriddingAlgorithm>>
tubes_;
75 std::vector<std::shared_ptr<cutcell::GriddingAlgorithm>>
plena_;
80 template <
typename TubeEquation,
typename PlenumEquation>
82 const TubeEquation& tube_equation,
const PlenumEquation& plenum_equation,
83 std::vector<std::shared_ptr<GriddingAlgorithm>> tubes,
84 std::vector<std::shared_ptr<cutcell::GriddingAlgorithm>> plena,
85 std::vector<BlockConnection> connectivity)
86 : tubes_{std::move(tubes)}, plena_{std::move(plena)},
87 connectivity_(std::move(connectivity)) {
88 const int nlevel =
plena_[0]->GetPatchHierarchy().GetMaxNumberOfLevels();
89 boundaries_.resize(
static_cast<std::size_t
>(nlevel));
93 boundaries.emplace_back(
95 conn.ghost_cell_width, level);
103 template <
typename Pr
intDuration>
108 std::chrono::steady_clock::time_point ref)
114 reference_{std::chrono::steady_clock::now()} {}
117 std::vector<std::ptrdiff_t> frequencies,
118 std::vector<Duration> intervals)
120 std::move(frequencies), std::move(intervals)),
124 std::chrono::steady_clock::time_point now =
125 std::chrono::steady_clock::now();
127 std::chrono::duration_cast<std::chrono::nanoseconds>(now -
reference_);
128 std::vector<CounterResult> statistics = grid.
GetPlena()[0]
129 ->GetPatchHierarchy()
130 .GetCounterRegistry()
131 ->gather_statistics();
132 if (statistics.size()) {
133 print_statistics<PrintDuration>(statistics, diff.count());
CounterOutput(const ProgramOptions &po)
Definition: MultiBlockGriddingAlgorithm2.hpp:112
CounterOutput(std::chrono::steady_clock::time_point reference, std::vector< std::ptrdiff_t > frequencies, std::vector< Duration > intervals)
Definition: MultiBlockGriddingAlgorithm2.hpp:116
void operator()(const amrex::MultiBlockGriddingAlgorithm2 &grid) override
Definition: MultiBlockGriddingAlgorithm2.hpp:123
CounterOutput(const ProgramOptions &po, std::chrono::steady_clock::time_point ref)
Definition: MultiBlockGriddingAlgorithm2.hpp:107
std::chrono::steady_clock::time_point reference_
Definition: MultiBlockGriddingAlgorithm2.hpp:138
Definition: CounterOutput.hpp:34
std::chrono::steady_clock::time_point reference_
Definition: CounterOutput.hpp:64
Definition: OutputAtFrequencyOrInterval.hpp:32
Definition: MultiBlockBoundary2.hpp:77
This class modifies and initializes a PatchLevel in a PatchHierarchy.
Definition: AMReX/GriddingAlgorithm.hpp:60
Definition: MultiBlockGriddingAlgorithm2.hpp:37
MultiBlockGriddingAlgorithm2 & operator=(const MultiBlockGriddingAlgorithm2 &other)
span< const std::shared_ptr< cutcell::GriddingAlgorithm > > GetPlena() const noexcept
void RegridAllFinerLevels(int which_level)
span< const BlockConnection > GetConnectivity() const noexcept
Duration GetTimePoint() const noexcept
Definition: MultiBlockGriddingAlgorithm2.hpp:58
std::vector< std::vector< AnyMultiBlockBoundary > > boundaries_
Definition: MultiBlockGriddingAlgorithm2.hpp:77
span< AnyMultiBlockBoundary > GetBoundaries(int level=0) noexcept
Definition: MultiBlockGriddingAlgorithm2.hpp:67
span< const std::shared_ptr< GriddingAlgorithm > > GetTubes() const noexcept
MultiBlockGriddingAlgorithm2(MultiBlockGriddingAlgorithm2 &&other) noexcept=default
std::vector< std::shared_ptr< GriddingAlgorithm > > tubes_
Definition: MultiBlockGriddingAlgorithm2.hpp:74
std::vector< BlockConnection > connectivity_
Definition: MultiBlockGriddingAlgorithm2.hpp:76
MultiBlockGriddingAlgorithm2(const TubeEquation &tube_equation, const PlenumEquation &plenum_equation, std::vector< std::shared_ptr< GriddingAlgorithm >> tubes, std::vector< std::shared_ptr< cutcell::GriddingAlgorithm >> plena, std::vector< BlockConnection > connectivity)
Definition: MultiBlockGriddingAlgorithm2.hpp:81
std::vector< std::shared_ptr< cutcell::GriddingAlgorithm > > plena_
Definition: MultiBlockGriddingAlgorithm2.hpp:75
std::ptrdiff_t GetCycles() const noexcept
Definition: MultiBlockGriddingAlgorithm2.hpp:56
MultiBlockGriddingAlgorithm2(const MultiBlockGriddingAlgorithm2 &other)
MultiBlockGriddingAlgorithm2 & operator=(MultiBlockGriddingAlgorithm2 &&other) noexcept=default
A span is a view over a contiguous sequence of objects, the storage of which is owned by some other o...
Definition: span.hpp:81
The fub namespace.
Definition: AnyBoundaryCondition.hpp:31
std::chrono::duration< double > Duration
Definition: Duration.hpp:31
std::map< std::string, pybind11::object > ProgramOptions
Definition: ProgramOptions.hpp:40
Definition: MultiBlockBoundary.hpp:54
Definition: MultiBlockBoundary2.hpp:186