[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Streamer modeling



Original poster: "Antonio Carlos M. de Queiroz" <acmdq@xxxxxxxxxx>

Tesla list wrote:
Original poster: Terry Fritz <teslalist@xxxxxxxxxxxxxxxxxxxxxxx>
Hi Antonio,
At 08:14 PM 6/30/2005, you wrote:

....


It's simple to change the code to allow time-varying elements.

I just "tore the guts" out of scan Tesla to do it ;-)) But the resulting code is much cleaner now ;-))
http://drsstc.com/~terrell/modeling/ScanTesla740.ZIP
NOT a well tested version!!!

There are two details that change in the simulation of a time-varying
network:
The capacitor charges C(t)v(t) shall be simulated, instead of the capacitor
voltages. Otherwise terms dC/dt appear in the equations.
(For inductors, it's simpler to simulate fluxes L(t)i(t), but in this
case the inductors are fixed.)
The updating equation uses information from the present time interval
(t+dt) and from the past time interval (t). Two sets of state equations appear:
X(t+dt)=([I]-(dt/2)*[A(t+dt)])^(-1) (X(t)+(dt/2)*[A(t)]*X(t)+(dt/2)*(B(t)*vin(t)+B(t+dt)*vin(t+dt)))
The code that I am testing is available at:
http://www.coe.ufrj.nr/~acmq/programs/DRSSTCTV.C


If one enters a positive value for Cload increment (C3_inc) it works normally. But if the value is negative, it simulates a streamer dynamic load with C3_start as a "seed" value. The code will skip the time wasting stuff when it can... It just skips redoing the A matrix stuff if the C3 variable is not changing all the time. So the program works just like before if C3 is not dynamic with the same fast speed...

My code also avoids recomputing the inverse at every step, just regenerating it when something changes.

I found that it is hard to get the streamer load "started"!!!! If C3 starts out as zero, the load power is zero and it never starts.... I fiddled with it and this is the best I could come up with at 12:30 am tonight ;-))

My code is using a breakout voltage to start the streamer. Maybe some combination of streamer power and breakout voltage is the correct mechanism.

// Dynamic streamer model****************
LeaderLength = 2.4*sqrt(Eload*BPS);
if (C3_inc < 0)
{
if (LeaderLength <= 30.0) {C3 = 0.06666666667*LeaderLength*1e-12;} else {C3 = (0.15*LeaderLength-0.25)*1e-12;}
if (C3 < C3_start) C3 = C3_start;
}
// Dynamic streamer model****************

Note that in order to conserve charge, when a capacitor changes its voltage must change too, to keep the same charge. The simulation of charges instead of voltages takes care of this automatically. It seems possible to simulate the voltages and just adjust the capacitor voltages too when the capacitors change, keeping C*V constant. But two sets of state equations must be used in the update relation at each change.

C2 should "really" never change... I try to mess only with C3... Maybe make an arm waving "corona capacitance" and stuff ;-))

I am considering that the streamer capacitance is equally distributed between the two halves of the streamer. So, I increase C2 and C3 by equal amounts. Not exact, but I think that is a reasonable assumption.

Antonio Carlos M. de Queiroz