/[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 2548 by jfenwick, Mon Jul 20 06:20:06 2009 UTC revision 2748 by gross, Tue Nov 17 07:32:59 2009 UTC
# Line 26  Line 26 
26    
27  void Finley_ElementFile_markNodes(index_t* mask,index_t offset,dim_t numNodes,Finley_ElementFile* in,bool_t useLinear) {  void Finley_ElementFile_markNodes(index_t* mask,index_t offset,dim_t numNodes,Finley_ElementFile* in,bool_t useLinear) {
28     dim_t i,NN,NN2,e;     dim_t i,NN,NN2,e;
29     index_t *lin_node,*id=NULL;     index_t *lin_nodes;
30       Finley_ReferenceElement* refElement=NULL;
31      
32     if (in!=NULL) {     if (in!=NULL) {
33       id=TMPMEMALLOC(in->ReferenceElement->Type->numNodes, index_t);           refElement=Finley_ReferenceElementSet_borrowReferenceElement(in->referenceElementSet, FALSE);    
34       if (! Finley_checkPtr(id) ){           NN2=in->numNodes;
35          if (useLinear) {           if (useLinear) {
36             NN=in->LinearReferenceElement->Type->numNodes;               NN=refElement->numLinearNodes;
37             lin_node=in->ReferenceElement->Type->linearNodes;               lin_nodes=refElement->Type->linearNodes;
38          } else {               #pragma omp parallel for private(e,i) schedule(static)
39             NN=in->ReferenceElement->Type->numNodes;               for (e=0;e<in->numElements;e++) {
40             lin_node=id;                   for (i=0;i<NN;i++) {
41             for (i=0;i<in->ReferenceElement->Type->numNodes;i++) id[i]=i;                         mask[in->Nodes[INDEX2(lin_nodes[i],e,NN2)]-offset]=1;
42          }                   }
43          NN2=in->numNodes;               }
44             } else {
45          #pragma omp parallel for private(e,i) schedule(static)               NN=refElement->Type->numNodes;
46          for (e=0;e<in->numElements;e++) {               #pragma omp parallel for private(e,i) schedule(static)
47              for (i=0;i<NN;i++) {               for (e=0;e<in->numElements;e++) {
48                  mask[in->Nodes[INDEX2(lin_node[i],e,NN2)]-offset]=1;                   for (i=0;i<NN;i++) {
49             }                       mask[in->Nodes[INDEX2(i,e,NN2)]-offset]=1;
50          }                   }
51          TMPMEMFREE(id);               }
52       }           }
53     }      }
54  }  }
55    
56  void Finley_ElementFile_markDOFsConnectedToRange(index_t* mask,index_t offset,index_t marker,index_t firstDOF,index_t lastDOF,index_t *dofIndex,Finley_ElementFile*in ,bool_t useLinear)  void Finley_ElementFile_markDOFsConnectedToRange(index_t* mask,index_t offset,index_t marker,index_t firstDOF,index_t lastDOF,index_t *dofIndex,Finley_ElementFile*in ,bool_t useLinear)
57  {  {
58     dim_t i,NN,NN2,e,j;     dim_t i,NN,NN2,e,j;
59     index_t color,*lin_node,*id=NULL,k;     index_t color,*lin_nodes;
60       Finley_ReferenceElement* refElement=NULL;
61       register index_t k;
62      
63     if (in!=NULL) {     if (in!=NULL) {
64       id=TMPMEMALLOC(in->ReferenceElement->Type->numNodes, index_t);           refElement=Finley_ReferenceElementSet_borrowReferenceElement(in->referenceElementSet, FALSE);    
65       if (! Finley_checkPtr(id) ){           NN2=in->numNodes;
66          if (useLinear) {           if (useLinear) {
67             NN=in->LinearReferenceElement->Type->numNodes;               NN=refElement->numLinearNodes;
68             lin_node=in->ReferenceElement->Type->linearNodes;               lin_nodes=refElement->Type->linearNodes;
69          } else {               for (color=in->minColor;color<=in->maxColor;color++) {
70             NN=in->ReferenceElement->Type->numNodes;                   #pragma omp parallel for private(e,i,j,k) schedule(static)
71             lin_node=id;                   for (e=0;e<in->numElements;e++) {
72             for (i=0;i<in->ReferenceElement->Type->numNodes;i++) id[i]=i;                       if (in->Color[e]==color) {
73          }                           for (i=0;i<NN;i++) {
74          NN2=in->numNodes;                               k=dofIndex[in->Nodes[INDEX2(lin_nodes[i],e,NN2)]];
75          for (color=in->minColor;color<=in->maxColor;color++) {                               if ( (firstDOF<=k) && (k<lastDOF) ) {
76              #pragma omp parallel for private(e,i,j,k) schedule(static)                                   for (j=0;j<NN;j++) mask[dofIndex[in->Nodes[INDEX2(lin_nodes[j],e,NN2)]]-offset]=marker;
77              for (e=0;e<in->numElements;e++) {                                   break;
78                 if (in->Color[e]==color) {                               }
79                    for (i=0;i<NN;i++) {                           }
80                       k=dofIndex[in->Nodes[INDEX2(lin_node[i],e,NN2)]];                       }
81                       if ( (firstDOF<=k) && (k<lastDOF) ) {                   }
82                          for (j=0;j<NN;j++) {               }
83                                     mask[dofIndex[in->Nodes[INDEX2(lin_node[j],e,NN2)]]-offset]=marker;           } else {
84                          }               NN=refElement->Type->numNodes;
85                          break;               for (color=in->minColor;color<=in->maxColor;color++) {
86                       }                   #pragma omp parallel for private(e,i,j,k) schedule(static)
87                    }                   for (e=0;e<in->numElements;e++) {
88                 }                       if (in->Color[e]==color) {
89              }                           for (i=0;i<NN;i++) {
90          }                               k=dofIndex[in->Nodes[INDEX2(i,e,NN2)]];
91       }                               if ( (firstDOF<=k) && (k<lastDOF) ) {
92       TMPMEMFREE(id);                                   for (j=0;j<NN;j++) mask[dofIndex[in->Nodes[INDEX2(j,e,NN2)]]-offset]=marker;
93     }                                   break;
94                                 }
95                             }
96                         }
97                     }
98                 }
99             }
100        }      
101  }  }
102    

Legend:
Removed from v.2548  
changed lines
  Added in v.2748

  ViewVC Help
Powered by ViewVC 1.1.26