www.mooseframework.org
AddNavierStokesICsAction.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 // Navier-Stokes includes
12 #include "NavierStokesApp.h"
13 #include "NSInitialCondition.h"
14 #include "NSAction.h"
15 
16 // MOOSE includes
17 #include "FEProblem.h"
18 #include "MooseMesh.h"
19 
20 #include "libmesh/string_to_enum.h"
21 #include "libmesh/fe.h"
22 
23 registerMooseAction("NavierStokesApp", AddNavierStokesICsAction, "add_navier_stokes_ics");
24 
25 template <>
26 InputParameters
28 {
29  InputParameters params = validParams<NSAction>();
30 
31  params.addClassDescription("This class allows us to have a section of the input file like the "
32  "following which automatically adds initial conditions for all the "
33  "required nonlinear and auxiliary variables.");
34  params.addRequiredParam<Real>("initial_pressure",
35  "The initial pressure, assumed constant everywhere");
36  params.addRequiredParam<Real>("initial_temperature",
37  "The initial temperature, assumed constant everywhere");
38  params.addRequiredParam<RealVectorValue>("initial_velocity",
39  "The initial velocity, assumed constant everywhere");
40  params.addRequiredParam<UserObjectName>("fluid_properties",
41  "The name of the user object for fluid properties");
42 
43  return params;
44 }
45 
47  : NSAction(parameters),
48  _initial_pressure(getParam<Real>("initial_pressure")),
49  _initial_temperature(getParam<Real>("initial_temperature")),
50  _initial_velocity(getParam<RealVectorValue>("initial_velocity")),
51  _fp_name(getParam<UserObjectName>("fluid_properties"))
52 {
53 }
54 
56 
57 void
59 {
60  // Call the base class's act() function to initialize the _vars and _auxs names.
61  NSAction::act();
62 
63  // Now add the ICs for the nonlinear and auxiliary variables
64  addICs(_vars);
65  addICs(_auxs);
66 }
67 
68 void
69 AddNavierStokesICsAction::addICs(std::vector<std::string> & names)
70 {
71  for (const auto & name : names)
72  {
73  InputParameters params = _factory.getValidParams("NSInitialCondition");
74  params.set<VariableName>("variable") = name;
75  params.set<Real>("initial_pressure") = _initial_pressure;
76  params.set<Real>("initial_temperature") = _initial_temperature;
77  params.set<RealVectorValue>("initial_velocity") = _initial_velocity;
78  params.set<UserObjectName>("fluid_properties") = _fp_name;
79  _problem->addInitialCondition("NSInitialCondition", name + std::string("_ic"), params);
80  }
81 }
registerMooseAction
registerMooseAction("NavierStokesApp", AddNavierStokesICsAction, "add_navier_stokes_ics")
NSAction::_auxs
std::vector< std::string > _auxs
Definition: NSAction.h:35
validParams< NSAction >
InputParameters validParams< NSAction >()
Definition: NSAction.C:19
AddNavierStokesICsAction::_initial_temperature
Real _initial_temperature
Definition: AddNavierStokesICsAction.h:48
NSAction::_vars
std::vector< std::string > _vars
Definition: NSAction.h:34
AddNavierStokesICsAction::addICs
void addICs(std::vector< std::string > &names)
Definition: AddNavierStokesICsAction.C:69
NSAction::act
virtual void act()
Definition: NSAction.C:35
AddNavierStokesICsAction::_fp_name
UserObjectName _fp_name
Definition: AddNavierStokesICsAction.h:50
NSAction
This is a base Action class for the Navier-Stokes module which is responsible for building lists of n...
Definition: NSAction.h:25
AddNavierStokesICsAction.h
AddNavierStokesICsAction::_initial_pressure
Real _initial_pressure
Definition: AddNavierStokesICsAction.h:47
name
const std::string name
Definition: Setup.h:21
NSAction.h
NSInitialCondition.h
AddNavierStokesICsAction
This class allows us to have a section of the input file like the following which automatically adds ...
Definition: AddNavierStokesICsAction.h:35
NavierStokesApp.h
AddNavierStokesICsAction::~AddNavierStokesICsAction
virtual ~AddNavierStokesICsAction()
Definition: AddNavierStokesICsAction.C:55
validParams< AddNavierStokesICsAction >
InputParameters validParams< AddNavierStokesICsAction >()
Definition: AddNavierStokesICsAction.C:27
AddNavierStokesICsAction::_initial_velocity
RealVectorValue _initial_velocity
Definition: AddNavierStokesICsAction.h:49
AddNavierStokesICsAction::AddNavierStokesICsAction
AddNavierStokesICsAction(InputParameters parameters)
Definition: AddNavierStokesICsAction.C:46
AddNavierStokesICsAction::act
virtual void act()
Definition: AddNavierStokesICsAction.C:58