21 #ifndef FUB_AMREX_GRIDDING_ALGORITHM_HPP
22 #define FUB_AMREX_GRIDDING_ALGORITHM_HPP
31 #include <AMReX_AmrCore.H>
32 #include <AMReX_MultiFabUtil.H>
128 [[nodiscard]] std::ptrdiff_t
GetCycles() const noexcept {
169 void ErrorEst(
int level, ::amrex::TagBoxArray& tags,
double time_point,
173 int level,
double time_point, const ::amrex::BoxArray& box_array,
174 const ::amrex::DistributionMapping& distribution_mapping)
override;
177 int level,
double time_point, const ::amrex::BoxArray& box_array,
178 const ::amrex::DistributionMapping& distribution_mapping)
override;
181 int level,
double time_point, const ::amrex::BoxArray& box_array,
182 const ::amrex::DistributionMapping& distribution_mapping)
override;
This is a polymorphic value type that wraps any BoundaryCondition object.
Definition: AnyBoundaryCondition.hpp:55
This class is a polymoprhic value type which stores components to initialize a gridding algorithm dur...
Definition: AnyInitialData.hpp:53
This class is a polymorphic value type that stores objects which satisfies the TaggingMethod<Gridding...
Definition: AnyTaggingMethod.hpp:48
This class modifies and initializes a PatchLevel in a PatchHierarchy.
Definition: AMReX/GriddingAlgorithm.hpp:60
AnyBoundaryCondition boundary_condition_
Definition: AMReX/GriddingAlgorithm.hpp:189
GriddingAlgorithm & operator=(const GriddingAlgorithm &other)
The copy assignment makes a deep copy of the all data for each MPI rank.
AnyInitialData initial_data_
Definition: AMReX/GriddingAlgorithm.hpp:187
GriddingAlgorithm(PatchHierarchy hier, AnyInitialData initial_data, AnyTaggingMethod tagging, AnyBoundaryCondition boundary=AnyBoundaryCondition())
Constructs a gridding algorithm and defines all customization points.
const AnyBoundaryCondition & GetBoundaryCondition() const noexcept
Duration GetTimePoint() const noexcept
Returns the current time point on the coarsest refinement level.
Definition: AMReX/GriddingAlgorithm.hpp:133
GriddingAlgorithm()
Constructs an empty and invalid GriddingAlgorithm.
const PatchHierarchy & GetPatchHierarchy() const noexcept
Definition: AMReX/GriddingAlgorithm.hpp:109
AnyTaggingMethod tagging_
Definition: AMReX/GriddingAlgorithm.hpp:188
void MakeNewLevelFromScratch(int level, double time_point, const ::amrex::BoxArray &box_array, const ::amrex::DistributionMapping &distribution_mapping) override
GriddingAlgorithm(const GriddingAlgorithm &other)
The copy constructor makes a deep copy of the all data for each MPI rank.
void FillMultiFabFromLevel(::amrex::MultiFab &mf, int level_number)
Fill the ghost layer boundary specified of the specifed MultiFab mf.
std::ptrdiff_t GetCycles() const noexcept
Returns the number of time steps taken on the coarsest refinement level.
Definition: AMReX/GriddingAlgorithm.hpp:128
~GriddingAlgorithm() noexcept override=default
Constructs an empty and invalid GriddingAlgorithm.
void ErrorEst(int level, ::amrex::TagBoxArray &tags, double time_point, int) override
GriddingAlgorithm(GriddingAlgorithm &&other) noexcept=default
The move constructor moves a gridding algorithm without allocating any memory.
int RegridAllFinerlevels(int which_level)
Attempt to regrid all finer level than the specified which_level.
void FillMultiFabFromLevel(::amrex::MultiFab &mf, int level_number, AnyBoundaryCondition &bc)
Fill the ghost layer boundary specified of the specifed MultiFab mf.
const AnyTaggingMethod & GetTagging() const noexcept
PatchHierarchy & GetPatchHierarchy() noexcept
Definition: AMReX/GriddingAlgorithm.hpp:108
void ClearLevel([[maybe_unused]] int level) override
GriddingAlgorithm & operator=(GriddingAlgorithm &&other) noexcept=default
The move assignment moves a gridding algorithm without allocating any memory.
void MakeNewLevelFromCoarse(int level, double time_point, const ::amrex::BoxArray &box_array, const ::amrex::DistributionMapping &distribution_mapping) override
PatchHierarchy hierarchy_
Definition: AMReX/GriddingAlgorithm.hpp:186
void RemakeLevel(int level, double time_point, const ::amrex::BoxArray &box_array, const ::amrex::DistributionMapping &distribution_mapping) override
void InitializeHierarchy(double level_time=0.0)
Initializes the underlying patch hierarchy using the stored initial data method.
const AnyInitialData & GetInitialCondition() const noexcept
The PatchHierarchy holds simulation data on multiple refinement levels.
Definition: AMReX/PatchHierarchy.hpp:156
std::ptrdiff_t GetCycles(int level=0) const
Duration GetTimePoint(int level=0) const
::fub::AnyBoundaryCondition< GriddingAlgorithm > AnyBoundaryCondition
Definition: AMReX/GriddingAlgorithm.hpp:54
The fub namespace.
Definition: AnyBoundaryCondition.hpp:31
std::chrono::duration< double > Duration
Definition: Duration.hpp:31
::amrex::MultiFab & DataReference
Definition: AMReX/GriddingAlgorithm.hpp:48
::amrex::TagBoxArray & TagDataHandle
Definition: AMReX/GriddingAlgorithm.hpp:47
The PatchLevel represents a distributed grid containing plain simulation data without a ghost cell la...
Definition: AMReX/PatchHierarchy.hpp:90