00001 //*****************************************************************// 00002 // Albany 2.0: Copyright 2013 Kitware Inc. // 00003 // This Software is released under the BSD license detailed // 00004 // in the file "license.txt" in the top-level Albany directory // 00005 //*****************************************************************// 00006 00007 #ifndef ALBANY_CATALYSTDECORATOR_HPP 00008 #define ALBANY_CATALYSTDECORATOR_HPP 00009 00010 #include "Albany_AbstractDiscretization.hpp" 00011 00012 class vtkUnstructuredGridBase; 00013 00014 namespace Albany { 00015 namespace Catalyst { 00016 00017 class Decorator : public AbstractDiscretization 00018 { 00019 public: 00020 Decorator( 00021 Teuchos::RCP<Albany::AbstractDiscretization> discretization_, 00022 const Teuchos::RCP<Teuchos::ParameterList>& catalystParams); 00023 ~Decorator(); 00024 00026 Teuchos::RCP<const Epetra_Map> getMap() const; 00027 00029 Teuchos::RCP<const Epetra_Map> getOverlapMap() const; 00030 00032 Teuchos::RCP<const Epetra_CrsGraph> getJacobianGraph() const; 00033 00035 Teuchos::RCP<const Epetra_CrsGraph> getOverlapJacobianGraph() const; 00036 00038 Teuchos::RCP<const Epetra_Map> getNodeMap() const; 00039 00041 const NodeSetList& getNodeSets() const; 00042 const NodeSetCoordList& getNodeSetCoords() const; 00043 00045 const SideSetList& getSideSets(const int workset) const; 00046 00048 const WorksetArray<Teuchos::ArrayRCP<Teuchos::ArrayRCP<Teuchos::ArrayRCP<int> > > >::type& getWsElNodeEqID() const; 00049 00051 Teuchos::ArrayRCP<double>& getCoordinates() const; 00052 const WorksetArray<Teuchos::ArrayRCP<Teuchos::ArrayRCP<double*> > >::type& getCoords() const; 00053 const WorksetArray<Teuchos::ArrayRCP<Teuchos::ArrayRCP<double> > >::type& getSurfaceHeight() const; 00054 const WorksetArray<Teuchos::ArrayRCP<double> >::type& getTemperature() const; 00055 const WorksetArray<Teuchos::ArrayRCP<Teuchos::ArrayRCP<double> > >::type& getBasalFriction() const; 00056 const WorksetArray<Teuchos::ArrayRCP<Teuchos::ArrayRCP<double> > >::type& getThickness() const; 00057 00059 void printCoords() const; 00060 00061 Teuchos::RCP<Albany::AbstractMeshStruct> getMeshStruct() const; 00062 00063 Albany::StateArrays& getStateArrays(); 00064 00066 const WorksetArray<std::string>::type& getWsEBNames() const; 00067 00069 const WorksetArray<int>::type& getWsPhysIndex() const; 00070 00072 WsLIDList& getElemGIDws(); 00073 00074 void writeSolution(const Epetra_Vector& soln, const double time, const bool overlapped = false); 00075 00076 vtkUnstructuredGridBase* newVtkUnstructuredGrid(); 00077 00078 Teuchos::RCP<Epetra_Vector> getSolutionField() const; 00079 00080 void setResidualField(const Epetra_Vector& residual); 00081 00083 bool hasRestartSolution() const; 00084 00085 virtual bool supportsMOR() const; 00086 00088 double restartDataTime() const; 00089 00091 int getNumDim() const; 00092 00094 int getNumEq() const; 00095 00096 private: 00098 Decorator(const Decorator&); 00099 00101 Decorator& operator=(const Decorator&); 00102 00103 Teuchos::RCP<Albany::AbstractDiscretization> discretization; 00104 int timestep; 00105 }; 00106 00107 } // end namespace Catalyst 00108 } // end namespace Albany 00109 00110 #endif // ALBANY_CATALYSTDECORATOR_HPP