?? dnet.h
字號:
#if !defined(_DNet_H_)
#define _DNet_H_
#include <afxtempl.h>
#include "math.h"
#define BRANCH 1 //支路類型
#define TRANS 2
struct CNode
{
double wVoltage; //節(jié)點電壓
double wRadian; //節(jié)點相角
double wP;
double wQ;
};
struct CCapCompensation
{
double m_dPc;//有功補償
double m_SnPower;//額定功率
double m_Vn;//額定電壓
UINT m_nElement;//元件號
UINT m_nCNode;//節(jié)點號
};
struct CSwitch
{
UINT nHeadElement;
UINT nTailElement;
BOOL bState;
};
struct CLink
{
UINT nNode;
BOOL bState;
};
struct CFeeder
{
UINT nOrder;
UINT nElement;
UINT nNode;
double wVoltage;
double wMeasureAP;
double wMeasureAQ;
double wComputerAP;
double wComputerAQ;
double wConvergenceP;
double wConvergenceQ;
};
class CBranch
{
private:
//atrribution
//double m_wResistance; //電阻率
public:
//attribution;
BOOL m_bState; //支路狀態(tài),0斷開,1閉合;
UINT m_nType; //支路類型
double m_wBranchD;//支路間距
double m_wR;
double m_wX;
double m_wRB;
double m_wXB;
double m_wRatio; //變比
double m_wG;
double m_wB;
double m_wGB; //標吆值
double m_wBB;
double m_wCurrent; //支路電流
double m_wPHead; //支路頭功率
double m_wQHead;
//變壓器參數(shù)
//{
double m_dP0TRANS;
double m_CurrentTRANS;
double m_SnTRANS;
double m_VnTRANS;
//}
double m_wPTail; //支路末功率
double m_wQTail;
//attribution
UINT m_nHeadNode; //優(yōu)化前的編號
UINT m_nTailNode;
//UINT m_nNewHeadNode; //優(yōu)化后的編號
//UINT m_nNewTailNode;
UINT m_nHeadElement; //支路頭尾元件號
UINT m_nTailElement;
private:
//operation
public:
//operation
void AddTrans(double PFaultWaste,double VFault,double PKong,
double KCurrent,double STotal,double GVoltage);//變壓器參數(shù)計算
void SetRX(double r,double x,double RB,double XB);
void SetNode(UINT head,UINT tail);
void SetRatio(double voltage,double position);
void SetBranchState(UINT nIndex,BOOL bState);
//operation
CBranch();
~CBranch();
};
class CBeginInfo //網(wǎng)絡(luò)原始信息類
{
private:
//attribution
public:
double m_wPHead; //支路頭、尾有功、無功
double m_wQHead;
double m_wPTail;
double m_wQTail;
double m_wPLoad; //負荷有功
double m_wQLoad; //負荷無功
double m_AP; //有功電度, 小于0時,代表電度未知
double m_AQ; //無功電度,小于0時,代表電度未知
double m_PK; //有功形狀系數(shù)
double m_QL; //無功形狀系數(shù)
double m_wA; //形狀系數(shù)
UINT m_nLoadNode; //負荷節(jié)點號
UINT nOrder;
BOOL bType;
public:
//attribution
UINT m_nLoadIndex; //負荷元件號
private:
//operation
public:
//operation
CBeginInfo(){
//todo add code;
};
~CBeginInfo(){
//todo add code;
};
};
class AFX_EXT_CLASS CDNet
{
struct CDNetInfo
{
int nNode; // 節(jié)點數(shù)
int nBranch; //支路數(shù)
int nTBranch;
int nTransBranch;
int nCable;
int nFeederRoot; //潰線根節(jié)點數(shù)
int nCap;//電容補償數(shù)目
int nMaxIteration;//最大迭代次數(shù)
int nSubSystem;//子系統(tǒng)數(shù)
int nLoad;//系統(tǒng)中的負荷數(shù)
BOOL bNetChange;
double wRuntime;//運行時間
double wVoltageConvergence; //電壓收斂判劇
double wPConvergence; //有功收斂判劇
double wQConvergence; //無功收斂判劇
double wErrorA;
double wDNetPWaste; //配網(wǎng)能量損耗
double wSB;//基準功率
double wVB;//基準電壓
UINT nMaxElement; //最大元件號
BOOL m_bMark;//計算標志,0為標吆值,1為有名值
};
private:
//attribution
CDNetInfo m_nDNetInfo;
public:
//attribulion
public:
typedef CTypedPtrMap<CMapWordToPtr,UINT,CBranch*> CBranchMap;
typedef CTypedPtrMap<CMapWordToPtr,UINT,CBeginInfo*> CBeginInfoMap;
typedef CTypedPtrMap<CMapWordToPtr,UINT,CSwitch*> CSwitchMap;
typedef CTypedPtrMap<CMapWordToPtr,UINT,CLink*> CSwitchLinkMap;
typedef CTypedPtrMap<CMapWordToPtr,UINT,CCapCompensation*> CCapMap;
typedef CTypedPtrMap<CMapWordToPtr,UINT,CFeeder*> CFeederMap;
typedef CArray<CNode,CNode> CNodeMap;
private:
//數(shù)組
float CableData[13][5];//導(dǎo)入電纜表
float BranchData[15][3];
CSwitchMap m_nSwitchMap; //開關(guān)類模板數(shù)組
CBranchMap m_nBranchMap; //支路類模板數(shù)組
CBeginInfoMap m_nBeginInfoMap; //初始信息類模板數(shù)組
CCapMap m_nCapMap;//電容補償類模板數(shù)組
CNodeMap m_nNodeArray; //節(jié)點數(shù)組
CFeederMap m_nFeederMap;//饋線信息模板
CArray<INT,INT> m_nBranchKey;//存支路關(guān)鍵號
CArray<UINT,INT> m_nNewFeederRoot; //潰線根節(jié)點號
CArray<INT,INT> m_nMaxElementArray; //最大元件數(shù)組
CArray<INT,INT> m_nBranchAtNode;//節(jié)點出口支路數(shù)組
CArray<CSwitchLinkMap,CSwitchLinkMap> m_nSwitchLinkMap;//開關(guān)鏈表數(shù)組
CArray<CSwitchLinkMap,CSwitchLinkMap> m_nBranchLinkMap;//節(jié)點鏈表數(shù)組
CArray<INT,INT> m_nBranchSubSystem;//支路子系統(tǒng)數(shù)組
CArray<INT,INT> m_nNodeSubSystem;//節(jié)點子系統(tǒng)數(shù)組
CArray<INT ,INT > m_nTranKey;//變壓器與負荷關(guān)聯(lián)數(shù)組
CArray<INT,INT> m_nNewIndex;//優(yōu)化編號
CArray<INT,INT> m_nOldIndex;//優(yōu)化編號
private:
//operation
void SetBranchTable();
void SetCableTable();
void SetBranchRX(double BranchArea,double distance,double& r,double& x,
double& RB,double& XB);
void SetCableRX(double CableArea,UINT sort,double VoltageGrade,double distance,
double& r,double& x,double& RB,double& XB);
void DeepthFirstSearch(int i);
void DeepthFirstSearch1(int i);
void ReSetEnergy();//重新分配電量
void EnergyToPower();
void IndexOption();
void ModifyNode();
void GetPower(INT nIndex); //計算功率
double GetVoltage(INT nIndex); //計算電壓
INT ModifyPower(INT nIndex);//根據(jù)入口電量的差值修改電量
double GetTotalSn(INT nIndex);
void CreateNodeEle();
void EleToNode();//將系統(tǒng)中的元件號轉(zhuǎn)化為節(jié)點號
void CreateNodeSubSys();//劃分節(jié)點子系統(tǒng)
void CreateBranchSubSys();//劃分支路子系統(tǒng)
void CreateLoadVsTrans();//形成負荷變壓器關(guān)聯(lián)表
void BranchAtNode();//將系統(tǒng)中的支路元件號轉(zhuǎn)化為節(jié)點號
void LoadAtNode();//將系統(tǒng)中的負荷元件號轉(zhuǎn)化為節(jié)點號
void FeederAtNode();//將系統(tǒng)中的饋線元件號轉(zhuǎn)化為節(jié)點號
void CapAtNode();//將系統(tǒng)中的電容元件號轉(zhuǎn)化為節(jié)點號
void ModifyPower0(INT nIndex);//依據(jù)電壓的變化,重新計算節(jié)點功率
public:
//operation
CDNet();
~CDNet();
void Initialize();
void AddBranch(UINT nIndex,BOOL state,UINT head,UINT tail,double BranchArea,double distance);
void AddCable(UINT nIndex,BOOL state,UINT head,UINT tail,double CableArea,
UINT sort,double VoltageGrade,double distance);
void AddTrans(UINT nIndex,BOOL state,UINT head,UINT tail,double PFaultWaste,double VFault,double PKong,
double KCurrent,double STotal,double GVoltage,double position);//變壓器參數(shù)計算
void SetBeginInfo(INT nIndex,INT nNode/*節(jié)點號*/, double AP,double AQ,double a,BOOL nType=TRUE);//讀入節(jié)點電量信息
void AddSwitch(UINT nIndex,UINT head,UINT tail);//設(shè)置開關(guān)信息
void SetSwitchState0(UINT nIndex,BOOL state);//設(shè)置開關(guān)狀態(tài)
void AddCap(UINT nIndex,UINT node,double dP,double Sn,double Vn);//設(shè)置電容信息
void SetFeederInfo(UINT nIndex,INT nElement,double voltage,
double measureAP,double measureAQ,
double convergenceP=0.05,double convergenceQ=0.10);//設(shè)置潰線信息
void SetConergenceV(double value);//設(shè)置電壓收斂判劇
void SetConvergenceP(double value);//設(shè)置功率收斂判劇
void SetBasicInfo(double SBvalue,double VBvalue);//設(shè)置基準值
void SetMark0(BOOL mark); //設(shè)置計算標志
void SetMaxIter(int value);//設(shè)置迭代值
void SetRuntime(double time);//設(shè)置運行時間,單位(h)
void SetErrorA(double value=0.001);//設(shè)置計算值與量測值的相對誤差
void DNetFlow(); //配電潮流計算
void NetAnalyse0(); //網(wǎng)絡(luò)分析
void DNetInitialize (); //配網(wǎng)初始化
int GetnBranch();
int GetMaxEle();
INT GetFeederNumber();
BOOL GetNodeVsEle(UINT nElement,UINT& nNode);//輸出元件對應(yīng)的節(jié)點號
BOOL BranchWasteA(INT nIndex,UINT& head,UINT& tail,double& PWaste,double& QWaste);//支路損耗
BOOL TransWasteA(INT nIndex,UINT& head,UINT& tail,double& PFeWaste,double&
QFeWaste,double& PCuWaste,double& QCuWaste);//變壓器損耗
void GetTotalWaste(double& WasteAP,double& WasteAQ);
BOOL GetFeeder(INT nIndex,double& MeaAP,double& MeaAQ,
double& AP,double& AQ);
void GetOverLoadRatio(double* pData=NULL);//輸出各饋線的過載率
};
#endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -