~vcs-imports/escript-finley/trunk

« back to all changes in this revision

Viewing changes to paso/src/SparseMatrix_invMain.c

  • Committer: jfenwick
  • Date: 2010-10-11 01:48:14 UTC
  • Revision ID: svn-v4:77569008-7704-0410-b7a0-a92fef0b09fd:trunk:3259
Merging dudley and scons updates from branches

Show diffs side-by-side

added added

removed removed

Lines of Context:
42
42
   index_t* main_ptr=Paso_Pattern_borrowMainDiagonalPointer(A_p->pattern);
43
43
   /* check matrix is square */
44
44
   if (m_block != n_block) {
45
 
      Paso_setError(TYPE_ERROR, "Paso_SparseMatrix_invMain: square block size expected.");
 
45
      Esys_setError(TYPE_ERROR, "Paso_SparseMatrix_invMain: square block size expected.");
46
46
   }
47
 
   if (Paso_noError()) {
 
47
   if (Esys_noError()) {
48
48
         
49
49
      if (n_block==1) {
50
50
          #pragma omp parallel for private(i, iPtr, A11) schedule(static)
54
54
            if ( ABS(A11) > 0.) { 
55
55
                inv_diag[i]=1./A11;
56
56
            } else {
57
 
               Paso_setError(ZERO_DIVISION_ERROR, "Paso_SparseMatrix_invMain: non-regular main diagonal block.");
 
57
               Esys_setError(ZERO_DIVISION_ERROR, "Paso_SparseMatrix_invMain: non-regular main diagonal block.");
58
58
            }
59
59
         }
60
60
      } else if (n_block==2) {
73
73
                 inv_diag[i*4+2]=-A12*D;
74
74
                 inv_diag[i*4+3]= A11*D;
75
75
               } else {
76
 
                  Paso_setError(ZERO_DIVISION_ERROR, "Paso_SparseMatrix_invMain: non-regular main diagonal block.");
 
76
                  Esys_setError(ZERO_DIVISION_ERROR, "Paso_SparseMatrix_invMain: non-regular main diagonal block.");
77
77
               }
78
78
        }
79
79
      } else if (n_block==3) {
102
102
                 inv_diag[i*9+7]=(A13*A21-A11*A23)*D;
103
103
                 inv_diag[i*9+8]=(A11*A22-A12*A21)*D;
104
104
              } else {
105
 
                 Paso_setError(ZERO_DIVISION_ERROR, "Paso_SparseMatrix_invMain: non-regular main diagonal block.");
 
105
                 Esys_setError(ZERO_DIVISION_ERROR, "Paso_SparseMatrix_invMain: non-regular main diagonal block.");
106
106
              }
107
107
          }
108
108
      } else {     
117
117
            
118
118
            dgetrf_(n_block, m_block, &(diag[i*block_size], n_block, pivot[i*n_block], info );
119
119
            if (INFO >0 ) {
120
 
               Paso_setError(ZERO_DIVISION_ERROR, "Paso_SparseMatrix_invMain: non-regular main diagonal block.");
 
120
               Esys_setError(ZERO_DIVISION_ERROR, "Paso_SparseMatrix_invMain: non-regular main diagonal block.");
121
121
          }
122
122
         */
123
 
         Paso_setError(TYPE_ERROR, "Paso_SparseMatrix_invMain: Right now there is support block size less than 4 only");
 
123
         Esys_setError(TYPE_ERROR, "Paso_SparseMatrix_invMain: Right now there is support block size less than 4 only");
124
124
      }
125
125
   }
126
126
}