/[escript]/branches/doubleplusgood/dudley/src/ElementFile_markNodes.c
ViewVC logotype

Diff of /branches/doubleplusgood/dudley/src/ElementFile_markNodes.c

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

revision 3086 by jfenwick, Thu Aug 5 05:07:58 2010 UTC revision 3145 by jfenwick, Fri Sep 3 01:25:52 2010 UTC
# Line 26  Line 26 
26    
27  void Dudley_ElementFile_markNodes(index_t* mask,index_t offset,dim_t numNodes,Dudley_ElementFile* in,bool_t useLinear) {  void Dudley_ElementFile_markNodes(index_t* mask,index_t offset,dim_t numNodes,Dudley_ElementFile* in,bool_t useLinear) {
28     dim_t i,NN,NN2,e;     dim_t i,NN,NN2,e;
    index_t *lin_nodes;  
29     Dudley_ReferenceElement* refElement=NULL;     Dudley_ReferenceElement* refElement=NULL;
30        
31     if (in!=NULL) {     if (in!=NULL) {
32           refElement=Dudley_ReferenceElementSet_borrowReferenceElement(in->referenceElementSet, FALSE);               refElement=Dudley_ReferenceElementSet_borrowReferenceElement(in->referenceElementSet, FALSE);    
33           NN2=in->numNodes;           NN2=in->numNodes;
          if (useLinear) {  
34               NN=refElement->numLinearNodes;               NN=refElement->numLinearNodes;
              lin_nodes=refElement->Type->linearNodes;  
35               #pragma omp parallel for private(e,i) schedule(static)               #pragma omp parallel for private(e,i) schedule(static)
36               for (e=0;e<in->numElements;e++) {               for (e=0;e<in->numElements;e++) {
37                   for (i=0;i<NN;i++) {                   for (i=0;i<NN;i++) {
38                         mask[in->Nodes[INDEX2(lin_nodes[i],e,NN2)]-offset]=1;                         mask[in->Nodes[INDEX2(i,e,NN2)]-offset]=1;
39                   }                   }
40               }               }
          } else {  
              NN=refElement->Type->numNodes;  
              #pragma omp parallel for private(e,i) schedule(static)  
              for (e=0;e<in->numElements;e++) {  
                  for (i=0;i<NN;i++) {  
                      mask[in->Nodes[INDEX2(i,e,NN2)]-offset]=1;  
                  }  
              }  
          }  
41      }      }
42  }  }
43    
44  void Dudley_ElementFile_markDOFsConnectedToRange(index_t* mask,index_t offset,index_t marker,index_t firstDOF,index_t lastDOF,index_t *dofIndex,Dudley_ElementFile*in ,bool_t useLinear)  void Dudley_ElementFile_markDOFsConnectedToRange(index_t* mask,index_t offset,index_t marker,index_t firstDOF,index_t lastDOF,index_t *dofIndex,Dudley_ElementFile*in ,bool_t useLinear)
45  {  {
46     dim_t i,NN,NN2,e,j;     dim_t i,NN,NN2,e,j;
47     index_t color,*lin_nodes;     index_t color;
48     Dudley_ReferenceElement* refElement=NULL;     Dudley_ReferenceElement* refElement=NULL;
49     register index_t k;     register index_t k;
50        
51     if (in!=NULL) {     if (in!=NULL) {
52           refElement=Dudley_ReferenceElementSet_borrowReferenceElement(in->referenceElementSet, FALSE);               refElement=Dudley_ReferenceElementSet_borrowReferenceElement(in->referenceElementSet, FALSE);    
53           NN2=in->numNodes;           NN2=in->numNodes;
          if (useLinear) {  
54               NN=refElement->numLinearNodes;               NN=refElement->numLinearNodes;
              lin_nodes=refElement->Type->linearNodes;  
              for (color=in->minColor;color<=in->maxColor;color++) {  
                  #pragma omp parallel for private(e,i,j,k) schedule(static)  
                  for (e=0;e<in->numElements;e++) {  
                      if (in->Color[e]==color) {  
                          for (i=0;i<NN;i++) {  
                              k=dofIndex[in->Nodes[INDEX2(lin_nodes[i],e,NN2)]];  
                              if ( (firstDOF<=k) && (k<lastDOF) ) {  
                                  for (j=0;j<NN;j++) mask[dofIndex[in->Nodes[INDEX2(lin_nodes[j],e,NN2)]]-offset]=marker;  
                                  break;  
                              }  
                          }  
                      }  
                  }  
              }  
          } else {  
              NN=refElement->Type->numNodes;  
55               for (color=in->minColor;color<=in->maxColor;color++) {               for (color=in->minColor;color<=in->maxColor;color++) {
56                   #pragma omp parallel for private(e,i,j,k) schedule(static)                   #pragma omp parallel for private(e,i,j,k) schedule(static)
57                   for (e=0;e<in->numElements;e++) {                   for (e=0;e<in->numElements;e++) {
# Line 96  void Dudley_ElementFile_markDOFsConnecte Line 66  void Dudley_ElementFile_markDOFsConnecte
66                       }                       }
67                   }                   }
68               }               }
          }  
69      }            }      
70  }  }
71    

Legend:
Removed from v.3086  
changed lines
  Added in v.3145

  ViewVC Help
Powered by ViewVC 1.1.26