*spice script
*#save   v(sn:xgft) v(sg:xgft)
*#save v(iy:xgft) v(ix:xgft) v(y:xgft) v(x:xgft) v(w:xgft)
*#save v(ui:xgft)  v(uo:xgft) 
#simulation
#mprint
if isdef(v(sn:xgft))
constants.Hok = isdef(v(ui:xgft))
newplot result default
* initial state is 0 0 0, voltage injection, no nulls
result.t=v(iy:xgft)/ v(ix:xgft)
setplot result
if constants.Hok
**** now the output null stuff
alter @vsn:xgft[dc] = 1
alter @vsg:xgft[dc] = 0
* null uo
#simulation
#mprint
result.Tn =  v(iy:xgft)/ v(ix:xgft)
alter @vsn:xgft[dc] = 0
alter @vsg:xgft[dc] = 1
*null iy
#simulation
#mprint
result.Hinf = v(uo:xgft) / v(ui:xgft)

alter @vsn:xgft[dc] = 0
alter @vsg:xgft[dc] = 1
alter @vny:xgft[dc] = 0
* null  ix 
#simulation
#mprint
result.hix = v(uo:xgft) / v(ui:xgft)
alter @vsn:xgft[dc] = 0
alter @vsg:xgft[dc] = 0
alter @vin:xgft[acmag] = 1
alter @i1:xgft[acmag] = 0
* no null input ac 1 ac13
#simulation
#mprint
result.h = v(uo:xgft) / v(ui:xgft)
setplot result
hzero = hix
hzeroc = hinf*t/tn
d=t/(1+t)
do=1/(1+t)
hinfd=hinf*d
hzerodo=hzero*do
dn=1+1/tn
h1=hinfd*dn
h2=hinfd+hzerodo
tp=t*dn/(1-t/tn)
dp=tp/(1+tp)
h3=hinf*dp
end
else
printstatus -t "  You need to name the GFT subcircuit Xgft "
printstatus -t
end


