fei_Factory.hpp

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 #ifndef _fei_Factory_hpp_
00010 #define _fei_Factory_hpp_
00011 
00012 #include "fei_macros.hpp"
00013 #include "fei_mpi.h"
00014 #include "fei_VectorSpace.hpp"
00015 #include "fei_MatrixGraph.hpp"
00016 #include "fei_Matrix.hpp"
00017 #include "fei_Vector.hpp"
00018 #include "fei_LinearSystem.hpp"
00019 #include "fei_Solver.hpp"
00020 #include "fei_LibraryWrapper.hpp"
00021 #include "FEI.hpp"
00022 
00023 namespace fei {
00024   //first, a forward declaration...
00025   class ParameterSet;
00026 
00037   class Factory : public virtual fei::VectorSpace::Factory,
00038                   public virtual fei::MatrixGraph::Factory,
00039                   public virtual fei::Matrix::Factory,
00040                   public virtual fei::Vector::Factory,
00041                   public virtual fei::LinearSystem::Factory,
00042                   public virtual fei::Solver::Factory {
00043   public:
00045     Factory(MPI_Comm comm);
00046 
00048     virtual ~Factory();
00049 
00051     virtual fei::SharedPtr<Factory> clone() const = 0;
00052 
00055     virtual void parameters(const fei::ParameterSet& paramset);
00056 
00064     virtual fei::SharedPtr<FEI> createFEI(fei::SharedPtr<LibraryWrapper> wrapper,
00065             MPI_Comm comm);
00066 
00074     virtual fei::SharedPtr<FEI> createFEI(MPI_Comm comm);
00075 
00079     virtual int getOutputLevel() const = 0;
00080 
00081    private:
00082     Factory();
00083     Factory(const Factory& src);
00084   };//class Factory
00085 }//namespace fei
00086 
00087 #endif // _fei_Factory_hpp_
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends
Generated on Wed Apr 13 10:08:23 2011 for FEI by  doxygen 1.6.3