GRINS-0.8.0
List of all members | Public Member Functions | Protected Member Functions | Private Member Functions
GRINS::PhysicsFactoryBase Class Referenceabstract

Builds Physics objects, used by PhysicsBuilder. More...

#include <physics_factory_base.h>

Inheritance diagram for GRINS::PhysicsFactoryBase:
Inheritance graph
[legend]
Collaboration diagram for GRINS::PhysicsFactoryBase:
Collaboration graph
[legend]

Public Member Functions

 PhysicsFactoryBase (const std::string &physics_name)
 
 ~PhysicsFactoryBase ()
 
- Public Member Functions inherited from GRINS::FactoryWithGetPotPhysicsName< Physics >
 FactoryWithGetPotPhysicsName (const std::string &name)
 
 ~FactoryWithGetPotPhysicsName ()
 
- Public Member Functions inherited from GRINS::FactoryWithGetPot< Physics >
 FactoryWithGetPot (const std::string &name)
 
 ~FactoryWithGetPot ()
 
- Public Member Functions inherited from GRINS::FactoryAbstract< Physics >
virtual ~FactoryAbstract ()
 

Protected Member Functions

virtual libMesh::UniquePtr< Physicsbuild_physics (const GetPot &input, const std::string &physics_name)=0
 
- Protected Member Functions inherited from GRINS::FactoryAbstract< Physics >
 FactoryAbstract (const std::string &name)
 Constructor is protected. Use the build() method to construct Base objects. More...
 

Private Member Functions

virtual libMesh::UniquePtr< Physicscreate ()
 Subclasses implement the actual construction of the Base object in create(). More...
 

Additional Inherited Members

- Static Public Member Functions inherited from GRINS::FactoryWithGetPotPhysicsName< Physics >
static void set_physics_name (const std::string &physics_name)
 Setter for physics name. More...
 
- Static Public Member Functions inherited from GRINS::FactoryWithGetPot< Physics >
static void set_getpot (const GetPot &input)
 
- Static Public Member Functions inherited from GRINS::FactoryAbstract< Physics >
static libMesh::UniquePtr< Physicsbuild (const std::string &name)
 Use this method to build objects of type Base. More...
 
- Static Protected Member Functions inherited from GRINS::FactoryAbstract< Physics >
static FactoryAbstract< Physics > & get_factory (const std::string &name)
 Helper method that looks up the factory and returns it if present, or error if it's not. More...
 
static DerivedType & get_factory_subclass (const std::string &name)
 Like get_factory, but will downcast to DerivedType. More...
 
static std::map< std::string, FactoryAbstract< Physics > * > & factory_map ()
 
- Static Protected Attributes inherited from GRINS::FactoryWithGetPotPhysicsName< Physics >
static std::string _physics_name
 
- Static Protected Attributes inherited from GRINS::FactoryWithGetPot< Physics >
static const GetPot * _input
 We store only a raw pointer here because we can't make a copy. More...
 

Detailed Description

Builds Physics objects, used by PhysicsBuilder.

The user may subclass this class for more building more complex Physics objects. Because Physics objects require a GetPot input file object and the physics_name at construction time, both set_getpot() and set_physics_name() MUST be called before build() function. Note that set_physics_name() MUST be called each time a new Physics is built.

Definition at line 45 of file physics_factory_base.h.

Constructor & Destructor Documentation

GRINS::PhysicsFactoryBase::PhysicsFactoryBase ( const std::string &  physics_name)
inline

Definition at line 48 of file physics_factory_base.h.

49  : FactoryWithGetPotPhysicsName<Physics>(physics_name)
50  {}
GRINS::PhysicsFactoryBase::~PhysicsFactoryBase ( )
inline

Definition at line 52 of file physics_factory_base.h.

52 {};

Member Function Documentation

virtual libMesh::UniquePtr<Physics> GRINS::PhysicsFactoryBase::build_physics ( const GetPot &  input,
const std::string &  physics_name 
)
protectedpure virtual
libMesh::UniquePtr< Physics > GRINS::PhysicsFactoryBase::create ( )
inlineprivatevirtual

Subclasses implement the actual construction of the Base object in create().

Implements GRINS::FactoryAbstract< Physics >.

Definition at line 66 of file physics_factory_base.h.

References GRINS::FactoryWithGetPot< Physics >::_input, GRINS::FactoryWithGetPotPhysicsName< Physics >::_physics_name, and build_physics().

67  {
68  // Make sure user set the physics name
69  if( _physics_name == std::string("DIE!") )
70  libmesh_error_msg("ERROR: must call set_physics_name() before building Physics!");
71 
72  if( !_input )
73  libmesh_error_msg("ERROR: must call set_getpot() before building Physics!");
74 
75  libMesh::UniquePtr<Physics> new_physics = this->build_physics( *_input, _physics_name );
76 
77  // Reset the _physics_name for error checking
78  _physics_name = std::string("DIE!");
79 
80  libmesh_assert(new_physics);
81 
82  return new_physics;
83  }
static const GetPot * _input
We store only a raw pointer here because we can't make a copy.
virtual libMesh::UniquePtr< Physics > build_physics(const GetPot &input, const std::string &physics_name)=0

The documentation for this class was generated from the following file:

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