/[escript]/trunk/paso/src/SystemMatrix_saveHB.c
ViewVC logotype

Diff of /trunk/paso/src/SystemMatrix_saveHB.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 414 by jgs, Wed Nov 9 02:02:19 2005 UTC revision 415 by gross, Wed Jan 4 05:37:33 2006 UTC
# Line 166  void generate_HB( FILE *fp, dim_t *col_p Line 166  void generate_HB( FILE *fp, dim_t *col_p
166    
167  void Paso_SystemMatrix_saveHB( Paso_SystemMatrix *A_p, char *filename_p )  void Paso_SystemMatrix_saveHB( Paso_SystemMatrix *A_p, char *filename_p )
168  {  {
169            index_t index_offset=(A_p->type & MATRIX_FORMAT_OFFSET1 ? 1:0);
170      /* open the file */      /* open the file */
171      FILE *fileHandle_p = fopen( filename_p, "w" );      FILE *fileHandle_p = fopen( filename_p, "w" );
172      if( fileHandle_p == NULL )      if( fileHandle_p == NULL )
# Line 174  void Paso_SystemMatrix_saveHB( Paso_Syst Line 175  void Paso_SystemMatrix_saveHB( Paso_Syst
175          return;          return;
176      }      }
177    
178            
179      /* check the internal storage type      /* check the internal storage type
180       * currently ONLY support for CSC       * currently ONLY support for CSC
181       */       */
182      switch( A_p->type )      if ( A_p->type & MATRIX_FORMAT_CSC) {
     {  
         case CSC:  
183                  if( A_p->row_block_size == 1 && A_p->col_block_size == 1 )                  if( A_p->row_block_size == 1 && A_p->col_block_size == 1 )
184                  {                  {
185                      M = A_p->num_rows;                      M = A_p->num_rows;
# Line 203  void Paso_SystemMatrix_saveHB( Paso_Syst Line 203  void Paso_SystemMatrix_saveHB( Paso_Syst
203                      i = 0;                      i = 0;
204                      for( iCol=0; iCol<A_p->pattern->n_ptr; iCol++ )                      for( iCol=0; iCol<A_p->pattern->n_ptr; iCol++ )
205                          for( ic=0; ic<A_p->col_block_size; ic++)                          for( ic=0; ic<A_p->col_block_size; ic++)
206                              for( iPtr=A_p->pattern->ptr[iCol]-PTR_OFFSET; iPtr<A_p->pattern->ptr[iCol+1]-PTR_OFFSET; iPtr++)                              for( iPtr=A_p->pattern->ptr[iCol]-index_offset; iPtr<A_p->pattern->ptr[iCol+1]-index_offset; iPtr++)
207                                  for( ir=0; ir<A_p->row_block_size; ir++ )                                  for( ir=0; ir<A_p->row_block_size; ir++ )
208                                  {                                  {
209                                      row_ind[i] = (A_p->pattern->index[iPtr]-INDEX_OFFSET)*A_p->row_block_size+ir+1;                                      row_ind[i] = (A_p->pattern->index[iPtr]-index_offset)*A_p->row_block_size+ir+1;
210                                      col_ind[i] = iCol*A_p->col_block_size+ic+1;                                      col_ind[i] = iCol*A_p->col_block_size+ic+1;
211                                      i++;                                      i++;
212                                  }                                  }
# Line 231  void Paso_SystemMatrix_saveHB( Paso_Syst Line 231  void Paso_SystemMatrix_saveHB( Paso_Syst
231                      MEMFREE( col_ind );                      MEMFREE( col_ind );
232                      MEMFREE( row_ind );                      MEMFREE( row_ind );
233                  }                  }
234                  break;          } else {
235          case CSR:                  Paso_setError(TYPE_ERROR,"Paso_SystemMatrix_saveHB: only CSC is currently supported.\n");
 //              fprintf( fileHandle_p, "bleh CSR found,,\n" );  
         default:  
                 Paso_setError(TYPE_ERROR,"__FILE__: only CSC is currently supported.\n");  
236      }      }
237    
238      /* close the file */      /* close the file */

Legend:
Removed from v.414  
changed lines
  Added in v.415

  ViewVC Help
Powered by ViewVC 1.1.26