diff options
Diffstat (limited to 'Source/Initialization/WarpXInitData.cpp')
-rw-r--r-- | Source/Initialization/WarpXInitData.cpp | 40 |
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); + } ); - } } |