aboutsummaryrefslogtreecommitdiff
path: root/Source/Initialization/WarpXInitData.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Initialization/WarpXInitData.cpp')
-rw-r--r--Source/Initialization/WarpXInitData.cpp40
1 files changed, 18 insertions, 22 deletions
diff --git a/Source/Initialization/WarpXInitData.cpp b/Source/Initialization/WarpXInitData.cpp
index 957e22b68..e5571c519 100644
--- a/Source/Initialization/WarpXInitData.cpp
+++ b/Source/Initialization/WarpXInitData.cpp
@@ -319,12 +319,12 @@ WarpX::InitLevelData (int lev, Real time)
Store_parserString(pp, "Bz_external_grid_function(x,y,z)",
str_Bz_ext_grid_function);
- Bxfield_parser.reset(new ParserWrapper(
- makeParser(str_Bx_ext_grid_function)));
- Byfield_parser.reset(new ParserWrapper(
- makeParser(str_By_ext_grid_function)));
- Bzfield_parser.reset(new ParserWrapper(
- makeParser(str_Bz_ext_grid_function)));
+ Bxfield_parser.reset(new ParserWrapper<3>(
+ makeParser(str_Bx_ext_grid_function,{"x","y","z"})));
+ Byfield_parser.reset(new ParserWrapper<3>(
+ makeParser(str_By_ext_grid_function,{"x","y","z"})));
+ Bzfield_parser.reset(new ParserWrapper<3>(
+ makeParser(str_Bz_ext_grid_function,{"x","y","z"})));
// Initialize Bfield_fp with external function
InitializeExternalFieldsOnGridUsingParser(Bfield_fp[lev][0].get(),
@@ -371,12 +371,12 @@ WarpX::InitLevelData (int lev, Real time)
Store_parserString(pp, "Ez_external_grid_function(x,y,z)",
str_Ez_ext_grid_function);
- Exfield_parser.reset(new ParserWrapper(
- makeParser(str_Ex_ext_grid_function)));
- Eyfield_parser.reset(new ParserWrapper(
- makeParser(str_Ey_ext_grid_function)));
- Ezfield_parser.reset(new ParserWrapper(
- makeParser(str_Ez_ext_grid_function)));
+ Exfield_parser.reset(new ParserWrapper<3>(
+ makeParser(str_Ex_ext_grid_function,{"x","y","z"})));
+ Eyfield_parser.reset(new ParserWrapper<3>(
+ makeParser(str_Ey_ext_grid_function,{"x","y","z"})));
+ Ezfield_parser.reset(new ParserWrapper<3>(
+ makeParser(str_Ez_ext_grid_function,{"x","y","z"})));
// Initialize Efield_fp with external function
InitializeExternalFieldsOnGridUsingParser(Efield_fp[lev][0].get(),
@@ -467,8 +467,8 @@ WarpX::InitLevelDataFFT (int lev, Real time)
void
WarpX::InitializeExternalFieldsOnGridUsingParser (
MultiFab *mfx, MultiFab *mfy, MultiFab *mfz,
- ParserWrapper *xfield_parser, ParserWrapper *yfield_parser,
- ParserWrapper *zfield_parser, IntVect x_nodal_flag,
+ ParserWrapper<3> *xfield_parser, ParserWrapper<3> *yfield_parser,
+ ParserWrapper<3> *zfield_parser, IntVect x_nodal_flag,
IntVect y_nodal_flag, IntVect z_nodal_flag,
const int lev)
{
@@ -518,7 +518,7 @@ WarpX::InitializeExternalFieldsOnGridUsingParser (
Real z = k*dx_lev[2] + real_box.lo(2) + fac_z;
#endif
// Initialize the x-component of the field.
- mfxfab(i,j,k) = xfield_parser->getField(x,y,z);
+ mfxfab(i,j,k) = (*xfield_parser)(x,y,z);
},
[=] AMREX_GPU_DEVICE (int i, int j, int k) {
Real fac_x = (1.0 - mfy_type[0]) * dx_lev[0]*0.5;
@@ -534,7 +534,7 @@ WarpX::InitializeExternalFieldsOnGridUsingParser (
Real z = k*dx_lev[2] + real_box.lo(2) + fac_z;
#endif
// Initialize the y-component of the field.
- mfyfab(i,j,k) = yfield_parser->getField(x,y,z);
+ mfyfab(i,j,k) = (*yfield_parser)(x,y,z);
},
[=] AMREX_GPU_DEVICE (int i, int j, int k) {
Real fac_x = (1.0 - mfz_type[0]) * dx_lev[0]*0.5;
@@ -550,13 +550,9 @@ WarpX::InitializeExternalFieldsOnGridUsingParser (
Real z = k*dx_lev[2] + real_box.lo(2) + fac_z;
#endif
// Initialize the z-component of the field.
- mfzfab(i,j,k) = zfield_parser->getField(x,y,z);
- },
- /* To allocate shared memory for the GPU threads. */
- /* But, for now only 4 doubles (x,y,z,t) are allocated. */
- amrex::Gpu::numThreadsPerBlockParallelFor() * sizeof(double) * 4
+ mfzfab(i,j,k) = (*zfield_parser)(x,y,z);
+ }
);
-
}
}