aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/SpectralSolver/SpectralFieldData.cpp
diff options
context:
space:
mode:
authorGravatar Remi Lehe <remi.lehe@normalesup.org> 2019-04-19 21:50:52 -0700
committerGravatar Remi Lehe <remi.lehe@normalesup.org> 2019-04-23 12:43:53 -0700
commitd96e23d67f6b181657169453daef7c37cb62e635 (patch)
tree2fded957a5a26cef71fd2e2501ae178f0316b60c /Source/FieldSolver/SpectralSolver/SpectralFieldData.cpp
parente54e25a2cf23007bc8132b87079664fcf891fdfb (diff)
downloadWarpX-d96e23d67f6b181657169453daef7c37cb62e635.tar.gz
WarpX-d96e23d67f6b181657169453daef7c37cb62e635.tar.zst
WarpX-d96e23d67f6b181657169453daef7c37cb62e635.zip
Implement spectral solver in 2D
Diffstat (limited to '')
-rw-r--r--Source/FieldSolver/SpectralSolver/SpectralFieldData.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/Source/FieldSolver/SpectralSolver/SpectralFieldData.cpp b/Source/FieldSolver/SpectralSolver/SpectralFieldData.cpp
index 595cbac16..25c08a367 100644
--- a/Source/FieldSolver/SpectralSolver/SpectralFieldData.cpp
+++ b/Source/FieldSolver/SpectralSolver/SpectralFieldData.cpp
@@ -34,19 +34,24 @@ SpectralFieldData::SpectralFieldData( const BoxArray& realspace_ba,
// Add cuFFT-specific code
#else
// Create FFTW plans
- forward_plan[mfi] = fftw_plan_dft_3d(
- // Swap dimensions: AMReX data is Fortran-order, but FFTW is C-order
- bx.length(2), bx.length(1), bx.length(0),
+ forward_plan[mfi] =
+#if (AMREX_SPACEDIM == 3) // Swap dimensions: AMReX data is Fortran-order, but FFTW is C-order
+ fftw_plan_dft_3d( bx.length(2), bx.length(1), bx.length(0),
+#else
+ fftw_plan_dft_2d( bx.length(1), bx.length(0),
+#endif
reinterpret_cast<fftw_complex*>( tmpRealField[mfi].dataPtr() ),
reinterpret_cast<fftw_complex*>( tmpSpectralField[mfi].dataPtr() ),
FFTW_FORWARD, FFTW_ESTIMATE );
- backward_plan[mfi] = fftw_plan_dft_3d(
- // Swap dimensions: AMReX data is Fortran-order, but FFTW is C-order
- bx.length(2), bx.length(1), bx.length(0),
+ backward_plan[mfi] =
+#if (AMREX_SPACEDIM == 3) // Swap dimensions: AMReX data is Fortran-order, but FFTW is C-order
+ fftw_plan_dft_3d( bx.length(2), bx.length(1), bx.length(0),
+#else
+ fftw_plan_dft_2d( bx.length(1), bx.length(0),
+#endif
reinterpret_cast<fftw_complex*>( tmpSpectralField[mfi].dataPtr() ),
reinterpret_cast<fftw_complex*>( tmpRealField[mfi].dataPtr() ),
FFTW_BACKWARD, FFTW_ESTIMATE );
- // TODO: Add 2D code
// TODO: Do real-to-complex transform instead of complex-to-complex
// TODO: Let the user decide whether to use FFTW_ESTIMATE or FFTW_MEASURE
#endif