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

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

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

revision 3759 by caltinay, Fri Jan 6 06:54:51 2012 UTC revision 3760 by caltinay, Mon Jan 9 05:21:18 2012 UTC
# Line 348  void Brick::setToGradient(escript::Data& Line 348  void Brick::setToGradient(escript::Data&
348      const double C6 = .78867513459481288225;      const double C6 = .78867513459481288225;
349    
350      if (out.getFunctionSpace().getTypeCode() == Elements) {      if (out.getFunctionSpace().getTypeCode() == Elements) {
351            out.requireWrite();
352          /*** GENERATOR SNIP_GRAD_ELEMENTS TOP */          /*** GENERATOR SNIP_GRAD_ELEMENTS TOP */
353  #pragma omp parallel for  #pragma omp parallel for
354          for (index_t k2=0; k2 < m_NE2; ++k2) {          for (index_t k2=0; k2 < m_NE2; ++k2) {
# Line 405  void Brick::setToGradient(escript::Data& Line 406  void Brick::setToGradient(escript::Data&
406          } /* end of k2 loop */          } /* end of k2 loop */
407          /* GENERATOR SNIP_GRAD_ELEMENTS BOTTOM */          /* GENERATOR SNIP_GRAD_ELEMENTS BOTTOM */
408      } else if (out.getFunctionSpace().getTypeCode() == ReducedElements) {      } else if (out.getFunctionSpace().getTypeCode() == ReducedElements) {
409            out.requireWrite();
410          /*** GENERATOR SNIP_GRAD_REDUCED_ELEMENTS TOP */          /*** GENERATOR SNIP_GRAD_REDUCED_ELEMENTS TOP */
411  #pragma omp parallel for  #pragma omp parallel for
412          for (index_t k2=0; k2 < m_NE2; ++k2) {          for (index_t k2=0; k2 < m_NE2; ++k2) {
# Line 429  void Brick::setToGradient(escript::Data& Line 431  void Brick::setToGradient(escript::Data&
431          } /* end of k2 loop */          } /* end of k2 loop */
432          /* GENERATOR SNIP_GRAD_REDUCED_ELEMENTS BOTTOM */          /* GENERATOR SNIP_GRAD_REDUCED_ELEMENTS BOTTOM */
433      } else if (out.getFunctionSpace().getTypeCode() == FaceElements) {      } else if (out.getFunctionSpace().getTypeCode() == FaceElements) {
434            out.requireWrite();
435          /*** GENERATOR SNIP_GRAD_FACES TOP */          /*** GENERATOR SNIP_GRAD_FACES TOP */
436  #pragma omp parallel  #pragma omp parallel
437          {          {
# Line 638  void Brick::setToGradient(escript::Data& Line 641  void Brick::setToGradient(escript::Data&
641          } // end of parallel section          } // end of parallel section
642          /* GENERATOR SNIP_GRAD_FACES BOTTOM */          /* GENERATOR SNIP_GRAD_FACES BOTTOM */
643      } else if (out.getFunctionSpace().getTypeCode() == ReducedFaceElements) {      } else if (out.getFunctionSpace().getTypeCode() == ReducedFaceElements) {
644            out.requireWrite();
645          /*** GENERATOR SNIP_GRAD_REDUCED_FACES TOP */          /*** GENERATOR SNIP_GRAD_REDUCED_FACES TOP */
646  #pragma omp parallel  #pragma omp parallel
647          {          {
# Line 1037  void Brick::setToIntegrals(vector<double Line 1041  void Brick::setToIntegrals(vector<double
1041  void Brick::setToNormal(escript::Data& out) const  void Brick::setToNormal(escript::Data& out) const
1042  {  {
1043      if (out.getFunctionSpace().getTypeCode() == FaceElements) {      if (out.getFunctionSpace().getTypeCode() == FaceElements) {
1044            out.requireWrite();
1045  #pragma omp parallel  #pragma omp parallel
1046          {          {
1047              if (m_faceOffset[0] > -1) {              if (m_faceOffset[0] > -1) {
# Line 1124  void Brick::setToNormal(escript::Data& o Line 1129  void Brick::setToNormal(escript::Data& o
1129              }              }
1130          } // end of parallel section          } // end of parallel section
1131      } else if (out.getFunctionSpace().getTypeCode() == ReducedFaceElements) {      } else if (out.getFunctionSpace().getTypeCode() == ReducedFaceElements) {
1132            out.requireWrite();
1133  #pragma omp parallel  #pragma omp parallel
1134          {          {
1135              if (m_faceOffset[0] > -1) {              if (m_faceOffset[0] > -1) {
# Line 1207  void Brick::setToNormal(escript::Data& o Line 1213  void Brick::setToNormal(escript::Data& o
1213      }      }
1214  }  }
1215    
1216    void Brick::setToSize(escript::Data& out) const
1217    {
1218        if (out.getFunctionSpace().getTypeCode() == Elements
1219                || out.getFunctionSpace().getTypeCode() == ReducedElements) {
1220            out.requireWrite();
1221            const dim_t numQuad=out.getNumDataPointsPerSample();
1222            const double xSize=getFirstCoordAndSpacing(0).second;
1223            const double ySize=getFirstCoordAndSpacing(1).second;
1224            const double zSize=getFirstCoordAndSpacing(2).second;
1225            const double size=min(min(xSize,ySize),zSize);
1226    #pragma omp parallel for
1227            for (index_t k = 0; k < getNumElements(); ++k) {
1228                double* o = out.getSampleDataRW(k);
1229                fill(o, o+numQuad, size);
1230            }
1231        } else if (out.getFunctionSpace().getTypeCode() == FaceElements
1232                || out.getFunctionSpace().getTypeCode() == ReducedFaceElements) {
1233            out.requireWrite();
1234            const dim_t numQuad=out.getNumDataPointsPerSample();
1235            const double xSize=getFirstCoordAndSpacing(0).second;
1236            const double ySize=getFirstCoordAndSpacing(1).second;
1237            const double zSize=getFirstCoordAndSpacing(2).second;
1238    #pragma omp parallel
1239            {
1240                if (m_faceOffset[0] > -1) {
1241                    const double size=min(ySize,zSize);
1242    #pragma omp for nowait
1243                    for (index_t k2 = 0; k2 < m_NE2; ++k2) {
1244                        for (index_t k1 = 0; k1 < m_NE1; ++k1) {
1245                            double* o = out.getSampleDataRW(m_faceOffset[0]+INDEX2(k1,k2,m_NE1));
1246                            fill(o, o+numQuad, size);
1247                        }
1248                    }
1249                }
1250    
1251                if (m_faceOffset[1] > -1) {
1252                    const double size=min(ySize,zSize);
1253    #pragma omp for nowait
1254                    for (index_t k2 = 0; k2 < m_NE2; ++k2) {
1255                        for (index_t k1 = 0; k1 < m_NE1; ++k1) {
1256                            double* o = out.getSampleDataRW(m_faceOffset[1]+INDEX2(k1,k2,m_NE1));
1257                            fill(o, o+numQuad, size);
1258                        }
1259                    }
1260                }
1261    
1262                if (m_faceOffset[2] > -1) {
1263                    const double size=min(xSize,zSize);
1264    #pragma omp for nowait
1265                    for (index_t k2 = 0; k2 < m_NE2; ++k2) {
1266                        for (index_t k0 = 0; k0 < m_NE0; ++k0) {
1267                            double* o = out.getSampleDataRW(m_faceOffset[2]+INDEX2(k0,k2,m_NE0));
1268                            fill(o, o+numQuad, size);
1269                        }
1270                    }
1271                }
1272    
1273                if (m_faceOffset[3] > -1) {
1274                    const double size=min(xSize,zSize);
1275    #pragma omp for nowait
1276                    for (index_t k2 = 0; k2 < m_NE2; ++k2) {
1277                        for (index_t k0 = 0; k0 < m_NE0; ++k0) {
1278                            double* o = out.getSampleDataRW(m_faceOffset[3]+INDEX2(k0,k2,m_NE0));
1279                            fill(o, o+numQuad, size);
1280                        }
1281                    }
1282                }
1283    
1284                if (m_faceOffset[4] > -1) {
1285                    const double size=min(xSize,ySize);
1286    #pragma omp for nowait
1287                    for (index_t k1 = 0; k1 < m_NE1; ++k1) {
1288                        for (index_t k0 = 0; k0 < m_NE0; ++k0) {
1289                            double* o = out.getSampleDataRW(m_faceOffset[4]+INDEX2(k0,k1,m_NE0));
1290                            fill(o, o+numQuad, size);
1291                        }
1292                    }
1293                }
1294    
1295                if (m_faceOffset[5] > -1) {
1296                    const double size=min(xSize,ySize);
1297    #pragma omp for nowait
1298                    for (index_t k1 = 0; k1 < m_NE1; ++k1) {
1299                        for (index_t k0 = 0; k0 < m_NE0; ++k0) {
1300                            double* o = out.getSampleDataRW(m_faceOffset[5]+INDEX2(k0,k1,m_NE0));
1301                            fill(o, o+numQuad, size);
1302                        }
1303                    }
1304                }
1305            } // end of parallel section
1306    
1307        } else {
1308            stringstream msg;
1309            msg << "setToSize() not implemented for "
1310                << functionSpaceTypeAsString(out.getFunctionSpace().getTypeCode());
1311            throw RipleyException(msg.str());
1312        }
1313    }
1314    
1315  Paso_SystemMatrixPattern* Brick::getPattern(bool reducedRowOrder,  Paso_SystemMatrixPattern* Brick::getPattern(bool reducedRowOrder,
1316                                              bool reducedColOrder) const                                              bool reducedColOrder) const
1317  {  {
# Line 1812  void Brick::interpolateNodesOnElements(e Line 1917  void Brick::interpolateNodesOnElements(e
1917  {  {
1918      const dim_t numComp = in.getDataPointSize();      const dim_t numComp = in.getDataPointSize();
1919      if (reduced) {      if (reduced) {
1920            out.requireWrite();
1921          /*** GENERATOR SNIP_INTERPOLATE_REDUCED_ELEMENTS TOP */          /*** GENERATOR SNIP_INTERPOLATE_REDUCED_ELEMENTS TOP */
1922          const double c0 = .125;          const double c0 = .125;
1923  #pragma omp parallel for  #pragma omp parallel for
# Line 1835  void Brick::interpolateNodesOnElements(e Line 1941  void Brick::interpolateNodesOnElements(e
1941          } /* end of k2 loop */          } /* end of k2 loop */
1942          /* GENERATOR SNIP_INTERPOLATE_REDUCED_ELEMENTS BOTTOM */          /* GENERATOR SNIP_INTERPOLATE_REDUCED_ELEMENTS BOTTOM */
1943      } else {      } else {
1944            out.requireWrite();
1945          /*** GENERATOR SNIP_INTERPOLATE_ELEMENTS TOP */          /*** GENERATOR SNIP_INTERPOLATE_ELEMENTS TOP */
1946          const double c0 = .0094373878376559314545;          const double c0 = .0094373878376559314545;
1947          const double c1 = .035220810900864519624;          const double c1 = .035220810900864519624;
# Line 1876  void Brick::interpolateNodesOnFaces(escr Line 1983  void Brick::interpolateNodesOnFaces(escr
1983  {  {
1984      const dim_t numComp = in.getDataPointSize();      const dim_t numComp = in.getDataPointSize();
1985      if (reduced) {      if (reduced) {
1986            out.requireWrite();
1987          const double c0 = .25;          const double c0 = .25;
1988  #pragma omp parallel  #pragma omp parallel
1989          {          {
# Line 1973  void Brick::interpolateNodesOnFaces(escr Line 2081  void Brick::interpolateNodesOnFaces(escr
2081              /* GENERATOR SNIP_INTERPOLATE_REDUCED_FACES BOTTOM */              /* GENERATOR SNIP_INTERPOLATE_REDUCED_FACES BOTTOM */
2082          } // end of parallel section          } // end of parallel section
2083      } else {      } else {
2084            out.requireWrite();
2085          const double c0 = 0.044658198738520451079;          const double c0 = 0.044658198738520451079;
2086          const double c1 = 0.16666666666666666667;          const double c1 = 0.16666666666666666667;
2087          const double c2 = 0.62200846792814621559;          const double c2 = 0.62200846792814621559;

Legend:
Removed from v.3759  
changed lines
  Added in v.3760

  ViewVC Help
Powered by ViewVC 1.1.26