From 5881ab339cede18b53480d633e9d94bd17ac8f37 Mon Sep 17 00:00:00 2001 From: Damien Zammit Date: Fri, 4 Dec 2020 11:17:35 +1100 Subject: ZamTube: Optimise Newton-Raphson initial guess and lower the epsilon threshold DSP load goes down about 3-4% --- plugins/ZamTube/triode.cpp | 5 +++-- plugins/ZamTube/triode.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/plugins/ZamTube/triode.cpp b/plugins/ZamTube/triode.cpp index ac5ff6e..a1f9af2 100644 --- a/plugins/ZamTube/triode.cpp +++ b/plugins/ZamTube/triode.cpp @@ -6,18 +6,19 @@ using std::abs; #define DUMP(x) x T Triode::compute(T a, T R, T Vg, T Vk) { - T VakGuess = 100.; T Vgk = Vg - Vk; + T VakGuess = -mu * Vgk; T Vak = VakGuess; int iteration = 0; T err = 1e6; + T b; for (iteration = 0; (fabs(err)/fabs(Vak) > EPSILON) && (iteration <= ITER); iteration++){ VakGuess = iterateNewtonRaphson(Vak, TOLERANCE, Vgk, a, R); err = Vak - VakGuess; Vak = VakGuess; } - T b = Vak - R*getIa(Vgk, Vak); + b = Vak - R*getIa(Vgk, Vak); //printf("Vgate=%f Vk=%f Vgk=%f b=%f\n", Vgate, Vk, Vgk, b); return b; diff --git a/plugins/ZamTube/triode.h b/plugins/ZamTube/triode.h index 2f678a0..9db4d8f 100644 --- a/plugins/ZamTube/triode.h +++ b/plugins/ZamTube/triode.h @@ -21,7 +21,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #include -#define EPSILON 1e-9 +#define EPSILON 1e-8 #define ITER 50 #define TOLERANCE 1e-6 -- cgit v1.2.3