summaryrefslogtreecommitdiff
path: root/fourier.cpp
diff options
context:
space:
mode:
authorJaron Kent-Dobias <jaron@kent-dobias.com>2025-04-09 16:52:26 -0300
committerJaron Kent-Dobias <jaron@kent-dobias.com>2025-04-09 16:52:26 -0300
commitfc7d01ebfb5682df2fbbd6c668cce1569e0d9df5 (patch)
tree75465d582fcbb971e5798558d8145f91e95a3cb0 /fourier.cpp
parenta87589bae5cd5f8b530a857f51b141b7b781d54d (diff)
downloadcode-fc7d01ebfb5682df2fbbd6c668cce1569e0d9df5.tar.gz
code-fc7d01ebfb5682df2fbbd6c668cce1569e0d9df5.tar.bz2
code-fc7d01ebfb5682df2fbbd6c668cce1569e0d9df5.zip
Rewrote the original integrator to use a new approach.HEADmaster
Diffstat (limited to 'fourier.cpp')
-rw-r--r--fourier.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/fourier.cpp b/fourier.cpp
index 07f8fdc..bc4b633 100644
--- a/fourier.cpp
+++ b/fourier.cpp
@@ -64,6 +64,25 @@ std::vector<Complex> FourierTransform::fourier() {
return ĉ;
}
+std::vector<Real> FourierTransform::convolve(const std::vector<Real>& Γh, const std::vector<Real>& R) {
+ a[0] = 0;
+ for (unsigned i = 1; i < n; i++) {
+ a[i] = R[i];
+ a[2 * n - i] = -R[i];
+ }
+ fftw_execute(plan_r2c);
+ for (unsigned i = 1; i < n + 1; i++) {
+ â[i] *= Γh[i] * (Δτ * M_PI);
+ }
+ fftw_execute(plan_c2r);
+ std::vector<Real> dC(n);
+ for (unsigned i = 0; i < n; i++) {
+ dC[i] = a[i] * (Δω / (2 * M_PI));
+ }
+
+ return dC;
+}
+
std::vector<Real> FourierTransform::inverse(const std::vector<Complex>& ĉ) {
for (unsigned i = 0; i < n + 1; i++) {
â[i] = ĉ[i];