• Main Page
  • Modules
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

Recovery/JacobianRecovery2D.cpp

Go to the documentation of this file.
00001 /************************************************************************************
00002     Copyright (C) 2005-2008 Assefaw H. Gebremedhin, Arijit Tarafdar, Duc Nguyen,
00003     Alex Pothen
00004 
00005     This file is part of ColPack.
00006 
00007     ColPack is free software: you can redistribute it and/or modify
00008     it under the terms of the GNU Lesser General Public License as published
00009     by the Free Software Foundation, either version 3 of the License, or
00010     (at your option) any later version.
00011 
00012     ColPack is distributed in the hope that it will be useful,
00013     but WITHOUT ANY WARRANTY; without even the implied warranty of
00014     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015     GNU Lesser General Public License for more details.
00016 
00017     You should have received a copy of the GNU Lesser General Public License
00018     along with ColPack.  If not, see <http://www.gnu.org/licenses/>.
00019 ************************************************************************************/
00020 
00021 #include "ColPackHeaders.h"
00022 
00023 using namespace std;
00024 
00025 namespace ColPack
00026 {
00027 /*
00028 
00029         int JacobianRecovery2D::DirectRecover(BipartiteGraphBicoloringInterface* g, double** dp2_RowCompressedMatrix, double** dp2_ColumnCompressedMatrix, unsigned int ** uip2_JacobianSparsityPattern, double*** dp3_JacobianValue) {
00030                 int rowCount = GetRowVertexCount();
00031                 //int columnCount = GetColumnVertexCount();
00032 
00033                 vector<int> RightVertexColors_Transformed;
00034                 GetRightVertexColors_Transformed(RightVertexColors_Transformed);
00035 
00036                 //allocate memory for *dp3_JacobianValue. The dp3_JacobianValue and uip2_JacobianSparsityPattern matrices should have the same size
00037 //cout<<"allocate memory for *dp3_JacobianValue"<<endl;
00038                 *dp3_JacobianValue = new double*[rowCount];
00039                 for(int i=0; i < rowCount; i++) {
00040                         int numOfNonZeros = uip2_JacobianSparsityPattern[i][0];
00041                         (*dp3_JacobianValue)[i] = new double[numOfNonZeros+1];
00042                         (*dp3_JacobianValue)[i][0] = numOfNonZeros; //initialize value of the 1st entry
00043                         for(int j=1; j <= numOfNonZeros; j++) (*dp3_JacobianValue)[i][j] = 0.; //initialize value of other entries
00044                 }
00045 
00046                 //Recover value of the Jacobian from dp2_ColumnCompressedMatrix (priority) and dp2_RowCompressedMatrix
00047 cout<<"Recover value of the Jacobian from dp2_ColumnCompressedMatrix (priority) and dp2_RowCompressedMatrix"<<endl;
00048                 for(unsigned int i=0; i < (unsigned int)rowCount; i++) {
00049                         unsigned int numOfNonZeros = uip2_JacobianSparsityPattern[i][0];
00050                         for(unsigned int j=1; j <= numOfNonZeros; j++) {
00051 printf("Recover uip2_JacobianSparsityPattern[%d][%d] = %d \n", i, j, uip2_JacobianSparsityPattern[i][j]);
00052                                 // Check and see if we can recover the value from dp2_ColumnCompressedMatrix first
00053                                 if (RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]] != 0) {
00054 printf("\t from COLUMN [%d][%d] = %7.2f \n",i, RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]]-1, dp2_ColumnCompressedMatrix[i][RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]]-1]);
00055 //printf("\t from COLUMN [%d][%d] \n",i, RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]]-1);
00056                                         (*dp3_JacobianValue)[i][j] = dp2_ColumnCompressedMatrix[i][RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]]-1];
00057                                 }
00058                                 else { // If not, then use dp2_RowCompressedMatrix
00059 printf("\t from ROW [%d][%d] = %7.2f \n",m_vi_LeftVertexColors[i]-1, uip2_JacobianSparsityPattern[i][j], dp2_RowCompressedMatrix[m_vi_LeftVertexColors[i]-1][uip2_JacobianSparsityPattern[i][j]]);
00060 //printf("\t from ROW [%d][%d] \n",m_vi_LeftVertexColors[i]-1, uip2_JacobianSparsityPattern[i][j]);
00061                                         (*dp3_JacobianValue)[i][j] = dp2_RowCompressedMatrix[m_vi_LeftVertexColors[i]-1][uip2_JacobianSparsityPattern[i][j]];
00062                                 }
00063                         }
00064 
00065                 }
00066 //cout<<"DONE"<<endl;
00067 
00068                 return _TRUE;
00069         }
00070 
00071 //*/
00072 
00073         int JacobianRecovery2D::DirectRecover_RowCompressedFormat(BipartiteGraphBicoloringInterface* g, double** dp2_RowCompressedMatrix, double** dp2_ColumnCompressedMatrix, unsigned int ** uip2_JacobianSparsityPattern, double*** dp3_JacobianValue) {
00074                 if(g==NULL) {
00075                         cerr<<"g==NULL"<<endl;
00076                         return _FALSE;
00077                 }
00078 
00079                 if(AF_available) {
00080 cout<<"AF_available="<<AF_available<<endl; Pause();
00081                         reset();
00082                 }
00083 
00084                 int rowCount = g->GetRowVertexCount();
00085 
00086                 vector<int> vi_LeftVertexColors;
00087                 g->GetLeftVertexColors(vi_LeftVertexColors);
00088 
00089                 vector<int> RightVertexColors_Transformed;
00090                 g->GetRightVertexColors_Transformed(RightVertexColors_Transformed);
00091 
00092                 int i_ColumnColorCount = g->GetRightVertexColorCount();
00093                 if (g->GetRightVertexDefaultColor() == 1) i_ColumnColorCount--; //color ID 0 is used, ignore it
00094 
00095                 //Do (column-)color statistic for each row, i.e., see how many elements in that row has color 0, color 1 ...
00096                 int** colorStatistic = new int*[rowCount];      //color statistic for each row. For example, colorStatistic[0] is color statistic for row 0
00097                                                                                                         //If row 0 has 5 columns with color 3 => colorStatistic[0][3] = 5;
00098                 //Allocate memory for colorStatistic[rowCount][colorCount] and initilize the matrix
00099                 for(unsigned int i=0; i < (unsigned int)rowCount; i++) {
00100                         colorStatistic[i] = new int[i_ColumnColorCount];
00101                         for(unsigned int j=0; j < (unsigned int)i_ColumnColorCount; j++) colorStatistic[i][j] = 0;
00102                 }
00103 
00104                 //populate colorStatistic for right (column) vertices
00105                 for(unsigned int i=0; i < (unsigned int)rowCount; i++) {
00106                         int numOfNonZeros = uip2_JacobianSparsityPattern[i][0];
00107                         for(unsigned int j=1; j <= (unsigned int)numOfNonZeros; j++) {
00108                                 //non-zero in the Jacobian: [i][uip2_JacobianSparsityPattern[i][j]]
00109                                 //color of that column: RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]]-1
00110                                 if (RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]] > 0) {
00111                                         colorStatistic[i][RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]]-1]++;
00112                                 }
00113                         }
00114                 }
00115 
00116                 //allocate memory for *dp3_JacobianValue. The dp3_JacobianValue and uip2_JacobianSparsityPattern matrices should have the same size
00117 //cout<<"allocate memory for *dp3_JacobianValue"<<endl;
00118                 *dp3_JacobianValue = new double*[rowCount];
00119                 for(int i=0; i < rowCount; i++) {
00120                         int numOfNonZeros = uip2_JacobianSparsityPattern[i][0];
00121                         (*dp3_JacobianValue)[i] = new double[numOfNonZeros+1];
00122                         (*dp3_JacobianValue)[i][0] = numOfNonZeros; //initialize value of the 1st entry
00123                         for(int j=1; j <= numOfNonZeros; j++) (*dp3_JacobianValue)[i][j] = 0.; //initialize value of other entries
00124                 }
00125 
00126                 //Recover value of the Jacobian from dp2_ColumnCompressedMatrix (priority) and dp2_RowCompressedMatrix
00127 //cout<<"Recover value of the Jacobian from dp2_ColumnCompressedMatrix (priority) and dp2_RowCompressedMatrix"<<endl;
00128                 for(unsigned int i=0; i < (unsigned int)rowCount; i++) {
00129                         unsigned int numOfNonZeros = uip2_JacobianSparsityPattern[i][0];
00130                         for(unsigned int j=1; j <= numOfNonZeros; j++) {
00131 //printf("Recover uip2_JacobianSparsityPattern[%d][%d] = %d \n", i, j, uip2_JacobianSparsityPattern[i][j]);
00132                                 // Check and see if we can recover the value from dp2_ColumnCompressedMatrix first
00133                                 if (RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]] > 0 &&
00134                                         colorStatistic[i][RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]] - 1]==1
00135                                         ) {
00136 //printf("\t from COLUMN [%d][%d] = %7.2f \n",i, RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]]-1, dp2_ColumnCompressedMatrix[i][RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]]-1]);
00137 //printf("\t from COLUMN [%d][%d] \n",i, RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]]-1);
00138                                         (*dp3_JacobianValue)[i][j] = dp2_ColumnCompressedMatrix[i][RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]]-1];
00139                                 }
00140                                 else { // If not, then use dp2_RowCompressedMatrix
00141 //printf("\t from ROW [%d][%d] = %7.2f \n",m_vi_LeftVertexColors[i]-1, uip2_JacobianSparsityPattern[i][j], dp2_RowCompressedMatrix[m_vi_LeftVertexColors[i]-1][uip2_JacobianSparsityPattern[i][j]]);
00142 //printf("\t from ROW [%d][%d] \n",m_vi_LeftVertexColors[i]-1, uip2_JacobianSparsityPattern[i][j]);
00143                                         (*dp3_JacobianValue)[i][j] = dp2_RowCompressedMatrix[vi_LeftVertexColors[i]-1][uip2_JacobianSparsityPattern[i][j]];
00144                                 }
00145                         }
00146 
00147                 }
00148 //cout<<"DONE"<<endl;
00149 
00150                 free_2DMatrix(colorStatistic, rowCount);
00151                 colorStatistic = NULL;
00152 
00153                 AF_available = true;
00154                 i_AF_rowCount = rowCount;
00155                 dp2_AF_Value = *dp3_JacobianValue;
00156 
00157                 return _TRUE;
00158         }
00159 
00160 //*/
00161 
00162 
00163         int JacobianRecovery2D::DirectRecover_SparseSolversFormat(BipartiteGraphBicoloringInterface* g, double** dp2_RowCompressedMatrix, double** dp2_ColumnCompressedMatrix, unsigned int ** uip2_JacobianSparsityPattern, unsigned int** ip2_RowIndex, unsigned int** ip2_ColumnIndex, double** dp2_JacobianValue) {
00164                 if(g==NULL) {
00165                         cerr<<"g==NULL"<<endl;
00166                         return _FALSE;
00167                 }
00168 
00169                 if(SSF_available) {
00170 cout<<"SSF_available="<<SSF_available<<endl; Pause();
00171                         reset();
00172                 }
00173 
00174                 int rowCount = g->GetRowVertexCount();
00175 
00176                 vector<int> vi_LeftVertexColors;
00177                 g->GetLeftVertexColors(vi_LeftVertexColors);
00178 
00179                 vector<int> RightVertexColors_Transformed;
00180                 g->GetRightVertexColors_Transformed(RightVertexColors_Transformed);
00181 
00182                 int i_ColumnColorCount = g->GetRightVertexColorCount();
00183                 if (g->GetRightVertexDefaultColor() == 1) i_ColumnColorCount--; //color ID 0 is used, ignore it
00184 
00185 
00186                 //Do (column-)color statistic for each row, i.e., see how many elements in that row has color 0, color 1 ...
00187                 int** colorStatistic = new int*[rowCount];      //color statistic for each row. For example, colorStatistic[0] is color statistic for row 0
00188                                                                                                         //If row 0 has 5 columns with color 3 => colorStatistic[0][3] = 5;
00189                 //Allocate memory for colorStatistic[rowCount][colorCount] and initilize the matrix
00190                 for(unsigned int i=0; i < (unsigned int)rowCount; i++) {
00191                         colorStatistic[i] = new int[i_ColumnColorCount];
00192                         for(unsigned int j=0; j < (unsigned int)i_ColumnColorCount; j++) colorStatistic[i][j] = 0;
00193                 }
00194 
00195                 //populate colorStatistic for right (column) vertices
00196                 unsigned int numOfNonZeros = 0;
00197                 for(unsigned int i=0; i < (unsigned int)rowCount; i++) {
00198                         numOfNonZeros = (unsigned int)uip2_JacobianSparsityPattern[i][0];
00199                         for(unsigned int j=1; j <= numOfNonZeros; j++) {
00200                                 //non-zero in the Jacobian: [i][uip2_JacobianSparsityPattern[i][j]]
00201                                 //color of that column: RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]]-1
00202                                 if (RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]] > 0) {
00203                                         colorStatistic[i][RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]]-1]++;
00204                                 }
00205                         }
00206                 }
00207 
00208 
00209                 // Allocate memory and populate ip2_RowIndex and ip2_ColumnIndex
00210                 g->GetRowVertices(ip2_RowIndex);
00211                 numOfNonZeros = g->GetColumnIndices(ip2_ColumnIndex);
00212 
00213                 //cout<<"allocate memory for *dp2_JacobianValue rowCount="<<rowCount<<endl;
00214                 //printf("i=%d\tnumOfNonZeros=%d \n", i, numOfNonZeros);
00215                 (*dp2_JacobianValue) = new double[numOfNonZeros]; //allocate memory for *dp2_JacobianValue.
00216                 for(unsigned int i=0; i < numOfNonZeros; i++) (*dp2_JacobianValue)[i] = 0.; //initialize value of other entries
00217 
00218 
00219                 //Recover value of the Jacobian from dp2_ColumnCompressedMatrix (priority) and dp2_RowCompressedMatrix
00220 //cout<<"Recover value of the Jacobian from dp2_ColumnCompressedMatrix (priority) and dp2_RowCompressedMatrix"<<endl;
00221                 unsigned int numOfNonZerosInEachRow = 0;
00222                 for(unsigned int i=0; i < (unsigned int)rowCount; i++) {
00223                         numOfNonZerosInEachRow = uip2_JacobianSparsityPattern[i][0];
00224                         for(unsigned int j=1; j <= numOfNonZerosInEachRow; j++) {
00225 //printf("Recover uip2_JacobianSparsityPattern[%d][%d] = %d \n", i, j, uip2_JacobianSparsityPattern[i][j]);
00226                                 // Check and see if we can recover the value from dp2_ColumnCompressedMatrix first
00227                                 if (RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]] > 0 &&
00228                                         colorStatistic[i][RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]] - 1]==1
00229                                         ) {
00230 //printf("\t from COLUMN [%d][%d] = %7.2f \n",i, RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]]-1, dp2_ColumnCompressedMatrix[i][RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]]-1]);
00231 //printf("\t from COLUMN [%d][%d] \n",i, RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]]-1);
00232                                         (*dp2_JacobianValue)[(*ip2_RowIndex)[i]+j-1] = dp2_ColumnCompressedMatrix[i][RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]]-1];
00233                                 }
00234                                 else { // If not, then use dp2_RowCompressedMatrix
00235 //printf("\t from ROW [%d][%d] = %7.2f \n",m_vi_LeftVertexColors[i]-1, uip2_JacobianSparsityPattern[i][j], dp2_RowCompressedMatrix[m_vi_LeftVertexColors[i]-1][uip2_JacobianSparsityPattern[i][j]]);
00236 //printf("\t from ROW [%d][%d] \n",m_vi_LeftVertexColors[i]-1, uip2_JacobianSparsityPattern[i][j]);
00237                                         (*dp2_JacobianValue)[(*ip2_RowIndex)[i]+j-1] = dp2_RowCompressedMatrix[vi_LeftVertexColors[i]-1][uip2_JacobianSparsityPattern[i][j]];
00238                                 }
00239                         }
00240 
00241                 }
00242 //cout<<"DONE"<<endl;
00243 
00244 
00245                 //Making the array indices to start at 1 instead of 0 to conform with theIntel MKL sparse storage scheme for the direct sparse solvers
00246                 for(unsigned int i=0; i <= (unsigned int) rowCount ; i++) {
00247                   (*ip2_RowIndex)[i]++;
00248                 }
00249                 for(unsigned int i=0; i < numOfNonZeros; i++) {
00250                   (*ip2_ColumnIndex)[i]++;
00251                 }
00252 
00253 
00254                 free_2DMatrix(colorStatistic, rowCount);
00255                 colorStatistic = NULL;
00256 
00257                 SSF_available = true;
00258                 i_SSF_rowCount = rowCount;
00259                 ip_SSF_RowIndex = *ip2_RowIndex;
00260                 ip_SSF_ColumnIndex = *ip2_ColumnIndex;
00261                 dp_SSF_Value = *dp2_JacobianValue;
00262 
00263                 return _TRUE;
00264         }
00265 
00266 //*/
00267 
00268 
00269 
00270         int JacobianRecovery2D::DirectRecover_CoordinateFormat(BipartiteGraphBicoloringInterface* g, double** dp2_RowCompressedMatrix, double** dp2_ColumnCompressedMatrix, unsigned int ** uip2_JacobianSparsityPattern, unsigned int** ip2_RowIndex, unsigned int** ip2_ColumnIndex, double** dp2_JacobianValue) {
00271                 if(g==NULL) {
00272                         cerr<<"g==NULL"<<endl;
00273                         return _FALSE;
00274                 }
00275 
00276                 if(CF_available) reset();
00277 
00278                 int rowCount = g->GetRowVertexCount();
00279 
00280                 vector<int> vi_LeftVertexColors;
00281                 g->GetLeftVertexColors(vi_LeftVertexColors);
00282 
00283                 vector<int> RightVertexColors_Transformed;
00284                 g->GetRightVertexColors_Transformed(RightVertexColors_Transformed);
00285 
00286                 int i_ColumnColorCount = g->GetRightVertexColorCount();
00287                 if (g->GetRightVertexDefaultColor() == 1) i_ColumnColorCount--; //color ID 0 is used, ignore it
00288 
00289                 //Do (column-)color statistic for each row, i.e., see how many elements in that row has color 0, color 1 ...
00290                 int** colorStatistic = new int*[rowCount];      //color statistic for each row. For example, colorStatistic[0] is color statistic for row 0
00291                                                                                                         //If row 0 has 5 columns with color 3 => colorStatistic[0][3] = 5;
00292                 //Allocate memory for colorStatistic[rowCount][colorCount] and initilize the matrix
00293                 for(unsigned int i=0; i < (unsigned int)rowCount; i++) {
00294                         colorStatistic[i] = new int[i_ColumnColorCount];
00295                         for(unsigned int j=0; j < (unsigned int)i_ColumnColorCount; j++) colorStatistic[i][j] = 0;
00296                 }
00297 
00298                 //populate colorStatistic for right (column) vertices
00299                 for(unsigned int i=0; i < (unsigned int)rowCount; i++) {
00300                         int numOfNonZeros = uip2_JacobianSparsityPattern[i][0];
00301                         for(unsigned int j=1; j <= (unsigned int)numOfNonZeros; j++) {
00302                                 //non-zero in the Jacobian: [i][uip2_JacobianSparsityPattern[i][j]]
00303                                 //color of that column: m_vi_RightVertexColors[uip2_JacobianSparsityPattern[i][j]]-1
00304                                 if (RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]] > 0) {
00305                                         colorStatistic[i][RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]]-1]++;
00306                                 }
00307                         }
00308                 }
00309 
00310                 unsigned int numOfNonZeros = g->GetEdgeCount();
00311                 (*ip2_RowIndex) = new unsigned int[numOfNonZeros];
00312                 (*ip2_ColumnIndex) = new unsigned int[numOfNonZeros];
00313                 (*dp2_JacobianValue) = new double[numOfNonZeros]; //allocate memory for *dp2_JacobianValue.
00314 
00315                 //Recover value of the Jacobian from dp2_ColumnCompressedMatrix (priority) and dp2_RowCompressedMatrix
00316 //cout<<"Recover value of the Jacobian from dp2_ColumnCompressedMatrix (priority) and dp2_RowCompressedMatrix"<<endl;
00317                 unsigned int numOfNonZeros_count = 0;
00318                 for(unsigned int i=0; i < (unsigned int)rowCount; i++) {
00319                         unsigned int numOfNonZeros = uip2_JacobianSparsityPattern[i][0];
00320                         for(unsigned int j=1; j <= numOfNonZeros; j++) {
00321 //printf("Recover uip2_JacobianSparsityPattern[%d][%d] = %d \n", i, j, uip2_JacobianSparsityPattern[i][j]);
00322                                 // Check and see if we can recover the value from dp2_ColumnCompressedMatrix first
00323                                 if (RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]] > 0 &&
00324                                         colorStatistic[i][RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]] - 1]==1
00325                                         ) {
00326 //printf("\t from COLUMN [%d][%d] = %7.2f \n",i, RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]]-1, dp2_ColumnCompressedMatrix[i][RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]]-1]);
00327 //printf("\t from COLUMN [%d][%d] \n",i, RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]]-1);
00328                                         (*dp2_JacobianValue)[numOfNonZeros_count] = dp2_ColumnCompressedMatrix[i][RightVertexColors_Transformed[uip2_JacobianSparsityPattern[i][j]]-1];
00329                                 }
00330                                 else { // If not, then use dp2_RowCompressedMatrix
00331 //printf("\t from ROW [%d][%d] = %7.2f \n",m_vi_LeftVertexColors[i]-1, uip2_JacobianSparsityPattern[i][j], dp2_RowCompressedMatrix[m_vi_LeftVertexColors[i]-1][uip2_JacobianSparsityPattern[i][j]]);
00332 //printf("\t from ROW [%d][%d] \n",m_vi_LeftVertexColors[i]-1, uip2_JacobianSparsityPattern[i][j]);
00333                                         (*dp2_JacobianValue)[numOfNonZeros_count] = dp2_RowCompressedMatrix[vi_LeftVertexColors[i]-1][uip2_JacobianSparsityPattern[i][j]];
00334                                 }
00335                                 (*ip2_RowIndex)[numOfNonZeros_count] = i;
00336                                 (*ip2_ColumnIndex)[numOfNonZeros_count] = uip2_JacobianSparsityPattern[i][j];
00337                                 numOfNonZeros_count++;
00338                         }
00339 
00340                 }
00341 //cout<<"DONE"<<endl;
00342 
00343                 free_2DMatrix(colorStatistic, rowCount);
00344                 colorStatistic = NULL;
00345 
00346                 CF_available = true;
00347                 i_CF_rowCount = rowCount;
00348                 ip_CF_RowIndex = *ip2_RowIndex;
00349                 ip_CF_ColumnIndex = *ip2_ColumnIndex;
00350                 dp_CF_Value = *dp2_JacobianValue;
00351 
00352                 return _TRUE;
00353         }
00354 }

Generated on Tue Sep 7 2010 15:28:12 for ColPack by  doxygen 1.7.1