diff options
author | 2020-01-31 10:13:04 -0800 | |
---|---|---|
committer | 2020-01-31 10:13:04 -0800 | |
commit | 58e64aafe0103b6644048d7480a3e62fe01bd5cb (patch) | |
tree | 8f0d7ed234d780b929d493d7a217fa504647fa8c /Source/Utils/WarpXUtil.cpp | |
parent | e45710b641c01970a1cc9eb2eae244899091106b (diff) | |
parent | 3f5bcb4a798862e0a5aa604e5dce162bb0e291b3 (diff) | |
download | WarpX-58e64aafe0103b6644048d7480a3e62fe01bd5cb.tar.gz WarpX-58e64aafe0103b6644048d7480a3e62fe01bd5cb.tar.zst WarpX-58e64aafe0103b6644048d7480a3e62fe01bd5cb.zip |
Merge branch 'dev' into elementary_process
Diffstat (limited to 'Source/Utils/WarpXUtil.cpp')
-rw-r--r-- | Source/Utils/WarpXUtil.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/Source/Utils/WarpXUtil.cpp b/Source/Utils/WarpXUtil.cpp index 8764a09c6..983654aed 100644 --- a/Source/Utils/WarpXUtil.cpp +++ b/Source/Utils/WarpXUtil.cpp @@ -1,3 +1,11 @@ +/* Copyright 2019-2020 Andrew Myers, Burlen Loring, Luca Fedeli + * Maxence Thevenet, Remi Lehe, Revathi Jambunathan + * Revathi Jambunathan + * + * This file is part of WarpX. + * + * License: BSD-3-Clause-LBNL + */ #include <WarpXUtil.H> #include <WarpXConst.H> #include <AMReX_ParmParse.H> @@ -164,3 +172,45 @@ namespace WarpXUtilIO{ } } +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","t"}); + ParmParse pp("my_constants"); + std::set<std::string> symbols = parser.symbols(); + symbols.erase("x"); + symbols.erase("y"); + symbols.erase("z"); + symbols.erase("t"); + 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; +} |