diff options
Diffstat (limited to 'Source/Utils')
-rw-r--r-- | Source/Utils/WarpXMovingWindow.cpp | 12 | ||||
-rw-r--r-- | Source/Utils/WarpXUtil.H | 2 | ||||
-rw-r--r-- | Source/Utils/WarpXUtil.cpp | 9 |
3 files changed, 9 insertions, 14 deletions
diff --git a/Source/Utils/WarpXMovingWindow.cpp b/Source/Utils/WarpXMovingWindow.cpp index f6cd6de20..a94ffede9 100644 --- a/Source/Utils/WarpXMovingWindow.cpp +++ b/Source/Utils/WarpXMovingWindow.cpp @@ -111,8 +111,8 @@ WarpX::MoveWindow (bool move_j) // Shift each component of vector fields (E, B, j) for (int dim = 0; dim < 3; ++dim) { // Fine grid - ParserWrapper *Bfield_parser; - ParserWrapper *Efield_parser; + ParserWrapper<3> *Bfield_parser; + ParserWrapper<3> *Efield_parser; bool use_Bparser = false; bool use_Eparser = false; if (B_ext_grid_s == "parse_b_ext_grid_function") { @@ -233,7 +233,7 @@ WarpX::MoveWindow (bool move_j) void WarpX::shiftMF (MultiFab& mf, const Geometry& geom, int num_shift, int dir, IntVect ng_extra, amrex::Real external_field, bool useparser, - ParserWrapper *field_parser) + ParserWrapper<3> *field_parser) { BL_PROFILE("WarpX::shiftMF()"); const BoxArray& ba = mf.boxArray(); @@ -329,10 +329,8 @@ WarpX::shiftMF (MultiFab& mf, const Geometry& geom, int num_shift, int dir, Real fac_z = (1.0 - mf_type[2]) * dx[2]*0.5; Real z = k*dx[2] + real_box.lo(2) + fac_z; #endif - srcfab(i,j,k,n) = field_parser->getField(x,y,z); - } - , amrex::Gpu::numThreadsPerBlockParallelFor() * sizeof(double)*4 - ); + srcfab(i,j,k,n) = (*field_parser)(x,y,z); + }); } } diff --git a/Source/Utils/WarpXUtil.H b/Source/Utils/WarpXUtil.H index 9231fa60a..cfc1b2440 100644 --- a/Source/Utils/WarpXUtil.H +++ b/Source/Utils/WarpXUtil.H @@ -126,6 +126,6 @@ T trilinear_interp(T x0, T x1,T y0, T y1, T z0, T z1, * * \param parse_function String to read to initialize the parser. */ -WarpXParser makeParser (std::string const& parse_function); +WarpXParser makeParser (std::string const& parse_function, std::vector<std::string> const& varnames); #endif //WARPX_UTILS_H_ diff --git a/Source/Utils/WarpXUtil.cpp b/Source/Utils/WarpXUtil.cpp index 983654aed..65aa0edb2 100644 --- a/Source/Utils/WarpXUtil.cpp +++ b/Source/Utils/WarpXUtil.cpp @@ -190,16 +190,13 @@ void Store_parserString(amrex::ParmParse& pp, std::string query_string, } -WarpXParser makeParser (std::string const& parse_function) +WarpXParser makeParser (std::string const& parse_function, std::vector<std::string> const& varnames) { WarpXParser parser(parse_function); - parser.registerVariables({"x","y","z","t"}); + parser.registerVariables(varnames); 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 const& v : varnames) symbols.erase(v.c_str()); for (auto it = symbols.begin(); it != symbols.end(); ) { Real v; if (pp.query(it->c_str(), v)) { |