/[escript]/branches/ripleygmg_from_3668/ripley/src/RipleyDomain.cpp
ViewVC logotype

Diff of /branches/ripleygmg_from_3668/ripley/src/RipleyDomain.cpp

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

revision 3691 by caltinay, Wed Nov 23 23:07:37 2011 UTC revision 3711 by caltinay, Tue Dec 6 00:24:43 2011 UTC
# Line 89  pair<int,int> RipleyDomain::getDataShape Line 89  pair<int,int> RipleyDomain::getDataShape
89      const int ptsPerSample = (m_numDim==2 ? 4 : 8);      const int ptsPerSample = (m_numDim==2 ? 4 : 8);
90      switch (fsType) {      switch (fsType) {
91          case Nodes:          case Nodes:
             return pair<int,int>(1, getNumNodes());  
92          case DegreesOfFreedom:          case DegreesOfFreedom:
93              return pair<int,int>(1, getNumNodes());              return pair<int,int>(1, getNumNodes());
94          case Elements:          case Elements:
95              return pair<int,int>(ptsPerSample, getNumElements());              return pair<int,int>(ptsPerSample, getNumElements());
96          case FaceElements:          case FaceElements:
97              return pair<int,int>(ptsPerSample/2, getNumFaceElements());              return pair<int,int>(ptsPerSample/2, getNumFaceElements());
             /*  
         case ReducedNodes:  
             return pair<int,int>(1, getNumReducedNodes());  
98          case ReducedElements:          case ReducedElements:
99              return pair<int,int>(1, getNumReducedElements());              return pair<int,int>(1, getNumElements());
100          case ReducedFaceElements:          case ReducedFaceElements:
101              return pair<int,int>(1, getNumReducedFaceElements());              return pair<int,int>(1, getNumFaceElements());
102                /*
103          case Points:          case Points:
104              return pair<int,int>(1, getNumNodes());              return pair<int,int>(1, getNumPoints());
105            case ReducedNodes:
106          case ReducedDegreesOfFreedom:          case ReducedDegreesOfFreedom:
107              return pair<int,int>(1, getNumReducedNodes());              return pair<int,int>(1, getNumReducedNodes());
108              */              */
# Line 113  pair<int,int> RipleyDomain::getDataShape Line 111  pair<int,int> RipleyDomain::getDataShape
111      }      }
112    
113      stringstream msg;      stringstream msg;
114      msg << "Invalid function space type " << fsType << " for "      msg << "getDataShape(): Unsupported function space type "
115          << getDescription();          << functionSpaceTypeAsString(fsType) << " for " << getDescription();
116      throw RipleyException(msg.str());      throw RipleyException(msg.str());
117  }  }
118    
# Line 233  bool RipleyDomain::commonFunctionSpace(c Line 231  bool RipleyDomain::commonFunctionSpace(c
231      return true;      return true;
232  }  }
233    
234    void RipleyDomain::interpolateOnDomain(escript::Data& target,
235                                           const escript::Data& in) const
236    {
237        const RipleyDomain& inDomain=dynamic_cast<const RipleyDomain&>(*(in.getFunctionSpace().getDomain()));
238        const RipleyDomain& targetDomain=dynamic_cast<const RipleyDomain&>(*(target.getFunctionSpace().getDomain()));
239        if (inDomain != *this)
240            throw RipleyException("Illegal domain of interpolant");
241        if (targetDomain != *this)
242            throw RipleyException("Illegal domain of interpolation target");
243    
244        stringstream msg;
245        msg << "interpolateOnDomain() not implemented for function space "
246            << functionSpaceTypeAsString(in.getFunctionSpace().getTypeCode())
247            << " -> "
248            << functionSpaceTypeAsString(target.getFunctionSpace().getTypeCode());
249    
250        switch (in.getFunctionSpace().getTypeCode()) {
251            case Nodes:
252            case DegreesOfFreedom:
253                switch (target.getFunctionSpace().getTypeCode()) {
254                    case DegreesOfFreedom:
255                        // FIXME!
256                        target=in;
257                        break;
258    
259                    case Elements:
260                        interpolateNodesOnElements(target, *const_cast<escript::Data*>(&in), false);
261                        break;
262    
263                    case ReducedElements:
264                        interpolateNodesOnElements(target, *const_cast<escript::Data*>(&in), true);
265                        break;
266    
267                    case FaceElements:
268                        interpolateNodesOnFaces(target, *const_cast<escript::Data*>(&in), false);
269                        break;
270    
271                    case ReducedFaceElements:
272                        interpolateNodesOnFaces(target, *const_cast<escript::Data*>(&in), true);
273                        break;
274    
275                    default:
276                        throw RipleyException(msg.str());
277                }
278                break;
279            default:
280                throw RipleyException(msg.str());
281        }
282    }
283    
284  escript::Data RipleyDomain::getX() const  escript::Data RipleyDomain::getX() const
285  {  {
286      return escript::continuousFunction(*this).getX();      return escript::continuousFunction(*this).getX();
# Line 355  escript::ASM_ptr RipleyDomain::newSystem Line 403  escript::ASM_ptr RipleyDomain::newSystem
403      return sma;      return sma;
404  }  }
405    
406    void RipleyDomain::setNewX(const escript::Data& arg)
407    {
408        throw RipleyException("setNewX(): Operation not supported");
409    }
410    
411  //  //
412  // the methods that follow have to be implemented by the subclasses  // the methods that follow have to be implemented by the subclasses
413  //  //
# Line 384  const int* RipleyDomain::borrowSampleRef Line 437  const int* RipleyDomain::borrowSampleRef
437      throw RipleyException("borrowSampleReferenceIDs() not implemented");      throw RipleyException("borrowSampleReferenceIDs() not implemented");
438  }  }
439    
 void RipleyDomain::setNewX(const escript::Data& arg)  
 {  
     throw RipleyException("setNewX(): Operation not supported");  
 }  
   
 void RipleyDomain::interpolateOnDomain(escript::Data& target,  
                                        const escript::Data& in) const  
 {  
     throw RipleyException("interpolateOnDomain() not implemented");  
 }  
   
