#ifndef __OPENMM_HIPHIPFFT3D_H__ #define __OPENMM_HIPHIPFFT3D_H__ /* -------------------------------------------------------------------------- * * OpenMM * * -------------------------------------------------------------------------- * * This is part of the OpenMM molecular simulation toolkit. * * See https://openmm.org/development. * * * * Portions copyright (c) 2009-2026 Stanford University and the Authors. * * Contributors: * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU Lesser General Public License as published * * by the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public License * * along with this program. If not, see . * * -------------------------------------------------------------------------- */ #include "openmm/common/windowsExportCommon.h" #include "openmm/common/FFT3D.h" #include "openmm/common/ArrayInterface.h" #ifdef OPENMM_HIP_WITH_HIPFFT #if __has_include() #include #else #include #endif #endif namespace OpenMM { class HipContext; class OPENMM_EXPORT_COMMON HipHipFFT3D : public FFT3DImpl { public: HipHipFFT3D(HipContext& context, int xsize, int ysize, int zsize, bool realToComplex); ~HipHipFFT3D(); void execFFT(ArrayInterface& in, ArrayInterface& out, bool forward=true) override; private: HipContext& context; bool realToComplex; bool doublePrecision; #ifdef OPENMM_HIP_WITH_HIPFFT hipfftHandle forwardPlan; hipfftHandle backwardPlan; #endif }; } // namespace OpenMM #endif // __OPENMM_HIPHIPFFT3D_H__