ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_AuxiliaryInertTracer.H
Go to the documentation of this file.
1 #ifndef ERF_AUXILIARY_INERT_TRACER_H_
2 #define ERF_AUXILIARY_INERT_TRACER_H_
3 
4 #include "ERF_AuxiliaryStage.H"
6 
7 #include <ERF_AdvStruct.H>
8 #include <AMReX_Geometry.H>
9 
10 #include <memory>
11 #include <string>
12 #include <vector>
13 
14 namespace erf_auxiliary {
15 
16 /** Test-only, non-SBM proof consumer for the generic mapped transport substrate. */
18 public:
19  explicit AuxiliaryInertTracer (int number_of_levels);
23 
24  [[nodiscard]] static const AuxiliaryStateLayout& layout ();
25 
26  void define (int level,
27  const amrex::BoxArray& cell_ba,
28  const amrex::DistributionMapping& dm);
29 
30  /** Build or refresh this proof consumer's time-independent mapped measure. */
31  bool rebuild_static_measure (int level,
32  const amrex::MultiFab& detJ,
33  const amrex::MultiFab& mx,
34  const amrex::MultiFab& my,
35  std::string& diagnostic);
36 
37  void initialize (int level,
38  const amrex::MultiFab& conserved,
39  const amrex::Geometry& geometry);
40 
41  void advance_stage (int level,
42  HostIntegrator method,
43  int stage,
44  double step_old_time,
45  double input_time,
46  double target_time,
47  double host_stage_interval,
48  const amrex::MultiFab& conserved_anchor,
49  const amrex::MultiFab& conserved_input,
50  const amrex::MultiFab& conserved_target,
51  const amrex::MultiFab& avg_xmom,
52  const amrex::MultiFab& avg_ymom,
53  const amrex::MultiFab& avg_zmom,
54  const AdvChoice& advection,
55  const amrex::Geometry& geometry);
56 
57  void destroy (int level);
58  [[nodiscard]] bool is_defined (int level) const;
59  [[nodiscard]] bool measure_is_ready (int level) const;
60  /** Test-only inspection of the proof consumer's stored static measure. */
61  [[nodiscard]] const amrex::MultiFab& static_measure (int level) const;
62  [[nodiscard]] const amrex::MultiFab& state (int level) const;
63 
64 private:
65  struct LevelStorage;
66  std::vector<std::unique_ptr<LevelStorage>> m_levels;
67 };
68 
69 } // namespace erf_auxiliary
70 
71 #endif
Definition: ERF_AuxiliaryInertTracer.H:17
bool measure_is_ready(int level) const
Definition: ERF_AuxiliaryInertTracer.cpp:348
const amrex::MultiFab & static_measure(int level) const
Definition: ERF_AuxiliaryInertTracer.cpp:353
std::vector< std::unique_ptr< LevelStorage > > m_levels
Definition: ERF_AuxiliaryInertTracer.H:65
AuxiliaryInertTracer(int number_of_levels)
Definition: ERF_AuxiliaryInertTracer.cpp:33
void define(int level, const amrex::BoxArray &cell_ba, const amrex::DistributionMapping &dm)
Definition: ERF_AuxiliaryInertTracer.cpp:47
void advance_stage(int level, HostIntegrator method, int stage, double step_old_time, double input_time, double target_time, double host_stage_interval, const amrex::MultiFab &conserved_anchor, const amrex::MultiFab &conserved_input, const amrex::MultiFab &conserved_target, const amrex::MultiFab &avg_xmom, const amrex::MultiFab &avg_ymom, const amrex::MultiFab &avg_zmom, const AdvChoice &advection, const amrex::Geometry &geometry)
Definition: ERF_AuxiliaryInertTracer.cpp:136
AuxiliaryInertTracer(const AuxiliaryInertTracer &)=delete
void destroy(int level)
Definition: ERF_AuxiliaryInertTracer.cpp:336
static const AuxiliaryStateLayout & layout()
Definition: ERF_AuxiliaryInertTracer.cpp:39
const amrex::MultiFab & state(int level) const
Definition: ERF_AuxiliaryInertTracer.cpp:359
AuxiliaryInertTracer & operator=(const AuxiliaryInertTracer &)=delete
void initialize(int level, const amrex::MultiFab &conserved, const amrex::Geometry &geometry)
Definition: ERF_AuxiliaryInertTracer.cpp:94
bool rebuild_static_measure(int level, const amrex::MultiFab &detJ, const amrex::MultiFab &mx, const amrex::MultiFab &my, std::string &diagnostic)
Definition: ERF_AuxiliaryInertTracer.cpp:73
bool is_defined(int level) const
Definition: ERF_AuxiliaryInertTracer.cpp:342
Definition: ERF_AuxiliaryStateLayout.H:21
Definition: ERF_AuxiliaryInertTracer.cpp:15
HostIntegrator
Definition: ERF_AuxiliaryStage.H:11
Definition: ERF_AdvStruct.H:19
Definition: ERF_AuxiliaryInertTracer.cpp:17