⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dnet.cpp

📁 这是一个简单能量损耗代码测试源代码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
			if(pBranch->m_bState&&pBranch->m_nTailNode==m_nNewFeederRoot[j]&&pBranch->m_bBranchMark)
			{
				pBranch->m_bBranchMark=0;
				m_nNodeArray[pBranch->m_nTailNode].wVoltage=m_nFeederVoltage[j];
				wFirstNodeVoltage=m_nNodeArray[pBranch->m_nHeadNode].wVoltage;
				nNodeMark[pBranch->m_nHeadNode]=1;
				if(m_nDNetInfo.m_bMark)
				{
					dV=(pBranch->m_wPTail*pBranch->m_wR+pBranch->m_wQTail*pBranch->m_wX)/m_nNodeArray[pBranch->m_nTailNode].wVoltage;
					m_nNodeArray[pBranch->m_nHeadNode].wVoltage=m_nNodeArray[pBranch->m_nTailNode].wVoltage-dV;
					if(dVB_N<=fabs(m_nNodeArray[pBranch->m_nHeadNode].wVoltage-wFirstNodeVoltage))
						dVB_N=fabs(m_nNodeArray[pBranch->m_nHeadNode].wVoltage-wFirstNodeVoltage);
				}
				else
					//标吆值
				{
					dV=(pBranch->m_wPTail*pBranch->m_wRB+pBranch->m_wQTail*pBranch->m_wXB)/m_nNodeArray[pBranch->m_nTailNode].wVoltage;
					m_nNodeArray[pBranch->m_nHeadNode].wVoltage=m_nNodeArray[pBranch->m_nTailNode].wVoltage-dV;
					if(dVB_N<=fabs(m_nNodeArray[pBranch->m_nHeadNode].wVoltage-wFirstNodeVoltage))
						dVB_N=fabs(m_nNodeArray[pBranch->m_nHeadNode].wVoltage-wFirstNodeVoltage);
				}
			}
		}


		//计算其他支路
		INT nBranch=0;
		int i=0;
		while(nBranch<(nFeedBranch-m_nDNetInfo.nFeederRoot))
		{
			for(pos=m_nBranchMap.GetStartPosition();pos!=NULL;)
			{
				UINT key=0;
				CBranch* pBranch=new CBranch;
				m_nBranchMap.GetNextAssoc(pos,key,pBranch);
				if(!pBranch->m_bBranchMark||!pBranch->m_bState) continue;
				if(nNodeMark[pBranch->m_nHeadNode])
				{
					++nBranch;
					pBranch->m_bBranchMark=0;
					wFirstNodeVoltage=m_nNodeArray[pBranch->m_nTailNode].wVoltage;
					nNodeMark[pBranch->m_nTailNode]=1;
					if(m_nDNetInfo.m_bMark)
					{
						dV=(pBranch->m_wPHead*pBranch->m_wR+pBranch->m_wQHead*pBranch->m_wX)*(1e-3)/m_nNodeArray[pBranch->m_nHeadNode].wVoltage;
						m_nNodeArray[pBranch->m_nTailNode].wVoltage=m_nNodeArray[pBranch->m_nHeadNode].wVoltage-dV;
						if(pBranch->m_nType==TRANS)
							m_nNodeArray[pBranch->m_nTailNode].wVoltage/=pBranch->m_wRatio;
						if(dVB_N<fabs(m_nNodeArray[pBranch->m_nTailNode].wVoltage-wFirstNodeVoltage))
							dVB_N=fabs(m_nNodeArray[pBranch->m_nTailNode].wVoltage-wFirstNodeVoltage);
					}
					else
						//标吆值
					{
						dV=(pBranch->m_wPHead*pBranch->m_wRB+pBranch->m_wQHead*pBranch->m_wXB)/m_nNodeArray[pBranch->m_nHeadNode].wVoltage;
						m_nNodeArray[pBranch->m_nTailNode].wVoltage=m_nNodeArray[pBranch->m_nHeadNode].wVoltage-dV;
						if(pBranch->m_nType==TRANS)
							m_nNodeArray[pBranch->m_nTailNode].wVoltage/=pBranch->m_wRatio;
						if(dVB_N<fabs(m_nNodeArray[pBranch->m_nTailNode].wVoltage-wFirstNodeVoltage))
							dVB_N=fabs(m_nNodeArray[pBranch->m_nTailNode].wVoltage-wFirstNodeVoltage);
					}
					continue;
				}
				if(nNodeMark[pBranch->m_nTailNode])
				{
					++nBranch;
					pBranch->m_bBranchMark=0;
					wFirstNodeVoltage=m_nNodeArray[pBranch->m_nHeadNode].wVoltage;
					nNodeMark[pBranch->m_nHeadNode]=1;
					if(m_nDNetInfo.m_bMark)
					{
						dV=(pBranch->m_wPTail*pBranch->m_wR+pBranch->m_wQTail*pBranch->m_wX)*(1e-3)/m_nNodeArray[pBranch->m_nTailNode].wVoltage;
						m_nNodeArray[pBranch->m_nHeadNode].wVoltage=m_nNodeArray[pBranch->m_nTailNode].wVoltage-dV;
						if(dVB_N<=fabs(m_nNodeArray[pBranch->m_nHeadNode].wVoltage-wFirstNodeVoltage))
							dVB_N=fabs(m_nNodeArray[pBranch->m_nHeadNode].wVoltage-wFirstNodeVoltage);
					}
					else
						//标吆值
					{
						dV=(pBranch->m_wPTail*pBranch->m_wRB+pBranch->m_wQTail*pBranch->m_wXB)/m_nNodeArray[pBranch->m_nTailNode].wVoltage;
						m_nNodeArray[pBranch->m_nHeadNode].wVoltage=m_nNodeArray[pBranch->m_nTailNode].wVoltage-dV;
						if(dVB_N<=fabs(m_nNodeArray[pBranch->m_nHeadNode].wVoltage-wFirstNodeVoltage))
							dVB_N=fabs(m_nNodeArray[pBranch->m_nHeadNode].wVoltage-wFirstNodeVoltage);
					}
				}
			}	//end for

		}	//end while

		for(pos=m_nBranchMap.GetStartPosition();pos!=NULL;)
		{
			UINT key=0;
			CBranch* pBranch=new CBranch;
			m_nBranchMap.GetNextAssoc(pos,key,pBranch);
			pBranch->m_bBranchMark=1;
		}

		if(dVB_N<m_nDNetInfo.wVoltageConvergence)break;


		//节点功率重赋初值


		for(i=1;i<=m_nDNetInfo.nNode;++i)
		{
			m_nNodeArray[i].wP=0;
			m_nNodeArray[i].wQ=0;
		}
		for(pos=m_nBeginInfoMap.GetStartPosition();pos!=NULL;)
		{
			UINT key=0;
			CBeginInfo* pBeginInfo=new CBeginInfo;
			m_nBeginInfoMap.GetNextAssoc(pos,key,pBeginInfo);
			m_nNodeArray[pBeginInfo->m_nLoadNode].wP=pBeginInfo->m_wPLoad;
			m_nNodeArray[pBeginInfo->m_nLoadNode].wQ=pBeginInfo->m_wQLoad;
		}
		for(pos=m_nCapMap.GetStartPosition();pos!=NULL;)
		{
			UINT key=0;
			CCapCompensation* pCapCom=new CCapCompensation;
			m_nCapMap.GetNextAssoc(pos,key,pCapCom);
			m_nNodeArray[pCapCom->m_nCNode].wP+=-pCapCom->m_dPc*m_nNodeArray[pCapCom->m_nCNode].wVoltage*
				m_nNodeArray[pCapCom->m_nCNode].wVoltage/(pCapCom->m_Vn*pCapCom->m_Vn);
			m_nNodeArray[pCapCom->m_nCNode].wQ+=-pCapCom->m_SnPower*m_nNodeArray[pCapCom->m_nCNode].wVoltage*
				m_nNodeArray[pCapCom->m_nCNode].wVoltage/(pCapCom->m_Vn*pCapCom->m_Vn);
		}

		//前推
		for(i=1;i<=m_nDNetInfo.nBranch;++i)
		{
			CBranch* pBranch=new CBranch;
			m_nBranchMap.Lookup(m_nBranchKey[i],pBranch);
			if(pBranch->m_bHeadMark)
			{
				if(m_nDNetInfo.m_bMark)
				{
					if(pBranch->m_nType==BRANCH)
					{
						pBranch->m_wPHead=m_nNodeArray[pBranch->m_nHeadNode].wP;
						pBranch->m_wQHead=m_nNodeArray[pBranch->m_nHeadNode].wQ;

						//计算尾功率
						pBranch->m_wPTail=pBranch->m_wPHead+(pBranch->m_wPHead*pBranch->m_wPHead+
							pBranch->m_wQHead*pBranch->m_wQHead)*pBranch->m_wR/(m_nNodeArray[pBranch->m_nHeadNode].wVoltage*
							m_nNodeArray[pBranch->m_nHeadNode].wVoltage);
						pBranch->m_wQTail=pBranch->m_wQHead+(pBranch->m_wPHead*pBranch->m_wPHead+
							pBranch->m_wQHead*pBranch->m_wQHead)*pBranch->m_wX/(m_nNodeArray[pBranch->m_nHeadNode].wVoltage*
							m_nNodeArray[pBranch->m_nHeadNode].wVoltage);
						/////////
						m_nNodeArray[pBranch->m_nTailNode].wP+=pBranch->m_wPTail;
						m_nNodeArray[pBranch->m_nTailNode].wQ+=pBranch->m_wQTail;
					}
				}
				else
					//标吆值
				{
					if(pBranch->m_nType==BRANCH)
					{
						pBranch->m_wPHead=m_nNodeArray[pBranch->m_nHeadNode].wP;
						pBranch->m_wQHead=m_nNodeArray[pBranch->m_nHeadNode].wQ;

						//计算尾功率
						pBranch->m_wPTail=pBranch->m_wPHead+(pBranch->m_wPHead*pBranch->m_wPHead+
							pBranch->m_wQHead*pBranch->m_wQHead)*pBranch->m_wRB/(m_nNodeArray[pBranch->m_nHeadNode].wVoltage*
							m_nNodeArray[pBranch->m_nHeadNode].wVoltage);
						pBranch->m_wQTail=pBranch->m_wQHead+(pBranch->m_wPHead*pBranch->m_wPHead+
							pBranch->m_wQHead*pBranch->m_wQHead)*pBranch->m_wXB/(m_nNodeArray[pBranch->m_nHeadNode].wVoltage*
							m_nNodeArray[pBranch->m_nHeadNode].wVoltage);
						/////////
						m_nNodeArray[pBranch->m_nTailNode].wP+=pBranch->m_wPTail;
						m_nNodeArray[pBranch->m_nTailNode].wQ+=pBranch->m_wQTail;
					}
				}
			}
			if(pBranch->m_bTailMark)
			{
				if(m_nDNetInfo.m_bMark)
				{
					if(pBranch->m_nType==BRANCH)
					{
						pBranch->m_wPTail=m_nNodeArray[pBranch->m_nTailNode].wP;
						pBranch->m_wQTail=m_nNodeArray[pBranch->m_nTailNode].wQ;
							//计算头功率
						pBranch->m_wPHead=pBranch->m_wPTail+(pBranch->m_wPTail*pBranch->m_wPTail+
							pBranch->m_wQTail*pBranch->m_wQTail)*pBranch->m_wR/(m_nNodeArray[pBranch->m_nTailNode].wVoltage*
							m_nNodeArray[pBranch->m_nTailNode].wVoltage);
						pBranch->m_wQHead=pBranch->m_wQTail+(pBranch->m_wPTail*pBranch->m_wPTail+
							pBranch->m_wQTail*pBranch->m_wQTail)*pBranch->m_wX/(m_nNodeArray[pBranch->m_nTailNode].wVoltage*
							m_nNodeArray[pBranch->m_nTailNode].wVoltage);

						///////////////////////
						m_nNodeArray[pBranch->m_nHeadNode].wP+=pBranch->m_wPHead;
						m_nNodeArray[pBranch->m_nHeadNode].wQ+=pBranch->m_wQHead;
					}
					else
					{
						pBranch->m_wPTail=m_nNodeArray[pBranch->m_nTailNode].wP;
						pBranch->m_wQTail=m_nNodeArray[pBranch->m_nTailNode].wQ;


						pBranch->m_wPHead=pBranch->m_wPTail+(pBranch->m_wPTail*pBranch->m_wPTail+
							pBranch->m_wQTail*pBranch->m_wQTail)*pBranch->m_wR/(m_nNodeArray[pBranch->m_nTailNode].wVoltage*
							m_nNodeArray[pBranch->m_nTailNode].wVoltage*pBranch->m_wRatio*pBranch->m_wRatio);
						pBranch->m_wQHead=pBranch->m_wQTail+(pBranch->m_wPTail*pBranch->m_wPTail+
							pBranch->m_wQTail*pBranch->m_wQTail)*pBranch->m_wX/(m_nNodeArray[pBranch->m_nTailNode].wVoltage*
							m_nNodeArray[pBranch->m_nTailNode].wVoltage*pBranch->m_wRatio*pBranch->m_wRatio);
						pBranch->m_wPHead+=pBranch->m_dP0TRANS*(m_nNodeArray[pBranch->m_nHeadNode].wVoltage*
							m_nNodeArray[pBranch->m_nHeadNode].wVoltage)*(1e-3)/(pBranch->m_VnTRANS*pBranch->m_VnTRANS);
						pBranch->m_wQHead+=pBranch->m_SnTRANS*0.01*pBranch->m_CurrentTRANS*(m_nNodeArray[pBranch->m_nHeadNode].wVoltage*
							m_nNodeArray[pBranch->m_nHeadNode].wVoltage)*(1e-3)/(pBranch->m_VnTRANS*pBranch->m_VnTRANS);

						/////////////////////////////////////////
						m_nNodeArray[pBranch->m_nHeadNode].wP+=pBranch->m_wPHead;
						m_nNodeArray[pBranch->m_nHeadNode].wQ+=pBranch->m_wQHead;
					}
				}
				else
					//标吆值
				{
					if(pBranch->m_nType==BRANCH)
					{
						pBranch->m_wPTail=m_nNodeArray[pBranch->m_nTailNode].wP;
						pBranch->m_wQTail=m_nNodeArray[pBranch->m_nTailNode].wQ;
							//计算头功率
						pBranch->m_wPHead=pBranch->m_wPTail+(pBranch->m_wPTail*pBranch->m_wPTail+
							pBranch->m_wQTail*pBranch->m_wQTail)*pBranch->m_wRB/(m_nNodeArray[pBranch->m_nTailNode].wVoltage*
							m_nNodeArray[pBranch->m_nTailNode].wVoltage);
						pBranch->m_wQHead=pBranch->m_wQTail+(pBranch->m_wPTail*pBranch->m_wPTail+
							pBranch->m_wQTail*pBranch->m_wQTail)*pBranch->m_wXB/(m_nNodeArray[pBranch->m_nTailNode].wVoltage*
							m_nNodeArray[pBranch->m_nTailNode].wVoltage);

						///////////////////////
						m_nNodeArray[pBranch->m_nHeadNode].wP+=pBranch->m_wPHead;
						m_nNodeArray[pBranch->m_nHeadNode].wQ+=pBranch->m_wQHead;
					}
					else
					{
						pBranch->m_wPTail=m_nNodeArray[pBranch->m_nTailNode].wP;
						pBranch->m_wQTail=m_nNodeArray[pBranch->m_nTailNode].wQ;


						pBranch->m_wPHead=pBranch->m_wPTail+(pBranch->m_wPTail*pBranch->m_wPTail+
							pBranch->m_wQTail*pBranch->m_wQTail)*pBranch->m_wRB/(m_nNodeArray[pBranch->m_nTailNode].wVoltage*
							m_nNodeArray[pBranch->m_nTailNode].wVoltage*pBranch->m_wRatio*pBranch->m_wRatio);
						pBranch->m_wQHead=pBranch->m_wQTail+(pBranch->m_wPTail*pBranch->m_wPTail+
							pBranch->m_wQTail*pBranch->m_wQTail)*pBranch->m_wXB/(m_nNodeArray[pBranch->m_nTailNode].wVoltage*
							m_nNodeArray[pBranch->m_nTailNode].wVoltage*pBranch->m_wRatio*pBranch->m_wRatio);
						pBranch->m_wPHead+=pBranch->m_dP0TRANS*(m_nNodeArray[pBranch->m_nHeadNode].wVoltage*
							m_nNodeArray[pBranch->m_nHeadNode].wVoltage*m_nDNetInfo.wVB*m_nDNetInfo.wVB)/(pBranch->m_VnTRANS*pBranch->m_VnTRANS*m_nDNetInfo.wSB);
						pBranch->m_wQHead+=pBranch->m_SnTRANS*0.01*pBranch->m_CurrentTRANS*(m_nNodeArray[pBranch->m_nHeadNode].wVoltage*
							m_nNodeArray[pBranch->m_nHeadNode].wVoltage*m_nDNetInfo.wVB*m_nDNetInfo.wVB)/(pBranch->m_VnTRANS*pBranch->m_VnTRANS*m_nDNetInfo.wSB);

						/////////////////////////////////////////
						m_nNodeArray[pBranch->m_nHeadNode].wP+=pBranch->m_wPHead;
						m_nNodeArray[pBranch->m_nHeadNode].wQ+=pBranch->m_wQHead;
					}
				}
			}
		}	//end for 前推

	}	//end for
	if(IT==m_nDNetInfo.nMaxIteration&&dVB_N>m_nDNetInfo.wVoltageConvergence) return FALSE;
	return IT;
}	//end
		
