/home/runner/work/kynema-sgf/kynema-sgf/src/utilities/sampling/DTUSpinnerSampler.H Source File

Kynema-SGF API: /home/runner/work/kynema-sgf/kynema-sgf/src/utilities/sampling/DTUSpinnerSampler.H Source File
Kynema-SGF API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
DTUSpinnerSampler.H
Go to the documentation of this file.
1#ifndef DTUSPINNERSAMPLER_H
2#define DTUSPINNERSAMPLER_H
3
7#include "AMReX_REAL.H"
8
9using namespace amrex::literals;
10
11namespace kynema_sgf::sampling {
12
14{
15 amrex::Real theta0{90.0_rt};
16 amrex::Real rot{3.5_rt};
17 amrex::Real azimuth{15.2_rt};
18};
19
30{
31public:
32 static std::string identifier() { return "DTUSpinnerSampler"; }
33
34 explicit DTUSpinnerSampler(const CFDSim& /*sim*/);
35
40 void initialize(const std::string& key) override;
41
46 void sampling_locations(SampleLocType& /*sample_locs*/) const override;
47
51 SampleLocType& /*sample_locs*/,
52 const amrex::Box& /*box*/) const override;
53
55 PrismParameters InnerPrism,
56 PrismParameters OuterPrism,
57 amrex::Real time);
58
60 vs::Vector beamPt,
61 amrex::Real yaw,
62 amrex::Real pitch,
63 amrex::Real roll);
64
65#ifdef KYNEMA_SGF_USE_OPENFAST
66
67 void bcast_turbine(
68 amrex::Array<amrex::Real, 18>& /*turbine_pack*/, int /*root_proc*/);
69 void get_turbine_data(const std::string& turbine_label);
70
71#endif
72
76 bool update_sampling_locations() override;
77
78 void post_sample_actions() override {};
79
80 [[nodiscard]] long num_points() const override
81 {
82 return (m_beam_points * m_ntotal);
83 }
84
85 [[nodiscard]] long num_output_points() const override
86 {
87 return (m_beam_points * m_ntotal);
88 }
89
91 [[nodiscard]] std::string sampletype() const override
92 {
93 return identifier();
94 }
95
96 void
97 define_netcdf_metadata(const ncutils::NCGroup& /*unused*/) const override;
98 void
99 populate_netcdf_metadata(const ncutils::NCGroup& /*unused*/) const override;
101 const ncutils::NCGroup& /*unused*/, size_t /*unused*/) const override;
102
103private:
104 // Number of subsamples in this timestep
105 int m_ns{1};
106
107 // Max number of subsamples in all timesteps
108 long m_ntotal{1};
109
111 const amrex::Real m_radtodeg{180.0_rt / std::numbers::pi_v<amrex::Real>};
112 const amrex::Real m_pi{std::numbers::pi_v<amrex::Real>};
113 const amrex::Real m_twopi{2.0_rt * std::numbers::pi_v<amrex::Real>};
114 const amrex::Real m_threepi{3.0_rt * std::numbers::pi_v<amrex::Real>};
115 amrex::Real m_time_sampling{0.0_rt};
118 amrex::Vector<amrex::Real> m_lidar_center{0.0_rt, 0.0_rt, 0.0_rt};
119 amrex::Real m_scan_time{2.0_rt};
120 amrex::Real m_num_samples{984.0_rt};
121 amrex::Real m_beam_length{270.0_rt};
123 amrex::Real m_fixed_yaw{0.0_rt};
124 amrex::Real m_fixed_roll{0.0_rt};
125 amrex::Real m_fixed_tilt{0.0_rt};
126 amrex::Real m_hub_yaw{0.0_rt};
127 amrex::Real m_hub_roll{0.0_rt};
128 amrex::Real m_hub_tilt{0.0_rt};
129 std::string m_spinner_mode{"fixed"};
130 std::string m_turbine_label;
131 bool m_hub_debug{false};
134
135#ifdef KYNEMA_SGF_USE_OPENFAST
136
137 amrex::Array<float, 3> m_turbine_base_pos = {0, 0, 0};
138 amrex::Array<float, 3> m_current_hub_abs_pos = {0, 0, 0};
139 amrex::Array<float, 3> m_current_hub_rot_vel = {0, 0, 0};
140 amrex::Array<amrex::Real, 9> m_current_hub_orient = {0, 0, 0, 0, 0,
141 0, 0, 0, 0};
142
143#endif
144
145 amrex::Real m_last_hub_yaw{0.0_rt};
146 amrex::Real m_last_hub_roll{0.0_rt};
147 amrex::Real m_last_hub_tilt{0.0_rt};
148 amrex::Vector<amrex::Real> m_last_lidar_center{0.0_rt, 0.0_rt, 0.0_rt};
149 amrex::Vector<amrex::Real> m_step_lidar_center{0.0_rt, 0.0_rt, 0.0_rt};
150
151 amrex::Real m_fill_val{-99999.99_rt};
152};
153
154} // namespace kynema_sgf::sampling
155
156#endif /* DTUSPINNERSAMPLER_H */
Definition CFDSim.H:55
amrex::Real m_last_hub_yaw
Definition DTUSpinnerSampler.H:145
amrex::Vector< amrex::Real > m_last_lidar_center
Definition DTUSpinnerSampler.H:148
vs::Vector m_hub_location
Definition DTUSpinnerSampler.H:132
void output_netcdf_data(const ncutils::NCGroup &, size_t) const override
Definition DTUSpinnerSampler.cpp:539
int m_ns
Definition DTUSpinnerSampler.H:105
std::string sampletype() const override
Type of this sampling object.
Definition DTUSpinnerSampler.H:91
amrex::Real m_time_sampling
Definition DTUSpinnerSampler.H:115
PrismParameters m_InnerPrism
Definition DTUSpinnerSampler.H:116
amrex::Real m_fixed_tilt
Definition DTUSpinnerSampler.H:125
std::string m_turbine_label
Definition DTUSpinnerSampler.H:130
amrex::Real m_fill_val
Definition DTUSpinnerSampler.H:151
static vs::Vector adjust_lidar_pattern(vs::Vector beamPt, amrex::Real yaw, amrex::Real pitch, amrex::Real roll)
Definition DTUSpinnerSampler.cpp:106
const amrex::Real m_twopi
Definition DTUSpinnerSampler.H:113
std::string m_spinner_mode
Definition DTUSpinnerSampler.H:129
amrex::Real m_fixed_roll
Definition DTUSpinnerSampler.H:124
void populate_netcdf_metadata(const ncutils::NCGroup &) const override
Definition DTUSpinnerSampler.cpp:535
int m_beam_points
Definition DTUSpinnerSampler.H:122
amrex::Real m_beam_length
Definition DTUSpinnerSampler.H:121
amrex::Vector< amrex::Real > m_lidar_center
Definition DTUSpinnerSampler.H:118
void initialize(const std::string &key) override
Definition DTUSpinnerSampler.cpp:23
amrex::Real m_last_hub_tilt
Definition DTUSpinnerSampler.H:147
amrex::Real m_hub_yaw
Definition DTUSpinnerSampler.H:126
long num_points() const override
Definition DTUSpinnerSampler.H:80
void define_netcdf_metadata(const ncutils::NCGroup &) const override
Definition DTUSpinnerSampler.cpp:475
const amrex::Real m_pi
Definition DTUSpinnerSampler.H:112
void post_sample_actions() override
Definition DTUSpinnerSampler.H:78
long num_output_points() const override
Definition DTUSpinnerSampler.H:85
amrex::Real m_hub_roll
Definition DTUSpinnerSampler.H:127
long m_ntotal
Definition DTUSpinnerSampler.H:108
amrex::Real m_scan_time
Definition DTUSpinnerSampler.H:119
bool update_sampling_locations() override
Definition DTUSpinnerSampler.cpp:284
amrex::Real m_num_samples
Definition DTUSpinnerSampler.H:120
vs::Vector m_hub_location_init
Definition DTUSpinnerSampler.H:133
int m_update_count
Definition DTUSpinnerSampler.H:110
static std::string identifier()
Definition DTUSpinnerSampler.H:32
amrex::Real m_hub_tilt
Definition DTUSpinnerSampler.H:128
amrex::Real m_fixed_yaw
Definition DTUSpinnerSampler.H:123
static vs::Vector generate_lidar_pattern(PrismParameters InnerPrism, PrismParameters OuterPrism, amrex::Real time)
Definition DTUSpinnerSampler.cpp:115
amrex::Vector< amrex::Real > m_step_lidar_center
Definition DTUSpinnerSampler.H:149
void sampling_locations(SampleLocType &) const override
Definition DTUSpinnerSampler.cpp:139
const amrex::Real m_threepi
Definition DTUSpinnerSampler.H:114
PrismParameters m_OuterPrism
Definition DTUSpinnerSampler.H:117
const amrex::Real m_radtodeg
Definition DTUSpinnerSampler.H:111
amrex::Real m_last_hub_roll
Definition DTUSpinnerSampler.H:146
DTUSpinnerSampler(const CFDSim &)
Definition DTUSpinnerSampler.cpp:21
bool m_hub_debug
Definition DTUSpinnerSampler.H:131
LidarSampler(const CFDSim &)
Definition LidarSampler.cpp:13
Representation of a NetCDF group.
Definition nc_interface.H:162
Definition DTUSpinnerSampler.cpp:19
VectorT< amrex::Real > Vector
Definition vector.H:145
Definition DTUSpinnerSampler.H:14
amrex::Real azimuth
Definition DTUSpinnerSampler.H:17
amrex::Real theta0
Definition DTUSpinnerSampler.H:15
amrex::Real rot
Definition DTUSpinnerSampler.H:16
Definition SamplerBase.H:20