Skip to content

File fftwhermitianpartners.h

File List > code_source > templat > include > TempLat > fft > external > fftw > fftwhermitianpartners.h

Go to the documentation of this file

#ifndef TEMPLAT_FFT_EXTERNAL_FFTW_FFTWHERMITIANPARTNERS_H
#define TEMPLAT_FFT_EXTERNAL_FFTW_FFTWHERMITIANPARTNERS_H

/* This file is part of TempLat, available at https://cosmolattice.github.io/templat .
   Copyright 2021-2026 The TempLat authors, see AUTHORS.md.
   Released under the MIT license, see LICENSE.md. */

// File info: Main contributor(s): Wessel Valkenburg, Year: 2019

#include <memory>

#include "TempLat/util/exception.h"
#include "TempLat/lattice/memory/memorylayouts/hermitianredundancy.h"
#include "TempLat/lattice/memory/memorylayouts/hermitianpartners.h"

namespace TempLat
{

  MakeException(FFTWHermitianPartnersWrongSizeException);

  template <size_t NDim> class FFTWHermitianPartners : public HermitianPartners<NDim>
  {
  public:
    static HermitianPartners<NDim> create(const device::IdxArray<NDim> &globalSizes)
    {
      auto instance = HermitianPartners<NDim>(globalSizes);
      instance.setMode(HermitianPartnersMode::fftw);
      return instance;
    }

    FFTWHermitianPartners() = delete;
  };

} // namespace TempLat

#endif