/////////////////////////////////////
//CDNet Result
///////////////////////////////////////
double CDNet::GetDNetEnergeWaste()
{
	for(INT i=1;i<=m_nDNetInfo.nFeederRoot;++i)
	{
		INT system=m_nNodeSubSystem[m_nNewFeederRoot[i]];
		for(POSITION pos=m_nBranchMap.GetStartPosition();pos!=NULL;)
		{
			UINT key=0;
			CBranch* pBranch;
			m_nBranchMap.GetNextAssoc(pos,key,pBranch);
			if(!pBranch->m_bState)	continue;
			if(m_nBranchSubSystem[key]==system)
				m_nDNetInfo.wDNetPWaste+=fabs(pBranch->m_wPHead-pBranch->m_wPTail);
		}
	}
	return m_nDNetInfo.wDNetPWaste;
}



BOOL CDNet::GetNodeAtElement(UINT nElement,UINT& nNode)
{
	if(nElement>m_nDNetInfo.nMaxElement||nElement<=0)
		return FALSE;
	nNode=m_nMaxElementArray[nElement];
	return TRUE;
}

BOOL CDNet::GetNodeData(INT nIndex,double& voltage,double& wP,double& wQ)
{
	if(nIndex>INT( m_nDNetInfo.nMaxElement)||nIndex<=0)
		return FALSE;
	if(m_nMaxElementArray[nIndex]==-1)	return FALSE;

	int node=m_nMaxElementArray[nIndex];
	if(!IsOnSystem(node))	return FALSE;

	if(m_nDNetInfo.m_bMark)
	{
		voltage=m_nNodeArray[m_nMaxElementArray[nIndex]].wVoltage;
		wP=m_nNodeArray[m_nMaxElementArray[nIndex]].wP;
		wQ=m_nNodeArray[m_nMaxElementArray[nIndex]].wQ;
	}
	else
	{
		voltage=m_nNodeArray[nIndex].wVoltage*m_nDNetInfo.wVB;
		wP=m_nNodeArray[nIndex].wP*m_nDNetInfo.wSB;
		wQ=m_nNodeArray[nIndex].wQ*m_nDNetInfo.wSB;
	}


	return TRUE;
}


