macro perrshunt
pushflags, noprompt, nomenu, nomessage
define(rshunt_PATH, @path) # remember current section
-base # goto the base of the branch-tree
-energy # compute stored energy
quantity= ere # ... we dont need to compute the
solution= @arg1 # energy in the magnetic field
doit # -- it has to be the same
# echo *** W_e of real part is @eenergy
define(ere_energy, @eenergy)
quantity= eim
doit
define(eim_energy, @eenergy)
define(etotenergy, eval(ere_energy+eim_energy) )
return
-lintegral # accelerating voltage
direction= z, component= z
startpoint= (0,0, @zmin)
length= auto
quantity= ere, doit
# echo *** vabs of real part is @vabs
define(V_ere_re, @vreal) define(V_ere_im, @vimag)
quantity= eim, doit
# echo *** vabs of imaginary part is @vabs
define(V_eim_re, @vreal) define(V_eim_im, @vimag)
return
define(vztotre, eval(V_ere_re-V_eim_im))
define(vztotim, eval(V_ere_im+V_eim_re))
define(vztotabs, eval((vztotre**2+vztotim**2)**0.5) )
define(rshunt_value, eval(vztotabs**2/(2*@pi*@frequency*(2*etotenergy))))
echo
echo *** mode number is @arg1
echo *** frequency is @frequency {Hz}
echo *** Shunt Impedance is rshunt_value {Ohms}
echo *** Shunt Impedance/m is eval(rshunt_value/@length) {Ohms/m}
# echo return path is : rshunt_PATH
rshunt_PATH # back to where we came from ...
undefine(rshunt_PATH)
popflags
endmacro