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