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

📄 maareord.cpp

📁 电力系统稀疏矩阵计算类,用法范例代码,包括三个目录,MALIB(类),MATEST(使用范例),INCLUDE(*.H),是我编写的电力系统能量管理系统基础类之一.
💻 CPP
字号:
//************************************************************************
// maareord - Optimal Matrix Reordering For Asymmetric Matrix 
//************************************************************************
#include <malib.h>

int comp_col(const void *,const void * );
//************************************************************************
int EmsMatrix::maareord(void)
{
   struct mastatest *col_mastatept;  
   struct maamtrxst *tmp_cmtrxpt;   
   int rc = SUCCESS;          
   int col_itm = 1, count;                   
   int i, j;                         

   cmtrxft =(char *)new struct maamtrxst[nmaamtrx];	
   cmtrxpt =(struct maamtrxst *)cmtrxft;	
   
   for ( i = 1; i<= nmastate && rc == SUCCESS; i++)
   {
      maorderpt = maorder_vt[i-1];
	  mastatept = mastate_vt[maorderpt->mastate_itm - 1];
      if ( mastatept->maorder_itm == i )
      {
         if ( mastatept->maamtrx_itm != 0 )
         {
            //maamtrxpt = maamtrx_vt[mastatept->maamtrx_itm - 1];
            count = mastatept->maamtrx_cnt;
            tmp_cmtrxpt = cmtrxpt;

            for ( j = 1; j <= count; j++)
            {
           	   maamtrxpt = maamtrx_vt[j+mastatept->maamtrx_itm - 2];
			   col_mastatept = mastate_vt[maamtrxpt->colitm - 1];
               cmtrxpt->rowitm  = i;
               cmtrxpt->colitm  = col_mastatept->maorder_itm;
               cmtrxpt->element = maamtrxpt->element;
               cmtrxpt->g = maamtrxpt->g;
			   cmtrxpt++;
            }

            if ( count > 1 )    // sort columns for the state
               qsort(tmp_cmtrxpt,count, sizeof(struct maamtrxst),&comp_col);

            maorderpt->cmtrxitm = col_itm;
            maorderpt->cmtrxcnt = count;
            col_itm += count;
         }
      }
      else
      {
         rc = !SUCCESS;
         printf("maareord: invalid order/state linkages for asmaorder item #%4u\n",i);
      }
   }

   return( rc );
}

//************************************************************************
// comp_col  -  comparing columns for the state
//************************************************************************
int comp_col(const void *pt1, const void *pt2)         
{
   struct maamtrxst *it1pt = (struct maamtrxst *)pt1, *it2pt = (struct maamtrxst *)pt2;
   return( it1pt->colitm <it2pt->colitm );
}

⌨️ 快捷键说明

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