/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 long num_points() const override { return (m_beam_points * m_ntotal); }
82
83 long num_output_points() const override
84 {
85 return (m_beam_points * m_ntotal);
86 }
87
89 std::string sampletype() const override { return identifier(); }
90
91 void
92 define_netcdf_metadata(const ncutils::NCGroup& /*unused*/) const override;
93 void
94 populate_netcdf_metadata(const ncutils::NCGroup& /*unused*/) const override;
96 const ncutils::NCGroup& /*unused*/,
97 const size_t /*unused*/) const override;
98
99private:
100 // Number of subsamples in this timestep
101 int m_ns{1};
102
103 // Max number of subsamples in all timesteps
104 long m_ntotal{1};
105
107 const amrex::Real m_radtodeg{180.0_rt / static_cast<amrex::Real>(M_PI)};
108 const amrex::Real m_pi{static_cast<amrex::Real>(M_PI)};
109 const amrex::Real m_twopi{2.0_rt * static_cast<amrex::Real>(M_PI)};
110 const amrex::Real m_threepi{3.0_rt * static_cast<amrex::Real>(M_PI)};
111 amrex::Real m_time_sampling{0.0_rt};
114 amrex::Vector<amrex::Real> m_lidar_center{0.0_rt, 0.0_rt, 0.0_rt};
115 amrex::Real m_scan_time{2.0_rt};
116 amrex::Real m_num_samples{984.0_rt};
117 amrex::Real m_beam_length{270.0_rt};
119 amrex::Real m_fixed_yaw{0.0_rt};
120 amrex::Real m_fixed_roll{0.0_rt};
121 amrex::Real m_fixed_tilt{0.0_rt};
122 amrex::Real m_hub_yaw{0.0_rt};
123 amrex::Real m_hub_roll{0.0_rt};
124 amrex::Real m_hub_tilt{0.0_rt};
125 std::string m_spinner_mode{"fixed"};
126 std::string m_turbine_label;
127 bool m_hub_debug{false};
130
131#ifdef AMR_WIND_USE_OPENFAST
132
133 amrex::Array<float, 3> m_turbine_base_pos = {0, 0, 0};
134 amrex::Array<float, 3> m_current_hub_abs_pos = {0, 0, 0};
135 amrex::Array<float, 3> m_current_hub_rot_vel = {0, 0, 0};
136 amrex::Array<amrex::Real, 9> m_current_hub_orient = {0, 0, 0, 0, 0,
137 0, 0, 0, 0};
138
139#endif
140
141 amrex::Real m_last_hub_yaw{0.0_rt};
142 amrex::Real m_last_hub_roll{0.0_rt};
143 amrex::Real m_last_hub_tilt{0.0_rt};
144 amrex::Vector<amrex::Real> m_last_lidar_center{0.0_rt, 0.0_rt, 0.0_rt};
145 amrex::Vector<amrex::Real> m_step_lidar_center{0.0_rt, 0.0_rt, 0.0_rt};
146
147 amrex::Real m_fill_val{-99999.99_rt};
148};
149
150} // namespace amr_wind::sampling
151
152#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:116
void define_netcdf_metadata(const ncutils::NCGroup &) const override
Definition DTUSpinnerSampler.cpp:475
int m_update_count
Definition DTUSpinnerSampler.H:106
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:110
bool m_hub_debug
Definition DTUSpinnerSampler.H:127
long m_ntotal
Definition DTUSpinnerSampler.H:104
amrex::Real m_scan_time
Definition DTUSpinnerSampler.H:115
std::string m_spinner_mode
Definition DTUSpinnerSampler.H:125
const amrex::Real m_radtodeg
Definition DTUSpinnerSampler.H:107
const amrex::Real m_twopi
Definition DTUSpinnerSampler.H:109
amrex::Real m_fixed_tilt
Definition DTUSpinnerSampler.H:121
amrex::Real m_last_hub_roll
Definition DTUSpinnerSampler.H:142
amrex::Real m_beam_length
Definition DTUSpinnerSampler.H:117
const amrex::Real m_pi
Definition DTUSpinnerSampler.H:108
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:129
amrex::Real m_hub_roll
Definition DTUSpinnerSampler.H:123
int m_beam_points
Definition DTUSpinnerSampler.H:118
void initialize(const std::string &key) override
Definition DTUSpinnerSampler.cpp:23
PrismParameters m_InnerPrism
Definition DTUSpinnerSampler.H:112
long num_output_points() const override
Definition DTUSpinnerSampler.H:83
amrex::Real m_fixed_roll
Definition DTUSpinnerSampler.H:120
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:122
void populate_netcdf_metadata(const ncutils::NCGroup &) const override
Definition DTUSpinnerSampler.cpp:535
vs::Vector m_hub_location
Definition DTUSpinnerSampler.H:128
void output_netcdf_data(const ncutils::NCGroup &, const size_t) const override
Definition DTUSpinnerSampler.cpp:539
amrex::Real m_time_sampling
Definition DTUSpinnerSampler.H:111
long num_points() const override
Definition DTUSpinnerSampler.H:81
amrex::Vector< amrex::Real > m_last_lidar_center
Definition DTUSpinnerSampler.H:144
amrex::Vector< amrex::Real > m_step_lidar_center
Definition DTUSpinnerSampler.H:145
amrex::Real m_last_hub_yaw
Definition DTUSpinnerSampler.H:141
amrex::Real m_fill_val
Definition DTUSpinnerSampler.H:147
int m_ns
Definition DTUSpinnerSampler.H:101
amrex::Real m_fixed_yaw
Definition DTUSpinnerSampler.H:119
amrex::Real m_last_hub_tilt
Definition DTUSpinnerSampler.H:143
std::string m_turbine_label
Definition DTUSpinnerSampler.H:126
amrex::Vector< amrex::Real > m_lidar_center
Definition DTUSpinnerSampler.H:114
PrismParameters m_OuterPrism
Definition DTUSpinnerSampler.H:113
amrex::Real m_hub_tilt
Definition DTUSpinnerSampler.H:124
std::string sampletype() const override
Type of this sampling object.
Definition DTUSpinnerSampler.H:89
LidarSampler(const CFDSim &)
Definition LidarSampler.cpp:13
Representation of a NetCDF group.
Definition nc_interface.H:170
Definition DTUSpinnerSampler.cpp:19
VectorT< amrex::Real > Vector
Definition vector.H:148
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