From be2aa67bc39d2e0b895738a94f24d5e89548f653 Mon Sep 17 00:00:00 2001 From: Jaron Kent-Dobias Date: Sat, 19 Apr 2025 17:07:05 -0300 Subject: Back to the old scheme --- log-fourier_integrator.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/log-fourier_integrator.cpp b/log-fourier_integrator.cpp index 9e9e46d..d7486e4 100644 --- a/log-fourier_integrator.cpp +++ b/log-fourier_integrator.cpp @@ -94,18 +94,22 @@ int main(int argc, char* argv[]) { Real ΔC₀ = 100; unsigned it = 0; while (ΔC > ε) { + std::vector dfC(N); std::vector RddfC(N); for (unsigned n = 0; n < N; n++) { RddfC[n] = Rₜ[n] * ddf(λ, p, s, Cₜ[n]); + dfC[n] = df(λ, p, s, Cₜ[n]); } std::vector RddfCt = fft.fourier(RddfC, false); + std::vector dfCt = fft.fourier(dfC, true); std::vector Ȓₜ₊₁(N); std::vector Ĉₜ₊₁(N); for (unsigned n = 0; n < N; n++) { Ȓₜ₊₁[n] = (1.0 + pow(β, 2) * RddfCt[n] * Ȓₜ[n]) / (μ + 1i * fft.ν(n)); - Ĉₜ₊₁[n] = - 2 * Γ₀ * Ȓₜ₊₁[n].imag() / (1 + pow(τ₀ * fft.ν(n), 2)) / fft.ν(n); +// Ĉₜ₊₁[n] = - 2 * Γ₀ * Ȓₜ₊₁[n].imag() / (1 + pow(τ₀ * fft.ν(n), 2)) / fft.ν(n); + Ĉₜ₊₁[n] = (2 * Γ₀ * std::conj(Ȓₜ₊₁[n]) / (1 + pow(τ₀ * fft.ν(n), 2)) + pow(β, 2) * (RddfCt[n] * Ĉₜ[n] + dfCt[n] * std::conj(Ȓₜ₊₁[n]))) / (μ + 1i * fft.ν(n)); } std::vector Rₜ₊₁ = fft.inverse(Ȓₜ₊₁); -- cgit v1.2.3-70-g09d2