00001 //*****************************************************************// 00002 // Albany 2.0: Copyright 2012 Sandia Corporation // 00003 // This Software is released under the BSD license detailed // 00004 // in the file "license.txt" in the top-level Albany directory // 00005 //*****************************************************************// 00006 #ifndef MOR_WINDOWEDATOMICBASISSOURCE_HPP 00007 #define MOR_WINDOWEDATOMICBASISSOURCE_HPP 00008 00009 #include "MOR_AtomicBasisSource.hpp" 00010 00011 #include "Teuchos_RCP.hpp" 00012 00013 namespace MOR { 00014 00015 class WindowedAtomicBasisSource : public AtomicBasisSource { 00016 public: 00017 explicit WindowedAtomicBasisSource( 00018 const Teuchos::RCP<AtomicBasisSource> &delegate, 00019 int firstVectorRank); 00020 00021 WindowedAtomicBasisSource( 00022 const Teuchos::RCP<AtomicBasisSource> &delegate, 00023 int firstVectorRank, 00024 int vectorCountMax); 00025 00026 virtual Epetra_Map atomMap() const; 00027 virtual int entryCount(int localAtomRank) const; 00028 virtual int entryCountMax() const; 00029 00030 virtual int vectorCount() const; 00031 virtual int currentVectorRank() const; 00032 virtual void currentVectorRankIs(int vr); 00033 00034 virtual Teuchos::ArrayView<const double> 00035 atomData(int localAtomRank, const Teuchos::ArrayView<double> &result) const; 00036 00037 private: 00038 Teuchos::RCP<AtomicBasisSource> delegate_; 00039 00040 int firstVectorRank_; 00041 int vectorCount_; 00042 }; 00043 00044 } // namespace MOR 00045 00046 #endif /* MOR_WINDOWEDATOMICBASISSOURCE_HPP */