BOOL CDNet::GetBranchData(INT nIndex,UINT& head,UINT& tail,double& wPHead,double& wQHead,
						  double& wPTail,double& wQTail,double& wCurrent)
{
	if(nIndex>m_nDNetInfo.nTBranch||nIndex<=0)
		return FALSE;

	if(m_nBranchMap[nIndex]->m_bState==FALSE)
		return FALSE;

	int node=m_nBranchMap[nIndex]->m_nHeadNode;
	if(!IsOnSystem(node))	return FALSE;

	if(m_nDNetInfo.m_bMark)
	{
		head=m_nBranchMap[nIndex]->m_nHeadElement;
		tail=m_nBranchMap[nIndex]->m_nTailElement;
		wPHead=m_nBranchMap[nIndex]->m_wPHead;
		wQHead=m_nBranchMap[nIndex]->m_wQHead;
		wPTail=m_nBranchMap[nIndex]->m_wPTail;
		wQTail=m_nBranchMap[nIndex]->m_wQTail;

		wCurrent=sqrt(wPHead*wPHead+wQHead*wQHead)/(m_nNodeArray[node].wVoltage*sqrt(3.0));
	}
	else
	{
		head=m_nBranchMap[nIndex]->m_nHeadNode;
		tail=m_nBranchMap[nIndex]->m_nTailNode;
		wPHead=m_nBranchMap[nIndex]->m_wPHead*m_nDNetInfo.wSB;
		wQHead=m_nBranchMap[nIndex]->m_wQHead*m_nDNetInfo.wSB;
		wPTail=m_nBranchMap[nIndex]->m_wPTail*m_nDNetInfo.wSB;
		wQTail=m_nBranchMap[nIndex]->m_wQTail*m_nDNetInfo.wSB;
		wCurrent=sqrt(wPHead*wPHead+wQHead*wQHead)/m_nNodeArray[node].wVoltage;
	}

	//TRACE("%d	%d	%d	%f	%f\n",nIndex,head,tail,wCurrentRe,wCurrentIm);

	return TRUE;
}

