aboutsummaryrefslogtreecommitdiff
path: root/Source/WarpX.cpp
diff options
context:
space:
mode:
authorGravatar RevathiJambunathan <revanathan@gmail.com> 2019-06-20 16:22:24 -0700
committerGravatar RevathiJambunathan <revanathan@gmail.com> 2019-06-20 16:22:24 -0700
commitae9fdb55a96d44f411d93c5bddcc31ea3be0c0dd (patch)
treee7b78ba43f53fb5a25544f9f62b58c7756d7a50b /Source/WarpX.cpp
parent7e0bae5661709febce5c40db627f4a3f5dfeee84 (diff)
parentb1beba190f3a4b55f1ec16a1b0c81dfcabfa5b95 (diff)
downloadWarpX-ae9fdb55a96d44f411d93c5bddcc31ea3be0c0dd.tar.gz
WarpX-ae9fdb55a96d44f411d93c5bddcc31ea3be0c0dd.tar.zst
WarpX-ae9fdb55a96d44f411d93c5bddcc31ea3be0c0dd.zip
Merge branch 'dev' of https://github.com/ECP-WarpX/WarpX into SliceGeneration_with_yt_compliance_for_viz
Diffstat (limited to 'Source/WarpX.cpp')
-rw-r--r--Source/WarpX.cpp63
1 files changed, 25 insertions, 38 deletions
diff --git a/Source/WarpX.cpp b/Source/WarpX.cpp
index 6a6add9db..c2cf97f30 100644
--- a/Source/WarpX.cpp
+++ b/Source/WarpX.cpp
@@ -17,6 +17,7 @@
#include <WarpXConst.H>
#include <WarpXWrappers.h>
#include <WarpXUtil.H>
+#include <WarpXAlgorithmSelection.H>
#ifdef BL_USE_SENSEI_INSITU
#include <AMReX_AmrMeshInSituBridge.H>
@@ -35,11 +36,11 @@ Vector<int> WarpX::boost_direction = {0,0,0};
int WarpX::do_compute_max_step_from_zmax = 0;
Real WarpX::zmax_plasma_to_compute_max_step = 0.;
-long WarpX::current_deposition_algo = 3;
-long WarpX::charge_deposition_algo = 0;
-long WarpX::field_gathering_algo = 1;
-long WarpX::particle_pusher_algo = 0;
-int WarpX::maxwell_fdtd_solver_id = 0;
+long WarpX::current_deposition_algo;
+long WarpX::charge_deposition_algo;
+long WarpX::field_gathering_algo;
+long WarpX::particle_pusher_algo;
+int WarpX::maxwell_fdtd_solver_id;
long WarpX::nox = 1;
long WarpX::noy = 1;
@@ -118,7 +119,7 @@ WarpX::ResetInstance ()
{
delete m_instance;
m_instance = nullptr;
-}
+}
WarpX::WarpX ()
{
@@ -228,6 +229,11 @@ WarpX::WarpX ()
#ifdef BL_USE_SENSEI_INSITU
insitu_bridge = nullptr;
#endif
+
+ // NCI Godfrey filters can have different stencils
+ // at different levels (the stencil depends on c*dt/dz)
+ nci_godfrey_filter_exeybz.resize(nlevs_max);
+ nci_godfrey_filter_bxbyez.resize(nlevs_max);
}
WarpX::~WarpX ()
@@ -276,10 +282,10 @@ WarpX::ReadParameters ()
ReadBoostedFrameParameters(gamma_boost, beta_boost, boost_direction);
- // pp.query returns 1 if argument zmax_plasma_to_compute_max_step is
+ // pp.query returns 1 if argument zmax_plasma_to_compute_max_step is
// specified by the user, 0 otherwise.
- do_compute_max_step_from_zmax =
- pp.query("zmax_plasma_to_compute_max_step",
+ do_compute_max_step_from_zmax =
+ pp.query("zmax_plasma_to_compute_max_step",
zmax_plasma_to_compute_max_step);
pp.queryarr("B_external", B_external);
@@ -318,7 +324,7 @@ WarpX::ReadParameters ()
"gamma_boost must be > 1 to use the boosted frame diagnostic.");
pp.query("lab_data_directory", lab_data_directory);
-
+
std::string s;
pp.get("boost_direction", s);
AMREX_ALWAYS_ASSERT_WITH_MESSAGE( (s == "z" || s == "Z"),
@@ -476,29 +482,12 @@ WarpX::ReadParameters ()
}
{
- ParmParse pp("algo");
- pp.query("current_deposition", current_deposition_algo);
- pp.query("charge_deposition", charge_deposition_algo);
- pp.query("field_gathering", field_gathering_algo);
- pp.query("particle_pusher", particle_pusher_algo);
- std::string s_solver = "";
- pp.query("maxwell_fdtd_solver", s_solver);
- std::transform(s_solver.begin(),
- s_solver.end(),
- s_solver.begin(),
- ::tolower);
- // if maxwell_fdtd_solver is specified, set the value
- // of maxwell_fdtd_solver_id accordingly.
- // Otherwise keep the default value maxwell_fdtd_solver_id=0
- if (s_solver != "") {
- if (s_solver == "yee") {
- maxwell_fdtd_solver_id = 0;
- } else if (s_solver == "ckc") {
- maxwell_fdtd_solver_id = 1;
- } else {
- amrex::Abort("Unknown FDTD Solver type " + s_solver);
- }
- }
+ ParmParse pp("algo");
+ current_deposition_algo = GetAlgorithmInteger(pp, "current_deposition");
+ charge_deposition_algo = GetAlgorithmInteger(pp, "charge_deposition");
+ field_gathering_algo = GetAlgorithmInteger(pp, "field_gathering");
+ particle_pusher_algo = GetAlgorithmInteger(pp, "particle_pusher");
+ maxwell_fdtd_solver_id = GetAlgorithmInteger(pp, "maxwell_fdtd_solver");
}
#ifdef WARPX_USE_PSATD
@@ -535,7 +524,7 @@ WarpX::ReadParameters ()
amrex::Vector<Real> slice_hi(AMREX_SPACEDIM);
Vector<int> slice_crse_ratio(AMREX_SPACEDIM);
// set default slice_crse_ratio //
- for (int idim=0; idim < AMREX_SPACEDIM; ++idim )
+ for (int idim=0; idim < AMREX_SPACEDIM; ++idim )
{
slice_crse_ratio[idim] = 1;
}
@@ -554,7 +543,7 @@ WarpX::ReadParameters ()
}
}
-
+
}
// This is a virtual function.
@@ -656,7 +645,7 @@ WarpX::AllocLevelData (int lev, const BoxArray& ba, const DistributionMapping& d
int ngz_nonci = (ngz_tmp % 2) ? ngz_tmp+1 : ngz_tmp; // Always even number
int ngz;
if (WarpX::use_fdtd_nci_corr) {
- int ng = ngz_tmp + (mypc->nstencilz_fdtd_nci_corr-1);
+ int ng = ngz_tmp + NCIGodfreyFilter::stencil_width;
ngz = (ng % 2) ? ng+1 : ng;
} else {
ngz = ngz_nonci;
@@ -861,8 +850,6 @@ WarpX::AllocLevelMFs (int lev, const BoxArray& ba, const DistributionMapping& dm
if (load_balance_int > 0) {
costs[lev].reset(new MultiFab(ba, dm, 1, 0));
}
-
-
}
std::array<Real,3>