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

📄 maasolve.cpp

📁 电力系统稀疏矩阵计算类,用法范例代码,包括三个目录,MALIB(类),MATEST(使用范例),INCLUDE(*.H),是我编写的电力系统能量管理系统基础类之一.
💻 CPP
字号:
//************************************************************************
// maasolve - solve Ax=y asymmetric matrix equation for x
//************************************************************************
#include <malib.h>
//OPF用
//输入数据: mastate_vt,maamtrx_vt
//***********************************************************************
bool EmsMatrix::maasolve(void)
{
   bool rc;               
   int i, divg_state = 0;          
   int numitm = 0, item_count = 0;          
   int maorder_itm    = 0,recNum=0;          

   recNum= mastate_vt.size();
  
   if (maorderft ==NULL)
   {
   maorderft =(char*)new struct maorderst[recNum];
   }
   else
   {
     maorder_vt.clear();
   }
 
   memset(maorderft,0,recNum*sizeof(struct maorderst));
   maorderpt =(struct maorderst*)maorderft;

   nmastate = recNum;
   divg_state_pt = divg_state;

   maorderpt = (struct maorderst *)maorderft;
  
   for ( i = 1; i <= nmastate; i++, maorderpt++)
   {
      mastatept = mastate_vt[i-1];
	  mastatept->maorder_itm = i;
      maorderpt->mastate_itm = i;
      item_count += mastatept->maamtrx_cnt;
	  maorder_vt.push_back(maorderpt);
   }
  
   recNum=maamtrx_vt.size();

   nmaamtrx = recNum;
  	
   if ( rc = maareord() != SUCCESS )
   {
      printf("maasolve: renumbering fails!!\n");
      return(rc);
   }
   
   nmagmtrx = item_count;

   if ( rc = maatrian() != SUCCESS )
   {
      printf("maasolve: triangularization fails!\n");
      return(rc);
   }

   if ( rc = maafbsub() != SUCCESS )
   {
      printf("maasolve: forward/backward substitution fails!!\n");
      return(rc);
   }

  // delete []maorderft;
  // delete []magmtrxft;
  // delete []cmtrxft;

   return(SUCCESS);
}
 EmsMatrix::EmsMatrix()
 {
 
	 mastateft =NULL;	 maorderft =NULL;	 maorder1ft =NULL;	 maorder2ft =NULL;	 maamtrxft =NULL;	 cmtrxft =NULL;	 magmtrxft =NULL;	 magmtr1ft =NULL;	 magmtr2ft =NULL;	 matmtrxft =NULL;
 
 }
 EmsMatrix::~EmsMatrix()
 {

     if (mastateft !=NULL)  delete []mastateft;	 if (maorderft !=NULL)  delete []maorderft;	 if (maorder1ft !=NULL) delete []maorder1ft;	 if (maorder2ft !=NULL) delete []maorder2ft;	 if (maamtrxft != NULL) delete []maamtrxft;	 if (cmtrxft != NULL)   delete []cmtrxft;	 if (magmtrxft !=NULL)  delete []magmtrxft;	 if (magmtr1ft !=NULL)  delete []magmtr1ft;	 if (magmtr2ft !=NULL)  delete []magmtr2ft;	 if (matmtrxft !=NULL)  delete []matmtrxft;

     mastateft = NULL;	 maorderft = NULL;	 maorder1ft= NULL;	 maorder2ft= NULL;	 maamtrxft = NULL;	 cmtrxft   = NULL;	 magmtrxft = NULL;	 magmtr1ft = NULL;	 magmtr2ft = NULL;	 matmtrxft = NULL;

	 maorder1_vt.clear();	 maorder2_vt.clear();	 matmtrx_vt.clear();	 magmtr1_vt.clear();	 magmtr2_vt.clear();	 mastate_vt.clear();	 maorder_vt.clear();
   
	 magmtrx_vt.clear();	 maamtrx_vt.clear();


 }

⌨️ 快捷键说明

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