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

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/utilities/sampling/Sampling.H Source File
AMR-Wind API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
Sampling.H
Go to the documentation of this file.
1#ifndef SAMPLING_H
2#define SAMPLING_H
3
4#include <memory>
5
6#include "amr-wind/CFDSim.H"
11#include <AMReX_PlotFileUtil.H>
12#include "AMReX_REAL.H"
13
14using namespace amrex::literals;
15
28
29namespace amr_wind::sampling {
30
44class Sampling : public PostProcessBase::Register<Sampling>
45{
46public:
47 static std::string identifier() { return "Sampling"; }
48
49 Sampling(CFDSim& /*sim*/, std::string /*label*/);
50
51 ~Sampling() override;
52
54 void pre_init_actions() override {}
55
57 void initialize() override;
58
60 void post_advance_work() override {};
61
63 void output_actions() override;
64
66 void post_regrid_actions() override;
67
68 // Public for CUDA
69
71 virtual void impl_write_native();
72
73 void sampling_workflow();
74 void sampling_post();
75 void fill_buffer();
78
79 [[nodiscard]] int num_total_particles() const
80 {
81 return static_cast<int>(m_total_particles);
82 }
83
84#ifdef AMR_WIND_USE_NETCDF
86 {
87 if (m_out_fmt == "netcdf") {
88 return static_cast<int>(m_netcdf_output_particles);
89 }
90 return 0;
91 }
92#endif
93
94 [[nodiscard]] const amrex::Vector<std::string>& var_names() const
95 {
96 return m_var_names;
97 }
98
99protected:
101 void update_container();
102
105
107 virtual void process_output();
108
110 virtual void prepare_netcdf_file();
111
113 void write_netcdf();
114
120 virtual void write_ascii();
121
123 void write_header_file(const std::string& fname);
124
126 void write_info_file(const std::string& fname);
127
129
130 static amrex::Vector<std::string> int_var_names()
131 {
132 return {"uid", "set_id", "probe_id"};
133 };
134
135private:
137
138 std::unique_ptr<SamplingContainer> m_scontainer;
139 amrex::Vector<std::unique_ptr<SamplerBase>> m_samplers;
140
142 amrex::Vector<std::string> m_var_names;
143
145 amrex::Vector<Field*> m_fields;
146
148 amrex::Vector<IntField*> m_int_fields;
149
151 std::unique_ptr<DerivedQtyMgr> m_derived_mgr;
152
158 const std::string m_label;
159
161#ifdef AMR_WIND_USE_NETCDF
162 std::string m_out_fmt{"netcdf"};
163 std::string m_ncfile_name;
164
165 // Current sample buffer for full container
166 std::vector<amrex::Real> m_sample_buf;
167
168 // Current sample buffer for output
169 std::vector<amrex::Real> m_output_buf;
170
173#else
174 std::string m_out_fmt{"native"};
175#endif
176
177 // Sample initial condition for interpolation consistency
178 bool m_restart_sample{false};
179
180 // number of field components
181 int m_ncomp{0};
182
183 // number of int field components
184 int m_nicomp{0};
185
186 // number of derived field components
187 int m_ndcomp{0};
188
191};
192
193} // namespace amr_wind::sampling
194
195#endif /* SAMPLING_H */
Definition CFDSim.H:54
Definition SamplingContainer.H:69
void write_info_file(const std::string &fname)
Output extra information for certain formats.
Definition Sampling.cpp:414
std::unique_ptr< DerivedQtyMgr > m_derived_mgr
List of derived fields to be sampled for this collection of probes.
Definition Sampling.H:151
bool m_restart_sample
Definition Sampling.H:178
std::vector< amrex::Real > m_output_buf
Definition Sampling.H:169
int m_ncomp
Definition Sampling.H:181
amrex::Vector< IntField * > m_int_fields
List of IntFields to be sampled for this collection of probes.
Definition Sampling.H:148
int num_netcdf_output_particles() const
Definition Sampling.H:85
SamplingContainer & sampling_container()
Definition Sampling.H:128
void post_advance_work() override
Actions to do at end of every time step.
Definition Sampling.H:60
virtual void impl_write_native()
Write sampled data in binary format.
Definition Sampling.cpp:374
void sampling_workflow()
Definition Sampling.cpp:193
std::unique_ptr< SamplingContainer > m_scontainer
Definition Sampling.H:138
std::vector< amrex::Real > m_sample_buf
Definition Sampling.H:166
virtual void write_ascii()
Definition Sampling.cpp:396
size_t m_total_particles
Number of sampling container particles:
Definition Sampling.H:190
void post_regrid_actions() override
Actions to perform post regrid e.g. redistribute particles.
Definition Sampling.cpp:230
int num_total_particles() const
Definition Sampling.H:79
void initialize() override
Read user inputs and create the different data probe instances.
Definition Sampling.cpp:25
std::string m_ncfile_name
Definition Sampling.H:163
size_t m_netcdf_output_particles
Number of output particles in netcdf.
Definition Sampling.H:172
int m_nicomp
Definition Sampling.H:184
void write_header_file(const std::string &fname)
Output extra information for certain formats.
Definition Sampling.cpp:445
void update_sampling_locations()
Conduct work to update the particles.
Definition Sampling.cpp:166
void fill_buffer()
Definition Sampling.cpp:345
void update_container()
Update the container by re-initializing the particles.
Definition Sampling.cpp:148
void convert_velocity_lineofsight()
Definition Sampling.cpp:241
virtual void process_output()
Output data based on user-defined format.
Definition Sampling.cpp:360
void output_actions() override
Interpolate fields at a given timestep and output to disk.
Definition Sampling.cpp:182
void write_netcdf()
Write sampled data into a NetCDF file.
Definition Sampling.cpp:556
int m_ndcomp
Definition Sampling.H:187
static amrex::Vector< std::string > int_var_names()
Definition Sampling.H:130
amrex::Vector< Field * > m_fields
List of fields to be sampled for this collection of probes.
Definition Sampling.H:145
amrex::Vector< std::string > m_var_names
List of variable names for output.
Definition Sampling.H:142
void sampling_post()
Definition Sampling.cpp:214
amrex::Vector< std::unique_ptr< SamplerBase > > m_samplers
Definition Sampling.H:139
static std::string identifier()
Definition Sampling.H:47
void pre_init_actions() override
Perform actions before mesh is created.
Definition Sampling.H:54
std::string m_out_fmt
Format of the data output (native, ascii, netcdf, etc.)
Definition Sampling.H:162
virtual void prepare_netcdf_file()
Prepare NetCDF metadata.
Definition Sampling.cpp:482
CFDSim & m_sim
Definition Sampling.H:136
Sampling(CFDSim &, std::string)
Definition Sampling.cpp:17
void create_output_buffer()
Definition Sampling.cpp:303
const amrex::Vector< std::string > & var_names() const
Definition Sampling.H:94
const std::string m_label
Definition Sampling.H:158
Definition DTUSpinnerSampler.cpp:19