/home/runner/work/amr-wind/amr-wind/amr-wind/core/MultiParser.H Source File

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/core/MultiParser.H Source File
AMR-Wind API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
MultiParser.H
Go to the documentation of this file.
1#ifndef MULTIPARSER_H
2#define MULTIPARSER_H
3
5#include "AMReX_ParmParse.H"
6
7namespace amr_wind::utils {
8
18{
19public:
20 MultiParser(const std::string& default_prefix, const std::string& prefix)
21 : m_pp_default(default_prefix), m_pp(prefix)
22 {}
23
25 const amrex::ParmParse& default_params() const { return m_pp_default; }
26
28 const amrex::ParmParse& params() const { return m_pp; }
29
31 bool contains(const std::string& name) const
32 {
33 return m_pp.contains(name) || m_pp_default.contains(name);
34 }
35
41 void get(const std::string& name, vs::Vector& value) const
42 {
43 amrex::Vector<vs::Vector::value_type> val;
44 getarr(name, val);
45 AMREX_ALWAYS_ASSERT(val.size() == AMREX_SPACEDIM);
46 value.x() = val[0];
47 value.y() = val[1];
48 value.z() = val[2];
49 }
50
56 void query(const std::string& name, vs::Vector& value) const
57 {
58 amrex::Vector<vs::Vector::value_type> val;
59 queryarr(name, val);
60 if (!val.empty()) {
61 AMREX_ALWAYS_ASSERT(val.size() == AMREX_SPACEDIM);
62 value.x() = val[0];
63 value.y() = val[1];
64 value.z() = val[2];
65 }
66 }
67
73 void get_either(const std::string& name, vs::Vector& value) const
74 {
75 amrex::Vector<vs::Vector::value_type> val;
76 getarr(name, val);
77 AMREX_ALWAYS_ASSERT(val.size() == AMREX_SPACEDIM || val.size() == 1);
78 if (val.size() == 1) {
79 value.x() = val[0];
80 value.y() = val[0];
81 value.z() = val[0];
82 } else {
83 value.x() = val[0];
84 value.y() = val[1];
85 value.z() = val[2];
86 }
87 }
88
94 void query_either(const std::string& name, vs::Vector& value) const
95 {
96 amrex::Vector<vs::Vector::value_type> val;
97 queryarr(name, val);
98 if (!val.empty()) {
99 AMREX_ALWAYS_ASSERT(
100 val.size() == AMREX_SPACEDIM || val.size() == 1);
101 if (val.size() == 1) {
102 value.x() = val[0];
103 value.y() = val[0];
104 value.z() = val[0];
105 } else {
106 value.x() = val[0];
107 value.y() = val[1];
108 value.z() = val[2];
109 }
110 }
111 }
112
114 template <typename T>
115 void get(const std::string& name, T& value) const
116 {
117 if (m_pp.contains(name)) {
118 m_pp.get(name, value);
119 } else {
120 m_pp_default.get(name, value);
121 }
122 }
123
125 template <typename T>
126 void getarr(const std::string& name, T& value) const
127 {
128 if (m_pp.contains(name)) {
129 m_pp.getarr(name, value);
130 } else {
131 m_pp_default.getarr(name, value);
132 }
133 }
134
136 template <typename T>
137 void query(const std::string& name, T& value) const
138 {
139 m_pp_default.query(name, value);
140 m_pp.query(name, value);
141 }
142
145 template <typename T>
146 void queryarr(const std::string& name, T& value) const
147 {
148 m_pp_default.queryarr(name, value);
149 m_pp.queryarr(name, value);
150 }
151
152private:
153 amrex::ParmParse m_pp_default;
154 amrex::ParmParse m_pp;
155};
156
157} // namespace amr_wind::utils
158
159#endif /* MULTIPARSER_H */
void getarr(const std::string &name, T &value) const
Get a vector of values for the given keyword entry from either namespace.
Definition MultiParser.H:126
void query_either(const std::string &name, vs::Vector &value) const
Definition MultiParser.H:94
void get(const std::string &name, vs::Vector &value) const
Definition MultiParser.H:41
void queryarr(const std::string &name, T &value) const
Query a vector of values for the given keyword entry from either namespace.
Definition MultiParser.H:146
void get_either(const std::string &name, vs::Vector &value) const
Definition MultiParser.H:73
MultiParser(const std::string &default_prefix, const std::string &prefix)
Definition MultiParser.H:20
bool contains(const std::string &name) const
Check if the keyword is present in either namespace.
Definition MultiParser.H:31
void query(const std::string &name, T &value) const
Query the value for the keyword entry from either namespace.
Definition MultiParser.H:137
const amrex::ParmParse & default_params() const
Return the ParmParse instance for the default namespace.
Definition MultiParser.H:25
amrex::ParmParse m_pp
Definition MultiParser.H:154
const amrex::ParmParse & params() const
Return the ParmParse instance for the specialized namespace.
Definition MultiParser.H:28
void get(const std::string &name, T &value) const
Get the value for the keyword entry from either namespace.
Definition MultiParser.H:115
void query(const std::string &name, vs::Vector &value) const
Definition MultiParser.H:56
amrex::ParmParse m_pp_default
Definition MultiParser.H:153
Definition MultiParser.H:7
VectorT< amrex::Real > Vector
Definition vector.H:148
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE T & z() &noexcept
Definition vector.H:99
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE T & x() &noexcept
Definition vector.H:97
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE T & y() &noexcept
Definition vector.H:98