FEI Version of the Day
Loading...
Searching...
No Matches
fei_Factory.hpp
1/*--------------------------------------------------------------------*/
2/* Copyright 2005 Sandia Corporation. */
3/* Under the terms of Contract DE-AC04-94AL85000, there is a */
4/* non-exclusive license for use of this work by or on behalf */
5/* of the U.S. Government. Export of this program may require */
6/* a license from the United States Government. */
7/*--------------------------------------------------------------------*/
8
9#ifndef _fei_Factory_hpp_
10#define _fei_Factory_hpp_
11
12#include "fei_macros.hpp"
13#include "fei_mpi.h"
14#include "fei_VectorSpace.hpp"
15#include "fei_MatrixGraph.hpp"
16#include "fei_Matrix.hpp"
17#include "fei_Vector.hpp"
18#include "fei_LinearSystem.hpp"
19#include "fei_Solver.hpp"
20#include "fei_LibraryWrapper.hpp"
21#include "FEI.hpp"
22
23namespace fei {
24 //first, a forward declaration...
25 class ParameterSet;
26
37 class Factory : public virtual fei::VectorSpace::Factory,
38 public virtual fei::MatrixGraph::Factory,
39 public virtual fei::Matrix::Factory,
40 public virtual fei::Vector::Factory,
41 public virtual fei::LinearSystem::Factory,
42 public virtual fei::Solver::Factory {
43 public:
45 Factory(MPI_Comm comm);
46
48 virtual ~Factory();
49
51 virtual fei::SharedPtr<Factory> clone() const = 0;
52
55 virtual void parameters(const fei::ParameterSet& paramset);
56
65 MPI_Comm comm);
66
74 virtual fei::SharedPtr<FEI> createFEI(MPI_Comm comm);
75
79 virtual int getOutputLevel() const = 0;
80
81 private:
82 Factory();
83 Factory(const Factory& src);
84 };//class Factory
85}//namespace fei
86
87#endif // _fei_Factory_hpp_
virtual fei::SharedPtr< Factory > clone() const =0
virtual fei::SharedPtr< FEI > createFEI(fei::SharedPtr< LibraryWrapper > wrapper, MPI_Comm comm)
Definition: fei_Factory.cpp:65
virtual ~Factory()
Definition: fei_Factory.cpp:31
virtual void parameters(const fei::ParameterSet &paramset)
Definition: fei_Factory.cpp:38
virtual int getOutputLevel() const =0