/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
25
26namespace amr_wind::sampling {
27
41class Sampling : public PostProcessBase::Register<Sampling>
42{
43public:
44 static std::string identifier() { return "Sampling"; }
45
46 Sampling(CFDSim& /*sim*/, std::string /*label*/);
47
48 ~Sampling() override;
49
51 void pre_init_actions() override {}
52
54 void initialize() override;
55
57 void post_advance_work() override {};
58
60 void output_actions() override;
61
63 void post_regrid_actions() override;
64
65 // Public for CUDA
66
68 virtual void impl_write_native();
69
70 void sampling_workflow();
71 void sampling_post();
72 void fill_buffer();
75
77 {
78 return static_cast<int>(m_total_particles);
79 }
80
81#ifdef AMR_WIND_USE_NETCDF
83 {
84 if (m_out_fmt == "netcdf") {
85 return static_cast<int>(m_netcdf_output_particles);
86 }
87 return 0;
88 }
89#endif
90
91 const amrex::Vector<std::string>& var_names() const { return m_var_names; }
92
93protected:
95 void update_container();
96
99
101 virtual void process_output();
102
104 virtual void prepare_netcdf_file();
105
107 void write_netcdf();
108
114 virtual void write_ascii();
115
117 void write_header_file(const std::string& fname);
118
120 void write_info_file(const std::string& fname);
121
123
124 static amrex::Vector<std::string> int_var_names()
125 {
126 return {"uid", "set_id", "probe_id"};
127 };
128
129private:
131
132 std::unique_ptr<SamplingContainer> m_scontainer;
133 amrex::Vector<std::unique_ptr<SamplerBase>> m_samplers;
134
136 amrex::Vector<std::string> m_var_names;
137
139 amrex::Vector<Field*> m_fields;
140
142 amrex::Vector<IntField*> m_int_fields;
143
145 std::unique_ptr<DerivedQtyMgr> m_derived_mgr;
146
152 const std::string m_label;
153
155#ifdef AMR_WIND_USE_NETCDF
156 std::string m_out_fmt{"netcdf"};
157 std::string m_ncfile_name;
158
159 // Current sample buffer for full container
160 std::vector<double> m_sample_buf;
161
162 // Current sample buffer for output
163 std::vector<double> m_output_buf;
164
167#else
168 std::string m_out_fmt{"native"};
169#endif
170
171 // Sample initial condition for interpolation consistency
172 bool m_restart_sample{false};
173
174 // number of field components
175 int m_ncomp{0};
176
177 // number of int field components
178 int m_nicomp{0};
179
180 // number of derived field components
181 int m_ndcomp{0};
182
185};
186
187} // namespace amr_wind::sampling
188
189#endif /* SAMPLING_H */
Definition CFDSim.H:54
Definition SamplingContainer.H:65
void write_info_file(const std::string &fname)
Output extra information for certain formats.
Definition Sampling.cpp:411
std::unique_ptr< DerivedQtyMgr > m_derived_mgr
List of derived fields to be sampled for this collection of probes.
Definition Sampling.H:145
bool m_restart_sample
Definition Sampling.H:172
int m_ncomp
Definition Sampling.H:175
amrex::Vector< IntField * > m_int_fields
List of IntFields to be sampled for this collection of probes.
Definition Sampling.H:142
int num_netcdf_output_particles() const
Definition Sampling.H:82
SamplingContainer & sampling_container()
Definition Sampling.H:122
void post_advance_work() override
Actions to do at end of every time step.
Definition Sampling.H:57
virtual void impl_write_native()
Write sampled data in binary format.
Definition Sampling.cpp:371
void sampling_workflow()
Definition Sampling.cpp:190
std::unique_ptr< SamplingContainer > m_scontainer
Definition Sampling.H:132
std::vector< double > m_output_buf
Definition Sampling.H:163
std::vector< double > m_sample_buf
Definition Sampling.H:160
virtual void write_ascii()
Definition Sampling.cpp:393
size_t m_total_particles
Number of sampling container particles:
Definition Sampling.H:184
void post_regrid_actions() override
Actions to perform post regrid e.g. redistribute particles.
Definition Sampling.cpp:227
int num_total_particles() const
Definition Sampling.H:76
void initialize() override
Read user inputs and create the different data probe instances.
Definition Sampling.cpp:21
std::string m_ncfile_name
Definition Sampling.H:157
size_t m_netcdf_output_particles
Number of output particles in netcdf.
Definition Sampling.H:166
int m_nicomp
Definition Sampling.H:178
void write_header_file(const std::string &fname)
Output extra information for certain formats.
Definition Sampling.cpp:442
void update_sampling_locations()
Conduct work to update the particles.
Definition Sampling.cpp:162
void fill_buffer()
Definition Sampling.cpp:342
void update_container()
Update the container by re-initializing the particles.
Definition Sampling.cpp:144
void convert_velocity_lineofsight()
Definition Sampling.cpp:238
virtual void process_output()
Output data based on user-defined format.
Definition Sampling.cpp:357
void output_actions() override
Interpolate fields at a given timestep and output to disk.
Definition Sampling.cpp:179
void write_netcdf()
Write sampled data into a NetCDF file.
Definition Sampling.cpp:553
int m_ndcomp
Definition Sampling.H:181
static amrex::Vector< std::string > int_var_names()
Definition Sampling.H:124
amrex::Vector< Field * > m_fields
List of fields to be sampled for this collection of probes.
Definition Sampling.H:139
amrex::Vector< std::string > m_var_names
List of variable names for output.
Definition Sampling.H:136
void sampling_post()
Definition Sampling.cpp:211
amrex::Vector< std::unique_ptr< SamplerBase > > m_samplers
Definition Sampling.H:133
static std::string identifier()
Definition Sampling.H:44
void pre_init_actions() override
Perform actions before mesh is created.
Definition Sampling.H:51
std::string m_out_fmt
Format of the data output (native, ascii, netcdf, etc.)
Definition Sampling.H:156
virtual void prepare_netcdf_file()
Prepare NetCDF metadata.
Definition Sampling.cpp:479
CFDSim & m_sim
Definition Sampling.H:130
Sampling(CFDSim &, std::string)
Definition Sampling.cpp:13
void create_output_buffer()
Definition Sampling.cpp:300
const amrex::Vector< std::string > & var_names() const
Definition Sampling.H:91
const std::string m_label
Definition Sampling.H:152
Definition DTUSpinnerSampler.cpp:16