1#ifndef AMREX_ErrorList_H_
2#define AMREX_ErrorList_H_
3#include <AMReX_Config.H>
27 const int* tagval,
const int* clearval,
29 const int* lo,
const int * hi,
const int* nvar,
30 const int* domain_lo,
const int* domain_hi,
36 const int* tagval,
const int* clearval,
38 const int* lo,
const int * hi,
const int* nvar,
39 const int* domain_lo,
const int* domain_hi,
67 const int* tagval,
const int* clearval,
68 amrex::Real* data,
const int* data_lo,
const int* data_hi,
69 const int* lo,
const int * hi,
const int* nvar,
70 const int* domain_lo,
const int* domain_hi,
142 const int* tagval,
const int* clearval,
144 const int* lo,
const int * hi,
const int* nvar,
145 const int* domain_lo,
const int* domain_hi,
147 const Real* prob_lo,
const Real* time,
148 const int* level)
const;
172 virtual void operator () (
int* tag,
const int* tlo,
const int* thi,
173 const int* tagval,
const int* clearval,
174 Real* data,
const int* dlo,
const int* dhi,
175 const int* lo,
const int * hi,
const int* nvar,
176 const int* domain_lo,
const int* domain_hi,
178 const Real* prob_lo,
const Real* time,
179 const int* level)
const;
222 const int* tagval,
const int* clearval,
224 const int* lo,
const int * hi,
const int* nvar,
225 const int* domain_lo,
const int* domain_hi,
226 const Real* dx,
const int* level,
const Real* avg)
const;
256 [[nodiscard]]
const std::string&
name () const noexcept;
261 [[nodiscard]]
int nGrow () const noexcept;
277 std::
string derive_name;
304 [[nodiscard]]
int size () const noexcept;
314 void add (const std::
string&
name,
319 void add (const std::
string&
name,
325 [[nodiscard]] const
ErrorRec& operator[] (
int k) const noexcept;
327 void clear (
bool rs0 = false) { vec.clear();
if(rs0) { vec.resize(0); } }
334std::ostream&
operator << (std::ostream& os,
const ErrorList& elst);
338 int m_max_level = 1000;
339 Real m_min_time = std::numeric_limits<Real>::lowest();
340 Real m_max_time = std::numeric_limits<Real>::max();
341 int m_volume_weighting = 0;
346 m_max_level = max_level;
350 m_min_time = min_time;
354 m_max_time = max_time;
362 m_volume_weighting = volume_weighting;
366 m_derefine = derefine;
375 enum TEST {GRAD=0, RELGRAD, LESS, GREATER, VORT,
BOX, USER, PARSER};
396 : m_info(info), m_ngrow(SetNGrow()) {}
402 : m_value(info.m_max_level, value), m_test(test), m_field(std::move(field)), m_info(info),
411 : m_test(test), m_field(std::move(field)), m_info(info), m_ngrow(SetNGrow())
414 m_value.resize(info.m_max_level);
415 for (
int i = 0; i < m_value.size() && i < value.
size(); ++i) {
416 m_value[i] = value[i];
420 for (
auto i =
int(value.
size()); i < m_value.size(); ++i) {
421 m_value[i] = value[value.
size()-1];
429 : m_userfunc(userfunc), m_field(std::move(field)), m_info(info), m_ngrow(ngrow) {}
445 [[nodiscard]]
int NGrow() const noexcept {
return m_ngrow;}
446 [[nodiscard]]
const std::string&
Field () const noexcept {
return m_field;}
453 [[nodiscard]]
int SetNGrow () const noexcept;
#define AMREX_ARLIM_P(x)
Definition AMReX_ArrayLim.H:30
#define AMREX_ASSERT(EX)
Definition AMReX_BLassert.H:38
Definition AMReX_ErrorList.H:372
ParserExecutor< 4 > m_parser_exe
Definition AMReX_ErrorList.H:459
AMRErrorTagInfo & GetInfo() noexcept
Definition AMReX_ErrorList.H:448
AMRErrorTag(AMRErrorTag::UserFunc *userfunc, std::string field, int ngrow, const AMRErrorTagInfo &info=AMRErrorTagInfo()) noexcept
Definition AMReX_ErrorList.H:425
int NGrow() const noexcept
Definition AMReX_ErrorList.H:445
AMRErrorTag(amrex::Vector< amrex::Real > value, AMRErrorTag::TEST test, std::string field, const AMRErrorTagInfo &info=AMRErrorTagInfo()) noexcept
Definition AMReX_ErrorList.H:407
AMRErrorTag(amrex::Real value, AMRErrorTag::TEST test, std::string field, const AMRErrorTagInfo &info=AMRErrorTagInfo()) noexcept
Definition AMReX_ErrorList.H:398
std::unique_ptr< Parser > m_parser
Definition AMReX_ErrorList.H:458
AMRErrorTagInfo m_info
Definition AMReX_ErrorList.H:461
AMRErrorTag(const AMRErrorTagInfo &info=AMRErrorTagInfo()) noexcept
Definition AMReX_ErrorList.H:395
std::string m_field
Definition AMReX_ErrorList.H:460
AMRErrorTagInfo const & GetInfo() const noexcept
Definition AMReX_ErrorList.H:449
const std::string & Field() const noexcept
Definition AMReX_ErrorList.H:446
TEST
Definition AMReX_ErrorList.H:375
@ BOX
Definition AMReX_ErrorList.H:375
void SetInfo(AMRErrorTagInfo const &info) noexcept
Definition AMReX_ErrorList.H:450
A List of ErrorRecs.
Definition AMReX_ErrorList.H:297
ErrorList() noexcept=default
Definition AMReX_ErrorList.H:186
virtual ~ErrorFunc2()=default
Destructor.
ErrorFunc2 & operator=(ErrorFunc2 const &)=default
virtual void operator()(int *tag, const int &, const int &, const int &, const int &, const int &, const int &, const int *tagval, const int *clearval, Real *data, const int &, const int &, const int &, const int &, const int &, const int &, const int *lo, const int *hi, const int *nvar, const int *domain_lo, const int *domain_hi, const Real *dx, const int *level, const Real *avg) const
Tag cells cells using "v2" interface.
Definition AMReX_ErrorList.cpp:80
ErrorFunc2Default m_func
Definition AMReX_ErrorList.H:229
ErrorFunc2(ErrorFunc2 &&)=delete
ErrorFunc2(ErrorFunc2 const &)=default
ErrorFunc2()
Bogus constructor.
virtual ErrorFunc2 * clone() const
Return a ptr to a clone of this object. It is the responsibility of the caller to delete the result.
Definition AMReX_ErrorList.cpp:74
Definition AMReX_ErrorList.H:98
ErrorFunc(ErrorFunc &&)=delete
virtual ErrorFunc * clone() const
Return a ptr to a clone of this object. It is the responsibility of the caller to delete the result.
Definition AMReX_ErrorList.cpp:23
ErrorFunc(ErrorFunc const &)=default
ErrorFunc3DDefault m_func3D
Definition AMReX_ErrorList.H:183
ErrorFuncDefault m_func
Definition AMReX_ErrorList.H:182
ErrorFunc()
Bogus constructor.
ErrorFunc & operator=(ErrorFunc const &)=default
virtual void operator()(int *tag, const int &, const int &, const int &, const int &, const int &, const int &, const int *tagval, const int *clearval, Real *data, const int &, const int &, const int &, const int &, const int &, const int &, const int *lo, const int *hi, const int *nvar, const int *domain_lo, const int *domain_hi, const Real *dx, const Real *xlo, const Real *prob_lo, const Real *time, const int *level) const
Tag cells using "regular" function.
Definition AMReX_ErrorList.cpp:29
virtual ~ErrorFunc()=default
Destructor.
Error Record.
Definition AMReX_ErrorList.H:88
ErrorRec(ErrorRec &&)=delete
ErrorRec(ErrorRec const &)=delete
ErrorRec & operator=(ErrorRec const &)=delete
int nGrow() const noexcept
The number of extra zones needed for derivation.
Definition AMReX_ErrorList.cpp:124
virtual const ErrorRec::ErrorFunc2 & errFunc2() const
Definition AMReX_ErrorList.cpp:142
virtual const ErrorRec::ErrorFunc & errFunc() const
The extern "C" functions to do the error tagging.
Definition AMReX_ErrorList.cpp:136
const std::string & name() const noexcept
The name of the quantity to derive.
Definition AMReX_ErrorList.cpp:118
virtual ~ErrorRec()
Definition AMReX_ErrorList.cpp:147
ErrorType errType() const noexcept
The type of the error tagging.
Definition AMReX_ErrorList.cpp:130
ErrorType
Definition AMReX_ErrorList.H:93
@ UseAverage
Definition AMReX_ErrorList.H:93
@ Special
Definition AMReX_ErrorList.H:93
@ Standard
Definition AMReX_ErrorList.H:93
Rectangular problem domain geometry.
Definition AMReX_Geometry.H:74
A collection (stored as an array) of FArrayBox objects.
Definition AMReX_MultiFab.H:40
Definition AMReX_Parser.H:71
A Box with real dimensions.
Definition AMReX_RealBox.H:26
An array of TagBoxes.
Definition AMReX_TagBox.H:150
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition AMReX_Vector.H:28
Long size() const noexcept
Definition AMReX_Vector.H:53
amrex_real Real
Floating Point Type for Fields.
Definition AMReX_REAL.H:79
Definition AMReX_Amr.cpp:49
void(*)(int *tag, const int &, const int &, const int &, const int &, const int &, const int &, const int *tagval, const int *clearval, amrex::Real *data, const int &, const int &, const int &, const int &, const int &, const int &, const int *lo, const int *hi, const int *nvar, const int *domain_lo, const int *domain_hi, const amrex::Real *dx, const int *level, const amrex::Real *avg) ErrorFunc2Default
Definition AMReX_ErrorList.H:40
void(*)(int *tag, const int &, const int &, const int &, const int &, const int &, const int &, const int *tagval, const int *clearval, amrex::Real *data, const int &, const int &, const int &, const int &, const int &, const int &, const int *lo, const int *hi, const int *nvar, const int *domain_lo, const int *domain_hi, const amrex::Real *dx, const amrex::Real *xlo, const amrex::Real *prob_lo, const amrex::Real *time, const int *level) ErrorFuncDefault
Type of extern "C" function called by ErrorRec to do tagging of cells for refinement.
Definition AMReX_ErrorList.H:33
void(*)(int *tag, const int *tlo, const int *thi, const int *tagval, const int *clearval, amrex::Real *data, const int *data_lo, const int *data_hi, const int *lo, const int *hi, const int *nvar, const int *domain_lo, const int *domain_hi, const amrex::Real *dx, const amrex::Real *xlo, const amrex::Real *prob_lo, const amrex::Real *time, const int *level) ErrorFunc3DDefault
Dimension agnostic version that always has three elements. Note that this is only implemented for the...
Definition AMReX_ErrorList.H:73
std::ostream & operator<<(std::ostream &os, AmrMesh const &amr_mesh)
Definition AMReX_AmrMesh.cpp:1237
Definition AMReX_ErrorList.H:337
AMRErrorTagInfo & SetRealBox(const amrex::RealBox &realbox) noexcept
Definition AMReX_ErrorList.H:357
AMRErrorTagInfo & SetMaxTime(amrex::Real max_time) noexcept
Definition AMReX_ErrorList.H:353
AMRErrorTagInfo & SetDerefine(int derefine) noexcept
Definition AMReX_ErrorList.H:365
AMRErrorTagInfo & SetMaxLevel(int max_level) noexcept
Definition AMReX_ErrorList.H:345
AMRErrorTagInfo & SetMinTime(amrex::Real min_time) noexcept
Definition AMReX_ErrorList.H:349
RealBox m_realbox
Definition AMReX_ErrorList.H:343
AMRErrorTagInfo & SetVolumeWeighting(int volume_weighting) noexcept
Definition AMReX_ErrorList.H:361
Definition AMReX_ErrorList.H:378
virtual ~UserFunc()=default
UserFunc(UserFunc const &)=default
UserFunc(UserFunc &&)=default
A multidimensional array accessor.
Definition AMReX_Array4.H:224
Definition AMReX_Parser.H:21