Commit 0d80637e by dongshufeng

refactor: add run pf file

parent 13b73a46
......@@ -180,9 +180,9 @@ dependencies = [
[[package]]
name = "cc"
version = "1.2.27"
version = "1.2.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc"
checksum = "5c1599538de2394445747c8cf7935946e3cc27e9625f889d979bfb2aaf569362"
dependencies = [
"shlex",
]
......@@ -1188,6 +1188,17 @@ dependencies = [
]
[[package]]
name = "io-uring"
version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013"
dependencies = [
"bitflags",
"cfg-if",
"libc",
]
[[package]]
name = "itoa"
version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
......@@ -1272,6 +1283,17 @@ dependencies = [
]
[[package]]
name = "mio"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c"
dependencies = [
"libc",
"wasi 0.11.1+wasi-snapshot-preview1",
"windows-sys 0.59.0",
]
[[package]]
name = "nalgebra"
version = "0.33.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
......@@ -1955,12 +1977,16 @@ dependencies = [
[[package]]
name = "tokio"
version = "1.45.1"
version = "1.46.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779"
checksum = "0cc3a2344dafbe23a245241fe8b09735b521110d30fcefbbd5feb1797ca35d17"
dependencies = [
"backtrace",
"io-uring",
"libc",
"mio",
"pin-project-lite",
"slab",
]
[[package]]
......
......@@ -7,32 +7,6 @@
#include ../lib/make_jac.txt
#include ../lib/make_sdzip.txt
#include ../lib/make_sbus.txt
#include ../lib/runpf.txt
// get bus index lists of each type of bus
// get generator status
// bus_gen_status = zeros(size(bus, 1), 1);
// bus_gen_status(gen(:, GEN_BUS)) = gen(:, GEN_STATUS) > 0;
nb = size(bus, 0);
ng = size(gen, 0);
Cg = sparse(slice(gen, [0], [GEN_BUS-1,GEN_BUS]), range(0,ng - 1), slice(gen, [0], [GEN_STATUS-1,GEN_STATUS]) > 0, nb, ng); // gen connection matrix
// element i, j is 1 if, generator j at bus i is ON
bus_gen_status = Cg * ones(ng, 1); // number of generators at each bus that are ON
// form index lists for slack, PV, and PQ buses
bus_type = slice(bus, [0], [BUS_TYPE-1,BUS_TYPE]); // bus type column
ref = find(bus_type == REF && bus_gen_status); // reference bus index
pv = find(bus_type == PV && bus_gen_status); // PV bus indices
pq = find(bus_type == PQ || ~~bus_gen_status); // PQ bus indices
// initial state
// V0 = ones(size(bus, 1), 1); // flat start
V0 = slice(bus, [0], [VM-1,VM]) .* exp(c(0,1) * pi/180 * slice(bus, [0], [VA-1,VA]));
vcb = ones(size(V0)); // create mask of voltage-controlled buses
//vcb(pq) = 0; // exclude PQ buses
//k = find(vcb(gbus)); // in-service gens at v-c buses
//V0(gbus(k)) = gen(on(k), VG) ./ abs(V0(gbus(k))).* V0(gbus(k));
Ybus = make_y_bus(baseMVA, bus, branch);
r = make_sbus(baseMVA, bus, gen, 1, 1, 1);
return r;
\ No newline at end of file
return runpf();
\ No newline at end of file
......@@ -93,13 +93,7 @@ fn dSbus_dV(Ybus, V, vcart) {
Ibus = Ybus * V;
diagV = diag(V);
diagIbus = diag(Ibus);
// RustScript use ~~ means not
println(vcart);
if ~~vcart {
diagVnorm = diag(V./abs(V));
println("dSbus_dV: vcart is false, using polar coordinates");
println(diagVnorm);
}
if vcart {
dSbus_dV1 = conj(diagIbus) + diagV * conj(Ybus); // dSbus/dVr
dSbus_dV2 = c(0,1) * (conj(diagIbus) - diagV * conj(Ybus)); // dSbus/dVi
......
......@@ -34,6 +34,6 @@ fn make_sbus(baseMVA, bus, gen, mpopt, Vm, Sg) {
on = find(slice(gen, [0], [GEN_STATUS-1, GEN_STATUS]) > 0); // which generators are on?
gbus = get_multi(slice(gen, [0], [GEN_BUS-1, GEN_BUS]), on) - 1; // what buses are they at?
ngon = size(on, 0);
Cg = sparse(gbus, range(0,ngon - 1), 1, nb, ngon);
Cg = sparse(gbus, range(0, ngon-1), 1, nb, ngon);
return Cg;
}
\ No newline at end of file
fn runpf() {
// get bus index lists of each type of bus
// get generator status
// bus_gen_status = zeros(size(bus, 1), 1);
// bus_gen_status(gen(:, GEN_BUS)) = gen(:, GEN_STATUS) > 0;
nb = size(bus, 0);
ng = size(gen, 0);
Cg = sparse(slice(gen, [0], [GEN_BUS-1,GEN_BUS]), range(0,ng-1), slice(gen, [0], [GEN_STATUS-1,GEN_STATUS]) > 0, nb, ng); // gen connection matrix
// element i, j is 1 if, generator j at bus i is ON
bus_gen_status = Cg * ones(ng, 1); // number of generators at each bus that are ON
// form index lists for slack, PV, and PQ buses
bus_type = slice(bus, [0], [BUS_TYPE-1,BUS_TYPE]); // bus type column
ref = find(bus_type == REF && bus_gen_status); // reference bus index
pv = find(bus_type == PV && bus_gen_status); // PV bus indices
pq = find(bus_type == PQ || ~~bus_gen_status); // PQ bus indices
// initial state
// V0 = ones(size(bus, 1), 1); // flat start
V0 = slice(bus, [0], [VM-1,VM]) .* exp(c(0,1) * pi/180 * slice(bus, [0], [VA-1,VA]));
vcb = set(ones(size(V0)), qp, zeros(size(pq))); // create mask of voltage-controlled buses
k = find(get_multi(vcb, gbus)); // in-service gens at v-c buses
gbus_index = get_multi(gbus, k); // indices of in-service generators at v-c buses
on_k = get_multi(on, k);
gen_vg = get_multi(slice(gen, [0], [VG-1,VG]), on_k);
gbus_k = get_multi(gbus, k);
voltage_g = get_multi(V0, gbus_k);
V0 = set(V0, gbus_k, gen_vg ./ abs(voltage_g) .* voltage_g);
Ybus = make_y_bus(baseMVA, bus, branch);
repeat = 1;
Sbus = make_sbus(baseMVA, bus, gen, 1, 1, 1);
return V0;
}
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论