Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
sparrowzz
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
sgool
sparrowzz
Commits
d0f44ec6
Commit
d0f44ec6
authored
Jul 19, 2024
by
wzc-a
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add func: get_pq_of_acline
parent
ac235958
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
229 行增加
和
15 行删除
+229
-15
mems/examples/ds-3phase-pf/src/nlp.rs
+229
-15
没有找到文件。
mems/examples/ds-3phase-pf/src/nlp.rs
查看文件 @
d0f44ec6
use
std
::
collections
::
HashMap
;
use
ndarray
::{
Array
,
Array2
,
Ix2
};
use
num_complex
::
Complex64
;
use
num_complex
::
{
Complex64
,
ComplexFloat
}
;
use
eig_domain
::
DataUnit
;
use
mems
::
model
::
dev
::
MeasPhase
;
...
...
@@ -56,8 +56,8 @@ pub fn get_pf_nlp_variables(tns: &[u64]) -> String {
variable
}
fn
get_pq_of_acline
(
r_x
:
Array
<
Complex64
,
Ix2
>
)
->
Option
<
(
String
,
String
)
>
{
let
mut
mode
=
0
;
//判断相位的模式
fn
get_pq_of_acline
(
r_x
:
Array
<
Complex64
,
Ix2
>
,
tn1
:
u64
,
tn2
:
u64
)
->
Option
<
(
Vec
<
String
>
,
u32
)
>
{
let
mut
mode
:
u32
=
0
;
//判断相位的模式
if
r_x
[[
0
,
0
]]
!=
Complex64
::
new
(
0.0
,
0.0
)
{
mode
+=
1
;
}
...
...
@@ -67,20 +67,51 @@ fn get_pq_of_acline(r_x: Array<Complex64, Ix2>) -> Option<(String, String)> {
if
r_x
[[
2
,
2
]]
!=
Complex64
::
new
(
0.0
,
0.0
)
{
mode
+=
4
;
}
let
mut
result
=
Vec
::
new
();
// 计算导纳阵
let
result
=
match
mode
{
match
mode
{
// A 或 B 或 C r_x[[2,2]].inv().unwrap()
1
=>
{
let
gb
=
r_x
[[
0
,
0
]]
.inv
();
format!
(
"{}*x1"
,
gb
.re
)
let
g
=
gb
.re
();
let
b
=
gb
.im
();
// P: V1a*(V1a*g-V2a*(g*cos(t1a-t2a)+b*sin(t1a-t2a)))
// Q: V1a*(-V1a*b-V2a*(g*sin(t1a-t2a)-b*cos(t1a-t2a)))
// = -V1a*(V1a*b+V2a*(g*sin(t1a-t2a)-b*cos(t1a-t2a)))
//P_A
result
.push
(
format!
(
"V_{tn1}_A*(V_{tn1}_A*{g:.4}-V_{tn2}_A*({g:.4}*cos(D_{tn1}_A-D_{tn2}_A)+{b:.4}*sin(D_{tn1}_A-D_{tn2}_A)))"
,)
);
//Q_A
result
.push
(
format!
(
"-V_{tn1}_A*(V_{tn1}_A*{b:.4}+V_{tn2}_A*({g:.4}*sin(D_{tn1}_A-D_{tn2}_A)-{b:.4}*cos(D_{tn1}_A-D_{tn2}_A)))"
,),
)
}
2
=>
{
let
gb
=
r_x
[[
1
,
1
]]
.inv
();
format!
(
"{}*x1"
,
gb
.re
)
let
g
=
gb
.re
();
let
b
=
gb
.im
();
//P_B
result
.push
(
format!
(
"V_{tn1}_B*(V_{tn1}_B*{g:.4}-V_{tn2}_B*({g:.4}*cos(D_{tn1}_B-D_{tn2}_B)+{b:.4}*sin(D_{tn1}_B-D_{tn2}_B)))"
,),
);
//Q_B
result
.push
(
format!
(
"-V_{tn1}_B*(V_{tn1}_B*{b:.4}+V_{tn2}_B*({g:.4}*sin(D_{tn1}_B-D_{tn2}_B)-{b:.4}*cos(D_{tn1}_B-D_{tn2}_B)))"
,),
)
}
4
=>
{
let
gb
=
r_x
[[
2
,
2
]]
.inv
();
format!
(
"{}*x1"
,
gb
.re
)
let
g
=
gb
.re
();
let
b
=
gb
.im
();
//P_C
result
.push
(
format!
(
"V_{tn1}_C*(V_{tn1}_C*{g:.4}-V_{tn2}_C*({g:.4}*cos(D_{tn1}_C-D_{tn2}_C)+{b:.4}*sin(D_{tn1}_C-D_{tn2}_C)))"
,),
);
//Q_C
result
.push
(
format!
(
"-V_{tn1}_C*(V_{tn1}_C*{b:.4}+V_{tn2}_C*({g:.4}*sin(D_{tn1}_C-D_{tn2}_C)-{b:.4}*cos(D_{tn1}_C-D_{tn2}_C)))"
,),
)
}
// AB
3
=>
{
...
...
@@ -88,7 +119,42 @@ fn get_pq_of_acline(r_x: Array<Complex64, Ix2>) -> Option<(String, String)> {
r_x
[[
0
,
0
]],
r_x
[[
0
,
1
]],
r_x
[[
1
,
0
]],
r_x
[[
1
,
1
]]);
let
gb
=
rx
.try_inverse
()
.unwrap
();
format!
(
"{}*x1-{}*x2"
,
gb
.m11
,
gb
.m12
)
let
(
g_aa
,
b_aa
)
=
(
gb
.m11.re
,
gb
.m11.im
);
let
(
g_ab
,
b_ab
)
=
(
gb
.m12.re
,
gb
.m12.im
);
let
(
g_ba
,
b_ba
)
=
(
gb
.m21.re
,
gb
.m21.im
);
let
(
g_bb
,
b_bb
)
=
(
gb
.m22.re
,
gb
.m22.im
);
//P_A
result
.push
(
format!
(
"V_{tn1}_A*V_{tn1}_A*{g_aa:.4}
\
-V_{tn1}_A*V_{tn2}_A*({g_aa:.4}*cos(D_{tn1}_A-D_{tn2}_A)+{b_aa:.4}*sin(D_{tn1}_A-D_{tn2}_A))
\
+V_{tn1}_A*(V_{tn1}_B*({g_ab:.4}*cos(D_{tn1}_A-D_{tn1}_B)+{b_ab:.4}*sin(D_{tn1}_A-D_{tn1}_B)))
\
-V_{tn1}_A*(V_{tn2}_B*({g_ab:.4}*cos(D_{tn1}_A-D_{tn2}_B)+{b_ab:.4}*sin(D_{tn1}_A-D_{tn2}_B))"
,),
);
//Q_A
result
.push
(
format!
(
"-V_{tn1}_A*V_{tn1}_A*{b_aa:.4}
\
+V_{tn1}_A*V_{tn2}_A*({b_aa:.4}*cos(D_{tn1}_A-D_{tn2}_A)-{g_aa:.4}*sin(D_{tn1}_A-D_{tn2}_A))
\
+V_{tn1}_A*(V_{tn1}_B*({g_ab:.4}*sin(D_{tn1}_A-D_{tn1}_B)-{b_ab:.4}*cos(D_{tn1}_A-D_{tn1}_B)))
\
+V_{tn1}_A*(V_{tn2}_B*({b_ab:.4}*cos(D_{tn1}_A-D_{tn2}_B)-{g_ab:.4}*sin(D_{tn1}_A-D_{tn2}_B))"
,),
);
//P_B
result
.push
(
format!
(
"V_{tn1}_B*V_{tn1}_B*{g_bb:.4}
\
-V_{tn1}_B*V_{tn2}_B*({g_bb:.4}*cos(D_{tn1}_B-D_{tn2}_B)+{b_bb:.4}*sin(D_{tn1}_B-D_{tn2}_B))
\
+V_{tn1}_B*(V_{tn1}_A*({g_ba:.4}*cos(D_{tn1}_B-D_{tn1}_A)+{b_ba:.4}*sin(D_{tn1}_B-D_{tn1}_A)))
\
-V_{tn1}_B*(V_{tn2}_A*({g_ba:.4}*cos(D_{tn1}_B-D_{tn2}_A)+{b_ba:.4}*sin(D_{tn1}_B-D_{tn2}_A))"
,),
);
//Q_B
result
.push
(
format!
(
"-V_{tn1}_B*V_{tn1}_B*{b_bb:.4}
\
+V_{tn1}_B*V_{tn2}_B*({b_bb:.4}*cos(D_{tn1}_B-D_{tn2}_B)-{g_bb:.4}*sin(D_{tn1}_B-D_{tn2}_B))
\
+V_{tn1}_B*(V_{tn1}_A*({g_ba:.4}*sin(D_{tn1}_B-D_{tn1}_A)-{b_ba:.4}*cos(D_{tn1}_B-D_{tn1}_A)))
\
+V_{tn1}_B*(V_{tn2}_A*({b_ba:.4}*cos(D_{tn1}_B-D_{tn2}_A)-{g_ba:.4}*sin(D_{tn1}_B-D_{tn2}_A))"
,),
);
}
// AC
5
=>
{
...
...
@@ -96,7 +162,42 @@ fn get_pq_of_acline(r_x: Array<Complex64, Ix2>) -> Option<(String, String)> {
r_x
[[
0
,
0
]],
r_x
[[
0
,
2
]],
r_x
[[
2
,
0
]],
r_x
[[
2
,
2
]]);
let
gb
=
rx
.try_inverse
()
.unwrap
();
format!
(
"{}*x1"
,
gb
.m11
)
let
(
g_aa
,
b_aa
)
=
(
gb
.m11.re
,
gb
.m11.im
);
let
(
g_ac
,
b_ac
)
=
(
gb
.m12.re
,
gb
.m12.im
);
let
(
g_ca
,
b_ca
)
=
(
gb
.m21.re
,
gb
.m21.im
);
let
(
g_cc
,
b_cc
)
=
(
gb
.m22.re
,
gb
.m22.im
);
//P_A
result
.push
(
format!
(
"V_{tn1}_A*V_{tn1}_A*{g_aa:.4}
\
-V_{tn1}_A*V_{tn2}_A*({g_aa:.4}*cos(D_{tn1}_A-D_{tn2}_A)+{b_aa:.4}*sin(D_{tn1}_A-D_{tn2}_A))
\
+V_{tn1}_A*(V_{tn1}_C*({g_ac:.4}*cos(D_{tn1}_A-D_{tn1}_C)+{b_ac:.4}*sin(D_{tn1}_A-D_{tn1}_C)))
\
-V_{tn1}_A*(V_{tn2}_C*({g_ac:.4}*cos(D_{tn1}_A-D_{tn2}_C)+{b_ac:.4}*sin(D_{tn1}_A-D_{tn2}_C))"
,),
);
//Q_A
result
.push
(
format!
(
"-V_{tn1}_A*V_{tn1}_A*{b_aa:.4}
\
+V_{tn1}_A*V_{tn2}_A*({b_aa:.4}*cos(D_{tn1}_A-D_{tn2}_A)-{g_aa:.4}*sin(D_{tn1}_A-D_{tn2}_A))
\
+V_{tn1}_A*(V_{tn1}_C*({g_ac:.4}*sin(D_{tn1}_A-D_{tn1}_C)-{b_ac:.4}*cos(D_{tn1}_A-D_{tn1}_C)))
\
+V_{tn1}_A*(V_{tn2}_C*({b_ac:.4}*cos(D_{tn1}_A-D_{tn2}_C)-{g_ac:.4}*sin(D_{tn1}_A-D_{tn2}_C))"
,),
);
//P_C
result
.push
(
format!
(
"V_{tn1}_C*V_{tn1}_C*{g_cc:.4}
\
-V_{tn1}_C*V_{tn2}_C*({g_cc:.4}*cos(D_{tn1}_C-D_{tn2}_C)+{b_cc:.4}*sin(D_{tn1}_C-D_{tn2}_C))
\
+V_{tn1}_C*(V_{tn1}_A*({g_ca:.4}*cos(D_{tn1}_C-D_{tn1}_A)+{b_ca:.4}*sin(D_{tn1}_C-D_{tn1}_A)))
\
-V_{tn1}_C*(V_{tn2}_A*({g_ca:.4}*cos(D_{tn1}_C-D_{tn2}_A)+{b_ca:.4}*sin(D_{tn1}_C-D_{tn2}_A))"
,),
);
//Q_C
result
.push
(
format!
(
"-V_{tn1}_C*V_{tn1}_C*{b_cc:.4}
\
+V_{tn1}_C*V_{tn2}_C*({b_cc:.4}*cos(D_{tn1}_C-D_{tn2}_C)-{g_cc:.4}*sin(D_{tn1}_C-D_{tn2}_C))
\
+V_{tn1}_C*(V_{tn1}_A*({g_ca:.4}*sin(D_{tn1}_C-D_{tn1}_A)-{b_ca:.4}*cos(D_{tn1}_C-D_{tn1}_A)))
\
+V_{tn1}_C*(V_{tn2}_A*({b_ca:.4}*cos(D_{tn1}_C-D_{tn2}_A)-{g_ca:.4}*sin(D_{tn1}_C-D_{tn2}_A))"
,),
);
}
// BC
6
=>
{
...
...
@@ -104,7 +205,42 @@ fn get_pq_of_acline(r_x: Array<Complex64, Ix2>) -> Option<(String, String)> {
r_x
[[
1
,
1
]],
r_x
[[
1
,
2
]],
r_x
[[
2
,
1
]],
r_x
[[
2
,
2
]]);
let
gb
=
rx
.try_inverse
()
.unwrap
();
format!
(
"{}*x1"
,
gb
.m11
)
let
(
g_bb
,
b_bb
)
=
(
gb
.m11.re
,
gb
.m11.im
);
let
(
g_bc
,
b_bc
)
=
(
gb
.m12.re
,
gb
.m12.im
);
let
(
g_cb
,
b_cb
)
=
(
gb
.m21.re
,
gb
.m21.im
);
let
(
g_cc
,
b_cc
)
=
(
gb
.m22.re
,
gb
.m22.im
);
//P_B
result
.push
(
format!
(
"V_{tn1}_B*V_{tn1}_B*{g_bb:.4}
\
-V_{tn1}_B*V_{tn2}_B*({g_bb:.4}*cos(D_{tn1}_B-D_{tn2}_B)+{b_bb:.4}*sin(D_{tn1}_B-D_{tn2}_B))
\
+V_{tn1}_B*(V_{tn1}_C*({g_bc:.4}*cos(D_{tn1}_B-D_{tn1}_C)+{b_bc:.4}*sin(D_{tn1}_B-D_{tn1}_C)))
\
-V_{tn1}_B*(V_{tn2}_C*({g_bc:.4}*cos(D_{tn1}_B-D_{tn2}_C)+{b_bc:.4}*sin(D_{tn1}_B-D_{tn2}_C))"
,),
);
//Q_B
result
.push
(
format!
(
"-V_{tn1}_B*V_{tn1}_B*{b_bb:.4}
\
+V_{tn1}_B*V_{tn2}_B*({b_bb:.4}*cos(D_{tn1}_B-D_{tn2}_B)-{g_bb:.4}*sin(D_{tn1}_B-D_{tn2}_B))
\
+V_{tn1}_B*(V_{tn1}_C*({g_bc:.4}*sin(D_{tn1}_B-D_{tn1}_C)-{b_bc:.4}*cos(D_{tn1}_B-D_{tn1}_C)))
\
+V_{tn1}_B*(V_{tn2}_C*({b_bc:.4}*cos(D_{tn1}_B-D_{tn2}_C)-{g_bc:.4}*sin(D_{tn1}_B-D_{tn2}_C))"
,),
);
//P_C
result
.push
(
format!
(
"V_{tn1}_C*V_{tn1}_C*{g_cc:.4}
\
-V_{tn1}_C*V_{tn2}_C*({g_cc:.4}*cos(D_{tn1}_C-D_{tn2}_C)+{b_cc:.4}*sin(D_{tn1}_C-D_{tn2}_C))
\
+V_{tn1}_C*(V_{tn1}_B*({g_cb:.4}*cos(D_{tn1}_C-D_{tn1}_B)+{b_cb:.4}*sin(D_{tn1}_C-D_{tn1}_B)))
\
-V_{tn1}_C*(V_{tn2}_B*({g_cb:.4}*cos(D_{tn1}_C-D_{tn2}_B)+{b_cb:.4}*sin(D_{tn1}_C-D_{tn2}_B))"
,),
);
//Q_C
result
.push
(
format!
(
"-V_{tn1}_C*V_{tn1}_C*{b_cc:.4}
\
+V_{tn1}_C*V_{tn2}_C*({b_cc:.4}*cos(D_{tn1}_C-D_{tn2}_C)-{g_cc:.4}*sin(D_{tn1}_C-D_{tn2}_C))
\
+V_{tn1}_C*(V_{tn1}_B*({g_cb:.4}*sin(D_{tn1}_C-D_{tn1}_B)-{b_cb:.4}*cos(D_{tn1}_C-D_{tn1}_B)))
\
+V_{tn1}_C*(V_{tn2}_B*({b_cb:.4}*cos(D_{tn1}_C-D_{tn2}_B)-{g_cb:.4}*sin(D_{tn1}_C-D_{tn2}_B))"
,),
);
}
// ABC
7
=>
{
...
...
@@ -113,11 +249,79 @@ fn get_pq_of_acline(r_x: Array<Complex64, Ix2>) -> Option<(String, String)> {
r_x
[[
1
,
0
]],
r_x
[[
1
,
1
]],
r_x
[[
1
,
2
]],
r_x
[[
2
,
0
]],
r_x
[[
2
,
1
]],
r_x
[[
2
,
2
]]);
let
gb
=
rx
.try_inverse
()
.unwrap
();
format!
(
"{:.4}*x1-{:.4}*x2-{:.4}*x3"
,
gb
.m11.re
,
gb
.m12.re
,
gb
.m13.re
)
let
(
g_aa
,
b_aa
)
=
(
gb
.m11.re
,
gb
.m11.im
);
let
(
g_ab
,
b_ab
)
=
(
gb
.m12.re
,
gb
.m12.im
);
let
(
g_ac
,
b_ac
)
=
(
gb
.m13.re
,
gb
.m13.im
);
let
(
g_ba
,
b_ba
)
=
(
gb
.m21.re
,
gb
.m21.im
);
let
(
g_bb
,
b_bb
)
=
(
gb
.m22.re
,
gb
.m22.im
);
let
(
g_bc
,
b_bc
)
=
(
gb
.m23.re
,
gb
.m23.im
);
let
(
g_ca
,
b_ca
)
=
(
gb
.m31.re
,
gb
.m31.im
);
let
(
g_cb
,
b_cb
)
=
(
gb
.m32.re
,
gb
.m32.im
);
let
(
g_cc
,
b_cc
)
=
(
gb
.m33.re
,
gb
.m33.im
);
//P_A
result
.push
(
format!
(
"V_{tn1}_A*V_{tn1}_A*{g_aa:.4}
\
-V_{tn1}_A*V_{tn2}_A*({g_aa:.4}*cos(D_{tn1}_A-D_{tn2}_A)+{b_aa:.4}*sin(D_{tn1}_A-D_{tn2}_A))
\
+V_{tn1}_A*(V_{tn1}_B*({g_ab:.4}*cos(D_{tn1}_A-D_{tn1}_B)+{b_ab:.4}*sin(D_{tn1}_A-D_{tn1}_B))
\
-V_{tn1}_A*(V_{tn2}_B*({g_ab:.4}*cos(D_{tn1}_A-D_{tn2}_B)+{b_ab:.4}*sin(D_{tn1}_A-D_{tn2}_B))
\
+V_{tn1}_A*(V_{tn1}_C*({g_ac:.4}*cos(D_{tn1}_A-D_{tn1}_C)+{b_ac:.4}*sin(D_{tn1}_A-D_{tn1}_C)))
\
-V_{tn1}_A*(V_{tn2}_C*({g_ac:.4}*cos(D_{tn1}_A-D_{tn2}_C)+{b_ac:.4}*sin(D_{tn1}_A-D_{tn2}_C))"
,),
);
//Q_A
result
.push
(
format!
(
"-V_{tn1}_A*V_{tn1}_A*{b_aa:.4}
\
+V_{tn1}_A*V_{tn2}_A*({b_aa:.4}*cos(D_{tn1}_A-D_{tn2}_A)-{g_aa:.4}*sin(D_{tn1}_A-D_{tn2}_A))
\
+V_{tn1}_A*(V_{tn1}_B*({g_ab:.4}*sin(D_{tn1}_A-D_{tn1}_B)-{b_ab:.4}*cos(D_{tn1}_A-D_{tn1}_B))
\
+V_{tn1}_A*(V_{tn2}_B*({b_ab:.4}*cos(D_{tn1}_A-D_{tn2}_B)-{g_ab:.4}*sin(D_{tn1}_A-D_{tn2}_B))
\
+V_{tn1}_A*(V_{tn1}_C*({g_ac:.4}*sin(D_{tn1}_A-D_{tn1}_C)-{b_ac:.4}*cos(D_{tn1}_A-D_{tn1}_C))
\
+V_{tn1}_A*(V_{tn2}_C*({b_ac:.4}*cos(D_{tn1}_A-D_{tn2}_C)-{g_ac:.4}*sin(D_{tn1}_A-D_{tn2}_C))"
,),
);
//P_B
result
.push
(
format!
(
"V_{tn1}_B*V_{tn1}_B*{g_bb:.4}
\
-V_{tn1}_B*V_{tn2}_B*({g_bb:.4}*cos(D_{tn1}_B-D_{tn2}_B)+{b_bb:.4}*sin(D_{tn1}_B-D_{tn2}_B))
\
+V_{tn1}_B*(V_{tn1}_A*({g_ba:.4}*cos(D_{tn1}_B-D_{tn1}_A)+{b_ba:.4}*sin(D_{tn1}_B-D_{tn1}_A))
\
-V_{tn1}_B*(V_{tn2}_A*({g_ba:.4}*cos(D_{tn1}_B-D_{tn2}_A)+{b_ba:.4}*sin(D_{tn1}_B-D_{tn2}_A))
\
+V_{tn1}_B*(V_{tn1}_C*({g_bc:.4}*cos(D_{tn1}_B-D_{tn1}_C)+{b_bc:.4}*sin(D_{tn1}_B-D_{tn1}_C)))
\
-V_{tn1}_B*(V_{tn2}_C*({g_bc:.4}*cos(D_{tn1}_B-D_{tn2}_C)+{b_bc:.4}*sin(D_{tn1}_B-D_{tn2}_C))"
,),
);
//Q_B
result
.push
(
format!
(
"-V_{tn1}_B*V_{tn1}_B*{b_bb:.4}
\
+V_{tn1}_B*V_{tn2}_B*({b_bb:.4}*cos(D_{tn1}_B-D_{tn2}_B)-{g_bb:.4}*sin(D_{tn1}_B-D_{tn2}_B))
\
+V_{tn1}_B*(V_{tn1}_A*({g_ba:.4}*sin(D_{tn1}_B-D_{tn1}_A)-{b_ba:.4}*cos(D_{tn1}_B-D_{tn1}_A))
\
+V_{tn1}_B*(V_{tn2}_A*({b_ba:.4}*cos(D_{tn1}_B-D_{tn2}_A)-{g_ba:.4}*sin(D_{tn1}_B-D_{tn2}_A))
\
+V_{tn1}_B*(V_{tn1}_C*({g_bc:.4}*sin(D_{tn1}_B-D_{tn1}_C)-{b_bc:.4}*cos(D_{tn1}_B-D_{tn1}_C))
\
+V_{tn1}_B*(V_{tn2}_C*({b_bc:.4}*cos(D_{tn1}_B-D_{tn2}_C)-{g_bc:.4}*sin(D_{tn1}_B-D_{tn2}_C))"
,),
);
//P_C
result
.push
(
format!
(
"V_{tn1}_C*V_{tn1}_C*{g_cc:.4}
\
-V_{tn1}_C*V_{tn2}_C*({g_cc:.4}*cos(D_{tn1}_C-D_{tn2}_C)+{b_cc:.4}*sin(D_{tn1}_C-D_{tn2}_C))
\
+V_{tn1}_C*(V_{tn1}_A*({g_ca:.4}*cos(D_{tn1}_C-D_{tn1}_A)+{b_ca:.4}*sin(D_{tn1}_C-D_{tn1}_A))
\
-V_{tn1}_C*(V_{tn2}_A*({g_ca:.4}*cos(D_{tn1}_C-D_{tn2}_A)+{b_ca:.4}*sin(D_{tn1}_C-D_{tn2}_A))
\
+V_{tn1}_C*(V_{tn1}_B*({g_cb:.4}*cos(D_{tn1}_C-D_{tn1}_B)+{b_cb:.4}*sin(D_{tn1}_C-D_{tn1}_B)))
\
-V_{tn1}_C*(V_{tn2}_B*({g_cb:.4}*cos(D_{tn1}_C-D_{tn2}_B)+{b_cb:.4}*sin(D_{tn1}_C-D_{tn2}_B))"
,),
);
//Q_C
result
.push
(
format!
(
"-V_{tn1}_C*V_{tn1}_C*{b_cc:.4}
\
+V_{tn1}_C*V_{tn2}_C*({b_cc:.4}*cos(D_{tn1}_C-D_{tn2}_C)-{g_cc:.4}*sin(D_{tn1}_C-D_{tn2}_C))
\
+V_{tn1}_C*(V_{tn1}_A*({g_ca:.4}*sin(D_{tn1}_C-D_{tn1}_A)-{b_ca:.4}*cos(D_{tn1}_C-D_{tn1}_A))
\
+V_{tn1}_C*(V_{tn2}_A*({b_ca:.4}*cos(D_{tn1}_C-D_{tn2}_A)-{g_ca:.4}*sin(D_{tn1}_C-D_{tn2}_A))
\
+V_{tn1}_C*(V_{tn1}_B*({g_cb:.4}*sin(D_{tn1}_C-D_{tn1}_B)-{b_cb:.4}*cos(D_{tn1}_C-D_{tn1}_B))
\
+V_{tn1}_C*(V_{tn2}_B*({b_cb:.4}*cos(D_{tn1}_C-D_{tn2}_B)-{g_cb:.4}*sin(D_{tn1}_C-D_{tn2}_B))"
,),
);
}
_
=>
{
return
None
;
}
};
Some
((
result
.clone
(),
result
.clone
()
))
Some
((
result
,
mode
))
}
// test
...
...
@@ -139,11 +343,20 @@ mod test {
let
arr
=
array!
[
[
Complex64
::
new
(
0.3465
,
1.0179
),
Complex64
::
new
(
0.1560
,
0.5017
),
Complex64
::
new
(
0.1580
,
0.4236
)],
[
Complex64
::
new
(
0.1560
,
0.5017
),
Complex64
::
new
(
0.3375
,
1.0478
),
Complex64
::
new
(
0.1535
,
0.3849
)],
[
Complex64
::
new
(
0.1580
,
0.4236
),
Complex64
::
new
(
0.1535
,
0.3849
),
Complex64
::
new
(
0.3414
,
1.0348
)]];
let
(
p
,
q
)
=
get_pq_of_acline
(
arr
)
.unwrap
();
assert_eq!
(
p
,
"0.4338*x1--0.1840*x2--0.1008*x3"
);
let
(
p
,
q
)
=
get_pq_of_acline
(
arr
,
1
,
2
)
.unwrap
();
assert_eq!
(
p
[
0
],
"V_1_A*V_1_A*0.4338
\
-V_1_A*V_2_A*(0.4338*cos(D_1_A-D_2_A)+-1.2502*sin(D_1_A-D_2_A))
\
+V_1_A*(V_1_B*(-0.1840*cos(D_1_A-D_1_B)+0.4622*sin(D_1_A-D_1_B))
\
-V_1_A*(V_2_B*(-0.1840*cos(D_1_A-D_2_B)+0.4622*sin(D_1_A-D_2_B))
\
+V_1_A*(V_1_C*(-0.1008*cos(D_1_A-D_1_C)+0.3455*sin(D_1_A-D_1_C)))
\
-V_1_A*(V_2_C*(-0.1008*cos(D_1_A-D_2_C)+0.3455*sin(D_1_A-D_2_C))"
);
let
arr
=
array!
[
[
Complex64
::
new
(
0.0
,
0.0
),
Complex64
::
new
(
0.0
,
0.0
),
Complex64
::
new
(
0.0
,
0.0
)],
[
Complex64
::
new
(
0.0
,
0.0
),
Complex64
::
new
(
0.0
,
0.0
),
Complex64
::
new
(
0.0
,
0.0
)],
[
Complex64
::
new
(
0.0
,
0.0
),
Complex64
::
new
(
0.0
,
0.0
),
Complex64
::
new
(
0.3414
,
1.0348
)]];
let
(
p
,
q
)
=
get_pq_of_acline
(
arr
)
.unwrap
();
// 0.2875 - 0.8715i
let
(
p
,
q
)
=
get_pq_of_acline
(
arr
,
1
,
2
)
.unwrap
();
assert_eq!
(
p
[
0
],
"V_1_C*(V_1_C*0.2875-V_2_C*(0.2875*cos(D_1_C-D_2_C)+-0.8715*sin(D_1_C-D_2_C)))"
);
}
}
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论