当前位置:首页 > 电力系统潮流程序开发
} } else if(!Node1 || !Node2)//有一个节点号为 { if(!Node2) { Branch->SetNode1(Node2); Branch->SetNode2(Node1); } } }
//支路按首节点号排序
for(int i=0;i
//首节点号相同。按末节点号排序
for(int i=0;i
}
}
}
}
BranchArray[j]=Branchi; Branchi=BranchArray[i];
Nodei1=Branchi->GetNodeAddr1(); Nodei2=Branchi->GetNodeAddr2();
5.3节点导纳矩阵的存储
其为高度稀疏的N阶复数对称方阵。因此记录矩阵的下三角即可。 数组表示法:
数组1:记录矩阵对角元素的数值;
数组2:记录矩阵非对角元素的数值(按列存储) ; 数组3:记录矩阵非对角元素的行号;
数组4:记录矩阵非对角元素的按行排的位置数;
数组5:记录矩阵非对角元素的按行存储对应按列存储的位置数。
void FormY()//形成导纳矩阵 { int nd=OpNodeArray.GetSize(); int nb=BranchArray.GetSize(); YDArray.SetSize(nd); YIArray.SetSize(nd); YUArray.SetSize(nb); YJArray.SetSize(nb); int count=0; for(int i=0;i
Z=R*R+X*X; YDArray[n-1].g+=R/Z; YDArray[n-1].b+=-X/Z; } else { int n1=Node1->GetNumNew(); int n2=Node2->GetNumNew(); R=Branch->GetR(); X=Branch->GetX(); Z=R*R+X*X; //互导纳 YUArray[count].g=-R/Z; YUArray[count].b=X/Z; YJArray[count]=n2-1; YIArray[n1-1]++; count++; //自导纳 YDArray[n1-1].g+=R/Z; YDArray[n1-1].b+=-X/Z+Branch->GetB(); YDArray[n2-1].g+=R/Z; YDArray[n2-1].b+=-X/Z+Branch->GetB(); } } else//变压器支路 {
int n1=Node1->GetNumNew(); int n2=Node2->GetNumNew(); R=Branch->GetR(); X=Branch->GetX(); K=Branch->GetK(); Z=R*R+X*X; //互导纳 if(K>0.0) { YUArray[count].g=-R/(Z*K); YUArray[count].b=X/(Z*K); YJArray[count]=n2-1; YIArray[n1-1]++; count++; //自导纳 YDArray[n1-1].g+=R/(Z*K*K); YDArray[n1-1].b+=-X/(Z*K*K); YDArray[n2-1].g+=R/Z;
}
}
}
YDArray[n2-1].b+=-X/Z; } else { K=-K; YUArray[count].g=-R/(Z*K); YUArray[count].b=X/(Z*K); YJArray[count]=n2-1; YIArray[n1-1]++; count++; //自导纳 YDArray[n1-1].g+=R/Z; YDArray[n1-1].b+=-X/Z; YDArray[n2-1].g+=R/(Z*K*K); YDArray[n2-1].b+=-X/(Z*K*K); }
共分享92篇相关文档