diff options
author | 2019-04-19 21:50:52 -0700 | |
---|---|---|
committer | 2019-04-23 12:43:53 -0700 | |
commit | d96e23d67f6b181657169453daef7c37cb62e635 (patch) | |
tree | 2fded957a5a26cef71fd2e2501ae178f0316b60c /Source/FieldSolver/SpectralSolver/SpectralFieldData.cpp | |
parent | e54e25a2cf23007bc8132b87079664fcf891fdfb (diff) | |
download | WarpX-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.cpp | 19 |
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 |