diff options
author | 2021-07-01 21:50:30 -0700 | |
---|---|---|
committer | 2021-07-01 21:50:30 -0700 | |
commit | f44102d14f98f233f292d86fdfdd0ab33f08f43c (patch) | |
tree | b4ae27d186d211ec08966d9d9f0f652c84787fe5 /Source | |
parent | a79985f83a2486e35bc28f2d580f7fe4a2c802f2 (diff) | |
download | WarpX-f44102d14f98f233f292d86fdfdd0ab33f08f43c.tar.gz WarpX-f44102d14f98f233f292d86fdfdd0ab33f08f43c.tar.zst WarpX-f44102d14f98f233f292d86fdfdd0ab33f08f43c.zip |
Filter Always ON by Default (#2031)
* Filter Always ON by Default
* Fix CI Tests
* Update Docs
* Fix CI Test dirichletbc
* Default WarpX::use_filter = 0 with RZ FDTD, Add Warnings
* Set WarpX::use_kspace_filter = true by Default, too
* RZ: Fix Bug with PSATD Binary and FDTD Runtime Solver
* Default use_kspace_filter = true, Fix Runtime Issue with Rho Functor
Diffstat (limited to 'Source')
-rw-r--r-- | Source/Diagnostics/ComputeDiagFunctors/RhoFunctor.cpp | 15 | ||||
-rw-r--r-- | Source/WarpX.cpp | 24 |
2 files changed, 32 insertions, 7 deletions
diff --git a/Source/Diagnostics/ComputeDiagFunctors/RhoFunctor.cpp b/Source/Diagnostics/ComputeDiagFunctors/RhoFunctor.cpp index e8d7828cb..26d99f4a9 100644 --- a/Source/Diagnostics/ComputeDiagFunctors/RhoFunctor.cpp +++ b/Source/Diagnostics/ComputeDiagFunctors/RhoFunctor.cpp @@ -4,6 +4,7 @@ #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD) #include "FieldSolver/SpectralSolver/SpectralFieldData.H" #include "FieldSolver/SpectralSolver/SpectralSolverRZ.H" + #include "Utils/WarpXAlgorithmSelection.H" #endif #include "Particles/MultiParticleContainer.H" #include "Particles/WarpXParticleContainer.H" @@ -54,11 +55,15 @@ RhoFunctor::operator() ( amrex::MultiFab& mf_dst, const int dcomp, const int /*i #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD) using IdxAvg = SpectralFieldIndexTimeAveraging; - if (WarpX::use_kspace_filter) { - auto & solver = warpx.get_spectral_solver_fp(m_lev); - solver.ForwardTransform(m_lev, *rho, IdxAvg::rho_new); - solver.ApplyFilter(IdxAvg::rho_new); - solver.BackwardTransform(m_lev, *rho, IdxAvg::rho_new); + // Apply k-space filtering when using the PSATD solver + if (WarpX::maxwell_solver_id == MaxwellSolverAlgo::PSATD) + { + if (WarpX::use_kspace_filter) { + auto & solver = warpx.get_spectral_solver_fp(m_lev); + solver.ForwardTransform(m_lev, *rho, IdxAvg::rho_new); + solver.ApplyFilter(IdxAvg::rho_new); + solver.BackwardTransform(m_lev, *rho, IdxAvg::rho_new); + } } #endif diff --git a/Source/WarpX.cpp b/Source/WarpX.cpp index 927feb900..21cc5e4db 100644 --- a/Source/WarpX.cpp +++ b/Source/WarpX.cpp @@ -142,8 +142,8 @@ int WarpX::current_centering_noz = 2; bool WarpX::use_fdtd_nci_corr = false; bool WarpX::galerkin_interpolation = true; -bool WarpX::use_filter = false; -bool WarpX::use_kspace_filter = false; +bool WarpX::use_filter = true; +bool WarpX::use_kspace_filter = true; bool WarpX::use_filter_compensation = false; bool WarpX::serialize_ics = false; @@ -556,6 +556,12 @@ WarpX::ReadParameters () pp_warpx.query("n_buffer", n_buffer); pp_warpx.query("const_dt", const_dt); + // Filter currently not working with FDTD solver in RZ geometry: turn OFF by default + // (see https://github.com/ECP-WarpX/WarpX/issues/1943) +#ifdef WARPX_DIM_RZ + if (WarpX::maxwell_solver_id != MaxwellSolverAlgo::PSATD) WarpX::use_filter = false; +#endif + // Read filter and fill IntVect filter_npass_each_dir with // proper size for AMREX_SPACEDIM pp_warpx.query("use_filter", use_filter); @@ -568,12 +574,26 @@ WarpX::ReadParameters () filter_npass_each_dir[2] = parse_filter_npass_each_dir[2]; #endif + // TODO When k-space filtering will be implemented also for Cartesian geometries, + // this code block will have to be applied in all cases (remove #ifdef condition) #ifdef WARPX_DIM_RZ if (WarpX::maxwell_solver_id == MaxwellSolverAlgo::PSATD) { // With RZ spectral, only use k-space filtering use_kspace_filter = use_filter; use_filter = false; } + else // FDTD + { + // Filter currently not working with FDTD solver in RZ geometry + // (see https://github.com/ECP-WarpX/WarpX/issues/1943) + if (use_filter) + { + amrex::Print() << "\nWARNING:" + << "\nFilter currently not working with FDTD solver in RZ geometry:" + << "\nwe recommend setting warpx.use_filter = 0 in the input file.\n" + << std::endl; + } + } #endif pp_warpx.query("num_mirrors", num_mirrors); |