1#ifndef AMREX_ErrorList_H_
2#define AMREX_ErrorList_H_
3#include <AMReX_Config.H>
28 const int* tagval,
const int* clearval,
30 const int* lo,
const int * hi,
const int* nvar,
31 const int* domain_lo,
const int* domain_hi,
37 const int* tagval,
const int* clearval,
39 const int* lo,
const int * hi,
const int* nvar,
40 const int* domain_lo,
const int* domain_hi,
68 const int* tagval,
const int* clearval,
69 amrex::Real* data,
const int* data_lo,
const int* data_hi,
70 const int* lo,
const int * hi,
const int* nvar,
71 const int* domain_lo,
const int* domain_hi,
143 const int* tagval,
const int* clearval,
145 const int* lo,
const int * hi,
const int* nvar,
146 const int* domain_lo,
const int* domain_hi,
148 const Real* prob_lo,
const Real* time,
149 const int* level)
const;
173 virtual void operator () (
int* tag,
const int* tlo,
const int* thi,
174 const int* tagval,
const int* clearval,
175 Real* data,
const int* dlo,
const int* dhi,
176 const int* lo,
const int * hi,
const int* nvar,
177 const int* domain_lo,
const int* domain_hi,
179 const Real* prob_lo,
const Real* time,
180 const int* level)
const;
241 const int* tagval,
const int* clearval,
243 const int* lo,
const int * hi,
const int* nvar,
244 const int* domain_lo,
const int* domain_hi,
245 const Real* dx,
const int* level,
const Real* avg)
const;
277 [[nodiscard]]
const std::string&
name () const noexcept;
282 [[nodiscard]]
int nGrow () const noexcept;
298 std::
string derive_name;
325 [[nodiscard]]
int size () const noexcept;
347 [[nodiscard]] const
ErrorRec& operator[] (
int k) const noexcept;
349 void clear (
bool rs0 = false) { vec.clear();
if(rs0) { vec.resize(0); } }
437 :
m_value((info.m_max_level > 0) ? info.m_max_level : 1, value),
458 "AMRErrorTag: value must not be empty");
459 m_value.resize((info.m_max_level > 0) ? info.m_max_level : 1);
460 for (
int i = 0; i <
m_value.size() && i < value.
size(); ++i) {
465 for (
auto i =
int(value.
size()); i <
m_value.size(); ++i) {
512 [[nodiscard]]
const std::string&
Field () const noexcept {
return m_field;}
#define AMREX_ARLIM_P(x)
Definition AMReX_ArrayLim.H:30
Fixed-size array types for use on GPU and CPU.
#define AMREX_ALWAYS_ASSERT_WITH_MESSAGE(EX, MSG)
Definition AMReX_BLassert.H:49
Problem-domain geometry: maps between index space and physical space.
Runtime expression parser front-end and compiled executor helpers.
Tag storage used for AMR error estimation and refinement decisions.
ParserExecutor< 4 > m_parser_exe
Definition AMReX_ErrorList.H:531
AMRErrorTagInfo & GetInfo() noexcept
Definition AMReX_ErrorList.H:514
AMRErrorTag(AMRErrorTag::UserFunc *userfunc, std::string field, int ngrow, const AMRErrorTagInfo &info=AMRErrorTagInfo()) noexcept
Construct a tag that delegates to a user functor.
Definition AMReX_ErrorList.H:478
int NGrow() const noexcept
Definition AMReX_ErrorList.H:511
AMRErrorTag(amrex::Real value, AMRErrorTag::TEST test, std::string field, const AMRErrorTagInfo &info=AMRErrorTagInfo()) noexcept
Construct a tag using a scalar threshold across all levels.
Definition AMReX_ErrorList.H:433
std::unique_ptr< Parser > m_parser
Definition AMReX_ErrorList.H:530
AMRErrorTagInfo m_info
Definition AMReX_ErrorList.H:533
AMRErrorTag(const AMRErrorTagInfo &info=AMRErrorTagInfo()) noexcept
Construct a tag with default BOX test and the supplied metadata.
Definition AMReX_ErrorList.H:422
AMRErrorTag(amrex::Vector< amrex::Real > const &value, AMRErrorTag::TEST test, std::string field, const AMRErrorTagInfo &info=AMRErrorTagInfo()) noexcept
Construct a tag with per-level threshold values.
Definition AMReX_ErrorList.H:451
int SetNGrow() const noexcept
Vector< Real > m_value
Definition AMReX_ErrorList.H:527
std::string m_field
Definition AMReX_ErrorList.H:532
TEST m_test
Definition AMReX_ErrorList.H:528
UserFunc * m_userfunc
Definition AMReX_ErrorList.H:529
int m_ngrow
Definition AMReX_ErrorList.H:534
AMRErrorTag(Parser parser, const AMRErrorTagInfo &info=AMRErrorTagInfo())
AMRErrorTagInfo const & GetInfo() const noexcept
Definition AMReX_ErrorList.H:515
const std::string & Field() const noexcept
Definition AMReX_ErrorList.H:512
TEST
Definition AMReX_ErrorList.H:401
@ VORT
Definition AMReX_ErrorList.H:401
@ RELGRAD
Definition AMReX_ErrorList.H:401
@ LESS
Definition AMReX_ErrorList.H:401
@ PARSER
Definition AMReX_ErrorList.H:401
@ GRAD
Definition AMReX_ErrorList.H:401
@ USER
Definition AMReX_ErrorList.H:401
@ BOX
Definition AMReX_ErrorList.H:401
@ GREATER
Definition AMReX_ErrorList.H:401
void SetInfo(AMRErrorTagInfo const &info) noexcept
Definition AMReX_ErrorList.H:516
A List of ErrorRecs.
Definition AMReX_ErrorList.H:318
int size() const noexcept
The number of ErrorRecs in the list.
void add(const std::string &name, int nextra, ErrorRec::ErrorType typ, const ErrorRec::ErrorFunc &func)
Append a new ErrorRec to the list.
ErrorList() noexcept=default
void clear(bool rs0=false)
Definition AMReX_ErrorList.H:349
Definition AMReX_ErrorList.H:187
ErrorFunc2(ErrorFunc2Default inFunc)
A Constructor.
virtual ~ErrorFunc2()=default
Destructor.
ErrorFunc2 & operator=(ErrorFunc2 const &)=default
ErrorFunc2Default m_func
Definition AMReX_ErrorList.H:249
ErrorFunc2(ErrorFunc2 &&)=delete
virtual ErrorFunc2 * clone() const
Return a ptr to a clone of this object. It is the responsibility of the caller to delete the result.
ErrorFunc2(ErrorFunc2 const &)=default
ErrorFunc2()
Bogus constructor.
Definition AMReX_ErrorList.H:99
ErrorFunc(ErrorFunc &&)=delete
ErrorFunc(ErrorFunc3DDefault inFunc)
A Constructor.
ErrorFunc(ErrorFuncDefault inFunc)
A Constructor.
ErrorFunc(ErrorFunc const &)=default
ErrorFunc3DDefault m_func3D
Definition AMReX_ErrorList.H:184
ErrorFuncDefault m_func
Definition AMReX_ErrorList.H:183
ErrorFunc()
Bogus constructor.
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.
virtual ErrorFunc * clone() const
Return a ptr to a clone of this object. It is the responsibility of the caller to delete the result.
ErrorFunc & operator=(ErrorFunc const &)=default
virtual ~ErrorFunc()=default
Destructor.
Error Record.
Definition AMReX_ErrorList.H:89
virtual const ErrorRec::ErrorFunc & errFunc() const
The extern "C" functions to do the error tagging.
ErrorRec(ErrorRec &&)=delete
ErrorRec(std::string nm, int ng, ErrorType etyp, const ErrorRec::ErrorFunc &f)
Construct an error record that uses the ErrorFunc interface (same parameters as above).
ErrorRec(ErrorRec const &)=delete
ErrorRec & operator=(ErrorRec const &)=delete
ErrorType errType() const noexcept
The type of the error tagging.
int nGrow() const noexcept
The number of extra zones needed for derivation.
virtual const ErrorRec::ErrorFunc2 & errFunc2() const
ErrorRec(std::string nm, int ng, ErrorType etyp, const ErrorRec::ErrorFunc2 &f2)
Construct an error record that uses the ErrorFunc2 interface.
const std::string & name() const noexcept
The name of the quantity to derive.
ErrorType
Definition AMReX_ErrorList.H:94
@ UseAverage
Definition AMReX_ErrorList.H:94
@ Special
Definition AMReX_ErrorList.H:94
@ Standard
Definition AMReX_ErrorList.H:94
Rectangular problem domain geometry.
Definition AMReX_Geometry.H:87
A collection (stored as an array) of FArrayBox objects.
Definition AMReX_MultiFab.H:40
Front-end for parsing scalar expressions into GPU/CPU executors.
Definition AMReX_Parser.H:160
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:29
Long size() const noexcept
Definition AMReX_Vector.H:54
amrex_real Real
Floating Point Type for Fields.
Definition AMReX_REAL.H:80
ArrayND< T, 4, true > Array4
Convenient alias for a 4D ArrayND with three spatial dimensions plus a component dimension.
Definition AMReX_Array4.H:1340
Definition AMReX_Amr.cpp:50
BoxND< 3 > Box
Box is an alias for amrex::BoxND instantiated with AMREX_SPACEDIM.
Definition AMReX_BaseFwd.H:35
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:67
std::ostream & operator<<(std::ostream &os, AmrMesh const &amr_mesh)
Stream helper; forwards to the friend declared inside AmrMesh.
Definition AMReX_AmrMesh.cpp:1372
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:27
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:36
Optional knobs that control AMRErrorTag behavior (time window, level limits, etc.).
Definition AMReX_ErrorList.H:360
AMRErrorTagInfo & SetRealBox(const amrex::RealBox &realbox) noexcept
Definition AMReX_ErrorList.H:380
Real m_min_time
Definition AMReX_ErrorList.H:362
AMRErrorTagInfo & SetMaxTime(amrex::Real max_time) noexcept
Definition AMReX_ErrorList.H:376
AMRErrorTagInfo & SetDerefine(int derefine) noexcept
Definition AMReX_ErrorList.H:388
AMRErrorTagInfo & SetMaxLevel(int max_level) noexcept
Definition AMReX_ErrorList.H:368
Real m_max_time
Definition AMReX_ErrorList.H:363
AMRErrorTagInfo & SetMinTime(amrex::Real min_time) noexcept
Definition AMReX_ErrorList.H:372
RealBox m_realbox
Definition AMReX_ErrorList.H:366
int m_max_level
Definition AMReX_ErrorList.H:361
int m_volume_weighting
Definition AMReX_ErrorList.H:364
int m_derefine
Definition AMReX_ErrorList.H:365
AMRErrorTagInfo & SetVolumeWeighting(int volume_weighting) noexcept
Definition AMReX_ErrorList.H:384
Definition AMReX_ErrorList.H:404
virtual ~UserFunc()=default
UserFunc(UserFunc const &)=default
UserFunc(UserFunc &&)=default
Callable wrapper around a compiled parser expression with N variables.
Definition AMReX_Parser.H:58