BOOL CDNet::BranchWaste(INT nIndex,UINT& head,UINT& tail,double& PWaste,
						double& QWaste,double& wCurrent)
{
	if(nIndex>m_nDNetInfo.nTBranch||nIndex<=0||m_nBranchMap[nIndex]->m_nType==TRANS)
		return FALSE;
	if(m_nBranchMap[nIndex]->m_bState==FALSE)
		return FALSE;

	int node=m_nBranchMap[nIndex]->m_nHeadNode;
	if(!IsOnSystem(node))	return FALSE;

	head=m_nBranchMap[nIndex]->m_nHeadElement;
	tail=m_nBranchMap[nIndex]->m_nTailElement;
	double wPHead=m_nBranchMap[nIndex]->m_wPHead;
	double wQHead=m_nBranchMap[nIndex]->m_wQHead;
	PWaste=m_nBranchMap[nIndex]->m_wPHead-m_nBranchMap[nIndex]->m_wPTail;
	QWaste=m_nBranchMap[nIndex]->m_wQHead-m_nBranchMap[nIndex]->m_wQTail;
	wCurrent=sqrt(wPHead*wPHead+wQHead*wQHead)/(m_nNodeArray[node].wVoltage*sqrt(3.0));
	if(!m_nDNetInfo.m_bMark)
	{
		PWaste=PWaste*m_nDNetInfo.wSB;
		QWaste=QWaste*m_nDNetInfo.wSB;
		wCurrent=sqrt(wPHead*wPHead+wQHead*wQHead)/m_nNodeArray[node].wVoltage;
	}
	return TRUE;
}

