将 FFTW 与反周期边界条件一起使用

Using FFTW with anti-periodic boundary conditions

提问人:Peter 提问时间:8/9/2023 更新时间:8/9/2023 访问量:68

问:

我正在C++编写晶格规范理论模拟,为了计算可观察性,我需要计算具有反周期边界条件的光子场A_mu的 3d 拉普拉斯算子的格林函数。所以允许的反周期动量集是 (pi/L)(2k+1),k ∈ (0..L-1)。我用傅里叶变换编写了并行代码,但它太慢了,无法进行计算。我想知道是否可以使用 FFTW(以及一般的 DFT)来完成此类任务?

C++ FFT FFTW

评论

0赞 Peter 8/9/2023
@CrisLuengo 它太模糊了,没有用。
0赞 Peter 8/9/2023
@CrisLuengo 反周期意味着 f(x+L) = -f(x),它越过边界时是变化符号
0赞 Yakk - Adam Nevraumont 8/9/2023
如果你的傅里叶变换是反周期的,它只是意味着对信号有贡献的相位/频率在周期L中都是反周期的,而周期L中的所有周期分量都可以证明为零。安排您的 FFT,使周期信号每 2 次输入一次并跳过计算它们?如果我仍然能在脑海中掌握傅里叶变换(不太可能,已经几十年了),那应该是具有适当对齐输入的偶数/奇数输出吗?
0赞 Cris Luengo 8/9/2023
@Yakk DFT中的所有频率都是周期性的,没有一个是反周期性的。

答:

0赞 Cris Luengo 8/9/2023 #1

将数组的大小增加一倍,从 到 ,并使用反周期条件填充后半部分。在多维设置中,您可以依次对每个维度执行此操作。您现在可以计算 FFT,根据需要对其进行操作,并计算 IFFT。结果的前半部分是对应于您的域的部分,另一半是您忽略的部分。L2*Lf(x+L) = -f(x)

根据您在频域中应用的运算,您可能会获得更小的变换大小:例如,如果您需要在每个数据点周围进行采样以获得合理的近似值,那么您可以在每一侧用样本填充数据(左侧的填充也可以放在数组的末尾, 因为 FFT 假设周期性)。这会留下从填充数组中最左边的值到最右边的边缘效果,但这种边缘效应发生在远离域的样本中,因此应该对它影响不大。如果接近 或更大,则将数组大小加倍是更简单的解决方案。KKKKL/2