My experience is that 2-3 average number of iterations is very likely for
simple circuits (overdrives) but the problem is that the max number of
iterations can easily worsen on non linear component transition from linear
to off/saturated region.
Given the general well accepted rule to use a starting point the previous
sample value of the non linear current, care must be taken when the
component starts saturating and the i_NL(n-1) value could be not enough
close to the final solution. Better start at that point from a saturated
value (like 1 in the tannish function), but the choice to use such heuristic
always wastes some iterations since there is no way to predict what is gonna
happen AFAIK.

Things get more complicated when you use not a simple SISO tannish function
(which by the the KMethod and DKMethod - which is a derived application of
it - solve very easily for SISO nonlinearities with the trick of SHEARING a
PWL look up table, which is the method I prefer in terms of efficiency where
memory access is not a high cost and with only some muls/add you reach the
final value), BUT a MIMO like a triode or tetrode, especially if then blocks
are interconnected (a 3 stage preamp is technically a R6->R6 nonlinearity to
be solved with NR, not exactly an unpainful task, mainly due to the
potential cpu hog about inverting the jacobian).
A simple cathode bias stage with Miller cap using Koren's eqs can lead of
max 30 iterations in worst case analysis (which in my case was high voltage
on grid at 10kHz freq), considering bisection or other heuristics to get a
good initial value.

The thing about oversampling then is that the avg iteration number lowers,
but not the initial guess of the starting point, like someone said here.
This should be cleared out.

So, I would use sheared LUT for SIS (all diode based overdrives) and Newtown
Raphson for MIMO systems. I also have failed in using look up tables in
R2->R2 MIMO like the cech guys are doing, because the requirements for a
good resolution are too much memory and the LUT is useless if it requires a
recomputation of the KMatrix (i.e. depends on the knobs of the circuits): at
that point is much better to use iterative solvers.

M.

> -----Messaggio originale-----
> Da: music-dsp-boun...@music.columbia.edu [mailto:music-dsp-
> boun...@music.columbia.edu] Per conto di Urs Heckmann
> Inviato: lunedì 23 giugno 2014 08:37
> A: A discussion list for music-related DSP
> Oggetto: Re: [music-dsp] Simulating Valve Amps
> 
> 
> On 23.06.2014, at 16:37, robert bristow-johnson
> <r...@audioimagination.com> wrote:
> 
> > because it was claimed that a finite (and small) number of iterations
was
> sufficient.
> 
> Well, to be precise, all I claimed was an *average* of 2 iterations for a
given
> purpose, and with given means to optimise (e.g. vector registers). I did
so to
> underline that an implementation for real time use is possible. I had no
> intention of saying that any finite (and small) number of iterations was
> sufficient in any arbitrary case and condition - I can only speak about
the
> models that we have implemented and observed.
> 
> 
> --
> dupswapdrop -- the music-dsp mailing list and website:
> subscription info, FAQ, source code archive, list archive, book reviews,
dsp
> links http://music.columbia.edu/cmc/music-dsp
> http://music.columbia.edu/mailman/listinfo/music-dsp

--
dupswapdrop -- the music-dsp mailing list and website:
subscription info, FAQ, source code archive, list archive, book reviews, dsp 
links
http://music.columbia.edu/cmc/music-dsp
http://music.columbia.edu/mailman/listinfo/music-dsp

Reply via email to