BOOL CDNet::TransWaste(INT nIndex,UINT& head,UINT& tail,double& PFeWaste,
					   double& QFeWaste,double& PCuWaste,double& QCuWaste,
					   double& wCurrent)
{
	if(nIndex>m_nDNetInfo.nTBranch||nIndex<=0||m_nBranchMap[nIndex]->m_nType==BRANCH)
		return FALSE;
	if(m_nBranchMap[nIndex]->m_bState==FALSE)
		return FALSE;
	for(INT i=1;i<=m_nDNetInfo.nFeederRoot;++i)
	{
		INT system=m_nNodeSubSystem[m_nNewFeederRoot[i]];
		if(m_nBranchSubSystem[nIndex]==system)
		{
			int node=m_nBranchMap[nIndex]->m_nHeadNode;
			head=m_nBranchMap[nIndex]->m_nHeadElement;
			tail=m_nBranchMap[nIndex]->m_nTailElement;
			double wPHead=m_nBranchMap[nIndex]->m_wPHead;
			double wQHead=m_nBranchMap[nIndex]->m_wQHead;
			PFeWaste=fabs((1e-3)*m_nBranchMap[nIndex]->m_dP0TRANS*m_nNodeArray[m_nBranchMap[nIndex]->m_nHeadNode].wVoltage*
					m_nNodeArray[m_nBranchMap[nIndex]->m_nHeadNode].wVoltage/(m_nBranchMap[nIndex]->m_VnTRANS*
					m_nBranchMap[nIndex]->m_VnTRANS));
			QFeWaste=fabs((1e-3)*0.01*m_nBranchMap[nIndex]->m_CurrentTRANS*m_nBranchMap[nIndex]->m_SnTRANS*
					m_nNodeArray[m_nBranchMap[nIndex]->m_nHeadNode].wVoltage*
					m_nNodeArray[m_nBranchMap[nIndex]->m_nHeadNode].wVoltage/(m_nBranchMap[nIndex]->m_VnTRANS*
					m_nBranchMap[nIndex]->m_VnTRANS));
			PCuWaste=fabs(m_nBranchMap[nIndex]->m_wPHead-m_nBranchMap[nIndex]->m_wPTail-PFeWaste);
			QCuWaste=fabs(m_nBranchMap[nIndex]->m_wQHead-m_nBranchMap[nIndex]->m_wQTail-QFeWaste);
			wCurrent=sqrt(wPHead*wPHead+wQHead*wQHead)/(m_nNodeArray[node].wVoltage*sqrt(3.0));
			if(!m_nDNetInfo.m_bMark)
			{
				PFeWaste*=m_nDNetInfo.wSB;
				QFeWaste*=m_nDNetInfo.wSB;
				PCuWaste*=m_nDNetInfo.wSB;
				QCuWaste*=m_nDNetInfo.wSB;
				wCurrent=sqrt(wPHead*wPHead+wQHead*wQHead)/m_nNodeArray[node].wVoltage;
			}
			return TRUE;
		}
	}
	return FALSE;
}

