/home/runner/work/amr-wind/amr-wind/amr-wind/utilities/sampling/SamplerBase.H Source File

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/utilities/sampling/SamplerBase.H Source File
AMR-Wind API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
SamplerBase.H
Go to the documentation of this file.
1#ifndef SAMPLERBASE_H
2#define SAMPLERBASE_H
3
4#include <AMReX_RealVect.H>
8#include "AMReX_REAL.H"
9
10using namespace amrex::literals;
11
12namespace amr_wind {
13
14class CFDSim;
15
16namespace sampling {
17
19{
20 using LocType = amrex::Vector<amrex::RealVect>;
21 using IdType = amrex::Vector<amrex::Long>;
22
23 void push_back(const amrex::RealVect& loc, const amrex::Long id)
24 {
25 m_locations.push_back(loc);
26 m_ids.push_back(id);
27 }
28
29 const LocType& locations() const
30 {
31 AMREX_ALWAYS_ASSERT(m_locations.size() == m_ids.size());
32 return m_locations;
33 }
34
36 {
37 AMREX_ALWAYS_ASSERT(m_locations.size() == m_ids.size());
38 return m_locations;
39 }
40
41 const IdType& ids() const
42 {
43 AMREX_ALWAYS_ASSERT(m_locations.size() == m_ids.size());
44 return m_ids;
45 }
46
49};
50
58class SamplerBase : public Factory<SamplerBase, CFDSim&>
59{
60public:
61 static std::string base_identifier() { return "SamplerBase"; }
62
63 static constexpr amrex::Real bounds_tol = constants::TIGHT_TOL;
64
65 ~SamplerBase() override = default;
66
68 virtual std::string label() const = 0;
69 virtual std::string& label() = 0;
70
72 virtual std::string sampletype() const = 0;
73
76 virtual int id() const = 0;
77 virtual int& id() = 0;
78
80 virtual long num_points() const = 0;
81
84 virtual long num_output_points() const = 0;
85
87 virtual void initialize(const std::string& key) = 0;
88
90 virtual void sampling_locations(SampleLocType&) const = 0;
91
94 virtual void
95 sampling_locations(SampleLocType&, const amrex::Box&) const = 0;
96
98 virtual void check_bounds() = 0;
99
101 virtual void output_locations(SampleLocType&) const = 0;
102
104 virtual bool update_sampling_locations() { return false; }
105
107 virtual void post_sample_actions() {}
108
110 virtual void post_regrid_actions() {}
111
114 const std::vector<amrex::Real>& /*unused*/,
115 ncutils::NCGroup& /*unused*/,
116 const size_t /*unused*/)
117 {
118 return true;
119 }
120
122 virtual bool do_data_modification() { return false; }
123 virtual bool do_convert_velocity_los() { return false; }
124 virtual bool do_subsampling_interp() { return false; }
125
127 virtual std::vector<amrex::Real> modify_sample_data(
128 const std::vector<amrex::Real>& sampledata,
129 const std::string& /*unused*/)
130 {
131 return sampledata;
132 }
133
135 const std::vector<std::vector<amrex::Real>>& /*unused*/,
136 const int /*unused*/)
137 {}
138
140 virtual void
142 {}
143 virtual void
145 {}
146 virtual void output_netcdf_data(
147 const ncutils::NCGroup& /*unused*/, const size_t /*unused*/) const
148 {}
149};
150
151} // namespace sampling
152} // namespace amr_wind
153
154#endif /* SAMPLERBASE_H */
Definition CFDSim.H:54
Definition SamplerBase.H:59
virtual void initialize(const std::string &key)=0
Read inputs and perform initialization actions.
static std::string base_identifier()
Definition SamplerBase.H:61
virtual bool do_data_modification()
Run data modification for specific sampler?
Definition SamplerBase.H:122
virtual std::string label() const =0
Name used to refer to this sampler (e.g., myline1)
virtual void sampling_locations(SampleLocType &, const amrex::Box &) const =0
Populate the vector with coordinates of the sampling locations inside a box.
virtual int id() const =0
Unique numeric identifier used to track particles belonging to this instance.
virtual bool do_subsampling_interp()
Definition SamplerBase.H:124
virtual long num_points() const =0
Total number of probes that belong to this sampling instance.
virtual std::string sampletype() const =0
Class name of this sampler (e.g., LineSampler)
static constexpr amrex::Real bounds_tol
Definition SamplerBase.H:63
virtual void output_netcdf_data(const ncutils::NCGroup &, const size_t) const
Definition SamplerBase.H:146
virtual void output_locations(SampleLocType &) const =0
Populate the vector with coordinates of the output locations.
virtual bool do_convert_velocity_los()
Definition SamplerBase.H:123
~SamplerBase() override=default
virtual void check_bounds()=0
Check and fix the bounds of the sampler so the probes are in the domain.
virtual void define_netcdf_metadata(const ncutils::NCGroup &) const
Populate metadata in the NetCDF file.
Definition SamplerBase.H:141
virtual bool output_netcdf_field(const std::vector< amrex::Real > &, ncutils::NCGroup &, const size_t)
Run specific output for the sampler.
Definition SamplerBase.H:113
virtual std::vector< amrex::Real > modify_sample_data(const std::vector< amrex::Real > &sampledata, const std::string &)
Sample buffer modification instructions.
Definition SamplerBase.H:127
virtual void populate_netcdf_metadata(const ncutils::NCGroup &) const
Definition SamplerBase.H:144
virtual void post_regrid_actions()
Run actions after regrid (important when using field-based quantities)
Definition SamplerBase.H:110
virtual void sampling_locations(SampleLocType &) const =0
Populate the vector with coordinates of the sampling locations.
virtual void calc_lineofsight_velocity(const std::vector< std::vector< amrex::Real > > &, const int)
Definition SamplerBase.H:134
virtual long num_output_points() const =0
Total number of probes to be output Note: Same as num_points() for sampling without data reduction.
virtual std::string & label()=0
virtual void post_sample_actions()
Run actions after sample (useful in interpolated subsampling)
Definition SamplerBase.H:107
virtual bool update_sampling_locations()
Update the sampling locations.
Definition SamplerBase.H:104
Representation of a NetCDF group.
Definition nc_interface.H:170
static constexpr amrex::Real TIGHT_TOL
A tight tolerance.
Definition constants.H:17
Definition DTUSpinnerSampler.cpp:19
This test case is intended as an evaluation of the momentum advection scheme.
Definition BCInterface.cpp:10
Definition SamplerBase.H:19
const LocType & locations() const
Definition SamplerBase.H:29
const IdType & ids() const
Definition SamplerBase.H:41
void push_back(const amrex::RealVect &loc, const amrex::Long id)
Definition SamplerBase.H:23
amrex::Vector< amrex::Long > IdType
Definition SamplerBase.H:21
IdType m_ids
Definition SamplerBase.H:48
LocType m_locations
Definition SamplerBase.H:47
LocType & locations()
Definition SamplerBase.H:35
amrex::Vector< amrex::RealVect > LocType
Definition SamplerBase.H:20