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

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/utilities/sampling/DTUSpinnerSampler.H Source File
AMR-Wind 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 amr_wind::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 // cppcheck-suppress duplInheritedMember
33 static std::string identifier() { return "DTUSpinnerSampler"; }
34
35 explicit DTUSpinnerSampler(const CFDSim& /*sim*/);
36
41 void initialize(const std::string& key) override;
42
47 void sampling_locations(SampleLocType& /*sample_locs*/) const override;
48
52 SampleLocType& /*sample_locs*/,
53 const amrex::Box& /*box*/) const override;
54
56 PrismParameters InnerPrism,
57 PrismParameters OuterPrism,
58 amrex::Real time);
59
61 vs::Vector beamPt,
62 amrex::Real yaw,
63 amrex::Real pitch,
64 amrex::Real roll);
65
66#ifdef AMR_WIND_USE_OPENFAST
67
68 void bcast_turbine(
69 amrex::Array<amrex::Real, 18>& /*turbine_pack*/, int /*root_proc*/);
70 void get_turbine_data(const std::string& turbine_label);
71
72#endif
73
77 bool update_sampling_locations() override;
78
79 void post_sample_actions() override {};
80
81 [[nodiscard]] long num_points() const override
82 {
83 return (m_beam_points * m_ntotal);
84 }
85
86 [[nodiscard]] long num_output_points() const override
87 {
88 return (m_beam_points * m_ntotal);
89 }
90
92 [[nodiscard]] std::string sampletype() const override
93 {
94 return identifier();
95 }
96
97 void
98 define_netcdf_metadata(const ncutils::NCGroup& /*unused*/) const override;
99 void
100 populate_netcdf_metadata(const ncutils::NCGroup& /*unused*/) const override;
102 const ncutils::NCGroup& /*unused*/, size_t /*unused*/) const override;
103
104private:
105 // Number of subsamples in this timestep
106 int m_ns{1};
107
108 // Max number of subsamples in all timesteps
109 long m_ntotal{1};
110
112 const amrex::Real m_radtodeg{180.0_rt / std::numbers::pi_v<amrex::Real>};
113 const amrex::Real m_pi{std::numbers::pi_v<amrex::Real>};
114 const amrex::Real m_twopi{2.0_rt * std::numbers::pi_v<amrex::Real>};
115 const amrex::Real m_threepi{3.0_rt * std::numbers::pi_v<amrex::Real>};
116 amrex::Real m_time_sampling{0.0_rt};
119 amrex::Vector<amrex::Real> m_lidar_center{0.0_rt, 0.0_rt, 0.0_rt};
120 amrex::Real m_scan_time{2.0_rt};
121 amrex::Real m_num_samples{984.0_rt};
122 amrex::Real m_beam_length{270.0_rt};
124 amrex::Real m_fixed_yaw{0.0_rt};
125 amrex::Real m_fixed_roll{0.0_rt};
126 amrex::Real m_fixed_tilt{0.0_rt};
127 amrex::Real m_hub_yaw{0.0_rt};
128 amrex::Real m_hub_roll{0.0_rt};
129 amrex::Real m_hub_tilt{0.0_rt};
130 std::string m_spinner_mode{"fixed"};
131 std::string m_turbine_label;
132 bool m_hub_debug{false};
135
136#ifdef AMR_WIND_USE_OPENFAST
137
138 amrex::Array<float, 3> m_turbine_base_pos = {0, 0, 0};
139 amrex::Array<float, 3> m_current_hub_abs_pos = {0, 0, 0};
140 amrex::Array<float, 3> m_current_hub_rot_vel = {0, 0, 0};
141 amrex::Array<amrex::Real, 9> m_current_hub_orient = {0, 0, 0, 0, 0,
142 0, 0, 0, 0};
143
144#endif
145
146 amrex::Real m_last_hub_yaw{0.0_rt};
147 amrex::Real m_last_hub_roll{0.0_rt};
148 amrex::Real m_last_hub_tilt{0.0_rt};
149 amrex::Vector<amrex::Real> m_last_lidar_center{0.0_rt, 0.0_rt, 0.0_rt};
150 amrex::Vector<amrex::Real> m_step_lidar_center{0.0_rt, 0.0_rt, 0.0_rt};
151
152 amrex::Real m_fill_val{-99999.99_rt};
153};
154
155} // namespace amr_wind::sampling
156
157#endif /* DTUSPINNERSAMPLER_H */
Definition CFDSim.H:54
void sampling_locations(SampleLocType &) const override
Definition DTUSpinnerSampler.cpp:139
void post_sample_actions() override
Definition DTUSpinnerSampler.H:79
amrex::Real m_num_samples
Definition DTUSpinnerSampler.H:121
void define_netcdf_metadata(const ncutils::NCGroup &) const override
Definition DTUSpinnerSampler.cpp:475
int m_update_count
Definition DTUSpinnerSampler.H:111
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_threepi
Definition DTUSpinnerSampler.H:115
bool m_hub_debug
Definition DTUSpinnerSampler.H:132
long m_ntotal
Definition DTUSpinnerSampler.H:109
amrex::Real m_scan_time
Definition DTUSpinnerSampler.H:120
std::string m_spinner_mode
Definition DTUSpinnerSampler.H:130
const amrex::Real m_radtodeg
Definition DTUSpinnerSampler.H:112
const amrex::Real m_twopi
Definition DTUSpinnerSampler.H:114
amrex::Real m_fixed_tilt
Definition DTUSpinnerSampler.H:126
amrex::Real m_last_hub_roll
Definition DTUSpinnerSampler.H:147
amrex::Real m_beam_length
Definition DTUSpinnerSampler.H:122
const amrex::Real m_pi
Definition DTUSpinnerSampler.H:113
static vs::Vector generate_lidar_pattern(PrismParameters InnerPrism, PrismParameters OuterPrism, amrex::Real time)
Definition DTUSpinnerSampler.cpp:115
vs::Vector m_hub_location_init
Definition DTUSpinnerSampler.H:134
amrex::Real m_hub_roll
Definition DTUSpinnerSampler.H:128
int m_beam_points
Definition DTUSpinnerSampler.H:123
void initialize(const std::string &key) override
Definition DTUSpinnerSampler.cpp:23
PrismParameters m_InnerPrism
Definition DTUSpinnerSampler.H:117
long num_output_points() const override
Definition DTUSpinnerSampler.H:86
amrex::Real m_fixed_roll
Definition DTUSpinnerSampler.H:125
bool update_sampling_locations() override
Definition DTUSpinnerSampler.cpp:284
DTUSpinnerSampler(const CFDSim &)
Definition DTUSpinnerSampler.cpp:21
static std::string identifier()
Definition DTUSpinnerSampler.H:33
amrex::Real m_hub_yaw
Definition DTUSpinnerSampler.H:127
void populate_netcdf_metadata(const ncutils::NCGroup &) const override
Definition DTUSpinnerSampler.cpp:535
void output_netcdf_data(const ncutils::NCGroup &, size_t) const override
Definition DTUSpinnerSampler.cpp:539
vs::Vector m_hub_location
Definition DTUSpinnerSampler.H:133
amrex::Real m_time_sampling
Definition DTUSpinnerSampler.H:116
long num_points() const override
Definition DTUSpinnerSampler.H:81
amrex::Vector< amrex::Real > m_last_lidar_center
Definition DTUSpinnerSampler.H:149
amrex::Vector< amrex::Real > m_step_lidar_center
Definition DTUSpinnerSampler.H:150
amrex::Real m_last_hub_yaw
Definition DTUSpinnerSampler.H:146
amrex::Real m_fill_val
Definition DTUSpinnerSampler.H:152
int m_ns
Definition DTUSpinnerSampler.H:106
amrex::Real m_fixed_yaw
Definition DTUSpinnerSampler.H:124
amrex::Real m_last_hub_tilt
Definition DTUSpinnerSampler.H:148
std::string m_turbine_label
Definition DTUSpinnerSampler.H:131
amrex::Vector< amrex::Real > m_lidar_center
Definition DTUSpinnerSampler.H:119
PrismParameters m_OuterPrism
Definition DTUSpinnerSampler.H:118
amrex::Real m_hub_tilt
Definition DTUSpinnerSampler.H:129
std::string sampletype() const override
Type of this sampling object.
Definition DTUSpinnerSampler.H:92
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 rot
Definition DTUSpinnerSampler.H:16
amrex::Real theta0
Definition DTUSpinnerSampler.H:15
amrex::Real azimuth
Definition DTUSpinnerSampler.H:17
Definition SamplerBase.H:19