int CDNet::GetMaxElement()
{
	return m_nDNetInfo.nMaxElement;
}

int CDNet::GetBranchNumber()
{
	return m_nDNetInfo.nTBranch;
}

BOOL CDNet::GetSwitchInfo(INT nIndex,INT& head,INT& tail,double& current)
{
	if(nIndex<=0||nIndex>m_nDNetInfo.nSwitch)	return FALSE;
	if(!m_nSwitchMap[nIndex]->bState) return FALSE;

	int node=m_nSwitchMap[nIndex]->nHeadElement;
	if(!IsOnSystem(m_nMaxElementArray[node]))	return FALSE;
	int node1=m_nSwitchMap[nIndex]->nTailElement;

	head=node;
	tail=node1;

    BOOL bHead=IsLinkSwitch(nIndex,node);
	double CurrentRe=0,CurrentIm=0;
	if(!bHead)
	{
		current=AccountCurrent(node,CurrentRe,CurrentIm);
		return TRUE;
	}

	BOOL bTail=IsLinkSwitch(nIndex,node1);
	if(!bTail)
	{
		head=node1;
		tail=node;
		current=AccountCurrent(node1,CurrentRe,CurrentIm);
		return TRUE;
	}
	int node2=node;
	if(bHead==3&&bTail==3)	return FALSE;
	if(bHead==3)
	{
		node2=node1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -