GRINS-0.7.0
physics_factory_incompressible_flow.C
Go to the documentation of this file.
1 //-----------------------------------------------------------------------bl-
2 //--------------------------------------------------------------------------
3 //
4 // GRINS - General Reacting Incompressible Navier-Stokes
5 //
6 // Copyright (C) 2014-2016 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 // GRINS
31 #include "grins/parsed_viscosity.h"
33 
34 // Physics we're instantiating
36 #include "grins/stokes.h"
39 #include "grins/velocity_drag.h"
41 #include "grins/velocity_penalty.h"
45 #include "grins/averaged_fan.h"
47 #include "grins/averaged_turbine.h"
50 
51 namespace GRINS
52 {
53  template<template<typename> class DerivedPhysics>
54  libMesh::UniquePtr<Physics> PhysicsFactoryIncompressibleFlow<DerivedPhysics>::build_physics( const GetPot& input,
55  const std::string& physics_name )
56  {
57  std::string core_physics = this->find_core_physics_name(physics_name);
58 
59  std::string viscosity;
60  PhysicsFactoryHelper::parse_viscosity_model(input,core_physics,viscosity);
61 
62  libMesh::UniquePtr<Physics> new_physics;
63 
64  if( viscosity == "constant" )
65  new_physics.reset( new DerivedPhysics<ConstantViscosity>(physics_name,input) );
66 
67  else if( viscosity == "parsed" )
68  new_physics.reset( new DerivedPhysics<ParsedViscosity>(physics_name,input) );
69 
70  // For SA viscosity model, we need to parse what the "sub" viscosity model is
71  else if( viscosity == "spalartallmaras" )
72  {
73  std::string turb_viscosity;
74  PhysicsFactoryHelper::parse_turb_viscosity_model(input,core_physics,turb_viscosity);
75  if( turb_viscosity == "constant" )
76  new_physics.reset(new DerivedPhysics<SpalartAllmarasViscosity<ConstantViscosity> >(physics_name,input) );
77  else
78  this->visc_error_msg(physics_name, turb_viscosity);
79  }
80  else
81  this->visc_error_msg(physics_name, viscosity);
82 
83  libmesh_assert(new_physics);
84 
85  return new_physics;
86  }
87 
88  template<template<typename> class DerivedPhysics>
90  const std::string& viscosity ) const
91  {
92  std::string error = "================================================================\n";
93  error += "Invalid viscosity model for "+physics+"\n";
94  error += "Viscosity model = "+viscosity+"\n";
95  error += "================================================================\n";
96 
97  libmesh_error_msg(error);
98  }
99 
100  // Instantiate all the "incompressble flow" Physics factories.
103 
106 
109 
112 
115 
118 
121 
124 
127 
130 
133 
136 
139 
142 
145 
148 
151 
154 
157 
158 } // end namespace GRINS
static void parse_viscosity_model(const GetPot &input, const std::string &physics, std::string &model)
Determine viscosity model based on given physics name.
static PhysicsName velocity_penalty_adjoint_stab()
virtual libMesh::UniquePtr< Physics > build_physics(const GetPot &input, const std::string &physics_name)
PhysicsFactoryIncompressibleFlow< VelocityDrag > grins_factory_velocity_drag(PhysicsNaming::velocity_drag(), PhysicsNaming::incompressible_navier_stokes())
static PhysicsName boussinesq_buoyancy_adjoint_stab()
PhysicsFactoryIncompressibleFlow< BoussinesqBuoyancySPGSMStabilization > grins_factory_boussinesq_spgsm_stab(PhysicsNaming::boussinesq_buoyancy_spgsm_stab(), PhysicsNaming::boussinesq_buoyancy())
static PhysicsName boussinesq_buoyancy_spgsm_stab()
static PhysicsName averaged_fan()
static PhysicsName parsed_velocity_source()
PhysicsFactoryIncompressibleFlow< IncompressibleNavierStokesAdjointStabilization > grins_factory_ins_adjoint_stab(PhysicsNaming::incompressible_navier_stokes_adjoint_stab(), PhysicsNaming::incompressible_navier_stokes())
static PhysicsName velocity_drag_adjoint_stab()
static PhysicsName incompressible_navier_stokes_adjoint_stab()
static PhysicsName velocity_penalty3_adjoint_stab()
PhysicsFactoryIncompressibleFlow< IncompressibleNavierStokes > grins_factory_incompressible_navier_stokes(PhysicsNaming::incompressible_navier_stokes(), PhysicsNaming::incompressible_navier_stokes())
static PhysicsName velocity_drag()
PhysicsFactoryIncompressibleFlow< VelocityPenalty > grins_factory_vel_penalty2(PhysicsNaming::velocity_penalty2(), PhysicsNaming::incompressible_navier_stokes())
static PhysicsName parsed_velocity_source_adjoint_stab()
PhysicsFactoryIncompressibleFlow< VelocityPenaltyAdjointStabilization > grins_factory_vel_penalty3_adjoint_stab(PhysicsNaming::velocity_penalty3_adjoint_stab(), PhysicsNaming::incompressible_navier_stokes())
GRINS namespace.
PhysicsFactoryIncompressibleFlow< VelocityDragAdjointStabilization > grins_factory_velocity_drag_adjoint_stab(PhysicsNaming::velocity_drag_adjoint_stab(), PhysicsNaming::incompressible_navier_stokes())
PhysicsFactoryIncompressibleFlow< VelocityPenalty > grins_factory_vel_penalty3(PhysicsNaming::velocity_penalty3(), PhysicsNaming::incompressible_navier_stokes())
PhysicsFactoryIncompressibleFlow< VelocityPenaltyAdjointStabilization > grins_factory_vel_penalty_adjoint_stab(PhysicsNaming::velocity_penalty_adjoint_stab(), PhysicsNaming::incompressible_navier_stokes())
static PhysicsName velocity_penalty()
static PhysicsName velocity_penalty2()
PhysicsFactoryIncompressibleFlow< AveragedFanAdjointStabilization > grins_factory_averaged_fan_adjoint_stab(PhysicsNaming::averaged_fan_adjoint_stab(), PhysicsNaming::incompressible_navier_stokes())
static PhysicsName boussinesq_buoyancy()
PhysicsFactoryIncompressibleFlow< AveragedFan > grins_factory_averaged_fan(PhysicsNaming::averaged_fan(), PhysicsNaming::incompressible_navier_stokes())
PhysicsFactoryIncompressibleFlow< ParsedVelocitySource > grins_factory_parsed_vel_source(PhysicsNaming::parsed_velocity_source(), PhysicsNaming::incompressible_navier_stokes())
void visc_error_msg(const std::string &physics, const std::string &viscosity) const
PhysicsFactoryIncompressibleFlow< BoussinesqBuoyancyAdjointStabilization > grins_factory_boussinesq_adjoint_stab(PhysicsNaming::boussinesq_buoyancy_adjoint_stab(), PhysicsNaming::boussinesq_buoyancy())
PhysicsFactoryIncompressibleFlow< AveragedTurbine > grins_factory_averaged_turbine(PhysicsNaming::averaged_turbine(), PhysicsNaming::incompressible_navier_stokes())
static PhysicsName averaged_turbine()
static PhysicsName incompressible_navier_stokes()
PhysicsFactoryIncompressibleFlow< ParsedVelocitySourceAdjointStabilization > grins_factory_parsed_vel_source_adjoint_stab(PhysicsNaming::parsed_velocity_source_adjoint_stab(), PhysicsNaming::incompressible_navier_stokes())
static PhysicsName stokes()
PhysicsFactoryIncompressibleFlow< VelocityPenaltyAdjointStabilization > grins_factory_vel_penalty2_adjoint_stab(PhysicsNaming::velocity_penalty2_adjoint_stab(), PhysicsNaming::incompressible_navier_stokes())
static PhysicsName velocity_penalty2_adjoint_stab()
PhysicsFactoryIncompressibleFlow< IncompressibleNavierStokesSPGSMStabilization > grins_factory_spsgm_adjoint_stab(PhysicsNaming::incompressible_navier_stokes_spgsm_stab(), PhysicsNaming::incompressible_navier_stokes())
static PhysicsName averaged_fan_adjoint_stab()
PhysicsFactoryIncompressibleFlow< VelocityPenalty > grins_factory_vel_penalty(PhysicsNaming::velocity_penalty(), PhysicsNaming::incompressible_navier_stokes())
static PhysicsName velocity_penalty3()
static void parse_turb_viscosity_model(const GetPot &input, const std::string &physics, std::string &model)
Determine viscosity model used by turblence classes.
PhysicsFactoryIncompressibleFlow< Stokes > grins_factory_stokes(PhysicsNaming::stokes(), PhysicsNaming::stokes())
static PhysicsName incompressible_navier_stokes_spgsm_stab()

Generated on Thu Jun 2 2016 21:52:28 for GRINS-0.7.0 by  doxygen 1.8.10