/[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 3697 by caltinay, Mon Nov 28 04:52:00 2011 UTC revision 3711 by caltinay, Tue Dec 6 00:24:43 2011 UTC
# Line 95  pair<int,int> RipleyDomain::getDataShape Line 95  pair<int,int> RipleyDomain::getDataShape
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());
98            case ReducedElements:
99                return pair<int,int>(1, getNumElements());
100            case ReducedFaceElements:
101                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:          case ReducedNodes:
106          case ReducedDegreesOfFreedom:          case ReducedDegreesOfFreedom:
107              return pair<int,int>(1, getNumReducedNodes());              return pair<int,int>(1, getNumReducedNodes());
         case ReducedElements:  
             return pair<int,int>(1, getNumReducedElements());  
         case ReducedFaceElements:  
             return pair<int,int>(1, getNumReducedFaceElements());  
108              */              */
109          default:          default:
110              break;              break;
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 231  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 387  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::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 556  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.3697  
changed lines
  Added in v.3711

  ViewVC Help
Powered by ViewVC 1.1.26