9 #ifndef WARPX_UTILS_PARSER_PARSERUTILS_H_
10 #define WARPX_UTILS_PARSER_PARSERUTILS_H_
19 #include <type_traits>
54 std::string
const& parse_function,
68 std::string
const& query_string,
69 std::string& stored_string);
86 std::string
const& group,
87 std::string
const& query_string,
88 std::string& stored_string);
118 return parser->compile<N>();
136 template <
typename T>
141 const int is_specified = a_pp.
query(
str, tmp_str);
153 static_cast<amrex::Real
>(std::round(
parser.compileHost<0>()())),
str);
156 val =
static_cast<T
>(
parser.compileHost<0>()());
164 template <
typename T>
168 std::vector<std::string> tmp_str_arr;
169 const int is_specified = a_pp.
queryarr(
str, tmp_str_arr);
173 int const n =
static_cast<int>(tmp_str_arr.size());
175 for (
int i=0 ;
i < n ;
i++) {
179 static_cast<amrex::Real
>(std::round(
parser.compileHost<0>()())),
str);
182 val[
i] =
static_cast<T
>(
parser.compileHost<0>()());
206 template <
typename T>
208 const int start_ix,
const int num_val)
211 std::vector<std::string> tmp_str_arr;
212 const int is_specified = a_pp.
queryarr(
str, tmp_str_arr, start_ix, num_val);
216 int const n =
static_cast<int>(tmp_str_arr.size());
218 for (
int i=0 ;
i < n ;
i++) {
222 static_cast<amrex::Real
>(std::round(
parser.compileHost<0>()())),
str);
225 val[
i] =
static_cast<T
>(
parser.compileHost<0>()());
245 template <
typename T>
255 static_cast<amrex::Real
>(std::round(
parser.compileHost<0>()())),
str);
258 val =
static_cast<T
>(
parser.compileHost<0>()());
262 template <
typename T>
266 std::vector<std::string> tmp_str_arr;
269 int const n =
static_cast<int>(tmp_str_arr.size());
271 for (
int i=0 ;
i < n ;
i++) {
275 static_cast<amrex::Real
>(std::round(
parser.compileHost<0>()())),
str);
278 val[
i] =
static_cast<T
>(
parser.compileHost<0>()());
299 template <
typename T>
301 const int start_ix,
const int num_val)
304 std::vector<std::string> tmp_str_arr;
305 a_pp.
getarr(
str, tmp_str_arr, start_ix, num_val);
307 int const n =
static_cast<int>(tmp_str_arr.size());
309 for (
int i=0 ;
i < n ;
i++) {
313 static_cast<amrex::Real
>(std::round(
parser.compileHost<0>()())),
str);
316 val[
i] =
static_cast<T
>(
parser.compileHost<0>()());
338 template <
typename T>
341 const bool is_specified_without_group = a_pp.
contains(
str);
342 const std::string grp_str = group +
"." + std::string(
str);
343 const bool is_specified_with_group = (group.empty() ? false : a_pp.
contains(grp_str.c_str()));
345 if (is_specified_without_group && !is_specified_with_group) {
355 template <
typename T>
358 const bool is_specified_without_group = a_pp.
contains(
str);
359 const std::string grp_str = group +
"." + std::string(
str);
360 const bool is_specified_with_group = (group.empty() ? false : a_pp.
contains(grp_str.c_str()));
362 if (is_specified_without_group && !is_specified_with_group) {
392 template <
typename T>
394 const int start_ix,
const int num_val)
396 const bool is_specified_without_group = a_pp.
contains(
str);
397 const std::string grp_str = group +
"." + std::string(
str);
398 const bool is_specified_with_group = (group.empty() ? false : a_pp.
contains(grp_str.c_str()));
400 if (is_specified_without_group && !is_specified_with_group) {
439 template <
typename T>
442 const bool is_specified_without_group = a_pp.
contains(
str);
443 const std::string grp_str = group +
"." + std::string(
str);
444 const bool is_specified_with_group = (group.empty() ? false : a_pp.
contains(grp_str.c_str()));
446 if (is_specified_without_group && !is_specified_with_group) {
455 template <
typename T>
458 const bool is_specified_without_group = a_pp.
contains(
str);
459 const std::string grp_str = group +
"." + std::string(
str);
460 const bool is_specified_with_group = (group.empty() ? false : a_pp.
contains(grp_str.c_str()));
462 if (is_specified_without_group && !is_specified_with_group) {
492 template <
typename T>
494 const int start_ix,
const int num_val)
496 const bool is_specified_without_group = a_pp.
contains(
str);
497 const std::string grp_str = group +
"." + std::string(
str);
498 const bool is_specified_with_group = (group.empty() ? false : a_pp.
contains(grp_str.c_str()));
500 if (is_specified_without_group && !is_specified_with_group) {
bool contains(const char *name) const
int queryarr(const char *name, std::vector< int > &ref, int start_ix=FIRST, int num_val=ALL) const
void getarr(const char *name, std::vector< int > &ref, int start_ix=FIRST, int num_val=ALL) const
int query(const char *name, bool &ref, int ival=FIRST) const
i
Definition: check_interp_points_and_weights.py:174
str
Definition: run_alltests_1node.py:72
name
Definition: run_automated.py:229
parser
Definition: stencil.py:411
value
Definition: updateAMReX.py:141
Definition: IntervalsParser.H:17
int queryArrWithParser(const amrex::ParmParse &a_pp, char const *const str, std::vector< T > &val)
Definition: ParserUtils.H:165
int safeCastToInt(amrex::Real x, const std::string &real_name)
Do a safe cast of a real to an int This ensures that the float value is within the range of ints and ...
Definition: ParserUtils.cpp:117
amrex::Parser makeParser(std::string const &parse_function, amrex::Vector< std::string > const &varnames)
Initialize an amrex::Parser object from a string containing a math expression.
Definition: ParserUtils.cpp:127
long safeCastToLong(amrex::Real x, const std::string &real_name)
Do a safe cast of a real to a long This ensures that the float value is within the range of longs and...
Definition: ParserUtils.cpp:122
int parseStringtoInt(const std::string &str, const std::string &name)
Definition: ParserUtils.cpp:209
double parseStringtoDouble(const std::string &str)
Definition: ParserUtils.cpp:199
void getWithParser(const amrex::ParmParse &a_pp, char const *const str, T &val)
Definition: ParserUtils.H:246
int query(const amrex::ParmParse &a_pp, std::string const &group, char const *str, std::string &val)
Definition: ParserUtils.cpp:54
amrex::ParserExecutor< N > compileParser(amrex::Parser const *parser)
Definition: ParserUtils.H:115
void Store_parserString(amrex::ParmParse const &pp, std::string const &query_string, std::string &stored_string)
Parse a string (typically a mathematical expression) from the input file and store it into a variable...
Definition: ParserUtils.cpp:21
void getArrWithParser(const amrex::ParmParse &a_pp, char const *const str, std::vector< T > &val)
Definition: ParserUtils.H:263
void get(amrex::ParmParse const &a_pp, std::string const &group, char const *str, std::string &val)
Definition: ParserUtils.cpp:69
int queryWithParser(const amrex::ParmParse &a_pp, char const *const str, T &val)
Definition: ParserUtils.H:137