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

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

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

revision 3258 by jfenwick, Thu Jan 28 02:03:15 2010 UTC revision 3259 by jfenwick, Mon Oct 11 01:48:14 2010 UTC
# Line 43  Paso_SparseMatrix* Paso_SparseMatrix_get Line 43  Paso_SparseMatrix* Paso_SparseMatrix_get
43        index_t index_offset=(A->type & MATRIX_FORMAT_OFFSET1 ? 1:0);        index_t index_offset=(A->type & MATRIX_FORMAT_OFFSET1 ? 1:0);
44        int i,k,tmp,m,subpattern_row;        int i,k,tmp,m,subpattern_row;
45        int type=A->type;        int type=A->type;
46        Paso_resetError();        Esys_resetError();
47        if (A->type & MATRIX_FORMAT_CSC) {        if (A->type & MATRIX_FORMAT_CSC) {
48            Paso_setError(TYPE_ERROR,"gathering submatrices supports CSR matrix format only.");            Esys_setError(TYPE_ERROR,"gathering submatrices supports CSR matrix format only.");
49        } else {        } else {
50           sub_pattern=Paso_Pattern_getSubpattern(A->pattern,n_row_sub,n_col_sub,row_list,new_col_index);           sub_pattern=Paso_Pattern_getSubpattern(A->pattern,n_row_sub,n_col_sub,row_list,new_col_index);
51           if (Paso_noError()) {           if (Esys_noError()) {
52              /* create the return object */              /* create the return object */
53              out=Paso_SparseMatrix_alloc(type,sub_pattern,A->row_block_size,A->col_block_size,TRUE);              out=Paso_SparseMatrix_alloc(type,sub_pattern,A->row_block_size,A->col_block_size,TRUE);
54              if (Paso_noError()) {              if (Esys_noError()) {
55                   #pragma omp parallel for private(i,k,m,subpattern_row,tmp) schedule(static)                   #pragma omp parallel for private(i,k,m,subpattern_row,tmp) schedule(static)
56                   for (i=0;i<n_row_sub;++i) {                   for (i=0;i<n_row_sub;++i) {
57                       subpattern_row=row_list[i];                       subpattern_row=row_list[i];
# Line 95  Paso_SparseMatrix* Paso_SparseMatrix_get Line 95  Paso_SparseMatrix* Paso_SparseMatrix_get
95                    }                    }
96              }              }
97              else {              else {
98                    Paso_setError(VALUE_ERROR,"Requested and actual block sizes do not match.");                    Esys_setError(VALUE_ERROR,"Requested and actual block sizes do not match.");
99              }              }
100        }        }
101        else if (blocksize==2) {        else if (blocksize==2) {
# Line 116  Paso_SparseMatrix* Paso_SparseMatrix_get Line 116  Paso_SparseMatrix* Paso_SparseMatrix_get
116                    }                    }
117              }              }
118              else {              else {
119                    Paso_setError(VALUE_ERROR,"Requested and actual block sizes do not match.");                    Esys_setError(VALUE_ERROR,"Requested and actual block sizes do not match.");
120              }              }
121        }        }
122        else if (blocksize==3) {        else if (blocksize==3) {
# Line 145  Paso_SparseMatrix* Paso_SparseMatrix_get Line 145  Paso_SparseMatrix* Paso_SparseMatrix_get
145                    }                    }
146              }              }
147              else {              else {
148                    Paso_setError(VALUE_ERROR,"Requested and actual block sizes do not match.");                    Esys_setError(VALUE_ERROR,"Requested and actual block sizes do not match.");
149              }              }
150        }        }
151                            

Legend:
Removed from v.3258  
changed lines
  Added in v.3259

  ViewVC Help
Powered by ViewVC 1.1.26