www.mooseframework.org
Public Member Functions | Protected Types | Protected Attributes | List of all members
AddNavierStokesVariablesAction Class Reference

This class allows us to have a section of the input file like the following which automatically adds all the required nonlinear variables with the appropriate scaling. More...

#include <AddNavierStokesVariablesAction.h>

Inheritance diagram for AddNavierStokesVariablesAction:
[legend]

Public Member Functions

 AddNavierStokesVariablesAction (InputParameters parameters)
 
virtual ~AddNavierStokesVariablesAction ()
 
virtual void act ()
 

Protected Types

typedef std::vector< VariableName > CoupledName
 

Protected Attributes

std::vector< Real > _scaling
 
std::vector< SubdomainName > _blocks
 
std::vector< std::string > _vars
 
std::vector< std::string > _auxs
 
unsigned int _dim
 

Detailed Description

This class allows us to have a section of the input file like the following which automatically adds all the required nonlinear variables with the appropriate scaling.

[NavierStokes] [./Variables]

'rho rhou rhov rhoE'

scaling = '1. 1. 1. 9.869232667160121e-6' family = LAGRANGE order = FIRST [../] []

Definition at line 33 of file AddNavierStokesVariablesAction.h.

Member Typedef Documentation

◆ CoupledName

typedef std::vector<VariableName> NSAction::CoupledName
protectedinherited

Definition at line 42 of file NSAction.h.

Constructor & Destructor Documentation

◆ AddNavierStokesVariablesAction()

AddNavierStokesVariablesAction::AddNavierStokesVariablesAction ( InputParameters  parameters)

Definition at line 50 of file AddNavierStokesVariablesAction.C.

51  : NSAction(parameters),
52  _scaling(getParam<std::vector<Real>>("scaling")),
53  _blocks(getParam<std::vector<SubdomainName>>("block"))
54 {
55 }

◆ ~AddNavierStokesVariablesAction()

AddNavierStokesVariablesAction::~AddNavierStokesVariablesAction ( )
virtual

Definition at line 57 of file AddNavierStokesVariablesAction.C.

57 {}

Member Function Documentation

◆ act()

void AddNavierStokesVariablesAction::act ( )
virtual

Reimplemented from NSAction.

Definition at line 60 of file AddNavierStokesVariablesAction.C.

61 {
62  // Call the base class's act() function to initialize the _vars and _auxs names.
63  NSAction::act();
64 
65  // Make sure the number of scaling parameters matches the number of variables
66  if (_scaling.size() != _vars.size())
67  mooseError("Must provide a scaling parameter for each variable.");
68 
69  // All variables have the same type
70  FEType fe_type(Utility::string_to_enum<Order>(getParam<MooseEnum>("order")),
71  Utility::string_to_enum<FEFamily>(getParam<MooseEnum>("family")));
72 
73  std::set<SubdomainID> _block_ids;
74  for (const auto & subdomain_name : _blocks)
75  {
76  SubdomainID id = _mesh->getSubdomainID(subdomain_name);
77  _block_ids.insert(id);
78  }
79 
80  auto var_type = AddVariableAction::determineType(fe_type, 1);
81  auto base_params = _factory.getValidParams(var_type);
82  base_params.set<MooseEnum>("order") = fe_type.order.get_order();
83  base_params.set<MooseEnum>("family") = Moose::stringify(fe_type.family);
84  if (_block_ids.size() != 0)
85  for (const SubdomainID & id : _block_ids)
86  base_params.set<std::vector<SubdomainName>>("block").push_back(Moose::stringify(id));
87 
88  // Add the variables to the FEProblemBase
89  for (unsigned int i = 0; i < _vars.size(); ++i)
90  {
91  InputParameters var_params(base_params);
92  var_params.set<std::vector<Real>>("scaling") = {_scaling[i]};
93  _problem->addVariable(var_type, _vars[i], var_params);
94  }
95 
96  // Add Aux variables. These are all required in order for the code
97  // to run, so they should not be independently selectable by the
98  // user.
99  for (const auto & aux_name : _auxs)
100  _problem->addAuxVariable(var_type, aux_name, base_params);
101 }

Member Data Documentation

◆ _auxs

std::vector<std::string> NSAction::_auxs
protectedinherited

Definition at line 35 of file NSAction.h.

Referenced by NSAction::act(), act(), and AddNavierStokesICsAction::act().

◆ _blocks

std::vector<SubdomainName> AddNavierStokesVariablesAction::_blocks
protected

Definition at line 43 of file AddNavierStokesVariablesAction.h.

Referenced by act().

◆ _dim

unsigned int NSAction::_dim
protectedinherited

◆ _scaling

std::vector<Real> AddNavierStokesVariablesAction::_scaling
protected

Definition at line 42 of file AddNavierStokesVariablesAction.h.

Referenced by act().

◆ _vars

std::vector<std::string> NSAction::_vars
protectedinherited

The documentation for this class was generated from the following files:
AddNavierStokesVariablesAction::_blocks
std::vector< SubdomainName > _blocks
Definition: AddNavierStokesVariablesAction.h:43
NSAction::_auxs
std::vector< std::string > _auxs
Definition: NSAction.h:35
AddNavierStokesVariablesAction::_scaling
std::vector< Real > _scaling
Definition: AddNavierStokesVariablesAction.h:42
NSAction::_vars
std::vector< std::string > _vars
Definition: NSAction.h:34
NSAction::act
virtual void act()
Definition: NSAction.C:35
NSAction::NSAction
NSAction(InputParameters parameters)
Definition: NSAction.C:30