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_REDUCEDORDERMODELFACTORY_HPP 00007 #define MOR_REDUCEDORDERMODELFACTORY_HPP 00008 00009 #include "EpetraExt_ModelEvaluator.h" 00010 00011 #include "Teuchos_RCP.hpp" 00012 #include "Teuchos_ParameterList.hpp" 00013 00014 class Epetra_MultiVector; 00015 class Epetra_Map; 00016 00017 namespace MOR { 00018 00019 class ReducedSpaceFactory; 00020 00021 class ReducedOrderModelFactory { 00022 public: 00023 ReducedOrderModelFactory( 00024 const Teuchos::RCP<ReducedSpaceFactory> &spaceFactory, 00025 const Teuchos::RCP<Teuchos::ParameterList> &parentParams); 00026 00027 Teuchos::RCP<EpetraExt::ModelEvaluator> create(const Teuchos::RCP<EpetraExt::ModelEvaluator> &child); 00028 00029 private: 00030 Teuchos::RCP<ReducedSpaceFactory> spaceFactory_; 00031 Teuchos::RCP<Teuchos::ParameterList> params_; 00032 00033 static Teuchos::RCP<Teuchos::ParameterList> extractModelOrderReductionParams(const Teuchos::RCP<Teuchos::ParameterList> &source); 00034 static Teuchos::RCP<Teuchos::ParameterList> extractReducedOrderModelParams(const Teuchos::RCP<Teuchos::ParameterList> &source); 00035 00036 bool useReducedOrderModel() const; 00037 00038 // Disallow copy & assignment 00039 ReducedOrderModelFactory(const ReducedOrderModelFactory &); 00040 ReducedOrderModelFactory &operator=(const ReducedOrderModelFactory &); 00041 }; 00042 00043 } // namespace MOR 00044 00045 #endif /* MOR_REDUCEDORDERMODELFACTORY_HPP */