亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? factorns.cpp

?? 用于潮流計算的程序請讓我下載我需要的吧感謝了啊
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
        INDEX GetLowval()
        {
          INDEX Iget;
          VALENCE ValGet;
          /* BEGIN */
          ValGet = 0;
          do {
            Iget = ValClass[ValGet];
            ValGet++;
          } while (Iget == 0);
          UNLinkVal(Iget);
          return(Iget);
        }

#ifdef ANSIPROTO
          VALENCE ColumnValence(INDEX Col)
#else
          VALENCE ColumnValence(Col)
          INDEX Col;
#endif
          {
            VALENCE TempCount;
            SparseMatrixElement *ColValPtr;
            /* BEGIN */
            TempCount = 0;
            ColValPtr = Matrix->ColHead[Col];
            while (ColValPtr != NULL) {
              TempCount++;
              ColValPtr = ColValPtr->ColNext;
            }
            return(TempCount);
          }

#ifdef ANSIPROTO
        INDEX GetHighest(INDEX Ipivot)
#else
        INDEX GetHighest(Ipivot)
        INDEX Ipivot;
#endif
        {
          INDEX LargestI,SmallestJ;
          VALENCE ColVal;
          SparseMatrixElement *GetPtr;
          ELEMENTVALUETYPE LargestV;
          float AlphaV;
          /* BEGIN */
          LargestV = 0;  LargestI = 0;
          /* Get the largest pivot on row: */
          GetPtr = Matrix->RowHead[Ipivot];
          while ((GetPtr != NULL) && (GetPtr->Col <= PartitionCol[CurrentColPart])) {
            if (ColNew->p[GetPtr->Col] == 0) {
                if (LargestV <= fabs(GetPtr->Value)) {
                  LargestV = fabs(GetPtr->Value);
                  PivotV = LargestV;
                  DiagVal = GetPtr->Value;
                  LargestI = GetPtr->Col;
                }
            }
            GetPtr = GetPtr->RowNext;
          }
          if (Alpha == 1.0) return(LargestI); /* The most robust case */
          SmallestJ = maxN + 1;
          AlphaV = LargestV * Alpha;
          GetPtr = Matrix->RowHead[Ipivot];
          while ((GetPtr != NULL) && (GetPtr->Col <= PartitionCol[CurrentColPart])) {
            if (ColNew->p[GetPtr->Col] == 0) {
              ColVal = ColumnValence(GetPtr->Col);
              if ((ColVal <= SmallestJ) && (fabs(GetPtr->Value) >= AlphaV)) {
                SmallestJ = ColVal;
                PivotV = fabs(GetPtr->Value);
                DiagVal = GetPtr->Value;
                LargestI = GetPtr->Col;
              }
            }
            GetPtr = GetPtr->RowNext;
          }
          return(LargestI);
        } /* END GetHighest */

#ifdef ANSIPROTO
        void UpdateVals(INDEX Jpivot)
#else
        void UpdateVals(Jpivot)
        INDEX Jpivot;
#endif
        {
          SparseMatrixElement * UpdP1;
          INDEX Jord;
          /* BEGIN */
          UpdP1 = Matrix->ColHead[Jpivot];
          while (UpdP1 != NULL) {
            Jord = UpdP1->Row;
            if ((RowNew->p[Jord] == 0) && (Jord >= Ibeg) && (Jord <= Iend)) {
              UNLinkVal(Jord);
              FindVal(Jord);
              LinkVal(Jord,Valence[Jord]);
            } /* END IF */
            UpdP1 = UpdP1->ColNext;
          } /* END WHILE */
        } /* END UpdateVals */

#ifdef ANSIPROTO
      int OrderMatrix(INDEX Ibeg,INDEX Iend)
#else
      int OrderMatrix(Ibeg,Iend)
      INDEX Ibeg,Iend;
