Line data Source code
1 : /**********************************************************************/ 2 : /* DO NOT MODIFY THIS HEADER */ 3 : /* MAGPIE - Mesoscale Atomistic Glue Program for Integrated Execution */ 4 : /* */ 5 : /* Copyright 2017 Battelle Energy Alliance, LLC */ 6 : /* ALL RIGHTS RESERVED */ 7 : /**********************************************************************/ 8 : #ifdef FFTW3_ENABLED 9 : 10 : #pragma once 11 : 12 : #include "FFTBufferBase.h" 13 : #include "PerfGraphInterface.h" 14 : 15 : #include "fftw3.h" 16 : 17 : template <typename T> 18 : class FFTWBufferBase; 19 : 20 : /** 21 : * FFTW specific interleaved data buffer base class 22 : */ 23 : template <typename T> 24 : class FFTWBufferBase : public FFTBufferBase<T> 25 : { 26 : public: 27 : FFTWBufferBase(const InputParameters & parameters); 28 : ~FFTWBufferBase(); 29 : 30 : // transforms 31 : void forwardRaw() override; 32 : void backwardRaw() override; 33 : 34 : // scaling 35 93 : Real forwardScale() override { return _scaling; } 36 : 37 : protected: 38 : ///@{ FFTW plans 39 : fftw_plan _forward_plan; 40 : fftw_plan _backward_plan; 41 : ///@} 42 : 43 : ///@{ timers 44 : PerfID _perf_plan; 45 : PerfID _perf_fft; 46 : ///@} 47 : 48 : /// scale factor 49 : Real _scaling; 50 : 51 : usingFFTBufferBaseMembers; 52 : }; 53 : 54 : #endif