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 00007 #ifndef ALBPUMI_ABSTRACTPUMIDISCRETIZATION_HPP 00008 #define ALBPUMI_ABSTRACTPUMIDISCRETIZATION_HPP 00009 00010 #include "Albany_AbstractDiscretization.hpp" 00011 #include "AlbPUMI_FMDBMeshStruct.hpp" 00012 00013 namespace AlbPUMI { 00014 00015 class AbstractPUMIDiscretization : public Albany::AbstractDiscretization { 00016 public: 00017 00019 virtual ~AbstractPUMIDiscretization(){} 00020 00021 00022 // Retrieve mesh struct 00023 virtual Teuchos::RCP<AlbPUMI::FMDBMeshStruct> getFMDBMeshStruct() = 0; 00024 00025 // After mesh modification, need to update the element connectivity and nodal coordinates 00026 virtual void updateMesh() = 0; 00027 00028 virtual void debugMeshWriteNative(const Epetra_Vector& sol, const char* filename) = 0; 00029 virtual void debugMeshWrite(const Epetra_Vector& sol, const char* filename) = 0; 00030 00031 virtual Teuchos::RCP<const Epetra_Comm> getComm() const = 0; 00032 00033 virtual void reNameExodusOutput(const std::string& str) = 0; 00034 00035 }; 00036 00037 } 00038 00039 #endif // ALBANY_ABSTRACTPUMIDISCRETIZATION_HPP