diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/Evolve/WarpXEvolve.cpp | 3 | ||||
-rw-r--r-- | Source/WarpX.H | 2 | ||||
-rw-r--r-- | Source/WarpX.cpp | 14 |
3 files changed, 10 insertions, 9 deletions
diff --git a/Source/Evolve/WarpXEvolve.cpp b/Source/Evolve/WarpXEvolve.cpp index d3d77c313..8f4456745 100644 --- a/Source/Evolve/WarpXEvolve.cpp +++ b/Source/Evolve/WarpXEvolve.cpp @@ -210,8 +210,7 @@ WarpX::Evolve (int numsteps) } } - bool to_sort = (sort_int > 0) && ((step+1) % sort_int == 0); - if (to_sort) { + if (sort_intervals.contains(step+1)) { amrex::Print() << "re-sorting particles \n"; mypc->SortParticlesByBin(sort_bin_size); } diff --git a/Source/WarpX.H b/Source/WarpX.H index b5e76fdf1..e05babad5 100644 --- a/Source/WarpX.H +++ b/Source/WarpX.H @@ -181,7 +181,7 @@ public: static bool do_dynamic_scheduling; static bool refine_plasma; - static int sort_int; + static IntervalsParser sort_intervals; static amrex::IntVect sort_bin_size; static int do_subcycling; diff --git a/Source/WarpX.cpp b/Source/WarpX.cpp index 82ccabb2d..951f566ba 100644 --- a/Source/WarpX.cpp +++ b/Source/WarpX.cpp @@ -86,11 +86,7 @@ bool WarpX::refine_plasma = false; int WarpX::num_mirrors = 0; -#ifdef AMREX_USE_GPU -int WarpX::sort_int = 4; -#else -int WarpX::sort_int = -1; -#endif +IntervalsParser WarpX::sort_intervals; amrex::IntVect WarpX::sort_bin_size(AMREX_D_DECL(4,4,4)); bool WarpX::do_back_transformed_diagnostics = false; @@ -461,7 +457,13 @@ WarpX::ReadParameters () pp.query("do_dive_cleaning", do_dive_cleaning); pp.query("n_field_gather_buffer", n_field_gather_buffer); pp.query("n_current_deposition_buffer", n_current_deposition_buffer); - pp.query("sort_int", sort_int); +#ifdef AMREX_USE_GPU + std::string sort_int_string = "4"; +#else + std::string sort_int_string = "-1"; +#endif + pp.query("sort_int", sort_int_string); + sort_intervals = IntervalsParser(sort_int_string); Vector<int> vect_sort_bin_size(AMREX_SPACEDIM,1); bool sort_bin_size_is_specified = pp.queryarr("sort_bin_size", vect_sort_bin_size); |