summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaron Kent-Dobias <jaron@kent-dobias.com>2025-04-19 17:07:05 -0300
committerJaron Kent-Dobias <jaron@kent-dobias.com>2025-04-19 17:07:05 -0300
commitbe2aa67bc39d2e0b895738a94f24d5e89548f653 (patch)
tree33d2fe4d7862e602eb487d097410539c78d16e03
parent4d350279c9ba8e0b02a4b853b41e5bf8303083dc (diff)
downloadcode-be2aa67bc39d2e0b895738a94f24d5e89548f653.tar.gz
code-be2aa67bc39d2e0b895738a94f24d5e89548f653.tar.bz2
code-be2aa67bc39d2e0b895738a94f24d5e89548f653.zip
Back to the old scheme
-rw-r--r--log-fourier_integrator.cpp6
1 files changed, 5 insertions, 1 deletions
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<Real> dfC(N);
std::vector<Real> 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<Complex> RddfCt = fft.fourier(RddfC, false);
+ std::vector<Complex> dfCt = fft.fourier(dfC, true);
std::vector<Complex> Ȓₜ₊₁(N);
std::vector<Complex> Ĉₜ₊₁(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<Real> Rₜ₊₁ = fft.inverse(Ȓₜ₊₁);