#endif
      {
        int LoopLimit;
        INDEX Istop,Ipivot,Jpivot;
        /* BEGIN OrderMatrix */
        FormClass(Ibeg,Iend);
        Istop = Iend;
        if (Istop > Matrix->n1) Istop = Matrix->n1;
        if (Istop > Matrix->n2) Istop = Matrix->n2;
        if (Istop > Nstop) Istop = Nstop;
        while (Iorder < Istop) {
          LoopLimit = Matrix->n1;
          Iorder++;

          if (Iorder > PartitionCol[CurrentColPart]) CurrentColPart++;

          do {
            LoopLimit--;
            Ipivot = GetLowval();
            Jpivot = GetHighest(Ipivot);
            if (Jpivot == 0) {
              UNLinkVal(Ipivot);
              if (Matrix->n1 == Matrix->n2) {
                fCustomPrint(stderr,"\nUnable to find a nonzero pivot for row %d\n",RowOld->p[Ipivot]);
                fCustomPrint(stderr,"Matrix is probably numerically singular\n");
                return(WARNINGEXIT);
              }
              Valence[Ipivot] = Valence[Ipivot] + DeltaValence;
              LinkVal(Ipivot,Valence[Ipivot]);
            }
          } while (((Jpivot <= 0) || (PivotV <= SINGULARITYZERO)) &&
                  (LinkCount > 0) && (LoopLimit >= 0));

          if (Jpivot <= 0) {
            fCustomPrint(stderr,"\nUnable to find an available pivot for row %d\n",RowOld->p[Ipivot]);
            fCustomPrint(stderr,"Matrix is probably topologically singular\n");
            return(WARNINGEXIT);
            /* Iorder = Istop; */
          } else {
            RowNew->p[Ipivot] = Iorder;
            RowOld->p[Iorder] = Ipivot;
            if (NearZero(PivotV)) {
              fCustomPrint(stderr,"\nEquation %d Depends on Other Equations\n",RowOld->p[Ipivot]);
              fCustomPrint(stderr,"Matrix is probably numerically singular\n");
              return(WARNINGEXIT);
              /* Iorder = Istop; */
            } else {
              ColNew->p[Jpivot] = Iorder;
              ColOld->p[Iorder] = Jpivot;
              SimElim(Ipivot,Jpivot,&DiagVal);
              UpdateVals(Jpivot);
            }
          }
        } /* END WHILE */
        return(0);
      } /* END OrderMatrix */

/* ============================ InvertNormalize ======================== */
  void InvertNormalize()
  {
    INDEX I,Inew;
    SparseMatrixElement *Ptr1;
    ELEMENTVALUETYPE DiagValue;
    /* BEGIN {InvertNormalize} */
    for (Inew=1; Inew<=Nstop; Inew++) {
      I = RowOld->p[Inew];
      Ptr1 = Matrix->RowHead[I];
      while (Ptr1 != NULL) {
        if (RowNew->p[I] == ColNew->p[Ptr1->Col]) {
          /* InvertValue(Ptr1->Value); */
          /* EquateValues(DiagValue,Ptr1->Value); */
          Ptr1->Value = 1.0 / Ptr1->Value;
          DiagValue = Ptr1->Value;
        }
        Ptr1 = Ptr1->RowNext;
      }
      Ptr1 = Matrix->RowHead[I];
      while (Ptr1 != NULL) {
        if (ColNew->p[Ptr1->Col] > RowNew->p[I]) {
          /* MultiplyValues(Ptr1^.Value,Ptr1^.Value,DiagValue); */
          Ptr1->Value = Ptr1->Value * DiagValue;
          Nmult++;
        }
        Ptr1 = Ptr1->RowNext;
      }
    }
  } /* END {InvertNormalize} */

/* ========================== FinishVectors =========================== */
  void FinishVectors()
  {
    INDEX I,K;
    /* BEGIN */
    K = 1;
    while ((RowOld->p[K] != 0) && (K <= Matrix->n1)) K++;
    for (I=1; I<=Matrix->n1; I++) {
      if (RowNew->p[I] == 0) {
        RowNew->p[I] = K;
        K++;
      }
    }
    for (I=1; I<=Matrix->n1; I++) {
      K = RowNew->p[I];
      RowOld->p[K] = I;
    }
    K = 1;
    while ((ColOld->p[K] != 0) && (K <= Matrix->n2)) K++;
    for (I=1; I<=Matrix->n2; I++) {
      if (ColNew->p[I] == 0) {
        ColNew->p[I] = K;
        K++;
      }
    }
    for (I=1; I<=Matrix->n2; I++) ColOld->p[ColNew->p[I]] = I;
  }

/* ============================= factorns ================================ */
#ifdef ANSIPROTO
int factorns(SparseMatrix *Mptr,double Param,IntegerVector *PartRow,IntegerVector *PartCol,
             IntegerVector *P1Row,IntegerVector *P1Col,IntegerVector *P2Row,IntegerVector *P2Col)
