aboutsummaryrefslogtreecommitdiff
path: root/Source/Initialization/WarpXInitData.cpp
diff options
context:
space:
mode:
authorGravatar RevathiJambunathan <revanathan@gmail.com> 2019-12-19 12:24:39 -0800
committerGravatar RevathiJambunathan <revanathan@gmail.com> 2019-12-19 12:24:39 -0800
commit468f2442c661023d4fd91c34f2bace339a34d754 (patch)
treea77a5f26d2e88e9cb839135eb9600e2ed2dc8e9e /Source/Initialization/WarpXInitData.cpp
parent23153e9385db5b6f4b730190eb111730e7bb7667 (diff)
downloadWarpX-468f2442c661023d4fd91c34f2bace339a34d754.tar.gz
WarpX-468f2442c661023d4fd91c34f2bace339a34d754.tar.zst
WarpX-468f2442c661023d4fd91c34f2bace339a34d754.zip
Remove B_flag and instead pass IntVect of nodalflag and parser_functions
Diffstat (limited to 'Source/Initialization/WarpXInitData.cpp')
-rw-r--r--Source/Initialization/WarpXInitData.cpp85
1 files changed, 39 insertions, 46 deletions
diff --git a/Source/Initialization/WarpXInitData.cpp b/Source/Initialization/WarpXInitData.cpp
index a6bf60840..b949c5373 100644
--- a/Source/Initialization/WarpXInitData.cpp
+++ b/Source/Initialization/WarpXInitData.cpp
@@ -334,11 +334,14 @@ WarpX::InitLevelData (int lev, Real time)
Store_parserString("Bz_external_grid_function(x,y,z)",
str_Bz_ext_grid_function);
// Initialize Bfield_fp with external function
- bool B_flag = 1;
InitializeExternalFieldsOnGridUsingParser(Bfield_fp[lev][0].get(),
Bfield_fp[lev][1].get(),
Bfield_fp[lev][2].get(),
- lev, B_flag);
+ str_Bx_ext_grid_function,
+ str_By_ext_grid_function,
+ str_Bz_ext_grid_function,
+ Bx_nodal_flag, By_nodal_flag,
+ Bz_nodal_flag, lev);
}
if (E_ext_grid_s == "parse_e_ext_grid_function") {
@@ -351,12 +354,14 @@ WarpX::InitLevelData (int lev, Real time)
str_Ez_ext_grid_function);
// Initialize Efield_fp with external function
- bool B_flag = 0;
InitializeExternalFieldsOnGridUsingParser(Efield_fp[lev][0].get(),
Efield_fp[lev][1].get(),
Efield_fp[lev][2].get(),
- lev, B_flag);
-
+ str_Ex_ext_grid_function,
+ str_Ey_ext_grid_function,
+ str_Ez_ext_grid_function,
+ Ex_nodal_flag, Ey_nodal_flag,
+ Ez_nodal_flag, lev);
}
if (lev > 0) {
@@ -373,34 +378,44 @@ WarpX::InitLevelData (int lev, Real time)
}
if (B_ext_grid_s == "parse_b_ext_grid_function") {
- // Setting b_flag to 1 since we are initializing
- // B_external on the grid.
- bool B_flag = 1;
InitializeExternalFieldsOnGridUsingParser(Bfield_aux[lev][0].get(),
Bfield_aux[lev][1].get(),
Bfield_aux[lev][2].get(),
- lev, B_flag);
+ str_Bx_ext_grid_function,
+ str_By_ext_grid_function,
+ str_Bz_ext_grid_function,
+ Bx_nodal_flag, By_nodal_flag,
+ Bz_nodal_flag, lev);
InitializeExternalFieldsOnGridUsingParser(Bfield_cp[lev][0].get(),
Bfield_cp[lev][1].get(),
Bfield_cp[lev][2].get(),
- lev, B_flag);
+ str_Bx_ext_grid_function,
+ str_By_ext_grid_function,
+ str_Bz_ext_grid_function,
+ Bx_nodal_flag, By_nodal_flag,
+ Bz_nodal_flag, lev);
}
if (E_ext_grid_s == "parse_e_ext_grid_function") {
- // Setting b_flag to zero since we are initializing
- // E_external on the grid here.
- bool B_flag = 0;
InitializeExternalFieldsOnGridUsingParser(Efield_aux[lev][0].get(),
Efield_aux[lev][1].get(),
Efield_aux[lev][2].get(),
- lev, B_flag);
+ str_Ex_ext_grid_function,
+ str_Ey_ext_grid_function,
+ str_Ez_ext_grid_function,
+ Ex_nodal_flag, Ey_nodal_flag,
+ Ez_nodal_flag, lev);
InitializeExternalFieldsOnGridUsingParser(Efield_cp[lev][0].get(),
Efield_cp[lev][1].get(),
Efield_cp[lev][2].get(),
- lev, B_flag);
+ str_Ex_ext_grid_function,
+ str_Ey_ext_grid_function,
+ str_Ez_ext_grid_function,
+ Ex_nodal_flag, Ey_nodal_flag,
+ Ez_nodal_flag, lev);
}
}
@@ -463,37 +478,25 @@ WarpX::InitLevelDataFFT (int lev, Real time)
/* \brief
* This function initializes the E and B fields on each level
* using the parser and the user-defined function for the external fields.
- * Depending on the bool value of the B_flag, the subroutine will parse
- * the Bx_/By_/Bz_external_grid_function (if B_flag==1)
- * or parse the Ex_/Ey_/Ez_external_grid_function (if B_flag==0).
- * Then, the B or E multifab is initialized based on the (x,y,z) position
+ * The subroutine will parse the x_/y_z_external_grid_function and
+ * then, the B or E multifab is initialized based on the (x,y,z) position
* on the staggered yee-grid or cell-centered grid.
*/
-
void
WarpX::InitializeExternalFieldsOnGridUsingParser (
MultiFab *mfx, MultiFab *mfy, MultiFab *mfz,
- const int lev, const bool B_flag)
+ const std::string x_function, const std::string y_function,
+ const std::string z_function, IntVect x_nodal_flag,
+ IntVect y_nodal_flag, IntVect z_nodal_flag,
+ const int lev)
{
std::unique_ptr<ParserWrapper> xfield_parsewrap;
std::unique_ptr<ParserWrapper> yfield_parsewrap;
std::unique_ptr<ParserWrapper> zfield_parsewrap;
- if (B_flag == 1) {
- xfield_parsewrap.reset(new ParserWrapper
- (makeParser(str_Bx_ext_grid_function)));
- yfield_parsewrap.reset(new ParserWrapper
- (makeParser(str_By_ext_grid_function)));
- zfield_parsewrap.reset(new ParserWrapper
- (makeParser(str_Bz_ext_grid_function)));
- } else {
- xfield_parsewrap.reset(new ParserWrapper
- (makeParser(str_Ex_ext_grid_function)));
- yfield_parsewrap.reset(new ParserWrapper
- (makeParser(str_Ey_ext_grid_function)));
- zfield_parsewrap.reset(new ParserWrapper
- (makeParser(str_Ez_ext_grid_function)));
- }
+ xfield_parsewrap.reset(new ParserWrapper(makeParser(x_function)));
+ yfield_parsewrap.reset(new ParserWrapper(makeParser(y_function)));
+ zfield_parsewrap.reset(new ParserWrapper(makeParser(z_function)));
ParserWrapper *xfield_wrap = xfield_parsewrap.get();
ParserWrapper *yfield_wrap = yfield_parsewrap.get();
@@ -503,16 +506,6 @@ WarpX::InitializeExternalFieldsOnGridUsingParser (
const RealBox& real_box = geom[lev].ProbDomain();
for ( MFIter mfi(*mfx, TilingIfNotGPU()); mfi.isValid(); ++mfi)
{
- IntVect x_nodal_flag, y_nodal_flag, z_nodal_flag;
- if (B_flag == 1) {
- x_nodal_flag = Bx_nodal_flag;
- y_nodal_flag = By_nodal_flag;
- z_nodal_flag = Bz_nodal_flag;
- } else {
- x_nodal_flag = Ex_nodal_flag;
- y_nodal_flag = Ey_nodal_flag;
- z_nodal_flag = Ez_nodal_flag;
- }
const Box& tbx = mfi.tilebox(x_nodal_flag);
const Box& tby = mfi.tilebox(y_nodal_flag);
const Box& tbz = mfi.tilebox(z_nodal_flag);