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

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

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

revision 3766 by caltinay, Thu Jan 12 08:17:49 2012 UTC revision 3785 by caltinay, Wed Jan 25 04:00:33 2012 UTC
# Line 100  pair<int,int> RipleyDomain::getDataShape Line 100  pair<int,int> RipleyDomain::getDataShape
100      const int ptsPerSample = (m_numDim==2 ? 4 : 8);      const int ptsPerSample = (m_numDim==2 ? 4 : 8);
101      switch (fsType) {      switch (fsType) {
102          case Nodes:          case Nodes:
             return pair<int,int>(1, getNumNodes());  
103          case ReducedNodes: //FIXME: reduced          case ReducedNodes: //FIXME: reduced
104              if (getCoarseMesh())              return pair<int,int>(1, getNumNodes());
                 return getCoarseMesh()->getDataShape(Nodes);  
             break;  
105          case DegreesOfFreedom:          case DegreesOfFreedom:
106          case ReducedDegreesOfFreedom: //FIXME: reduced          case ReducedDegreesOfFreedom: //FIXME: reduced
107              return pair<int,int>(1, getNumDOF());              return pair<int,int>(1, getNumDOF());
# Line 300  void RipleyDomain::interpolateOnDomain(e Line 297  void RipleyDomain::interpolateOnDomain(e
297          throw RipleyException("interpolateOnDomain(): Cannot interpolate reduced data to non-reduced data.");          throw RipleyException("interpolateOnDomain(): Cannot interpolate reduced data to non-reduced data.");
298      } else if ((inFS==Elements && outFS==ReducedElements)      } else if ((inFS==Elements && outFS==ReducedElements)
299              || (inFS==FaceElements && outFS==ReducedFaceElements)) {              || (inFS==FaceElements && outFS==ReducedFaceElements)) {
300          averageData(target, *const_cast<escript::Data*>(&in));          if (in.actsExpanded())
301                averageData(target, *const_cast<escript::Data*>(&in));
302            else
303                copyData(target, *const_cast<escript::Data*>(&in));
304      } else {      } else {
305          switch (inFS) {          switch (inFS) {
306              case Nodes:              case Nodes:
# Line 315  void RipleyDomain::interpolateOnDomain(e Line 315  void RipleyDomain::interpolateOnDomain(e
315                          break;                          break;
316    
317                      case Nodes:                      case Nodes:
                         copyData(target, *const_cast<escript::Data*>(&in));  
318                      case ReducedNodes: //FIXME: reduced                      case ReducedNodes: //FIXME: reduced
319                            copyData(target, *const_cast<escript::Data*>(&in));
320                          break;                          break;
321    
322                      case Elements:                      case Elements:
# Line 710  escript::ASM_ptr RipleyDomain::newSystem Line 710  escript::ASM_ptr RipleyDomain::newSystem
710      Paso_SystemMatrix* matrix = Paso_SystemMatrix_alloc(type, pattern,      Paso_SystemMatrix* matrix = Paso_SystemMatrix_alloc(type, pattern,
711              row_blocksize, column_blocksize, FALSE);              row_blocksize, column_blocksize, FALSE);
712      paso::checkPasoError();      paso::checkPasoError();
     Paso_SystemMatrixPattern_free(pattern);  
713      escript::ASM_ptr sma(new SystemMatrixAdapter(matrix, row_blocksize,      escript::ASM_ptr sma(new SystemMatrixAdapter(matrix, row_blocksize,
714                  row_functionspace, column_blocksize, column_functionspace));                  row_functionspace, column_blocksize, column_functionspace));
715      return sma;      return sma;
# Line 764  void RipleyDomain::addPDEToSystem( Line 763  void RipleyDomain::addPDEToSystem(
763          throw RipleyException("addPDEToSystem(): Number of equations and number of solutions don't match");          throw RipleyException("addPDEToSystem(): Number of equations and number of solutions don't match");
764      //TODO: more system matrix checks      //TODO: more system matrix checks
765    
766      if (numEq==1)      if (numEq==1) {
767          if (reducedOrder)          if (reducedOrder) {
768              assemblePDESingleReduced(S, rhs, A, B, C, D, X, Y, d, y);              assemblePDESingleReduced(S, rhs, A, B, C, D, X, Y);
769          else              assemblePDEBoundarySingleReduced(S, rhs, d, y);
770              assemblePDESingle(S, rhs, A, B, C, D, X, Y, d, y);          } else {
771      else              assemblePDESingle(S, rhs, A, B, C, D, X, Y);
772          if (reducedOrder)              assemblePDEBoundarySingle(S, rhs, d, y);
773              assemblePDESystemReduced(S, rhs, A, B, C, D, X, Y, d, y);          }
774          else      } else {
775              assemblePDESystem(S, rhs, A, B, C, D, X, Y, d, y);          if (reducedOrder) {
776                assemblePDESystemReduced(S, rhs, A, B, C, D, X, Y);
777                assemblePDEBoundarySystemReduced(S, rhs, d, y);
778            } else {
779                assemblePDESystem(S, rhs, A, B, C, D, X, Y);
780                assemblePDEBoundarySystem(S, rhs, d, y);
781            }
782        }
783  }  }
784    
785  void RipleyDomain::addPDEToRHS(escript::Data& rhs, const escript::Data& X,  void RipleyDomain::addPDEToRHS(escript::Data& rhs, const escript::Data& X,
# Line 790  void RipleyDomain::addPDEToRHS(escript:: Line 796  void RipleyDomain::addPDEToRHS(escript::
796              return;              return;
797      }      }
798    
799      if (rhs.getDataPointSize() == 1)      if (rhs.getDataPointSize() == 1) {
800          assemblePDESingle(NULL, rhs, escript::Data(), escript::Data(), escript::Data(), escript::Data(), X, Y, escript::Data(), y);          assemblePDESingle(NULL, rhs, escript::Data(), escript::Data(), escript::Data(), escript::Data(), X, Y);
801      else          assemblePDEBoundarySingle(NULL, rhs, escript::Data(), y);
802          assemblePDESystem(NULL, rhs, escript::Data(), escript::Data(), escript::Data(), escript::Data(), X, Y, escript::Data(), y);      } else {
803            assemblePDESystem(NULL, rhs, escript::Data(), escript::Data(), escript::Data(), escript::Data(), X, Y);
804            assemblePDEBoundarySystem(NULL, rhs, escript::Data(), y);
805        }
806  }  }
807    
808  void RipleyDomain::setNewX(const escript::Data& arg)  void RipleyDomain::setNewX(const escript::Data& arg)
# Line 1090  bool RipleyDomain::ownSample(int fsType, Line 1099  bool RipleyDomain::ownSample(int fsType,
1099      throw RipleyException("ownSample() not implemented");      throw RipleyException("ownSample() not implemented");
1100  }  }
1101    
 void RipleyDomain::addPDEToLumpedSystem(escript::Data& mat,  
         const escript::Data& D, const escript::Data& d,  
         const escript::Data& d_dirac, const bool useHRZ) const  
 {  
     throw RipleyException("addPDEToLumpedSystem() not implemented");  
 }  
   
