diff options
author | Jaron Kent-Dobias <jaron@kent-dobias.com> | 2025-05-15 09:38:24 -0300 |
---|---|---|
committer | Jaron Kent-Dobias <jaron@kent-dobias.com> | 2025-05-15 09:38:24 -0300 |
commit | 461e93ad25b61bc5e1ce8aaf9113fc4fd7c4b626 (patch) | |
tree | 33641216b471527ac8c878d9100bd329c3372cab /log-fourier_integrator.cpp | |
parent | 0968903c4c0a64608c8ba7449d4fcf64614523fc (diff) | |
download | code-461e93ad25b61bc5e1ce8aaf9113fc4fd7c4b626.tar.gz code-461e93ad25b61bc5e1ce8aaf9113fc4fd7c4b626.tar.bz2 code-461e93ad25b61bc5e1ce8aaf9113fc4fd7c4b626.zip |
New way to adjust γ
Diffstat (limited to 'log-fourier_integrator.cpp')
-rw-r--r-- | log-fourier_integrator.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/log-fourier_integrator.cpp b/log-fourier_integrator.cpp index b4b705f..b819456 100644 --- a/log-fourier_integrator.cpp +++ b/log-fourier_integrator.cpp @@ -132,6 +132,7 @@ int main(int argc, char* argv[]) { while (β < βₘₐₓ) { Real γ = γ₀; Real ΔCₜ = 100; + Real ΔCₜ₋₁ = 101; while (ΔCₜ > ε) { auto [RddfCt, dfCt] = RddfCtdfCt(fft, Cₜ, Rₜ, p, s, λ); @@ -183,6 +184,15 @@ int main(int argc, char* argv[]) { Ȓₜ[i] += γ * (Ȓₜ₊₁[i] - Ȓₜ[i]); } + if (ΔCₜ > ΔCₜ₋₁ * 5) { + γ = std::max(γ / 2, (Real)1e-2); + } + if (ΔCₜ < ΔCₜ₋₁) { + γ = std::min(1.001 * γ, (Real)1); + } + + ΔCₜ₋₁ = ΔCₜ; + std::cerr << "\x1b[2K" << "\r"; std::cerr << β << " " << Δβ << " " << μₜ << " " << ΔCₜ << " " << γ; } |