summaryrefslogtreecommitdiff
path: root/log-fourier_integrator.cpp
diff options
context:
space:
mode:
authorJaron Kent-Dobias <jaron@kent-dobias.com>2025-05-15 09:38:24 -0300
committerJaron Kent-Dobias <jaron@kent-dobias.com>2025-05-15 09:38:24 -0300
commit461e93ad25b61bc5e1ce8aaf9113fc4fd7c4b626 (patch)
tree33641216b471527ac8c878d9100bd329c3372cab /log-fourier_integrator.cpp
parent0968903c4c0a64608c8ba7449d4fcf64614523fc (diff)
downloadcode-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.cpp10
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ₜ << " " << γ;
}