In [1]:
mismatch, x0, Vmag, pq, ref, Yf, Yt, ix_Vmag, ix_theta = init_mismatch(ps, true, PartFactFlag, true);
# find the minimum distance to solvability
xm, Jm, beta = find_Sm(mismatch,x0,verbose = verbose);
In [12]:
x, converged = nrsolve(mismatch, x0, verbose=verbose, linesearch="exact")
if converged == true
dist = 0
println("The initial power flow converged.")
end
g(x) = mismatch(x)[1]
Jac(x) = mismatch(x, NeedJac=true)[2]
S = mismatch(x0)[3]
# find the left eigen vector of jacobian
w = get_left_eigv(Jac(x))
F(x) = 0.5*dot(g(x),g(x))
F_new = F(x)
if verbose
println("F(x): $F_new")
end
In [20]:
S_i = S + sum(g(x).*w)*w
# S_i = S_i + [0,-0.05,-0.05]
mismatch_new(x;args...) = mismatch(x, Si=vec(S_i);args...)
x, converged = nrsolve(mismatch_new, x0, verbose=true, linesearch="exact")
w = get_left_eigv(Jac(x))
Out[20]:
In [21]:
S_i
Out[21]:
In [22]:
w
Out[22]:
In [6]:
mismatch(x, Si=vec(S_i))
In [25]:
include("test/test_power_flow.jl")
In [26]:
beta, beta_P, beta_Q, beta_S, beta_C = find_sens_fact(ps, PartFactFlag);
println("beta: $beta")
println("beta_P: $beta_P")
println("beta_Q: $beta_Q")
println("beta_S: $beta_S")
println("beta_C: $beta_C")
In [42]:
beta, beta_P, beta_Q, beta_S, beta_C = find_sens_fact(ps, PartFactFlag);
println("beta: $beta")
println("beta_P: $beta_P")
println("beta_Q: $beta_Q")
println("beta_S: $beta_S")
println("beta_C: $beta_C")
In [31]:
PartFactFlag = false
mismatch, x0, Vmag, pq, ref, Yf, Yt, ix_Vmag, ix_theta = init_mismatch(ps, true, PartFactFlag, true);
# find the minimum distance to solvability
xm, Jm, beta = find_Sm(mismatch,x0,verbose = verbose);
In [32]:
xm
mismatch(xm)[1]
Out[32]:
In [30]:
xm
mismatch(xm)[1]
Out[30]:
In [37]:
PartFactFlag = true
Out[37]:
In [38]:
PartFactFlag
Out[38]:
In [43]:
-beta/beta_S[5]
Out[43]:
In [51]:
psnew = deepcopy(ps)
f = -.795
# f = -beta/beta_S[5]
ϕ = atan(psnew.shunt[2,:Q]/psnew.shunt[2,:P])
psnew.shunt[2,:P] = psnew.shunt[2,:P] + f*100*cos(ϕ)
psnew.shunt[2,:Q] = psnew.shunt[2,:Q] + f*100*sin(ϕ)
#psnew.shunt[2,:P] = psnew.shunt[2,:P] + actual_f*100
acpf!(psnew, PartFactFlag = PartFactFlag)
psnew.shunt
Out[51]:
In [123]:
psnew = deepcopy(ps)
#actual_f = -3.597
f = -beta/beta_S[5]
ϕ = atan(psnew.shunt[2,:Q]/psnew.shunt[2,:P])
psnew.shunt[2,:P] = psnew.shunt[2,:P] + f*100*cos(ϕ)
psnew.shunt[2,:Q] = psnew.shunt[2,:Q] + f*100*sin(ϕ)
#psnew.shunt[2,:P] = psnew.shunt[2,:P] + actual_f*100
acpf!(psnew)
In [125]:
beta2, beta_P2, beta_Q2, beta_S2, beta_C2 = find_sens_fact(psnew, PartFactFlag);
println("beta: $beta2")
println("beta_P: $beta_P2")
println("beta_Q: $beta_Q2")
println("beta_S: $beta_S2")
println("beta_C: $beta_C2")
In [133]:
psnew.shunt
Out[133]:
In [128]:
f2 = -beta2/beta_S2[5]
Out[128]:
In [146]:
psnew2 = deepcopy(psnew)
f2 = -1.204
psnew2.shunt[2,:P] = psnew.shunt[2,:P] + f2*100*cos(ϕ)
psnew2.shunt[2,:Q] = psnew.shunt[2,:Q] + f2*100*sin(ϕ)
#psnew.shunt[2,:P] = psnew.shunt[2,:P] + actual_f*100
acpf!(psnew2)
In [149]:
(-1.046 - (-1.204))*100/1.204
Out[149]:
In [109]:
(f - actual_f)*100/actual_f
Out[109]:
In [110]:
f
Out[110]:
In [111]:
actual_f
Out[111]:
In [116]:
f
Out[116]:
In [ ]: