aboutsummaryrefslogtreecommitdiff
path: root/Source/Utils/WarpXUtil.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Utils/WarpXUtil.cpp')
-rw-r--r--Source/Utils/WarpXUtil.cpp40
1 files changed, 22 insertions, 18 deletions
diff --git a/Source/Utils/WarpXUtil.cpp b/Source/Utils/WarpXUtil.cpp
index 6a1b5259a..530b10b62 100644
--- a/Source/Utils/WarpXUtil.cpp
+++ b/Source/Utils/WarpXUtil.cpp
@@ -359,6 +359,23 @@ Parser makeParser (std::string const& parse_function, amrex::Vector<std::string>
return parser;
}
+amrex::Real
+parseStringtoReal(std::string str)
+{
+ auto parser = makeParser(str, {});
+ auto exe = parser.compileHost<0>();
+ amrex::Real result = exe();
+ return result;
+}
+
+int
+parseStringtoInt(std::string str, std::string name)
+{
+ amrex::Real rval = parseStringtoReal(str);
+ int ival = safeCastToInt(std::round(rval), name);
+ return ival;
+}
+
int
queryWithParser (const amrex::ParmParse& a_pp, char const * const str, amrex::Real& val)
{
@@ -370,11 +387,7 @@ queryWithParser (const amrex::ParmParse& a_pp, char const * const str, amrex::Re
// If so, create a parser object and apply it to the value provided by the user.
std::string str_val;
Store_parserString(a_pp, str, str_val);
-
- auto parser = makeParser(str_val, {});
- auto exe = parser.compileHost<0>();
-
- val = exe();
+ val = parseStringtoReal(str_val);
}
// return the same output as amrex::ParmParse::query
return is_specified;
@@ -386,10 +399,7 @@ getWithParser (const amrex::ParmParse& a_pp, char const * const str, amrex::Real
// If so, create a parser object and apply it to the value provided by the user.
std::string str_val;
Store_parserString(a_pp, str, str_val);
-
- auto parser = makeParser(str_val, {});
- auto exe = parser.compileHost<0>();
- val = exe();
+ val = parseStringtoReal(str_val);
}
int
@@ -405,9 +415,7 @@ queryArrWithParser (const amrex::ParmParse& a_pp, char const * const str, std::v
int const n = static_cast<int>(tmp_str_arr.size());
val.resize(n);
for (int i=0 ; i < n ; i++) {
- auto parser = makeParser(tmp_str_arr[i], {});
- auto exe = parser.compileHost<0>();
- val[i] = exe();
+ val[i] = parseStringtoReal(tmp_str_arr[i]);
}
}
// return the same output as amrex::ParmParse::query
@@ -424,9 +432,7 @@ getArrWithParser (const amrex::ParmParse& a_pp, char const * const str, std::vec
int const n = static_cast<int>(tmp_str_arr.size());
val.resize(n);
for (int i=0 ; i < n ; i++) {
- auto parser = makeParser(tmp_str_arr[i], {});
- auto exe = parser.compileHost<0>();
- val[i] = exe();
+ val[i] = parseStringtoReal(tmp_str_arr[i]);
}
}
@@ -441,9 +447,7 @@ getArrWithParser (const amrex::ParmParse& a_pp, char const * const str, std::vec
int const n = static_cast<int>(tmp_str_arr.size());
val.resize(n);
for (int i=0 ; i < n ; i++) {
- auto parser = makeParser(tmp_str_arr[i], {});
- auto exe = parser.compileHost<0>();
- val[i] = exe();
+ val[i] = parseStringtoReal(tmp_str_arr[i]);
}
}