fei_Factory.cpp

00001 /*--------------------------------------------------------------------*/
00002 /*    Copyright 2005 Sandia Corporation.                              */
00003 /*    Under the terms of Contract DE-AC04-94AL85000, there is a       */
00004 /*    non-exclusive license for use of this work by or on behalf      */
00005 /*    of the U.S. Government.  Export of this program may require     */
00006 /*    a license from the United States Government.                    */
00007 /*--------------------------------------------------------------------*/
00008 
00009 #include <fei_macros.hpp>
00010 
00011 #include <fei_Factory.hpp>
00012 #include <fei_LogManager.hpp>
00013 #include <fei_LogFile.hpp>
00014 #include <fei_ParameterSet.hpp>
00015 
00016 #include <FEI_Implementation.hpp>
00017 #include <fei_FEI_Impl.hpp>
00018 
00019 //----------------------------------------------------------------------------
00020 fei::Factory::Factory(MPI_Comm comm)
00021 {
00022   int numProcs = 1, localProc = 0;
00023 #ifndef FEI_SER
00024   MPI_Comm_size(comm, &numProcs);
00025   MPI_Comm_rank(comm, &localProc);
00026 #endif
00027   fei::LogManager::getLogManager().setNumProcs(numProcs, localProc);
00028 }
00029 
00030 //----------------------------------------------------------------------------
00031 fei::Factory::~Factory()
00032 {
00033   fei::LogFile::getLogFile().closeOutputStream();
00034   fei::LogManager::getLogManager().setOutputLevel(fei::NONE);
00035 }
00036 
00037 //----------------------------------------------------------------------------
00038 void fei::Factory::parameters(const fei::ParameterSet& paramset)
00039 {
00040   const fei::Param* param = paramset.get("FEI_OUTPUT_PATH");
00041   fei::Param::ParamType ptype = param != NULL ?
00042     param->getType() : fei::Param::BAD_TYPE;
00043   if (ptype == fei::Param::STRING) {
00044     fei::LogManager& log_manager = fei::LogManager::getLogManager();
00045     log_manager.setOutputPath(param->getStringValue().c_str());
00046   }
00047 
00048   param = paramset.get("debugOutput");
00049   ptype = param != NULL ? param->getType() : fei::Param::BAD_TYPE;
00050   if (ptype == fei::Param::STRING) {
00051     fei::LogManager& log_manager = fei::LogManager::getLogManager();
00052     log_manager.setOutputPath(param->getStringValue().c_str());
00053   }
00054 
00055   param = paramset.get("FEI_OUTPUT_LEVEL");
00056   ptype = param != NULL ? param->getType() : fei::Param::BAD_TYPE;
00057   if (ptype == fei::Param::STRING) {
00058     fei::LogManager& log_manager = fei::LogManager::getLogManager();
00059     log_manager.setOutputLevel(param->getStringValue().c_str());
00060   }
00061 }
00062 
00063 //----------------------------------------------------------------------------
00064 fei::SharedPtr<FEI>
00065 fei::Factory::createFEI(fei::SharedPtr<LibraryWrapper> wrapper,
00066                         MPI_Comm comm)
00067 {
00068   //fei::SharedPtr<FEI> fei(new fei::FEI_Impl(wrapper, comm));
00069   fei::SharedPtr<FEI> fei(new FEI_Implementation(wrapper, comm));
00070 
00071   return(fei);
00072 }
00073 
00074 //----------------------------------------------------------------------------
00075 fei::SharedPtr<FEI>
00076 fei::Factory::createFEI(MPI_Comm comm)
00077 {
00078   fei::SharedPtr<FEI> fei(new fei::FEI_Impl(this, comm));
00079 
00080   return(fei);
00081 }
00082 
00083 //----------------------------------------------------------------------------
00084 

Generated on Wed May 12 21:30:41 2010 for FEI by  doxygen 1.4.7