GRINS-0.8.0
solver_factory_abstract.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------bl-
2 //--------------------------------------------------------------------------
3 //
4 // GRINS - General Reacting Incompressible Navier-Stokes
5 //
6 // Copyright (C) 2014-2017 Paul T. Bauman, Roy H. Stogner
7 // Copyright (C) 2010-2013 The PECOS Development Team
8 //
9 // This library is free software; you can redistribute it and/or
10 // modify it under the terms of the Version 2.1 GNU Lesser General
11 // Public License as published by the Free Software Foundation.
12 //
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // Lesser General Public License for more details.
17 //
18 // You should have received a copy of the GNU Lesser General Public
19 // License along with this library; if not, write to the Free Software
20 // Foundation, Inc. 51 Franklin Street, Fifth Floor,
21 // Boston, MA 02110-1301 USA
22 //
23 //-----------------------------------------------------------------------el-
24 
25 #ifndef GRINS_SOLVER_FACTORY_ABSTRACT_H
26 #define GRINS_SOLVER_FACTORY_ABSTRACT_H
27 
28 // GRINS
30 #include "grins/solver.h"
31 
32 namespace GRINS
33 {
34  // According to the standard, we need a declaration of the
35  // specialization which precedes any automatic instantiation.
36  template<> const GetPot* FactoryWithGetPot<Solver>::_input;
37 
39  {
40  public:
41  SolverFactoryAbstract( const std::string & bc_type_name )
42  : FactoryWithGetPot<Solver>(bc_type_name)
43  {}
44 
45  virtual ~SolverFactoryAbstract() =0;
46 
47  protected:
48 
49  virtual libMesh::UniquePtr<Solver> build_solver( const GetPot & input ) =0;
50 
51  private:
52 
53  virtual libMesh::UniquePtr<Solver> create();
54 
56  };
57 
58  inline
60 
61 } // end namespace GRINS
62 
63 #endif // GRINS_SOLVER_FACTORY_ABSTRACT_H
SolverFactoryAbstract(const std::string &bc_type_name)
GRINS namespace.
virtual libMesh::UniquePtr< Solver > create()
Subclasses implement the actual construction of the Base object in create().
virtual libMesh::UniquePtr< Solver > build_solver(const GetPot &input)=0
Abstract factory that provides availability of GetPot.

Generated on Tue Dec 19 2017 12:47:28 for GRINS-0.8.0 by  doxygen 1.8.9.1