我有一个真实数据的3D数组,我想用一个轴上的DST或DCT和另外两个轴上的常规DFT进行转换。结果应该是一个包含这个转换系数的3D复数组。自定义3D(并行)FFTW转换可能吗?
你知道FFTW3软件包是否提供了这样一个例程 - 可能并行 - 开箱即用? FFTW3为所有三个方向上的简单3D DFT提供了这样的程序。
如果不是,你可能会对如何在C/C++中实现它的最佳方式有所暗示吗?
我天真的想法:DST/DCT的组装,然后在一些包装程序中沿着第一个轴进行2D实 - 复变换。然后,可以想到一维分解来实现并行性。二维将更好,但更多的工作。
PS: 该变换用于求解Navier-Stokes方程的谱方法。
你看过[FFTPACK](http://www.netlib.org/fftpack/)(注意这是一个旧的Fortran库,足够老,我认为它仍然是FORTRAN ....) –
谢谢您的帮助。是的,我确实这么做了。但是,FFTPACK比FFTW慢一点。此外,FFTW已经为所需的转换提供了所有构建模块,因此它只是如何组装它的问题。 – mrdy
@DavidBowling你是什么意思到老了? http://www.2decomp.org/,https://github.com/sdsc/p3dfft,... –