440  bool RipleyDomain::probeInterpolationOnDomain(int fsType_source,  bool RipleyDomain::probeInterpolationOnDomain(int fsType_source,
441                                               int fsType_target) const                                               int fsType_target) const
442  {  {
# Line 513  dim_t RipleyDomain::getNumDataPointsGlob Line 555  dim_t RipleyDomain::getNumDataPointsGlob
555      throw RipleyException("getNumDataPointsGlobal() not implemented");      throw RipleyException("getNumDataPointsGlobal() not implemented");
556  }  }
557    
558    IndexVector RipleyDomain::getNumNodesPerDim() const
559    {
560        throw RipleyException("getNumNodesPerDim() not implemented");
561    }
562    
563    IndexVector RipleyDomain::getNumElementsPerDim() const
564    {
565        throw RipleyException("getNumElementsPerDim() not implemented");
566    }
567    
568    IndexVector RipleyDomain::getNumFacesPerBoundary() const
569    {
570        throw RipleyException("getNumFacesPerBoundary() not implemented");
571    }
572    
573    IndexVector RipleyDomain::getNodeDistribution() const
574    {
575        throw RipleyException("getNodeDistribution() not implemented");
576    }
577    
578    pair<double,double> RipleyDomain::getFirstCoordAndSpacing(dim_t dim) const
579    {
580        throw RipleyException("getFirstCoordAndSpacing() not implemented");
581    }
582    
583  dim_t RipleyDomain::getNumFaceElements() const  dim_t RipleyDomain::getNumFaceElements() const
584  {  {
585      throw RipleyException("getNumFaceElements() not implemented");      throw RipleyException("getNumFaceElements() not implemented");
# Line 533  void RipleyDomain::assembleCoordinates(e Line 600  void RipleyDomain::assembleCoordinates(e
600      throw RipleyException("assembleCoordinates() not implemented");      throw RipleyException("assembleCoordinates() not implemented");
601  }  }
602    
603    void RipleyDomain::interpolateNodesOnElements(escript::Data& out, escript::Data& in, bool reduced) const
604    {
605        throw RipleyException("interpolateNodesOnElements() not implemented");
606    }
607    
608    void RipleyDomain::interpolateNodesOnFaces(escript::Data& out, escript::Data& in, bool reduced) const
609    {
610        throw RipleyException("interpolateNodesOnFaces() not implemented");
611    }
612    
613    
614  } // end of namespace ripley  } // end of namespace ripley
615    

Legend:
Removed from v.3691  
changed lines
  Added in v.3711

  ViewVC Help
Powered by ViewVC 1.1.26