/[escript]/trunk/finley/src/ElementFile_setTags.cpp
ViewVC logotype

Diff of /trunk/finley/src/ElementFile_setTags.cpp

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

revision 4424 by jfenwick, Tue Apr 2 04:46:45 2013 UTC revision 4425 by caltinay, Mon May 27 05:44:28 2013 UTC
# Line 14  Line 14 
14  *****************************************************************************/  *****************************************************************************/
15    
16    
17  /************************************************************************************/  /****************************************************************************
18    
19  /*   Finley: Mesh: ElementFile */    Finley Mesh: ElementFile
20    
21  /*  set tags to newTag where mask>0 */    Sets tags to newTag where mask>0
22    
23  /************************************************************************************/  *****************************************************************************/
24    
25  #include "ElementFile.h"  #include "ElementFile.h"
26  #include "Util.h"  #include "Util.h"
27  #include "Assemble.h"  #include "Assemble.h"
28    
29  /************************************************************************************/  void Finley_ElementFile_setTags(Finley_ElementFile* self, const int newTag,
30                                    escriptDataC* mask)
31    {
32  void Finley_ElementFile_setTags(Finley_ElementFile* self,const int newTag, escriptDataC* mask) {      Finley_resetError();
33      register dim_t n,q;      if (!self)
34      dim_t numElements, numQuad;          return;
35      register __const double *mask_array;  
36      register bool_t check;      const int numElements=self->numElements;
37      Finley_resetError();      const int numQuad=Finley_ReferenceElementSet_borrowReferenceElement(
38      if (self==NULL) return;          self->referenceElementSet, Finley_Assemble_reducedIntegrationOrder(mask))
39      numElements=self->numElements;          ->Parametrization->numQuadNodes;
40    
41      numQuad= Finley_ReferenceElementSet_borrowReferenceElement(self->referenceElementSet,Finley_Assemble_reducedIntegrationOrder(mask))->Parametrization->numQuadNodes;      if (1 != getDataPointSize(mask)) {
42                Finley_setError(TYPE_ERROR, "Finley_ElementFile_setTags: number of components of mask must be 1.");
43      if (1!=getDataPointSize(mask)) {          return;
44         Finley_setError(TYPE_ERROR,"Finley_ElementFile_setTags: number of components of mask must be 1.");      } else if (!numSamplesEqual(mask, numQuad, numElements)) {
45      } else if (!numSamplesEqual(mask,numQuad,numElements)) {          Finley_setError(TYPE_ERROR, "Finley_ElementFile_setTags: illegal number of samples of mask Data object");
46         Finley_setError(TYPE_ERROR,"Finley_ElementFile_setTags: illegal number of samples of mask Data object");          return;
47      }      }
48    
49      /* now we can start */      if (isExpanded(mask)) {
50    #pragma omp parallel for
51      if (Finley_noError()) {          for (int n=0; n<numElements; n++) {
52          if (isExpanded(mask)) {              const double *mask_array=getSampleDataRO(mask,n);
53              #pragma omp parallel private(n,check,mask_array)              if (mask_array[0]>0)
54              {                  self->Tag[n]=newTag;
55                  #pragma omp for schedule(static)          }
56                  for (n=0;n<numElements;n++) {      } else {
57                      mask_array=getSampleDataRO(mask,n);  #pragma omp parallel for
58                      if (mask_array[0]>0) self->Tag[n]=newTag;          for (int n=0; n<numElements; n++) {
59                  }              const double *mask_array=getSampleDataRO(mask,n);
60              }              bool check=false;
61          } else {              for (int q=0; q<numQuad; q++)
62              #pragma omp parallel private(q,n,check,mask_array)                  check = (check || mask_array[q]);
63              {              if (check)
64                  #pragma omp for schedule(static)                  self->Tag[n]=newTag;
65                  for (n=0;n<numElements;n++) {          }
66                      mask_array=getSampleDataRO(mask,n);      }
67                      check=FALSE;      Finley_ElementFile_setTagsInUse(self);
                     for (q=0;q<numQuad;q++) check=check || mask_array[q];  
                     if (check) self->Tag[n]=newTag;  
                 }  
             }  
         }  
         Finley_ElementFile_setTagsInUse(self);  
     }  
68  }  }
69    

Legend:
Removed from v.4424  
changed lines
  Added in v.4425

  ViewVC Help
Powered by ViewVC 1.1.26