/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
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 const amrex::Vector<std::string>& var_names() const { return m_var_names; }
95
96protected:
98 void update_container();
99
102
104 virtual void process_output();
105
107 virtual void prepare_netcdf_file();
108
110 void write_netcdf();
111
117 virtual void write_ascii();
118
120 void write_header_file(const std::string& fname);
121
123 void write_info_file(const std::string& fname);
124
126
127 static amrex::Vector<std::string> int_var_names()
128 {
129 return {"uid", "set_id", "probe_id"};
130 };
131
132private:
134
135 std::unique_ptr<SamplingContainer> m_scontainer;
136 amrex::Vector<std::unique_ptr<SamplerBase>> m_samplers;
137
139 amrex::Vector<std::string> m_var_names;
140
142 amrex::Vector<Field*> m_fields;
143
145 amrex::Vector<IntField*> m_int_fields;
146
148 std::unique_ptr<DerivedQtyMgr> m_derived_mgr;
149
155 const std::string m_label;
156
158#ifdef AMR_WIND_USE_NETCDF
159 std::string m_out_fmt{"netcdf"};
160 std::string m_ncfile_name;
161
162 // Current sample buffer for full container
163 std::vector<amrex::Real> m_sample_buf;
164
165 // Current sample buffer for output
166 std::vector<amrex::Real> m_output_buf;
167
170#else
171 std::string m_out_fmt{"native"};
172#endif
173
174 // Sample initial condition for interpolation consistency
175 bool m_restart_sample{false};
176
177 // number of field components
178 int m_ncomp{0};
179
180 // number of int field components
181 int m_nicomp{0};
182
183 // number of derived field components
184 int m_ndcomp{0};
185
188};
189
190} // namespace amr_wind::sampling
191
192#endif /* SAMPLING_H */
Definition CFDSim.H:54
Definition SamplingContainer.H:68
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:148
bool m_restart_sample
Definition Sampling.H:175
std::vector< amrex::Real > m_output_buf
Definition Sampling.H:166
int m_ncomp
Definition Sampling.H:178
amrex::Vector< IntField * > m_int_fields
List of IntFields to be sampled for this collection of probes.
Definition Sampling.H:145
int num_netcdf_output_particles() const
Definition Sampling.H:85
SamplingContainer & sampling_container()
Definition Sampling.H:125
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:135
std::vector< amrex::Real > m_sample_buf
Definition Sampling.H:163
virtual void write_ascii()
Definition Sampling.cpp:396
size_t m_total_particles
Number of sampling container particles:
Definition Sampling.H:187
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:24
std::string m_ncfile_name
Definition Sampling.H:160
size_t m_netcdf_output_particles
Number of output particles in netcdf.
Definition Sampling.H:169
int m_nicomp
Definition Sampling.H:181
void write_header_file(const std::string &fname)
Output extra information for certain formats.
Definition Sampling.cpp:446
void update_sampling_locations()
Conduct work to update the particles.
Definition Sampling.cpp:165
void fill_buffer()
Definition Sampling.cpp:345
void update_container()
Update the container by re-initializing the particles.
Definition Sampling.cpp:147
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:557
int m_ndcomp
Definition Sampling.H:184
static amrex::Vector< std::string > int_var_names()
Definition Sampling.H:127
amrex::Vector< Field * > m_fields
List of fields to be sampled for this collection of probes.
Definition Sampling.H:142
amrex::Vector< std::string > m_var_names
List of variable names for output.
Definition Sampling.H:139
void sampling_post()
Definition Sampling.cpp:214
amrex::Vector< std::unique_ptr< SamplerBase > > m_samplers
Definition Sampling.H:136
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:159
virtual void prepare_netcdf_file()
Prepare NetCDF metadata.
Definition Sampling.cpp:483
CFDSim & m_sim
Definition Sampling.H:133
Sampling(CFDSim &, std::string)
Definition Sampling.cpp:16
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:155
Definition DTUSpinnerSampler.cpp:19