/home/runner/work/amr-wind/amr-wind/amr-wind/wind_energy/actuator/wing/flat_plate_ops.H Source File

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/wind_energy/actuator/wing/flat_plate_ops.H Source File
AMR-Wind API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
flat_plate_ops.H
Go to the documentation of this file.
1#ifndef FLAT_PLATE_OPS_H
2#define FLAT_PLATE_OPS_H
3
7#include "AMReX_REAL.H"
8
9using namespace amrex::literals;
10
11namespace amr_wind::actuator {
12
13template <>
18
19namespace ops {
20
21template <>
23{
25 {
26 auto& wdata = data.meta();
27 auto& info = data.info();
28 pp.get("num_points", wdata.num_pts);
29 pp.get("start", wdata.start);
30 pp.get("end", wdata.end);
31 pp.get_either("epsilon", wdata.eps_inp);
32 pp.get("pitch", wdata.pitch);
33
34 pp.query("chord", wdata.chord_inp);
35 pp.query("cd_factor", wdata.cd_factor);
36
37 amrex::Real max_eps =
38 *std::max_element(wdata.eps_inp.begin(), wdata.eps_inp.end());
39 amrex::Real search_radius = max_eps * wdata.chord_inp * 3.0_rt;
40 const auto& p1 = wdata.start;
41 const auto& p2 = wdata.end;
42 // clang-format off
43 info.bound_box = amrex::RealBox(
44 amrex::min<amrex::Real>(p1.x(), p2.x()) - search_radius,
45 amrex::min<amrex::Real>(p1.y(), p2.y()) - search_radius,
46 amrex::min<amrex::Real>(p1.z(), p2.z()) - search_radius,
47 amrex::max<amrex::Real>(p1.x(), p2.x()) + search_radius,
48 amrex::max<amrex::Real>(p1.y(), p2.y()) + search_radius,
49 amrex::max<amrex::Real>(p1.z(), p2.z()) + search_radius
50 );
51 // clang-format on
52 }
53};
54
55template <>
57{
59 {
60 wing::init_data_structures(data.meta(), data.grid());
61
62 auto& wdata = data.meta();
63 const int npts = wdata.num_pts;
64 wdata.chord.assign(npts, wdata.chord_inp);
65
66 wdata.aflookup.cd_factor() = wdata.cd_factor;
67 }
68};
69
70template <>
72{
73 return data.meta().aflookup;
74}
75
76} // namespace ops
77} // namespace amr_wind::actuator
78
79#endif /* FLAT_PLATE_OPS_H */
ActTrait::GridType & grid()
Definition actuator_types.H:220
ActTrait::InfoType & info()
Definition actuator_types.H:217
ActTrait::MetaType & meta()
Definition actuator_types.H:223
Definition AirfoilTable.H:50
void get(const std::string &name, vs::Vector &value) const
Definition MultiParser.H:41
void get_either(const std::string &name, vs::Vector &value) const
Definition MultiParser.H:73
void query(const std::string &name, vs::Vector &value) const
Definition MultiParser.H:56
Definition ActSrcLineOp.H:12
const ThinAirfoil & airfoil_lookup< FlatPlate >(FlatPlate::DataType &data)
Definition flat_plate_ops.H:71
::amr_wind::utils::MultiParser ActParser
Definition ActParser.H:8
void init_data_structures(WingBaseData &wdata, ActGrid &grid)
Definition wing_ops.cpp:12
Definition ActParser.H:6
Definition actuator_types.H:41
ThinAirfoil AirfoilLookup
Definition flat_plate_ops.H:16
Definition AirfoilTable.H:82
ThinAirfoil aflookup
Definition FlatPlate.H:17
Definition FlatPlate.H:21
ActDataHolder< FlatPlate > DataType
Definition FlatPlate.H:25
int num_pts
Number of points along the wing.
Definition ActuatorWing.H:23
void operator()(FlatPlate::DataType &data)
Definition flat_plate_ops.H:58
Definition actuator_ops.H:32
void operator()(FlatPlate::DataType &data, const utils::ActParser &pp)
Definition flat_plate_ops.H:24
Definition actuator_ops.H:19