Block-Structured AMR Software Framework
Loading...
Searching...
No Matches
AMReX_AmrCore.H
Go to the documentation of this file.
1#ifndef BL_AMRCORE_H_
2#define BL_AMRCORE_H_
3#include <AMReX_Config.H>
4
5#include <AMReX_AmrMesh.H>
6
12#include <iosfwd>
13#include <memory>
14
15namespace amrex {
16
17#ifdef AMREX_PARTICLES
18class AmrParGDB;
19#endif
20
30 : public AmrMesh
31{
32public:
33
35 AmrCore ();
36
49 AmrCore (const RealBox* rb, int max_level_in,
50 const Vector<int>& n_cell_in, int coord=-1,
51 Vector<IntVect> ref_ratios = Vector<IntVect>(),
52 const int* is_per = nullptr);
53
64 AmrCore (const RealBox& rb, int max_level_in,
65 const Vector<int>& n_cell_in, int coord,
66 Vector<IntVect> const& ref_ratios,
67 Array<int,AMREX_SPACEDIM> const& is_per);
68
75 AmrCore (Geometry const& level_0_geom, AmrInfo const& amr_info);
76
77 AmrCore (AmrCore&& rhs) noexcept;
78 AmrCore& operator= (AmrCore&& rhs) noexcept;
79
80 AmrCore (const AmrCore& rhs) = delete;
81 AmrCore& operator= (const AmrCore& rhs) = delete;
82
83 ~AmrCore () override;
84
85#ifdef AMREX_PARTICLES
87 [[nodiscard]] AmrParGDB* GetParGDB () const noexcept { return m_gdb.get(); }
88#endif
89
99 void InitFromScratch (Real time);
100
108 virtual void regrid (int lbase, Real time, bool initial=false);
109
117 void printGridSummary (std::ostream& os, int min_lev, int max_lev) const noexcept;
118
119protected:
120
129 void ErrorEst (int lev, TagBoxArray& tags, Real time, int ngrow) override = 0;
130
137 void MakeNewLevelFromScratch (int lev, Real time, const BoxArray& ba, const DistributionMapping& dm) override = 0;
138
147 virtual void MakeNewLevelFromCoarse (int lev, Real time, const BoxArray& ba, const DistributionMapping& dm) = 0;
148
157 virtual void RemakeLevel (int lev, Real time, const BoxArray& ba, const DistributionMapping& dm) = 0;
158
164 virtual void ClearLevel (int lev) = 0;
165
166#ifdef AMREX_PARTICLES
168 std::unique_ptr<AmrParGDB> m_gdb;
169#endif
170
171private:
173 void InitAmrCore ();
174};
175
176}
177
178#endif
Core mesh hierarchy infrastructure shared by AmrCore and AmrLevel.
Provide basic functionalities to set up an AMR hierarchy.
Definition AMReX_AmrCore.H:31
void MakeNewLevelFromScratch(int lev, Real time, const BoxArray &ba, const DistributionMapping &dm) override=0
Create and fill a new level from scratch.
virtual void ClearLevel(int lev)=0
Delete level lev data structures owned by the derived class.
void InitFromScratch(Real time)
Initialize BoxArray, DistributionMapping, and level data from scratch.
Definition AMReX_AmrCore.cpp:79
AmrCore()
Construct an empty AmrCore.
Definition AMReX_AmrCore.cpp:18
~AmrCore() override
Definition AMReX_AmrCore.cpp:57
void printGridSummary(std::ostream &os, int min_lev, int max_lev) const noexcept
Print a human-readable summary of grid sizes between min_lev and max_lev.
Definition AMReX_AmrCore.cpp:140
AmrCore & operator=(AmrCore &&rhs) noexcept
Definition AMReX_AmrCore.cpp:59
void ErrorEst(int lev, TagBoxArray &tags, Real time, int ngrow) override=0
Tag cells for refinement on level lev.
virtual void RemakeLevel(int lev, Real time, const BoxArray &ba, const DistributionMapping &dm)=0
Remake an existing level using provided metadata and refill from old data.
AmrParGDB * GetParGDB() const noexcept
Return AmrParGDB pointer for particle containers.
Definition AMReX_AmrCore.H:87
AmrCore(const AmrCore &rhs)=delete
std::unique_ptr< AmrParGDB > m_gdb
Geometry, DistributionMapping and BoxArray for particle containers.
Definition AMReX_AmrCore.H:168
virtual void regrid(int lbase, Real time, bool initial=false)
Rebuild all levels finer than lbase at simulation time time.
Definition AMReX_AmrCore.cpp:85
virtual void MakeNewLevelFromCoarse(int lev, Real time, const BoxArray &ba, const DistributionMapping &dm)=0
Make a new level using provided metadata and populate it from the next coarser level.
Definition AMReX_AmrMesh.H:69
Definition AMReX_AmrParGDB.H:17
A collection of Boxes stored in an Array.
Definition AMReX_BoxArray.H:568
Calculates the distribution of FABs to MPI processes.
Definition AMReX_DistributionMapping.H:43
Rectangular problem domain geometry.
Definition AMReX_Geometry.H:74
A Box with real dimensions.
Definition AMReX_RealBox.H:28
An array of TagBoxes.
Definition AMReX_TagBox.H:151
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition AMReX_Vector.H:28
amrex_real Real
Floating Point Type for Fields.
Definition AMReX_REAL.H:79
std::array< T, N > Array
Definition AMReX_Array.H:26
Definition AMReX_Amr.cpp:49
Definition AMReX_AmrMesh.H:25