2#ifndef AMREX_StateDescriptor_H_
3#define AMREX_StateDescriptor_H_
4#include <AMReX_Config.H>
24 int dcomp,
int numcomp,
71 : m_func(inFunc), m_gfunc(gFunc) {}
74 : m_func3D(inFunc), m_gfunc3D(gFunc) {}
90 const int* dom_lo,
const int* dom_hi,
92 const Real* time,
const int* bc)
const;
109 const int* dom_lo,
const int* dom_hi,
111 const Real* time,
const int* bc,
int ng)
const;
114 int dcomp,
int numcomp,
119 [[nodiscard]]
bool RunOnGPU () const noexcept {
return m_run_on_gpu; }
123 [[nodiscard]]
bool hasFabVersion () const noexcept {
return m_funcfab !=
nullptr; }
132 bool m_run_on_gpu =
false;
194 const std::string& nm,
196 const BndryFunc& func,
198 int max_map_start_comp = -1,
199 int min_map_end_comp = -1);
213 const std::string& nm,
215 const BndryFunc& func,
229 const BndryFunc& func);
251 int*& map_start_comp,
253 int*& max_start_comp,
254 int*& min_end_comp)
const;
266 int*& map_start_comp,
268 int*& max_start_comp,
269 int*& min_end_comp) ;
295 [[nodiscard]]
int nComp () const noexcept;
300 [[nodiscard]]
int nExtra () const noexcept;
319 [[nodiscard]] const std::
string&
name (
int i) const noexcept;
326 [[nodiscard]] const
BCRec&
getBC (
int i) const noexcept;
338 [[nodiscard]] const BndryFunc&
bndryFill (
int i) const noexcept;
346 [[nodiscard]]
int inRange (
int sc,
int nc) const noexcept;
358 [[nodiscard]] std::vector< std::pair<
int,
int> >
sameInterps (
int scomp,
int ncomp) const;
363 [[nodiscard]]
bool extrap () const noexcept;
370 [[nodiscard]]
bool primary (
int i) const noexcept {
return m_primary[i]; }
372 [[nodiscard]]
int groupsize (
int i)
const noexcept {
return m_groupsize[i]; }
378 [[nodiscard]]
bool RunOnGPU () const noexcept {
return bc_func[0]->RunOnGPU(); }
383 [[nodiscard]]
bool hasBndryFuncFab () const noexcept {
return bc_func[0]->hasFabVersion(); }
386 bf_ext_dir_threadsafe = ext_dir_safe;
396 InterpBase* mapper{
nullptr};
397 bool m_extrap{
false};
398 bool m_store_in_checkpoint{
true};
399 Vector<std::string> names;
401 Vector<std::unique_ptr<BndryFunc> > bc_func;
402 Vector<int> m_primary;
403 Vector<int> m_groupsize;
409 Vector<InterpBase*> mapper_comp;
421 Vector<int> max_map_start_comp;
422 Vector<int> min_map_end_comp;
424 static int bf_ext_dir_threadsafe;
426 static bool bf_thread_safety (
const int* lo,
const int* hi,
427 const int* dom_lo,
const int* dom_hi,
428 const int* bc,
int ng);
448 [[nodiscard]]
int size ()
const noexcept;
469 bool store_in_checkpoint =
true);
498 const std::string& nm,
502 int max_map_start_comp = -1,
503 int min_map_end_comp = -1);
Boundary Condition Records. Necessary information and functions for computing boundary conditions.
Definition AMReX_BCRec.H:17
Definition AMReX_StateDescriptor.H:437
const StateDescriptor & operator[](int k) const noexcept
Definition AMReX_StateDescriptor.cpp:163
void clear()
Set the list to its default state.
Definition AMReX_StateDescriptor.cpp:112
void resetComponentBCs(int indx, int comp, const BCRec &bc, const StateDescriptor::BndryFunc &func)
Calls resetComponentBCs() on StateDescriptor at index indx.
Definition AMReX_StateDescriptor.cpp:124
void setComponent(int indx, int comp, const std::string &nm, const BCRec &bc, const StateDescriptor::BndryFunc &func, InterpBase *interp=nullptr, int max_map_start_comp=-1, int min_map_end_comp=-1)
Calls setComponent() on StateDescriptor at index indx.
Definition AMReX_StateDescriptor.cpp:133
int size() const noexcept
Returns number of elements in the list.
Definition AMReX_StateDescriptor.cpp:118
void addDescriptor(int indx, IndexType typ, StateDescriptor::TimeCenter ttyp, int nextra, int num_comp, InterpBase *interp, bool extrap=false, bool store_in_checkpoint=true)
Adds new StateDescriptor at index indx to list.
Definition AMReX_StateDescriptor.cpp:169
A Fortran Array of REALs.
Definition AMReX_FArrayBox.H:231
Rectangular problem domain geometry.
Definition AMReX_Geometry.H:74
Definition AMReX_InterpBase.H:26
Definition AMReX_StateDescriptor.H:47
BndryFunc() noexcept=default
Bogus constructor.
BndryFunc(BndryFuncFabDefault inFunc) noexcept
Definition AMReX_StateDescriptor.H:62
BndryFunc(BndryFunc3DDefault inFunc, BndryFunc3DDefault gFunc) noexcept
Definition AMReX_StateDescriptor.H:73
bool RunOnGPU() const noexcept
Definition AMReX_StateDescriptor.H:119
void setRunOnGPU(bool b) noexcept
Definition AMReX_StateDescriptor.H:121
BndryFunc(BndryFunc3DDefault inFunc) noexcept
Definition AMReX_StateDescriptor.H:60
void operator()(Real *data, const int *lo, const int *hi, const int *dom_lo, const int *dom_hi, const Real *dx, const Real *grd_lo, const Real *time, const int *bc) const
Definition AMReX_StateDescriptor.cpp:30
bool hasFabVersion() const noexcept
Definition AMReX_StateDescriptor.H:123
BndryFunc(BndryFuncDefault inFunc, BndryFuncDefault gFunc) noexcept
Another Constructor.
Definition AMReX_StateDescriptor.H:70
Attributes of StateData.
Definition AMReX_StateDescriptor.H:33
InterpBase * interp() const noexcept
Returns the interpolater.
Definition AMReX_StateDescriptor.cpp:251
const std::string & name(int i) const noexcept
Returns the name of specified component.
Definition AMReX_StateDescriptor.cpp:263
bool identicalInterps(int scomp, int ncomp) const noexcept
Are the interpolaters in the specified range identical?
Definition AMReX_StateDescriptor.cpp:517
const BCRec & getBC(int i) const noexcept
Returns the BCRec of specified component.
Definition AMReX_StateDescriptor.cpp:269
bool primary(int i) const noexcept
Definition AMReX_StateDescriptor.H:370
StateDescriptor::TimeCenter timeType() const noexcept
Returns StateDescriptor::TimeCenter.
Definition AMReX_StateDescriptor.cpp:233
void setComponent(int comp, const std::string &nm, const BCRec &bc, const BndryFunc &func, InterpBase *interp=nullptr, int max_map_start_comp=-1, int min_map_end_comp=-1)
Sets details of comp component.
Definition AMReX_StateDescriptor.cpp:337
int inRange(int sc, int nc) const noexcept
Is sc>=0 && sc+nc<=ncomp ?
Definition AMReX_StateDescriptor.cpp:300
bool RunOnGPU() const noexcept
will it run on gpu?
Definition AMReX_StateDescriptor.H:378
void resetComponentBCs(int comp, const BCRec &bcr, const BndryFunc &func)
Resets boundary condition data for comp component.
Definition AMReX_StateDescriptor.cpp:216
static void setBndryFuncThreadSafety(int ext_dir_safe) noexcept
Definition AMReX_StateDescriptor.H:385
bool store_in_checkpoint() const noexcept
Should store this StateData in the checkpoint file.
Definition AMReX_StateDescriptor.cpp:287
bool extrap() const noexcept
Can extrapolate in time.
Definition AMReX_StateDescriptor.cpp:281
int nComp() const noexcept
Returns number of components.
Definition AMReX_StateDescriptor.cpp:239
void define(IndexType btyp, TimeCenter ttyp, int ident, int nextra, int num_comp, InterpBase *interp, bool extrap=false, bool store_in_checkpoint=true)
Define the data members if constructed with default constructor.
Definition AMReX_StateDescriptor.cpp:306
int groupsize(int i) const noexcept
Definition AMReX_StateDescriptor.H:372
std::vector< std::pair< int, int > > sameInterps(int scomp, int ncomp) const
Definition AMReX_StateDescriptor.cpp:535
TimeCenter
Defines the temporal centeredness of data.
Definition AMReX_StateDescriptor.H:39
@ Interval
Definition AMReX_StateDescriptor.H:39
@ Point
Definition AMReX_StateDescriptor.H:39
void setUpMaps(int &use_default_map, const InterpBase *default_map, int start_comp, int num_comp, InterpBase **&maps, int &nmaps, int *&map_start_comp, int *&map_num_comp, int *&max_start_comp, int *&min_end_comp) const
Set interpolaters for a subset of the state vector components.
Definition AMReX_StateDescriptor.cpp:398
const Vector< BCRec > & getBCs() const noexcept
Returns all BCRecs.
Definition AMReX_StateDescriptor.cpp:275
bool hasBndryFuncFab() const noexcept
has new fab version of BndryFunc?
Definition AMReX_StateDescriptor.H:383
IndexType getType() const noexcept
Returns the IndexType.
Definition AMReX_StateDescriptor.cpp:227
StateDescriptor() noexcept
The default constructor.
Definition AMReX_StateDescriptor.H:138
int nExtra() const noexcept
Returns the grow factor.
Definition AMReX_StateDescriptor.cpp:245
const BndryFunc & bndryFill(int i) const noexcept
Returns the BndryFunc of specified component.
Definition AMReX_StateDescriptor.cpp:294
static void cleanUpMaps(InterpBase **&maps, int *&map_start_comp, int *&map_num_comp, int *&max_start_comp, int *&min_end_comp)
Cleanup interpolaters for a subset of the state vector components.
Definition AMReX_StateDescriptor.cpp:503
void dumpNames(std::ostream &os, int start_comp, int num_comp) const
Output names of components.
Definition AMReX_StateDescriptor.cpp:385
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
Definition AMReX_Amr.cpp:49
void(*)(Real *data, const int &, const int &, const int &, const int &, const int &, const int &, const int *dom_lo, const int *dom_hi, const Real *dx, const Real *grd_lo, const Real *time, const int *bc) BndryFuncDefault
Definition AMReX_PhysBCFunct.H:21
std::function< void(Box const &bx, FArrayBox &data, int dcomp, int numcomp, Geometry const &geom, Real time, const Vector< BCRec > &bcr, int bcomp, int scomp)> BndryFuncFabDefault
Definition AMReX_StateDescriptor.H:27
void(*)(Real *data, const int *lo, const int *hi, const int *dom_lo, const int *dom_hi, const Real *dx, const Real *grd_lo, const Real *time, const int *bc) BndryFunc3DDefault
Definition AMReX_PhysBCFunct.H:25