GRINS-0.8.0
solver_factory_abstract.C
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 // This class
27 
28 namespace GRINS
29 {
30  libMesh::UniquePtr<Solver> SolverFactoryAbstract::create()
31  {
32  if( !this->_input )
33  libmesh_error_msg("ERROR: must call set_getpot() before building boundary condition!");
34 
35  return this->build_solver(*(this->_input));
36  }
37 
38  // Full specialization for the Factory<Solver>
39  template<>
40  std::map<std::string, FactoryAbstract<Solver>*>&
42  {
43  static std::map<std::string, FactoryAbstract<Solver>*> _map;
44  return _map;
45  }
46 
47  // Definition of static members
48  template<>
49  const GetPot* FactoryWithGetPot<Solver>::_input = NULL;
50 
51 } // end namespace GRINS
static std::map< std::string, FactoryAbstract< Base > * > & factory_map()
GRINS namespace.
static const GetPot * _input
We store only a raw pointer here because we can't make a copy.
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