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

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

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

revision 1880 by jfenwick, Mon Oct 13 00:18:55 2008 UTC revision 1881 by artak, Tue Oct 14 04:34:09 2008 UTC
# Line 45  Line 45 
45  void Paso_Pattern_cop(Paso_SparseMatrix* A, index_t* mis_marker) {  void Paso_Pattern_cop(Paso_SparseMatrix* A, index_t* mis_marker) {
46    
47    index_t index_offset=(A->pattern->type & PATTERN_FORMAT_OFFSET1 ? 1:0);    index_t index_offset=(A->pattern->type & PATTERN_FORMAT_OFFSET1 ? 1:0);
48    dim_t i;    dim_t i,j;
49    double threshold=0.05;    double threshold=0.05;
50    index_t naib,iptr;    index_t naib,iptr;
51    bool_t flag;    bool_t flag;
# Line 61  void Paso_Pattern_cop(Paso_SparseMatrix* Line 61  void Paso_Pattern_cop(Paso_SparseMatrix*
61             #pragma omp parallel for private(naib,i,iptr,flag) schedule(static)             #pragma omp parallel for private(naib,i,iptr,flag) schedule(static)
62             for (i=0;i<n;++i) {             for (i=0;i<n;++i) {
63                if (mis_marker[i]==IS_AVAILABLE) {                if (mis_marker[i]==IS_AVAILABLE) {
64                   flag=IS_IN_MIS_NOW;                   flag=IS_AVAILABLE;
65                   for (iptr=A->pattern->ptr[i]-index_offset;iptr<A->pattern->ptr[i+1]-index_offset; ++iptr) {                   for (iptr=A->pattern->ptr[i]-index_offset;iptr<A->pattern->ptr[i+1]-index_offset; ++iptr) {
66                       naib=A->pattern->index[iptr]-index_offset;                       naib=A->pattern->index[iptr]-index_offset;
67                       if (naib!=i && A->val[naib]<threshold*A->val[i]) {                       if (naib!=i && A->val[naib]<threshold*A->val[i]) {
68                          flag=IS_AVAILABLE;                          flag=IS_IN_MIS;
69                          break;                          break;
70                       }                       }
71                   }                   }
# Line 78  void Paso_Pattern_cop(Paso_SparseMatrix* Line 78  void Paso_Pattern_cop(Paso_SparseMatrix*
78                if (mis_marker[i]==IS_AVAILABLE) {                if (mis_marker[i]==IS_AVAILABLE) {
79                   for (iptr=A->pattern->ptr[i]-index_offset;iptr<A->pattern->ptr[i+1]-index_offset; ++iptr) {                   for (iptr=A->pattern->ptr[i]-index_offset;iptr<A->pattern->ptr[i+1]-index_offset; ++iptr) {
80                       naib=A->pattern->index[iptr]-index_offset;                       naib=A->pattern->index[iptr]-index_offset;
81                       if (naib!=i && mis_marker[i]==IS_IN_MIS_NOW && A->val[naib]/A->val[i]>=-threshold)                        if (naib!=i && mis_marker[naib]==IS_IN_MIS && A->val[iptr]/A->val[i]>=-threshold)
82                           mis_marker[naib]=IS_IN_MIS;                           mis_marker[i]=IS_IN_MIS;
83                         else
84                             mis_marker[i]=IS_CONNECTED_TO_MIS;
85                   }                   }
                  mis_marker[i]=IS_CONNECTED_TO_MIS;  
86                }                }
87             }             }
88       }       }

Legend:
Removed from v.1880  
changed lines
  Added in v.1881

  ViewVC Help
Powered by ViewVC 1.1.26