aboutsummaryrefslogtreecommitdiff
path: root/Source/Utils
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Utils')
-rw-r--r--Source/Utils/WarpXMovingWindow.cpp12
-rw-r--r--Source/Utils/WarpXUtil.H2
-rw-r--r--Source/Utils/WarpXUtil.cpp9
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)) {