1102  void RipleyDomain::addPDEToTransportProblem(  void RipleyDomain::addPDEToTransportProblem(
1103          escript::AbstractTransportProblem& tp,          escript::AbstractTransportProblem& tp,
1104          escript::Data& source, const escript::Data& M,          escript::Data& source, const escript::Data& M,
# Line 1177  dim_t RipleyDomain::getNumDOF() const Line 1179  dim_t RipleyDomain::getNumDOF() const
1179      throw RipleyException("getNumDOF() not implemented");      throw RipleyException("getNumDOF() not implemented");
1180  }  }
1181    
 escript::Domain_ptr RipleyDomain::getCoarseMesh() const  
 {  
     throw RipleyException("getCoarseMesh() not implemented");  
 }  
   
1182  dim_t RipleyDomain::insertNeighbourNodes(IndexVector& index, index_t node) const  dim_t RipleyDomain::insertNeighbourNodes(IndexVector& index, index_t node) const
1183  {  {
1184      throw RipleyException("insertNeighbourNodes() not implemented");      throw RipleyException("insertNeighbourNodes() not implemented");
# Line 1204  void RipleyDomain::assembleIntegrate(vec Line 1201  void RipleyDomain::assembleIntegrate(vec
1201    
1202  void RipleyDomain::assemblePDESingle(Paso_SystemMatrix* mat, escript::Data& rhs,  void RipleyDomain::assemblePDESingle(Paso_SystemMatrix* mat, escript::Data& rhs,
1203          const escript::Data& A, const escript::Data& B, const escript::Data& C,          const escript::Data& A, const escript::Data& B, const escript::Data& C,
1204          const escript::Data& D, const escript::Data& X, const escript::Data& Y,          const escript::Data& D, const escript::Data& X, const escript::Data& Y) const
         const escript::Data& d, const escript::Data& y) const  
1205  {  {
1206      throw RipleyException("assemblePDESingle() not implemented");      throw RipleyException("assemblePDESingle() not implemented");
1207  }  }
1208    
1209    void RipleyDomain::assemblePDEBoundarySingle(Paso_SystemMatrix* mat,
1210          escript::Data& rhs, const escript::Data& d, const escript::Data& y) const
1211    {
1212        throw RipleyException("assemblePDEBoundarySingle() not implemented");
1213    }
1214    
1215  void RipleyDomain::assemblePDESingleReduced(Paso_SystemMatrix* mat,  void RipleyDomain::assemblePDESingleReduced(Paso_SystemMatrix* mat,
1216          escript::Data& rhs, const escript::Data& A, const escript::Data& B,          escript::Data& rhs, const escript::Data& A, const escript::Data& B,
1217          const escript::Data& C, const escript::Data& D, const escript::Data& X,          const escript::Data& C, const escript::Data& D, const escript::Data& X,
1218          const escript::Data& Y, const escript::Data& d, const escript::Data& y) const          const escript::Data& Y) const
1219  {  {
1220      throw RipleyException("assemblePDESingleReduced() not implemented");      throw RipleyException("assemblePDESingleReduced() not implemented");
1221  }  }
1222    
1223    void RipleyDomain::assemblePDEBoundarySingleReduced(Paso_SystemMatrix* mat,
1224          escript::Data& rhs, const escript::Data& d, const escript::Data& y) const
1225    {
1226        throw RipleyException("assemblePDEBoundarySingleReduced() not implemented");
1227    }
1228    
1229  void RipleyDomain::assemblePDESystem(Paso_SystemMatrix* mat, escript::Data& rhs,  void RipleyDomain::assemblePDESystem(Paso_SystemMatrix* mat, escript::Data& rhs,
1230          const escript::Data& A, const escript::Data& B, const escript::Data& C,          const escript::Data& A, const escript::Data& B, const escript::Data& C,
1231          const escript::Data& D, const escript::Data& X, const escript::Data& Y,          const escript::Data& D, const escript::Data& X, const escript::Data& Y) const
         const escript::Data& d, const escript::Data& y) const  
1232  {  {
1233      throw RipleyException("assemblePDESystem() not implemented");      throw RipleyException("assemblePDESystem() not implemented");
1234  }  }
1235    
1236    void RipleyDomain::assemblePDEBoundarySystem(Paso_SystemMatrix* mat,
1237          escript::Data& rhs, const escript::Data& d, const escript::Data& y) const
1238    {
1239        throw RipleyException("assemblePDEBoundarySystem() not implemented");
1240    }
1241    
1242  void RipleyDomain::assemblePDESystemReduced(Paso_SystemMatrix* mat,  void RipleyDomain::assemblePDESystemReduced(Paso_SystemMatrix* mat,
1243          escript::Data& rhs, const escript::Data& A, const escript::Data& B,          escript::Data& rhs, const escript::Data& A, const escript::Data& B,
1244          const escript::Data& C, const escript::Data& D, const escript::Data& X,          const escript::Data& C, const escript::Data& D, const escript::Data& X,
1245          const escript::Data& Y, const escript::Data& d, const escript::Data& y) const          const escript::Data& Y) const
1246  {  {
1247      throw RipleyException("assemblePDESystemReduced() not implemented");      throw RipleyException("assemblePDESystemReduced() not implemented");
1248  }  }
1249    
1250    void RipleyDomain::assemblePDEBoundarySystemReduced(Paso_SystemMatrix* mat,
1251          escript::Data& rhs, const escript::Data& d, const escript::Data& y) const
1252    {
1253        throw RipleyException("assemblePDEBoundarySystemReduced() not implemented");
1254    }
1255    
1256  void RipleyDomain::interpolateNodesOnElements(escript::Data& out, escript::Data& in, bool reduced) const  void RipleyDomain::interpolateNodesOnElements(escript::Data& out, escript::Data& in, bool reduced) const
1257  {  {
1258      throw RipleyException("interpolateNodesOnElements() not implemented");      throw RipleyException("interpolateNodesOnElements() not implemented");

Legend:
Removed from v.3766  
changed lines
  Added in v.3785

  ViewVC Help
Powered by ViewVC 1.1.26