#else
int factorns(Mptr,Param,PartRow,PartCol,P1Row,P1Col,P2Row,P2Col)
SparseMatrix *Mptr;
double Param;
IntegerVector *PartRow,*PartCol,*P1Row,*P1Col,*P2Row,*P2Col;
#endif
{ /* FactorNS */
  double MinAlpha = 0.0;
  double MaxAlpha = 1.0;
  SparseMatrixElement *Ptr;
  INDEX i;
  FILE *OutFile;

  /* BEGIN */
  RowNew=P1Row; ColNew=P1Col;
  RowOld=P2Row; ColOld=P2Col;
  Alpha=Param;
  if(Alpha<MinAlpha) Alpha=MinAlpha;
  if(Alpha>MaxAlpha) Alpha=MaxAlpha;
  Matrix = Mptr;
  InitializeLSWR();
  AllocateOrderArrays();
  if (Matrix->n1 < Matrix->n2) Nstop = Matrix->n1;
                          else Nstop = Matrix->n2;
  PartitionAt = PartRow->p;
  Nparts = PartRow->N;
  PartitionCol = PartCol->p;
  NpartCol = PartCol->N;
  CurrentColPart = 1;
  Iorder = 0;
  LinkCount = 0;
  Nfills = 0;
  Nmult = 0;
  for (Ipart=1; Ipart<=Nparts; Ipart++) {
    Ibeg = PartitionAt[Ipart-1]+1;
    Iend = PartitionAt[Ipart];
    if (OrderMatrix(Ibeg,Iend)) return(1);
  }
/*  fCustomPrint(stderr,"  Factorization Fills: %d",Nfills);*/
  FinishVectors();   /* For the case of rectangular matrix factorization */
  InvertNormalize(); /* To convert to true LDU factors, as expected by REPSOL */
/*  fCustomPrint(stderr,"    Multiplications: %d\n",Nmult);*/
  for (i=1; i<=Matrix->n1; i++) {
    Ptr=Matrix->RowHead[i];
    while(Ptr!=NULL){
      Ptr->Row=RowNew->p[Ptr->Row];
      Ptr->Col=ColNew->p[Ptr->Col];
      Ptr=Ptr->RowNext;
    }
  }
#ifdef WINDOWS
  delete[] Lswr;
  delete[] Swr;
  delete[] Valence;
  delete[] FwdLink;
  delete[] BckLink;
  delete[] ValClass;
#else
  free(Lswr);
  free(Swr);
  free(Valence);
  free(FwdLink);
  free(BckLink);
  free(ValClass);
#endif
/*
  if (ExistParameter('d')) {
    OutFile=(FILE *) OpenOutput("prow.dat");
    fCustomPrint(OutFile,"%d\n",RowOld->N);
    for (i=1; i<=RowOld->N; i++) fCustomPrint(OutFile,"%d ",RowOld->p[i]);
    fCustomPrint(OutFile,"\n");
    fclose(OutFile);
    OutFile=(FILE *) OpenOutput("pcol.dat");
    fCustomPrint(OutFile,"%d\n",ColOld->N);
    for (i=1; i<=ColOld->N; i++) fCustomPrint(OutFile,"%d ",ColOld->p[i]);
    fCustomPrint(OutFile,"\n");
    fclose(OutFile);
  }
*/
  return(0);
} /* FactorNS */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜三级在线| 国产精品久久久久久久久免费丝袜 | 久久国产精品99久久久久久老狼| 成人av先锋影音| 亚洲精品一区二区三区在线观看| 国产色产综合色产在线视频| 国产一区二区三区免费观看| 91精品免费在线| 偷窥少妇高潮呻吟av久久免费| 欧美三级日韩在线| 日一区二区三区| 欧美一区二区精品久久911| 日本少妇一区二区| 欧美精品在线视频| 九色综合狠狠综合久久| 91麻豆精品国产无毒不卡在线观看| 亚洲一区中文日韩| 久久精品国产一区二区三区免费看 | www.欧美日韩国产在线| 精品久久人人做人人爽| 97久久精品人人做人人爽50路 | 日韩一区二区三区在线| 91在线精品一区二区三区| 欧美r级在线观看| 国产精品久久久久桃色tv| 狠狠色丁香久久婷婷综合丁香| 色欲综合视频天天天| 精品国产凹凸成av人网站| 亚洲日本在线a| 蜜桃精品在线观看| 一区二区在线免费观看| 亚洲福利一区二区| 粉嫩av一区二区三区| 精品国内片67194| 午夜视频一区二区三区| 成人性生交大合| 欧美精品日韩一本| 精品视频1区2区3区| 久久你懂得1024| 一区二区三区成人在线视频| 欧洲国内综合视频| 欧美国产日韩在线观看| 91小视频在线免费看| 91精品国产一区二区三区 | 91精品久久久久久蜜臀| 日本aⅴ亚洲精品中文乱码| 欧美日本一道本| 美女爽到高潮91| 久久久久久久久久美女| 国内精品伊人久久久久av影院| 国产嫩草影院久久久久| 国产.精品.日韩.另类.中文.在线.播放| 久久久久久一级片| 国产精品亚洲综合一区在线观看| 国产精品福利影院| 欧美日韩免费不卡视频一区二区三区 | 麻豆成人在线观看| 欧美激情自拍偷拍| 99久久精品国产麻豆演员表| 亚洲图片欧美综合| 欧美性猛交xxxx黑人交| 激情综合网天天干| 欧美一二三四区在线| 国产在线精品视频| 一区二区三区成人| 在线成人高清不卡| 国产91精品精华液一区二区三区| 中文字幕一区二区三区在线播放| 色婷婷亚洲精品| 视频一区二区欧美| 久久久噜噜噜久久中文字幕色伊伊 | 在线观看三级视频欧美| 亚洲国产成人tv| 欧美国产视频在线| 欧美吻胸吃奶大尺度电影| 国产成人免费xxxxxxxx| 亚洲综合丁香婷婷六月香| 日韩美女视频一区二区在线观看| 成人黄色软件下载| 国产乱妇无码大片在线观看| 亚洲最大的成人av| 久久精品夜色噜噜亚洲aⅴ| 成人动漫av在线| 激情综合色播激情啊| 亚洲三级免费电影| 国产清纯在线一区二区www| www..com久久爱| 国产在线精品一区二区三区不卡| 五月综合激情婷婷六月色窝| 国产欧美日韩精品在线| 日韩欧美色综合网站| 暴力调教一区二区三区| 韩国av一区二区三区在线观看| 久久久99精品免费观看不卡| 日韩欧美国产综合| 欧美绝品在线观看成人午夜影视| 国产成人免费在线观看| 老鸭窝一区二区久久精品| 一区二区三区影院| 亚洲日本一区二区三区| 国产精品精品国产色婷婷| 日韩视频免费观看高清完整版在线观看| 欧美亚洲综合网| av在线不卡观看免费观看| 成人教育av在线| 夫妻av一区二区| 国产美女在线观看一区| 国内久久婷婷综合| 日韩精品乱码免费| 青青青伊人色综合久久| 天天操天天色综合| 一区二区三区日韩精品视频| 一区二区三区在线视频免费观看 | 国产精品一区二区在线播放| 五月激情综合色| 午夜影视日本亚洲欧洲精品| 久久婷婷国产综合精品青草| 日韩欧美色电影| 久久影音资源网| 欧美一卡二卡在线| 久久综合狠狠综合久久激情| 欧美电视剧在线看免费| 久久蜜桃av一区精品变态类天堂 | 欧美精品九九99久久| 欧美久久免费观看| 日韩视频一区二区在线观看| 91精品国产综合久久精品麻豆| 欧美一区二区福利视频| 51午夜精品国产| 久久久久久久久久电影| 国产精品久久一卡二卡| 亚洲欧美一区二区视频| 亚洲成人免费影院| 日韩电影免费在线看| 黄色成人免费在线| 成人国产电影网| 91亚洲国产成人精品一区二三| 欧美中文字幕一区二区三区亚洲| 日本道色综合久久| 日韩欧美成人激情| 欧美韩国日本综合| 亚洲欧洲国产日韩| 日韩综合小视频| 人人爽香蕉精品| 成人av手机在线观看| 欧美一三区三区四区免费在线看 | 欧美日韩国产一二三| 欧美大片一区二区| 精品91自产拍在线观看一区| 精品欧美一区二区三区精品久久| 久久综合九色综合97_久久久| 国产午夜精品福利| 国产网红主播福利一区二区| 精品国产乱码久久久久久牛牛| 国产精品第四页| 久久99国内精品| 成人中文字幕在线| 欧美一区二区精品| 亚洲乱码中文字幕综合| 奇米精品一区二区三区四区| 9色porny自拍视频一区二区| 欧美亚洲动漫精品| 国产人成亚洲第一网站在线播放| 午夜精品久久久久久久99水蜜桃 | 99九九99九九九视频精品| 欧美在线|欧美| 国产欧美一区二区三区在线老狼| 日韩黄色小视频| 成人高清免费在线播放| 日韩欧美国产成人一区二区| 欧美电影一区二区| 一二三区精品福利视频| 国产成人精品一区二区三区四区 | 欧美精品三级在线观看| 久久久久久久性| 奇米综合一区二区三区精品视频| 国产一区二区三区香蕉| 欧美影院精品一区| 日韩理论片在线| 激情综合网av| 精品成人私密视频| 美女国产一区二区三区| 91亚洲国产成人精品一区二三| 国产欧美一区二区精品久导航 | 看片网站欧美日韩| 91视频www| 日韩欧美一级精品久久| 一区二区三区欧美视频| 国产成人高清在线| 日韩一级免费观看| 亚洲国产成人一区二区三区| 亚洲一区自拍偷拍| 成人短视频下载| 亚洲美女免费在线| 91视视频在线直接观看在线看网页在线看| 2017欧美狠狠色| 国产在线视视频有精品| 日韩一区二区视频| 国产揄拍国内精品对白| 久久精品无码一区二区三区|