/[escript]/trunk/ripley/src/Rectangle.cpp
ViewVC logotype

Diff of /trunk/ripley/src/Rectangle.cpp

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

revision 3752 by caltinay, Tue Jan 3 08:06:36 2012 UTC revision 3753 by caltinay, Tue Jan 3 09:01:49 2012 UTC
# Line 63  Rectangle::Rectangle(int n0, int n1, dou Line 63  Rectangle::Rectangle(int n0, int n1, dou
63    
64      // bottom-left node is at (offset0,offset1) in global mesh      // bottom-left node is at (offset0,offset1) in global mesh
65      m_offset0 = (n0+1)/m_NX*(m_mpiInfo->rank%m_NX);      m_offset0 = (n0+1)/m_NX*(m_mpiInfo->rank%m_NX);
66      if (m_mpiInfo->rank%m_NX>0)      if (m_offset0 > 0)
67          m_offset0--;          m_offset0--;
68      m_offset1 = (n1+1)/m_NY*(m_mpiInfo->rank/m_NX);      m_offset1 = (n1+1)/m_NY*(m_mpiInfo->rank/m_NX);
69      if (m_mpiInfo->rank/m_NX>0)      if (m_offset1 > 0)
70          m_offset1--;          m_offset1--;
71    
72      populateSampleIds();      populateSampleIds();
# Line 1131  void Rectangle::populateSampleIds() Line 1131  void Rectangle::populateSampleIds()
1131      }      }
1132      m_nodeDistribution[m_mpiInfo->size]=getNumDataPointsGlobal();      m_nodeDistribution[m_mpiInfo->size]=getNumDataPointsGlobal();
1133      m_nodeId.resize(getNumNodes());      m_nodeId.resize(getNumNodes());
1134        m_dofId.resize(numDOF);
1135        m_elementId.resize(getNumElements());
1136        m_faceId.resize(getNumFaceElements());
1137    
1138  #pragma omp parallel for  #pragma omp parallel
1139      for (dim_t i1=0; i1<m_N1; i1++) {      {
1140          for (dim_t i0=0; i0<m_N0; i0++) {          // nodes
1141              m_nodeId[i0+i1*m_N0] = (m_offset1+i1)*(m_gNE0+1)+m_offset0+i0;  #pragma omp for nowait
1142            for (dim_t i1=0; i1<m_N1; i1++) {
1143                for (dim_t i0=0; i0<m_N0; i0++) {
1144                    m_nodeId[i0+i1*m_N0] = (m_offset1+i1)*(m_gNE0+1)+m_offset0+i0;
1145                }
1146          }          }
     }  
1147    
1148      m_dofId.resize(numDOF);          // degrees of freedom
1149      const index_t firstId=m_nodeDistribution[m_mpiInfo->rank];  #pragma omp for nowait
1150      for (dim_t i=0; i<numDOF; i++)          for (dim_t k=0; k<numDOF; k++)
1151          m_dofId[i] = firstId+i;              m_dofId[k] = m_nodeDistribution[m_mpiInfo->rank]+k;
1152    
1153            // elements
1154    #pragma omp for nowait
1155            for (dim_t k=0; k<getNumElements(); k++)
1156                m_elementId[k]=k;
1157    
1158            // face elements
1159    #pragma omp for
1160            for (dim_t k=0; k<getNumFaceElements(); k++)
1161                m_faceId[k]=k;
1162        } // end parallel section
1163    
1164      m_nodeTags.assign(getNumNodes(), 0);      m_nodeTags.assign(getNumNodes(), 0);
1165      updateTagsInUse(Nodes);      updateTagsInUse(Nodes);
1166    
     // elements  
     m_elementId.resize(getNumElements());  
 #pragma omp parallel for  
     for (dim_t k=0; k<getNumElements(); k++) {  
         m_elementId[k]=k;  
     }  
1167      m_elementTags.assign(getNumElements(), 0);      m_elementTags.assign(getNumElements(), 0);
1168      updateTagsInUse(Elements);      updateTagsInUse(Elements);
1169    
     // face element id's  
     m_faceId.resize(getNumFaceElements());  
 #pragma omp parallel for  
     for (dim_t k=0; k<getNumFaceElements(); k++) {  
         m_faceId[k]=k;  
     }  
   
1170      // generate face offset vector and set face tags      // generate face offset vector and set face tags
1171      const IndexVector facesPerEdge = getNumFacesPerBoundary();      const IndexVector facesPerEdge = getNumFacesPerBoundary();
1172      const index_t LEFT=1, RIGHT=2, BOTTOM=10, TOP=20;      const index_t LEFT=1, RIGHT=2, BOTTOM=10, TOP=20;

Legend:
Removed from v.3752  
changed lines
  Added in v.3753

  ViewVC Help
Powered by ViewVC 1.1.26