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 ALBANY_STKNODALBASISSOURCE_HPP 00007 #define ALBANY_STKNODALBASISSOURCE_HPP 00008 00009 #include "MOR_AtomicBasisSource.hpp" 00010 00011 #include "Albany_STKDiscretization.hpp" 00012 00013 #include "Epetra_Vector.h" 00014 00015 #include "Teuchos_RCP.hpp" 00016 00017 namespace Albany { 00018 00019 class StkNodalBasisSource : public MOR::AtomicBasisSource { 00020 public: 00021 explicit StkNodalBasisSource(const Teuchos::RCP<STKDiscretization> &disc); 00022 00023 virtual Epetra_Map atomMap() const; 00024 virtual int entryCount(int localAtomRank) const; 00025 virtual int entryCountMax() const; 00026 00027 virtual int vectorCount() const; 00028 virtual int currentVectorRank() const; 00029 virtual void currentVectorRankIs(int vr); 00030 00031 virtual Teuchos::ArrayView<const double> 00032 atomData(int localAtomRank, const Teuchos::ArrayView<double> &result) const; 00033 00034 private: 00035 Teuchos::RCP<STKDiscretization> disc_; 00036 00037 int currentVectorRank_; 00038 Teuchos::RCP<const Epetra_Vector> currentVector_; 00039 }; 00040 00041 } // end namespace Albany 00042 00043 #endif /* ALBANY_STKNODALBASISSOURCE_HPP */