/[escript]/trunk/finley/src/IndexList.c
ViewVC logotype

Diff of /trunk/finley/src/IndexList.c

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

temp_trunk_copy/finley/src/IndexList.c revision 1384 by phornby, Fri Jan 11 02:29:38 2008 UTC trunk/finley/src/IndexList.c revision 1628 by phornby, Fri Jul 11 13:12:46 2008 UTC
# Line 77  void Finley_IndexList_insertElementsWith Line 77  void Finley_IndexList_insertElementsWith
77                                                   Finley_ElementFile* elements, index_t* row_map, index_t* col_map)                                                   Finley_ElementFile* elements, index_t* row_map, index_t* col_map)
78  {  {
79    index_t color;    index_t color;
80    dim_t e,kr,kc,i,icol,irow, NN;    dim_t e,kr,kc,icol,irow, NN;
81    if (elements!=NULL) {    if (elements!=NULL) {
82      NN=elements->numNodes;      NN=elements->numNodes;
83      for (color=elements->minColor;color<=elements->maxColor;color++) {      for (color=elements->minColor;color<=elements->maxColor;color++) {
# Line 171  void Finley_IndexList_free(Finley_IndexL Line 171  void Finley_IndexList_free(Finley_IndexL
171  }  }
172    
173  /* creates a Paso_pattern from a range of indices */  /* creates a Paso_pattern from a range of indices */
174  Paso_Pattern* Finley_IndexList_createPattern(dim_t n,Finley_IndexList* index_list,index_t range_min,index_t range_max,index_t index_offset)  Paso_Pattern* Finley_IndexList_createPattern(dim_t n0, dim_t n,Finley_IndexList* index_list,index_t range_min,index_t range_max,index_t index_offset)
175  {  {
176     dim_t *ptr=NULL;     dim_t *ptr=NULL;
177     register dim_t s,i,itmp;     register dim_t s,i,itmp;
178     index_t *index=NULL;     index_t *index=NULL;
179     Paso_Pattern* out=NULL;     Paso_Pattern* out=NULL;
180    
181     ptr=MEMALLOC(n+1,index_t);     ptr=MEMALLOC(n+1-n0,index_t);
182     if (! Finley_checkPtr(ptr) ) {     if (! Finley_checkPtr(ptr) ) {
183         /* get the number of connections per row */         /* get the number of connections per row */
184         #pragma omp parallel for schedule(static) private(i)         #pragma omp parallel for schedule(static) private(i)
185         for(i=0;i<n;++i) {         for(i=n0;i<n;++i) {
186                ptr[i]=Finley_IndexList_count(&index_list[i],range_min,range_max);                ptr[i-n0]=Finley_IndexList_count(&index_list[i],range_min,range_max);
187         }         }
188         /* accumulate ptr */         /* accumulate ptr */
189         s=0;         s=0;
190         for(i=0;i<n;++i) {         for(i=n0;i<n;++i) {
191                 itmp=ptr[i];                 itmp=ptr[i-n0];
192                 ptr[i]=s;                 ptr[i-n0]=s;
193                 s+=itmp;                 s+=itmp;
194         }         }
195         ptr[n]=s;         ptr[n-n0]=s;
196         /* fill index */         /* fill index */
197         index=MEMALLOC(ptr[n],index_t);         index=MEMALLOC(ptr[n-n0],index_t);
198         if (! Finley_checkPtr(index)) {         if (! Finley_checkPtr(index)) {
199                #pragma omp parallel for schedule(static)                #pragma omp parallel for schedule(static)
200                for(i=0;i<n;++i) {                for(i=n0;i<n;++i) {
201                    Finley_IndexList_toArray(&index_list[i],&index[ptr[i]],range_min,range_max,index_offset);                    Finley_IndexList_toArray(&index_list[i],&index[ptr[i-n0]],range_min,range_max,index_offset);
202                }                }
203                out=Paso_Pattern_alloc(PATTERN_FORMAT_DEFAULT,1,1,n,ptr,index);                out=Paso_Pattern_alloc(PATTERN_FORMAT_DEFAULT,1,1,n-n0,ptr,index);
204         }         }
205    }    }
206    if (! Finley_noError()) {    if (! Finley_noError()) {

Legend:
Removed from v.1384  
changed lines
  Added in v.1628

  ViewVC Help
Powered by ViewVC 1.1.26