aboutsummaryrefslogtreecommitdiff
path: root/Source/Utils/WarpXUtil.cpp
diff options
context:
space:
mode:
authorGravatar Luca Fedeli <luca.fedeli@cea.fr> 2020-01-10 10:12:05 +0100
committerGravatar GitHub <noreply@github.com> 2020-01-10 10:12:05 +0100
commit59363502148a0de2f100aa12b8c322e30bb476fc (patch)
tree93fd1d201678ccecf9201606f6dff5b32d2ec70b /Source/Utils/WarpXUtil.cpp
parentcc6aa7990f884bd9f1266e73a416b69f10b2b048 (diff)
parent60ec41dee3ac7630d4589abf227a3cf4503c7a7d (diff)
downloadWarpX-59363502148a0de2f100aa12b8c322e30bb476fc.tar.gz
WarpX-59363502148a0de2f100aa12b8c322e30bb476fc.tar.zst
WarpX-59363502148a0de2f100aa12b8c322e30bb476fc.zip
Merge branch 'dev' into add_harmonic_beam
Diffstat (limited to 'Source/Utils/WarpXUtil.cpp')
-rw-r--r--Source/Utils/WarpXUtil.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/Source/Utils/WarpXUtil.cpp b/Source/Utils/WarpXUtil.cpp
index e8533a382..e9fb958fd 100644
--- a/Source/Utils/WarpXUtil.cpp
+++ b/Source/Utils/WarpXUtil.cpp
@@ -163,3 +163,45 @@ namespace WarpXUtilIO{
return of.good();
}
}
+
+void Store_parserString(amrex::ParmParse& pp, std::string query_string,
+ std::string& stored_string)
+{
+
+ char cstr[query_string.size()+1];
+ strcpy(cstr, query_string.c_str());
+
+ std::vector<std::string> f;
+ pp.getarr(cstr, f);
+ stored_string.clear();
+ for (auto const& s : f) {
+ stored_string += s;
+ }
+ f.clear();
+
+}
+
+
+WarpXParser makeParser (std::string const& parse_function)
+{
+ WarpXParser parser(parse_function);
+ parser.registerVariables({"x","y","z"});
+ ParmParse pp("my_constants");
+ std::set<std::string> symbols = parser.symbols();
+ symbols.erase("x");
+ symbols.erase("y");
+ symbols.erase("z");
+ for (auto it = symbols.begin(); it != symbols.end(); ) {
+ Real v;
+ if (pp.query(it->c_str(), v)) {
+ parser.setConstant(*it, v);
+ it = symbols.erase(it);
+ } else {
+ ++it;
+ }
+ }
+ for (auto const& s : symbols) {
+ amrex::Abort("makeParser::Unknown symbol "+s);
+ }
+ return parser;
+}