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_MORFACADEIMPL_HPP 00007 #define ALBANY_MORFACADEIMPL_HPP 00008 00009 #include "Albany_MORFacade.hpp" 00010 00011 #include "MOR_ReducedBasisFactory.hpp" 00012 #include "MOR_ReducedSpaceFactory.hpp" 00013 #include "MOR_SampleDofListFactory.hpp" 00014 00015 #include "MOR_ReducedOrderModelFactory.hpp" 00016 #include "MOR_ObserverFactory.hpp" 00017 00018 #include "Albany_STKDiscretization.hpp" 00019 00020 namespace Albany { 00021 00022 class MORFacadeImpl : public MORFacade { 00023 public: 00024 MORFacadeImpl( 00025 const Teuchos::RCP<STKDiscretization> &disc, 00026 const Teuchos::RCP<Teuchos::ParameterList> ¶ms); 00027 00028 virtual Teuchos::RCP<MOR::ReducedOrderModelFactory> modelFactory() const; 00029 virtual Teuchos::RCP<MOR::ObserverFactory> observerFactory() const; 00030 00031 MOR::ReducedBasisFactory &basisFactory(); 00032 MOR::SampleDofListFactory &samplingFactory(); 00033 MOR::ReducedSpaceFactory &spaceFactory(); 00034 00035 private: 00036 Teuchos::RCP<MOR::ReducedBasisFactory> basisFactory_; 00037 Teuchos::RCP<MOR::SampleDofListFactory> samplingFactory_; 00038 Teuchos::RCP<MOR::ReducedSpaceFactory> spaceFactory_; 00039 00040 Teuchos::RCP<MOR::ReducedOrderModelFactory> modelFactory_; 00041 Teuchos::RCP<MOR::ObserverFactory> observerFactory_; 00042 }; 00043 00044 inline 00045 MOR::ReducedBasisFactory & 00046 MORFacadeImpl::basisFactory() 00047 { 00048 return *basisFactory_; 00049 } 00050 00051 inline 00052 MOR::SampleDofListFactory & 00053 MORFacadeImpl::samplingFactory() 00054 { 00055 return *samplingFactory_; 00056 } 00057 00058 inline 00059 MOR::ReducedSpaceFactory & 00060 MORFacadeImpl::spaceFactory() 00061 { 00062 return *spaceFactory_; 00063 } 00064 00065 00066 // Entry point also declared with base class Albany::MORFacade 00067 Teuchos::RCP<MORFacade> createMORFacade( 00068 const Teuchos::RCP<AbstractDiscretization> &disc, 00069 const Teuchos::RCP<Teuchos::ParameterList> ¶ms); 00070 00071 } // end namespace Albany 00072 00073 #endif /* ALBANY_MORFACADEIMPL_HPP */