From 27f5b84c07f4b156bc1562468f321f42b7773081 Mon Sep 17 00:00:00 2001 From: Daniel Schwen Date: Fri, 24 Jan 2020 10:57:24 -0700 Subject: [PATCH] Higher order type transforms (#401) --- src/executioners/SpectralExecutionerBase.C | 14 +++++++-- src/userobjects/FFTWBufferBase.C | 35 ++++++++++++++++++---- 2 files changed, 42 insertions(+), 7 deletions(-) diff --git a/src/executioners/SpectralExecutionerBase.C b/src/executioners/SpectralExecutionerBase.C index 0f39cbfd..13ad4c78 100644 --- a/src/executioners/SpectralExecutionerBase.C +++ b/src/executioners/SpectralExecutionerBase.C @@ -56,13 +56,23 @@ SpectralExecutionerBase::execute() _fe_problem.outputStep(EXEC_INITIAL); _fe_problem.advanceState(); - mooseInfo("SpectralExecutionerBase::execute()"); - auto & c = getFFTBuffer("c"); c.forward(); + auto & R = getFFTBuffer("R"); + R.forward(); + _time_step = 1; _fe_problem.execute(EXEC_FINAL); _time = _time_step; _fe_problem.outputStep(EXEC_FINAL); + _fe_problem.advanceState(); + + c.backward(); + R.backward(); + + _time_step = 2; + _fe_problem.execute(EXEC_FINAL); + _time = _time_step; + _fe_problem.outputStep(EXEC_FINAL); } diff --git a/src/userobjects/FFTWBufferBase.C b/src/userobjects/FFTWBufferBase.C index fdeafc52..420e419e 100644 --- a/src/userobjects/FFTWBufferBase.C +++ b/src/userobjects/FFTWBufferBase.C @@ -21,11 +21,38 @@ FFTWBufferBase::FFTWBufferBase(const InputParameters & parameters) _perf_fft(this->registerTimedSection("fftw_execute", 2)) { // create plans - std::vector kind(_dim, FFTW_R2HC); { TIME_SECTION(_perf_plan); - _forward_plan = fftw_plan_r2r(_dim, _grid.data(), _start, _start, kind.data(), FFTW_ESTIMATE); - _backward_plan = fftw_plan_r2r(_dim, _grid.data(), _start, _start, kind.data(), FFTW_ESTIMATE); + + std::vector forward_kind(_dim, FFTW_R2HC); + _forward_plan = fftw_plan_many_r2r(_dim, + _grid.data(), + _how_many, + _start, + _grid.data(), + _stride, + 1, + _start, + _grid.data(), + _stride, + 1, + forward_kind.data(), + FFTW_ESTIMATE); + + std::vector backward_kind(_dim, FFTW_HC2R); + _backward_plan = fftw_plan_many_r2r(_dim, + _grid.data(), + _how_many, + _start, + _grid.data(), + _stride, + 1, + _start, + _grid.data(), + _stride, + 1, + backward_kind.data(), + FFTW_ESTIMATE); } } @@ -41,8 +68,6 @@ template void FFTWBufferBase::forward() { - mooseInfo("FFTWBufferBase::forward()"); - // execute plan { TIME_SECTION(_perf_fft);