https://mooseframework.inl.gov
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
CNSAction Class Reference

This class allows us to have a section of the input file like the following which automatically adds variables, kernels, aux kernels, bcs for setting up the Navier-Stokes equation. More...

#include <CNSAction.h>

Inheritance diagram for CNSAction:
[legend]

Public Types

typedef DataFileName DataFileParameterType
 

Public Member Functions

 CNSAction (const InputParameters &parameters)
 
virtual void act () override
 
void timedAct ()
 
virtual void addRelationshipManagers (Moose::RelationshipManagerType when_type)
 
MooseObjectName uniqueActionName () const
 
const std::string & specificTaskName () const
 
const std::set< std::string > & getAllTasks () const
 
void appendTask (const std::string &task)
 
MooseAppgetMooseApp () const
 
const std::string & type () const
 
virtual const std::string & name () const
 
std::string typeAndName () const
 
std::string errorPrefix (const std::string &error_type) const
 
void callMooseError (std::string msg, const bool with_prefix) const
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
const InputParametersparameters () const
 
MooseObjectName uniqueName () const
 
const T & getParam (const std::string &name) const
 
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 
const T * queryParam (const std::string &name) const
 
const T & getRenamedParam (const std::string &old_name, const std::string &new_name) const
 
getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 
bool isParamValid (const std::string &name) const
 
bool isParamSetByUser (const std::string &nm) const
 
void paramError (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramInfo (const std::string &param, Args... args) const
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 
void mooseError (Args &&... args) const
 
void mooseErrorNonPrefixed (Args &&... args) const
 
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseInfo (Args &&... args) const
 
std::string getDataFileName (const std::string &param) const
 
std::string getDataFileNameByName (const std::string &relative_path) const
 
std::string getDataFilePath (const std::string &relative_path) const
 
PerfGraphperfGraph ()
 
const Parallel::Communicator & comm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 

Static Public Member Functions

static InputParameters validParams ()
 

Public Attributes

const ConsoleStream _console
 

Static Public Attributes

static constexpr auto SYSTEM
 
static constexpr auto NAME
 

Protected Member Functions

void setKernelCommonParams (InputParameters &params)
 
void setBCCommonParams (InputParameters &params)
 
void setStagnationBCCommonParams (InputParameters &params, unsigned int i)
 
void coupleVelocities (InputParameters &params)
 
void coupleMomentums (InputParameters &params)
 
void addNSTimeKernels ()
 
void addNSMassInviscidFlux ()
 
void addNSMomentumInviscidFlux (unsigned int component)
 
void addNSEnergyInviscidFlux ()
 
void addNSSUPGMass ()
 
void addNSSUPGMomentum (unsigned int component)
 
void addNSSUPGEnergy ()
 
void addPressureOrTemperatureAux (const std::string &kernel_type)
 
void addNSVelocityAux (unsigned int component)
 
void addSpecificTotalEnthalpyAux ()
 
void addNSMachAux ()
 
void addNSInternalEnergyAux ()
 
void addSpecificVolumeComputation ()
 
void addNSMassWeakStagnationBC ()
 
void addNSEnergyWeakStagnationBC ()
 
void addNSMomentumWeakStagnationBC (unsigned int component)
 
void addNoPenetrationBC (unsigned int component)
 
void addNSMassUnspecifiedNormalFlowBC ()
 
void addNSEnergyInviscidSpecifiedPressureBC ()
 
void addNSMomentumInviscidSpecifiedPressureBC (unsigned int component)
 
bool addRelationshipManagers (Moose::RelationshipManagerType when_type, const InputParameters &moose_object_pars)
 
void associateWithParameter (const std::string &param_name, InputParameters &params) const
 
void associateWithParameter (const InputParameters &from_params, const std::string &param_name, InputParameters &params) const
 
const T & getMeshProperty (const std::string &data_name, const std::string &prefix)
 
const T & getMeshProperty (const std::string &data_name)
 
bool hasMeshProperty (const std::string &data_name, const std::string &prefix) const
 
bool hasMeshProperty (const std::string &data_name, const std::string &prefix) const
 
bool hasMeshProperty (const std::string &data_name) const
 
bool hasMeshProperty (const std::string &data_name) const
 
std::string meshPropertyName (const std::string &data_name) const
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level) const
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level, const std::string &live_message, const bool print_dots=true) const
 
std::string timedSectionName (const std::string &section_name) const
 

Static Protected Member Functions

static std::string meshPropertyName (const std::string &data_name, const std::string &prefix)
 

Protected Attributes

MooseEnum _type
 Equation type, transient or steady-state. More...
 
UserObjectName _fp_name
 Name of the FluidProperties object to pass on to Kernels. More...
 
std::vector< SubdomainName > _blocks
 Subdomains Navier-Stokes equation is defined on. More...
 
std::vector< BoundaryName > _stagnation_boundary
 Boundaries stagnation BC applies. More...
 
std::vector< Real_stagnation_pressure
 Pressures on stagnation boundaries. More...
 
std::vector< Real_stagnation_temperature
 Temperatures on stagnation boundaries. More...
 
std::vector< Real_stagnation_direction
 Flow directions on stagnation boundaries. More...
 
std::vector< BoundaryName > _no_penetration_boundary
 Boundaries no-penetration BC applies. More...
 
std::vector< BoundaryName > _static_pressure_boundary
 Boundaries static pressure BC applies. More...
 
std::vector< Real_static_pressure
 Pressures on static pressure boundaries. More...
 
libMesh::FEType _fe_type
 FE type for various variables. More...
 
Real _initial_pressure
 Initial value for pressure. More...
 
Real _initial_temperature
 Initial value for temperature. More...
 
RealVectorValue _initial_velocity
 Initial value for velocity. More...
 
unsigned int _dim
 Mesh dimension. More...
 
std::set< SubdomainID_block_ids
 Subdomain IDs. More...
 
const std::string _pressure_variable_name
 pressure variable name More...
 
std::string _registered_identifier
 
std::string _specific_task_name
 
std::set< std::string > _all_tasks
 
ActionWarehouse_awh
 
const std::string & _current_task
 
std::shared_ptr< MooseMesh > & _mesh
 
std::shared_ptr< MooseMesh > & _displaced_mesh
 
std::shared_ptr< FEProblemBase > & _problem
 
PerfID _act_timer
 
MooseApp_app
 
const std::string _name
 
const InputParameters_pars
 
Factory_factory
 
ActionFactory_action_factory
 
MooseApp_pg_moose_app
 
const std::string _prefix
 
const Parallel::Communicator & _communicator
 

Detailed Description

This class allows us to have a section of the input file like the following which automatically adds variables, kernels, aux kernels, bcs for setting up the Navier-Stokes equation.

[Modules] [CompressibleNavierStokes] [] []

Definition at line 28 of file CNSAction.h.

Constructor & Destructor Documentation

◆ CNSAction()

CNSAction::CNSAction ( const InputParameters parameters)

Definition at line 97 of file CNSAction.C.

98  : Action(parameters),
99  _type(getParam<MooseEnum>("equation_type")),
100  _fp_name(getParam<UserObjectName>("fluid_properties")),
101  _blocks(getParam<std::vector<SubdomainName>>("block")),
102  _stagnation_boundary(getParam<std::vector<BoundaryName>>("stagnation_boundary")),
103  _stagnation_pressure(getParam<std::vector<Real>>("stagnation_pressure")),
104  _stagnation_temperature(getParam<std::vector<Real>>("stagnation_temperature")),
105  _stagnation_direction(getParam<std::vector<Real>>("stagnation_flow_direction")),
106  _no_penetration_boundary(getParam<std::vector<BoundaryName>>("no_penetration_boundary")),
107  _static_pressure_boundary(getParam<std::vector<BoundaryName>>("static_pressure_boundary")),
108  _static_pressure(getParam<std::vector<Real>>("static_pressure")),
109  _fe_type(Utility::string_to_enum<Order>(getParam<MooseEnum>("order")),
110  Utility::string_to_enum<FEFamily>(getParam<MooseEnum>("family"))),
111  _initial_pressure(getParam<Real>("initial_pressure")),
112  _initial_temperature(getParam<Real>("initial_temperature")),
113  _initial_velocity(getParam<RealVectorValue>("initial_velocity")),
114  _pressure_variable_name(isParamValid("pressure_variable_name")
115  ? getParam<std::string>("pressure_variable_name")
116  : "p")
117 {
118  if (_stagnation_pressure.size() != _stagnation_boundary.size())
119  paramError("stagnation_pressure",
120  "Size is not the same as the number of boundaries in 'stagnation_boundary'");
121  if (_stagnation_temperature.size() != _stagnation_boundary.size())
122  paramError("stagnation_temperature",
123  "Size is not the same as the number of boundaries in 'stagnation_boundary'");
124  if (_static_pressure.size() != _static_pressure_boundary.size())
125  paramError("static_pressure",
126  "Size is not the same as the number of boundaries in 'static_pressure_boundary'");
127 }
Real _initial_temperature
Initial value for temperature.
Definition: CNSAction.h:107
std::vector< Real > _stagnation_direction
Flow directions on stagnation boundaries.
Definition: CNSAction.h:95
libMesh::FEType _fe_type
FE type for various variables.
Definition: CNSAction.h:103
std::vector< SubdomainName > _blocks
Subdomains Navier-Stokes equation is defined on.
Definition: CNSAction.h:87
Action(const InputParameters &parameters)
std::vector< BoundaryName > _no_penetration_boundary
Boundaries no-penetration BC applies.
Definition: CNSAction.h:97
std::vector< BoundaryName > _static_pressure_boundary
Boundaries static pressure BC applies.
Definition: CNSAction.h:99
bool isParamValid(const std::string &name) const
MooseEnum _type
Equation type, transient or steady-state.
Definition: CNSAction.h:83
std::vector< Real > _static_pressure
Pressures on static pressure boundaries.
Definition: CNSAction.h:101
UserObjectName _fp_name
Name of the FluidProperties object to pass on to Kernels.
Definition: CNSAction.h:85
const T & getParam(const std::string &name) const
void paramError(const std::string &param, Args... args) const
RealVectorValue _initial_velocity
Initial value for velocity.
Definition: CNSAction.h:109
const std::string _pressure_variable_name
pressure variable name
Definition: CNSAction.h:115
std::vector< BoundaryName > _stagnation_boundary
Boundaries stagnation BC applies.
Definition: CNSAction.h:89
std::vector< Real > _stagnation_pressure
Pressures on stagnation boundaries.
Definition: CNSAction.h:91
const InputParameters & parameters() const
std::vector< Real > _stagnation_temperature
Temperatures on stagnation boundaries.
Definition: CNSAction.h:93
Real _initial_pressure
Initial value for pressure.
Definition: CNSAction.h:105

Member Function Documentation

◆ act()

void CNSAction::act ( )
overridevirtual

Implements Action.

Definition at line 130 of file CNSAction.C.

131 {
132  if (_current_task == "add_navier_stokes_variables")
133  {
134  _dim = _mesh->dimension();
135  for (const auto & subdomain_name : _blocks)
136  {
137  SubdomainID id = _mesh->getSubdomainID(subdomain_name);
138  _block_ids.insert(id);
139  }
140  if (_stagnation_direction.size() != _stagnation_boundary.size() * _dim)
141  paramError("stagnation_flow_direction",
142  "Size is not the same as the number of boundaries in 'stagnation_boundary' times "
143  "the mesh dimension");
144 
145  // FIXME: need to check boundaries are non-overlapping and enclose the blocks
146 
147  auto var_type = AddVariableAction::variableType(_fe_type);
148  auto base_params = _factory.getValidParams(var_type);
149  base_params.set<MooseEnum>("order") = _fe_type.order.get_order();
150  base_params.set<MooseEnum>("family") = Moose::stringify(_fe_type.family);
151  if (_block_ids.size() != 0)
152  for (const SubdomainID & id : _block_ids)
153  base_params.set<std::vector<SubdomainName>>("block").push_back(Moose::stringify(id));
154 
155  // add primal variables
156  InputParameters params(base_params);
157  params.set<std::vector<Real>>("scaling") = {getParam<Real>("density_scaling")};
158  _problem->addVariable(var_type, NS::density, params);
159 
160  auto mscaling = getParam<RealVectorValue>("momentum_scaling");
161  params.set<std::vector<Real>>("scaling") = {mscaling(0)};
162  _problem->addVariable(var_type, NS::momentum_x, params);
163  if (_dim >= 2)
164  {
165  params.set<std::vector<Real>>("scaling") = {mscaling(1)};
166  _problem->addVariable(var_type, NS::momentum_y, params);
167  }
168  if (_dim >= 3)
169  {
170  params.set<std::vector<Real>>("scaling") = {mscaling(2)};
171  _problem->addVariable(var_type, NS::momentum_z, params);
172  }
173  params.set<std::vector<Real>>("scaling") = {getParam<Real>("total_energy_density_scaling")};
174  _problem->addVariable(var_type, NS::total_energy_density, params);
175 
176  // Add Aux variables. These are all required in order for the code
177  // to run, so they should not be independently selectable by the
178  // user.
179  _problem->addAuxVariable(var_type, NS::velocity_x, base_params);
180  if (_dim >= 2)
181  _problem->addAuxVariable(var_type, NS::velocity_y, base_params);
182  if (_dim >= 3)
183  _problem->addAuxVariable(var_type, NS::velocity_z, base_params);
184  _problem->addAuxVariable(var_type, _pressure_variable_name, base_params);
185  _problem->addAuxVariable(var_type, NS::temperature, base_params);
186  _problem->addAuxVariable(var_type, NS::specific_total_enthalpy, base_params);
187  _problem->addAuxVariable(var_type, NS::mach_number, base_params);
188 
189  // Needed for FluidProperties calculations
190  _problem->addAuxVariable(var_type, NS::specific_internal_energy, base_params);
191  _problem->addAuxVariable(var_type, NS::specific_volume, base_params);
192  }
193 
194  if (_current_task == "add_navier_stokes_kernels")
195  {
196  if (_type == "transient")
198 
199  // Add all the inviscid flux Kernels.
202  for (unsigned int component = 0; component < _dim; ++component)
204 
205  // Add SUPG Kernels
206  addNSSUPGMass();
207  addNSSUPGEnergy();
208  for (unsigned int component = 0; component < _dim; ++component)
210 
211  // Add AuxKernels.
212  addPressureOrTemperatureAux("PressureAux");
213  addPressureOrTemperatureAux("TemperatureAux");
215  addNSMachAux();
218  for (unsigned int component = 0; component < _dim; ++component)
220  }
221 
222  if (_current_task == "add_navier_stokes_bcs")
223  {
224  if (_stagnation_boundary.size() > 0)
225  {
228  for (unsigned int component = 0; component < _dim; ++component)
230  }
231 
232  if (_no_penetration_boundary.size() > 0)
233  {
234  for (unsigned int component = 0; component < _dim; ++component)
236  }
237 
238  if (_static_pressure_boundary.size() > 0)
239  {
242  for (unsigned int component = 0; component < _dim; ++component)
244  }
245  }
246 
247  if (_current_task == "add_navier_stokes_ics")
248  {
249  // add ICs for primal variables
250  std::vector<VariableName> vars;
251  vars.push_back(NS::density);
252  vars.push_back(NS::momentum_x);
253  if (_dim >= 2)
254  vars.push_back(NS::momentum_y);
255  if (_dim >= 3)
256  vars.push_back(NS::momentum_z);
257  vars.push_back(NS::total_energy_density);
258  for (const auto & name : vars)
259  {
260  InputParameters params = _factory.getValidParams("NSInitialCondition");
261  params.set<VariableName>("variable") = name;
262  params.set<Real>("initial_pressure") = _initial_pressure;
263  params.set<Real>("initial_temperature") = _initial_temperature;
264  params.set<RealVectorValue>("initial_velocity") = _initial_velocity;
265  params.set<UserObjectName>("fluid_properties") = _fp_name;
266  _problem->addInitialCondition("NSInitialCondition", name + std::string("_ic"), params);
267  }
268 
269  // add ICs for aux variables (possibly we do not need this)
270  std::vector<VariableName> auxs;
271  auxs.push_back(NS::velocity_x);
272  if (_dim >= 2)
273  auxs.push_back(NS::velocity_y);
274  if (_dim >= 3)
275  auxs.push_back(NS::velocity_z);
276 
277  auxs.push_back(_pressure_variable_name);
278  auxs.push_back(NS::temperature);
279  auxs.push_back(NS::specific_total_enthalpy);
280  auxs.push_back(NS::mach_number);
281 
282  // Needed for FluidProperties calculations
283  auxs.push_back(NS::specific_internal_energy);
284  auxs.push_back(NS::specific_volume);
285  for (const auto & name : auxs)
286  {
287  InputParameters params = _factory.getValidParams("NSInitialCondition");
288  params.set<VariableName>("variable") = name;
289  params.set<Real>("initial_pressure") = _initial_pressure;
290  params.set<Real>("initial_temperature") = _initial_temperature;
291  params.set<RealVectorValue>("initial_velocity") = _initial_velocity;
292  params.set<UserObjectName>("fluid_properties") = _fp_name;
294  params.set<MooseEnum>("variable_type") = NS::pressure;
295  _problem->addInitialCondition("NSInitialCondition", name + std::string("_ic"), params);
296  }
297  }
298 }
void addNSMachAux()
Definition: CNSAction.C:414
static const std::string total_energy_density
Definition: NS.h:65
Real _initial_temperature
Initial value for temperature.
Definition: CNSAction.h:107
static const std::string momentum_x
Definition: NS.h:35
std::vector< Real > _stagnation_direction
Flow directions on stagnation boundaries.
Definition: CNSAction.h:95
std::set< SubdomainID > _block_ids
Subdomain IDs.
Definition: CNSAction.h:113
void addPressureOrTemperatureAux(const std::string &kernel_type)
Definition: CNSAction.C:468
libMesh::FEType _fe_type
FE type for various variables.
Definition: CNSAction.h:103
static const std::string mach_number
Definition: NS.h:80
std::vector< SubdomainName > _blocks
Subdomains Navier-Stokes equation is defined on.
Definition: CNSAction.h:87
std::vector< BoundaryName > _no_penetration_boundary
Boundaries no-penetration BC applies.
Definition: CNSAction.h:97
static const std::string component
Definition: NS.h:153
char ** vars
void addNSSUPGMomentum(unsigned int component)
Definition: CNSAction.C:343
T & set(const std::string &name, bool quiet_mode=false)
static const std::string velocity_z
Definition: NS.h:48
std::vector< BoundaryName > _static_pressure_boundary
Boundaries static pressure BC applies.
Definition: CNSAction.h:99
void addNSMassUnspecifiedNormalFlowBC()
Definition: CNSAction.C:618
static const std::string density
Definition: NS.h:33
void addSpecificTotalEnthalpyAux()
Definition: CNSAction.C:434
void addNSInternalEnergyAux()
Definition: CNSAction.C:396
OrderWrapper order
static const std::string velocity_x
Definition: NS.h:46
static const std::string temperature
Definition: NS.h:59
void addNSVelocityAux(unsigned int component)
Definition: CNSAction.C:450
static const std::string specific_internal_energy
Definition: NS.h:62
virtual const std::string & name() const
void addNSSUPGMass()
Definition: CNSAction.C:328
Factory & _factory
void addNSMassWeakStagnationBC()
Definition: CNSAction.C:525
MooseEnum _type
Equation type, transient or steady-state.
Definition: CNSAction.h:83
unsigned int _dim
Mesh dimension.
Definition: CNSAction.h:111
UserObjectName _fp_name
Name of the FluidProperties object to pass on to Kernels.
Definition: CNSAction.h:85
void addNSMassInviscidFlux()
Definition: CNSAction.C:483
static const std::string specific_volume
Definition: NS.h:81
const std::string & _current_task
static std::string variableType(const libMesh::FEType &fe_type, const bool is_fv=false, const bool is_array=false)
static const std::string velocity_y
Definition: NS.h:47
void addNSMomentumWeakStagnationBC(unsigned int component)
Definition: CNSAction.C:556
void paramError(const std::string &param, Args... args) const
RealVectorValue _initial_velocity
Initial value for velocity.
Definition: CNSAction.h:109
void addNSEnergyInviscidFlux()
Definition: CNSAction.C:510
std::string stringify(const T &t)
const std::string _pressure_variable_name
pressure variable name
Definition: CNSAction.h:115
void addNoPenetrationBC(unsigned int component)
Definition: CNSAction.C:600
void addNSMomentumInviscidFlux(unsigned int component)
Definition: CNSAction.C:493
void addNSEnergyWeakStagnationBC()
Definition: CNSAction.C:541
static const std::string momentum_y
Definition: NS.h:36
std::vector< BoundaryName > _stagnation_boundary
Boundaries stagnation BC applies.
Definition: CNSAction.h:89
std::shared_ptr< MooseMesh > & _mesh
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void addNSEnergyInviscidSpecifiedPressureBC()
Definition: CNSAction.C:656
static const std::string specific_total_enthalpy
Definition: NS.h:69
static const std::string pressure
Definition: NS.h:56
void addSpecificVolumeComputation()
Definition: CNSAction.C:378
void addNSMomentumInviscidSpecifiedPressureBC(unsigned int component)
Definition: CNSAction.C:633
std::shared_ptr< FEProblemBase > & _problem
void addNSTimeKernels()
Definition: CNSAction.C:301
static const std::string momentum_z
Definition: NS.h:37
void addNSSUPGEnergy()
Definition: CNSAction.C:363
Real _initial_pressure
Initial value for pressure.
Definition: CNSAction.h:105

◆ addNoPenetrationBC()

void CNSAction::addNoPenetrationBC ( unsigned int  component)
protected

Definition at line 600 of file CNSAction.C.

Referenced by act().

601 {
602  const static std::string momentums[3] = {NS::momentum_x, NS::momentum_y, NS::momentum_z};
603  const std::string kernel_type = "NSPressureNeumannBC";
604  InputParameters params = _factory.getValidParams(kernel_type);
605  params.set<NonlinearVariableName>("variable") = momentums[component];
606  setBCCommonParams(params);
607 
608  // These BCs also need the component and couping to the pressure.
609  params.set<unsigned int>("component") = component;
611 
612  params.set<std::vector<BoundaryName>>("boundary") = _no_penetration_boundary;
613  _problem->addBoundaryCondition(
614  kernel_type, momentums[component] + std::string("_no_penetration"), params);
615 }
static const std::string momentum_x
Definition: NS.h:35
std::vector< BoundaryName > _no_penetration_boundary
Boundaries no-penetration BC applies.
Definition: CNSAction.h:97
static const std::string component
Definition: NS.h:153
T & set(const std::string &name, bool quiet_mode=false)
Factory & _factory
const std::string _pressure_variable_name
pressure variable name
Definition: CNSAction.h:115
static const std::string momentum_y
Definition: NS.h:36
std::vector< VariableName > CoupledName
static const std::string pressure
Definition: NS.h:56
std::shared_ptr< FEProblemBase > & _problem
static const std::string momentum_z
Definition: NS.h:37
void setBCCommonParams(InputParameters &params)
Definition: CNSAction.C:691

◆ addNSEnergyInviscidFlux()

void CNSAction::addNSEnergyInviscidFlux ( )
protected

Definition at line 510 of file CNSAction.C.

Referenced by act().

511 {
512  const std::string kernel_type = "NSEnergyInviscidFlux";
513  InputParameters params = _factory.getValidParams(kernel_type);
514  params.set<NonlinearVariableName>("variable") = NS::total_energy_density;
515  setKernelCommonParams(params);
516 
517  // Extra stuff needed by energy equation
519 
520  // Add the Kernel
521  _problem->addKernel(kernel_type, "rhoE_if", params);
522 }
static const std::string total_energy_density
Definition: NS.h:65
void setKernelCommonParams(InputParameters &params)
Definition: CNSAction.C:674
T & set(const std::string &name, bool quiet_mode=false)
Factory & _factory
static const std::string specific_total_enthalpy
Definition: NS.h:69
std::vector< VariableName > CoupledName
std::shared_ptr< FEProblemBase > & _problem

◆ addNSEnergyInviscidSpecifiedPressureBC()

void CNSAction::addNSEnergyInviscidSpecifiedPressureBC ( )
protected

Definition at line 656 of file CNSAction.C.

Referenced by act().

657 {
658  const std::string kernel_type = "NSEnergyInviscidSpecifiedPressureBC";
659  InputParameters params = _factory.getValidParams(kernel_type);
660  params.set<NonlinearVariableName>("variable") = NS::total_energy_density;
661  setBCCommonParams(params);
662  // This BC also requires the current value of the temperature.
664  for (unsigned int i = 0; i < _static_pressure_boundary.size(); ++i)
665  {
666  params.set<std::vector<BoundaryName>>("boundary") = {_static_pressure_boundary[i]};
667  params.set<Real>("specified_pressure") = _static_pressure[i];
668  _problem->addBoundaryCondition(
669  kernel_type, "rhoE_specified_pressure_outflow_" + Moose::stringify(i), params);
670  }
671 }
static const std::string total_energy_density
Definition: NS.h:65
T & set(const std::string &name, bool quiet_mode=false)
std::vector< BoundaryName > _static_pressure_boundary
Boundaries static pressure BC applies.
Definition: CNSAction.h:99
static const std::string temperature
Definition: NS.h:59
Factory & _factory
std::vector< Real > _static_pressure
Pressures on static pressure boundaries.
Definition: CNSAction.h:101
std::string stringify(const T &t)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
std::vector< VariableName > CoupledName
std::shared_ptr< FEProblemBase > & _problem
void setBCCommonParams(InputParameters &params)
Definition: CNSAction.C:691

◆ addNSEnergyWeakStagnationBC()

void CNSAction::addNSEnergyWeakStagnationBC ( )
protected

Definition at line 541 of file CNSAction.C.

Referenced by act().

542 {
543  const std::string kernel_type = "NSEnergyWeakStagnationBC";
544  InputParameters params = _factory.getValidParams(kernel_type);
545  params.set<NonlinearVariableName>("variable") = NS::total_energy_density;
546  setBCCommonParams(params);
547  for (unsigned int i = 0; i < _stagnation_boundary.size(); ++i)
548  {
549  setStagnationBCCommonParams(params, i);
550  _problem->addBoundaryCondition(
551  kernel_type, "weak_stagnation_energy_inflow_" + Moose::stringify(i), params);
552  }
553 }
static const std::string total_energy_density
Definition: NS.h:65
void setStagnationBCCommonParams(InputParameters &params, unsigned int i)
Definition: CNSAction.C:706
T & set(const std::string &name, bool quiet_mode=false)
Factory & _factory
std::string stringify(const T &t)
std::vector< BoundaryName > _stagnation_boundary
Boundaries stagnation BC applies.
Definition: CNSAction.h:89
std::shared_ptr< FEProblemBase > & _problem
void setBCCommonParams(InputParameters &params)
Definition: CNSAction.C:691

◆ addNSInternalEnergyAux()

void CNSAction::addNSInternalEnergyAux ( )
protected

Definition at line 396 of file CNSAction.C.

Referenced by act().

397 {
398  const std::string kernel_type = "NSInternalEnergyAux";
399 
400  InputParameters params = _factory.getValidParams(kernel_type);
401  params.set<AuxVariableName>("variable") = NS::specific_internal_energy;
402 
403  // coupled variables
404  params.set<CoupledName>(NS::density) = {NS::density};
406 
407  // Couple the appropriate number of velocities
408  coupleVelocities(params);
409 
410  _problem->addAuxKernel(kernel_type, "specific_internal_energy_auxkernel", params);
411 }
static const std::string total_energy_density
Definition: NS.h:65
T & set(const std::string &name, bool quiet_mode=false)
static const std::string density
Definition: NS.h:33
static const std::string specific_internal_energy
Definition: NS.h:62
Factory & _factory
std::vector< VariableName > CoupledName
std::shared_ptr< FEProblemBase > & _problem
void coupleVelocities(InputParameters &params)
Definition: CNSAction.C:721

◆ addNSMachAux()

void CNSAction::addNSMachAux ( )
protected

Definition at line 414 of file CNSAction.C.

Referenced by act().

415 {
416  const std::string kernel_type = "NSMachAux";
417 
418  InputParameters params = _factory.getValidParams(kernel_type);
419  params.set<AuxVariableName>("variable") = NS::mach_number;
420 
421  // coupled variables
424 
425  // Couple the appropriate number of velocities
426  coupleVelocities(params);
427 
428  params.set<UserObjectName>("fluid_properties") = _fp_name;
429 
430  _problem->addAuxKernel(kernel_type, "mach_auxkernel", params);
431 }
static const std::string mach_number
Definition: NS.h:80
T & set(const std::string &name, bool quiet_mode=false)
static const std::string specific_internal_energy
Definition: NS.h:62
Factory & _factory
UserObjectName _fp_name
Name of the FluidProperties object to pass on to Kernels.
Definition: CNSAction.h:85
static const std::string specific_volume
Definition: NS.h:81
std::vector< VariableName > CoupledName
std::shared_ptr< FEProblemBase > & _problem
void coupleVelocities(InputParameters &params)
Definition: CNSAction.C:721

◆ addNSMassInviscidFlux()

void CNSAction::addNSMassInviscidFlux ( )
protected

Definition at line 483 of file CNSAction.C.

Referenced by act().

484 {
485  const std::string kernel_type = "NSMassInviscidFlux";
486  InputParameters params = _factory.getValidParams(kernel_type);
487  params.set<NonlinearVariableName>("variable") = NS::density;
488  setKernelCommonParams(params);
489  _problem->addKernel(kernel_type, "rho_if", params);
490 }
void setKernelCommonParams(InputParameters &params)
Definition: CNSAction.C:674
T & set(const std::string &name, bool quiet_mode=false)
static const std::string density
Definition: NS.h:33
Factory & _factory
std::shared_ptr< FEProblemBase > & _problem

◆ addNSMassUnspecifiedNormalFlowBC()

void CNSAction::addNSMassUnspecifiedNormalFlowBC ( )
protected

Definition at line 618 of file CNSAction.C.

Referenced by act().

619 {
620  const std::string kernel_type = "NSMassUnspecifiedNormalFlowBC";
621  InputParameters params = _factory.getValidParams(kernel_type);
622  params.set<NonlinearVariableName>("variable") = NS::density;
623  setBCCommonParams(params);
624  for (unsigned int i = 0; i < _static_pressure_boundary.size(); ++i)
625  {
626  params.set<std::vector<BoundaryName>>("boundary") = {_static_pressure_boundary[i]};
627  params.set<Real>("specified_pressure") = _static_pressure[i];
628  _problem->addBoundaryCondition(kernel_type, "mass_outflow_" + Moose::stringify(i), params);
629  }
630 }
T & set(const std::string &name, bool quiet_mode=false)
std::vector< BoundaryName > _static_pressure_boundary
Boundaries static pressure BC applies.
Definition: CNSAction.h:99
static const std::string density
Definition: NS.h:33
Factory & _factory
std::vector< Real > _static_pressure
Pressures on static pressure boundaries.
Definition: CNSAction.h:101
std::string stringify(const T &t)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
std::shared_ptr< FEProblemBase > & _problem
void setBCCommonParams(InputParameters &params)
Definition: CNSAction.C:691

◆ addNSMassWeakStagnationBC()

void CNSAction::addNSMassWeakStagnationBC ( )
protected

Definition at line 525 of file CNSAction.C.

Referenced by act().

526 {
527  const std::string kernel_type = "NSMassWeakStagnationBC";
528  InputParameters params = _factory.getValidParams(kernel_type);
529  params.set<NonlinearVariableName>("variable") = NS::density;
530  setBCCommonParams(params);
531 
532  for (unsigned int i = 0; i < _stagnation_boundary.size(); ++i)
533  {
534  setStagnationBCCommonParams(params, i);
535  _problem->addBoundaryCondition(
536  kernel_type, "weak_stagnation_mass_inflow_" + Moose::stringify(i), params);
537  }
538 }
void setStagnationBCCommonParams(InputParameters &params, unsigned int i)
Definition: CNSAction.C:706
T & set(const std::string &name, bool quiet_mode=false)
static const std::string density
Definition: NS.h:33
Factory & _factory
std::string stringify(const T &t)
std::vector< BoundaryName > _stagnation_boundary
Boundaries stagnation BC applies.
Definition: CNSAction.h:89
std::shared_ptr< FEProblemBase > & _problem
void setBCCommonParams(InputParameters &params)
Definition: CNSAction.C:691

◆ addNSMomentumInviscidFlux()

void CNSAction::addNSMomentumInviscidFlux ( unsigned int  component)
protected

Definition at line 493 of file CNSAction.C.

Referenced by act().

494 {
495  const static std::string momentums[3] = {NS::momentum_x, NS::momentum_y, NS::momentum_z};
496  const std::string kernel_type = "NSMomentumInviscidFlux";
497  InputParameters params = _factory.getValidParams(kernel_type);
498  params.set<NonlinearVariableName>("variable") = momentums[component];
499  setKernelCommonParams(params);
500 
501  // Extra stuff needed by momentum Kernels
503  params.set<unsigned int>("component") = component;
504 
505  // Add the Kernel
506  _problem->addKernel(kernel_type, momentums[component] + std::string("if"), params);
507 }
static const std::string momentum_x
Definition: NS.h:35
void setKernelCommonParams(InputParameters &params)
Definition: CNSAction.C:674
static const std::string component
Definition: NS.h:153
T & set(const std::string &name, bool quiet_mode=false)
Factory & _factory
const std::string _pressure_variable_name
pressure variable name
Definition: CNSAction.h:115
static const std::string momentum_y
Definition: NS.h:36
std::vector< VariableName > CoupledName
static const std::string pressure
Definition: NS.h:56
std::shared_ptr< FEProblemBase > & _problem
static const std::string momentum_z
Definition: NS.h:37

◆ addNSMomentumInviscidSpecifiedPressureBC()

void CNSAction::addNSMomentumInviscidSpecifiedPressureBC ( unsigned int  component)
protected

Definition at line 633 of file CNSAction.C.

Referenced by act().

634 {
635  const static std::string momentums[3] = {NS::momentum_x, NS::momentum_y, NS::momentum_z};
636  const std::string kernel_type = "NSMomentumInviscidSpecifiedPressureBC";
637  InputParameters params = _factory.getValidParams(kernel_type);
638  params.set<NonlinearVariableName>("variable") = momentums[component];
639  setBCCommonParams(params);
640 
641  // These BCs also need the component.
642  params.set<unsigned int>("component") = component;
643 
644  for (unsigned int i = 0; i < _static_pressure_boundary.size(); ++i)
645  {
646  params.set<std::vector<BoundaryName>>("boundary") = {_static_pressure_boundary[i]};
647  params.set<Real>("specified_pressure") = _static_pressure[i];
648  _problem->addBoundaryCondition(
649  kernel_type,
650  momentums[component] + std::string("_specified_pressure_outflow_") + Moose::stringify(i),
651  params);
652  }
653 }
static const std::string momentum_x
Definition: NS.h:35
static const std::string component
Definition: NS.h:153
T & set(const std::string &name, bool quiet_mode=false)
std::vector< BoundaryName > _static_pressure_boundary
Boundaries static pressure BC applies.
Definition: CNSAction.h:99
Factory & _factory
std::vector< Real > _static_pressure
Pressures on static pressure boundaries.
Definition: CNSAction.h:101
std::string stringify(const T &t)
static const std::string momentum_y
Definition: NS.h:36
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
std::shared_ptr< FEProblemBase > & _problem
static const std::string momentum_z
Definition: NS.h:37
void setBCCommonParams(InputParameters &params)
Definition: CNSAction.C:691

◆ addNSMomentumWeakStagnationBC()

void CNSAction::addNSMomentumWeakStagnationBC ( unsigned int  component)
protected

Definition at line 556 of file CNSAction.C.

Referenced by act().

557 {
558  const static std::string momentums[3] = {NS::momentum_x, NS::momentum_y, NS::momentum_z};
559 
560  // Convective part
561  {
562  const std::string kernel_type = "NSMomentumConvectiveWeakStagnationBC";
563  InputParameters params = _factory.getValidParams(kernel_type);
564  params.set<NonlinearVariableName>("variable") = momentums[component];
565  setBCCommonParams(params);
566  // Momentum BCs also need the component.
567  params.set<unsigned int>("component") = component;
568  for (unsigned int i = 0; i < _stagnation_boundary.size(); ++i)
569  {
570  setStagnationBCCommonParams(params, i);
571  _problem->addBoundaryCondition(kernel_type,
572  std::string("weak_stagnation_") + momentums[component] +
573  std::string("_convective_inflow_") + Moose::stringify(i),
574  params);
575  }
576  }
577 
578  // Pressure part
579  {
580  const std::string kernel_type = "NSMomentumPressureWeakStagnationBC";
581  InputParameters params = _factory.getValidParams(kernel_type);
582  params.set<NonlinearVariableName>("variable") = momentums[component];
583  setBCCommonParams(params);
584  // Momentum BCs also need the component.
585  params.set<unsigned int>("component") = component;
586 
587  for (unsigned int i = 0; i < _stagnation_boundary.size(); ++i)
588  {
589  setStagnationBCCommonParams(params, i);
590 
591  _problem->addBoundaryCondition(kernel_type,
592  std::string("weak_stagnation_") + momentums[component] +
593  std::string("_pressure_inflow_") + Moose::stringify(i),
594  params);
595  }
596  }
597 }
static const std::string momentum_x
Definition: NS.h:35
static const std::string component
Definition: NS.h:153
void setStagnationBCCommonParams(InputParameters &params, unsigned int i)
Definition: CNSAction.C:706
T & set(const std::string &name, bool quiet_mode=false)
Factory & _factory
std::string stringify(const T &t)
static const std::string momentum_y
Definition: NS.h:36
std::vector< BoundaryName > _stagnation_boundary
Boundaries stagnation BC applies.
Definition: CNSAction.h:89
std::shared_ptr< FEProblemBase > & _problem
static const std::string momentum_z
Definition: NS.h:37
void setBCCommonParams(InputParameters &params)
Definition: CNSAction.C:691

◆ addNSSUPGEnergy()

void CNSAction::addNSSUPGEnergy ( )
protected

Definition at line 363 of file CNSAction.C.

Referenced by act().

364 {
365  const std::string kernel_type = "NSSUPGEnergy";
366  InputParameters params = _factory.getValidParams(kernel_type);
367  params.set<NonlinearVariableName>("variable") = NS::total_energy_density;
368  setKernelCommonParams(params);
369 
370  // SUPG Kernels also need temperature and specific_total_enthalpy currently.
373 
374  _problem->addKernel(kernel_type, "rhoE_supg", params);
375 }
static const std::string total_energy_density
Definition: NS.h:65
void setKernelCommonParams(InputParameters &params)
Definition: CNSAction.C:674
T & set(const std::string &name, bool quiet_mode=false)
static const std::string temperature
Definition: NS.h:59
Factory & _factory
static const std::string specific_total_enthalpy
Definition: NS.h:69
std::vector< VariableName > CoupledName
std::shared_ptr< FEProblemBase > & _problem

◆ addNSSUPGMass()

void CNSAction::addNSSUPGMass ( )
protected

Definition at line 328 of file CNSAction.C.

Referenced by act().

329 {
330  const std::string kernel_type = "NSSUPGMass";
331  InputParameters params = _factory.getValidParams(kernel_type);
332  params.set<NonlinearVariableName>("variable") = NS::density;
333  setKernelCommonParams(params);
334 
335  // SUPG Kernels also need temperature and specific_total_enthalpy currently.
338 
339  _problem->addKernel(kernel_type, "rho_supg", params);
340 }
void setKernelCommonParams(InputParameters &params)
Definition: CNSAction.C:674
T & set(const std::string &name, bool quiet_mode=false)
static const std::string density
Definition: NS.h:33
static const std::string temperature
Definition: NS.h:59
Factory & _factory
static const std::string specific_total_enthalpy
Definition: NS.h:69
std::vector< VariableName > CoupledName
std::shared_ptr< FEProblemBase > & _problem

◆ addNSSUPGMomentum()

void CNSAction::addNSSUPGMomentum ( unsigned int  component)
protected

Definition at line 343 of file CNSAction.C.

Referenced by act().

344 {
345  const static std::string momentums[3] = {NS::momentum_x, NS::momentum_y, NS::momentum_z};
346 
347  const std::string kernel_type = "NSSUPGMomentum";
348  InputParameters params = _factory.getValidParams(kernel_type);
349  params.set<NonlinearVariableName>("variable") = momentums[component];
350  setKernelCommonParams(params);
351 
352  // SUPG Kernels also need temperature and specific_total_enthalpy currently.
355 
356  // Momentum Kernels also need the component.
357  params.set<unsigned int>("component") = component;
358 
359  _problem->addKernel(kernel_type, momentums[component] + std::string("_supg"), params);
360 }
static const std::string momentum_x
Definition: NS.h:35
void setKernelCommonParams(InputParameters &params)
Definition: CNSAction.C:674
static const std::string component
Definition: NS.h:153
T & set(const std::string &name, bool quiet_mode=false)
static const std::string temperature
Definition: NS.h:59
Factory & _factory
static const std::string momentum_y
Definition: NS.h:36
static const std::string specific_total_enthalpy
Definition: NS.h:69
std::vector< VariableName > CoupledName
std::shared_ptr< FEProblemBase > & _problem
static const std::string momentum_z
Definition: NS.h:37

◆ addNSTimeKernels()

void CNSAction::addNSTimeKernels ( )
protected

Definition at line 301 of file CNSAction.C.

Referenced by act().

302 {
303  const std::string kernel_type = "TimeDerivative";
304  InputParameters params = _factory.getValidParams(kernel_type);
305  params.set<std::vector<SubdomainName>>("block") = _blocks;
306 
307  params.set<NonlinearVariableName>("variable") = NS::density;
308  _problem->addKernel(kernel_type, NS::density + "_time_deriv", params);
309 
310  params.set<NonlinearVariableName>("variable") = NS::momentum_x;
311  _problem->addKernel(kernel_type, NS::momentum_x + "_time_deriv", params);
312  if (_dim >= 2)
313  {
314  params.set<NonlinearVariableName>("variable") = NS::momentum_y;
315  _problem->addKernel(kernel_type, NS::momentum_y + "_time_deriv", params);
316  }
317  if (_dim >= 3)
318  {
319  params.set<NonlinearVariableName>("variable") = NS::momentum_z;
320  _problem->addKernel(kernel_type, NS::momentum_z + "_time_deriv", params);
321  }
322 
323  params.set<NonlinearVariableName>("variable") = NS::total_energy_density;
324  _problem->addKernel(kernel_type, NS::total_energy_density + "_time_deriv", params);
325 }
static const std::string total_energy_density
Definition: NS.h:65
static const std::string momentum_x
Definition: NS.h:35
std::vector< SubdomainName > _blocks
Subdomains Navier-Stokes equation is defined on.
Definition: CNSAction.h:87
T & set(const std::string &name, bool quiet_mode=false)
static const std::string density
Definition: NS.h:33
Factory & _factory
unsigned int _dim
Mesh dimension.
Definition: CNSAction.h:111
static const std::string momentum_y
Definition: NS.h:36
std::shared_ptr< FEProblemBase > & _problem
static const std::string momentum_z
Definition: NS.h:37

◆ addNSVelocityAux()

void CNSAction::addNSVelocityAux ( unsigned int  component)
protected

Definition at line 450 of file CNSAction.C.

Referenced by act().

451 {
452  const std::string kernel_type = "NSVelocityAux";
453  const static std::string velocities[3] = {NS::velocity_x, NS::velocity_y, NS::velocity_z};
454  const static std::string momentums[3] = {NS::momentum_x, NS::momentum_y, NS::momentum_z};
455 
456  InputParameters params = _factory.getValidParams(kernel_type);
457  params.set<AuxVariableName>("variable") = velocities[component];
458 
459  // coupled variables
460  params.set<CoupledName>(NS::density) = {NS::density};
461  params.set<CoupledName>("momentum") = {momentums[component]};
462  params.set<UserObjectName>("fluid_properties") = _fp_name;
463 
464  _problem->addAuxKernel(kernel_type, velocities[component] + "_auxkernel", params);
465 }
static const std::string momentum_x
Definition: NS.h:35
static const std::string component
Definition: NS.h:153
T & set(const std::string &name, bool quiet_mode=false)
static const std::string velocity_z
Definition: NS.h:48
static const std::string density
Definition: NS.h:33
static const std::string velocity_x
Definition: NS.h:46
Factory & _factory
UserObjectName _fp_name
Name of the FluidProperties object to pass on to Kernels.
Definition: CNSAction.h:85
static const std::string velocity_y
Definition: NS.h:47
static const std::string momentum_y
Definition: NS.h:36
std::vector< VariableName > CoupledName
std::shared_ptr< FEProblemBase > & _problem
static const std::string momentum_z
Definition: NS.h:37

◆ addPressureOrTemperatureAux()

void CNSAction::addPressureOrTemperatureAux ( const std::string &  kernel_type)
protected

Definition at line 468 of file CNSAction.C.

Referenced by act().

469 {
470  InputParameters params = _factory.getValidParams(kernel_type);
471  std::string var_name = (kernel_type == "PressureAux" ? _pressure_variable_name : NS::temperature);
472  params.set<AuxVariableName>("variable") = var_name;
473 
474  // coupled variables
476  params.set<CoupledName>("v") = {NS::specific_volume};
477  params.set<UserObjectName>("fp") = _fp_name;
478 
479  _problem->addAuxKernel(kernel_type, var_name + "_auxkernel", params);
480 }
T & set(const std::string &name, bool quiet_mode=false)
static const std::string temperature
Definition: NS.h:59
static const std::string specific_internal_energy
Definition: NS.h:62
Factory & _factory
UserObjectName _fp_name
Name of the FluidProperties object to pass on to Kernels.
Definition: CNSAction.h:85
static const std::string specific_volume
Definition: NS.h:81
const std::string _pressure_variable_name
pressure variable name
Definition: CNSAction.h:115
std::vector< VariableName > CoupledName
std::shared_ptr< FEProblemBase > & _problem

◆ addSpecificTotalEnthalpyAux()

void CNSAction::addSpecificTotalEnthalpyAux ( )
protected

Definition at line 434 of file CNSAction.C.

Referenced by act().

435 {
436  const std::string kernel_type = "NSSpecificTotalEnthalpyAux";
437 
438  InputParameters params = _factory.getValidParams(kernel_type);
439  params.set<AuxVariableName>("variable") = NS::specific_total_enthalpy;
440 
441  // coupled variables
442  params.set<CoupledName>(NS::density) = {NS::density};
445 
446  _problem->addAuxKernel(kernel_type, "specific_total_enthalpy_auxkernel", params);
447 }
static const std::string total_energy_density
Definition: NS.h:65
T & set(const std::string &name, bool quiet_mode=false)
static const std::string density
Definition: NS.h:33
Factory & _factory
const std::string _pressure_variable_name
pressure variable name
Definition: CNSAction.h:115
static const std::string specific_total_enthalpy
Definition: NS.h:69
std::vector< VariableName > CoupledName
static const std::string pressure
Definition: NS.h:56
std::shared_ptr< FEProblemBase > & _problem

◆ addSpecificVolumeComputation()

void CNSAction::addSpecificVolumeComputation ( )
protected

Definition at line 378 of file CNSAction.C.

Referenced by act().

379 {
380  const std::string kernel_type = "ParsedAux";
381 
382  InputParameters params = _factory.getValidParams(kernel_type);
383  params.set<AuxVariableName>("variable") = NS::specific_volume;
384 
385  // arguments
386  params.set<CoupledName>("args") = {NS::density};
387 
388  // expression
389  std::string function = "if(" + NS::density + " = 0, 1e10, 1 / " + NS::density + ")";
390  params.set<std::string>("function") = function;
391 
392  _problem->addAuxKernel(kernel_type, "specific_volume_auxkernel", params);
393 }
T & set(const std::string &name, bool quiet_mode=false)
static const std::string density
Definition: NS.h:33
Factory & _factory
static const std::string specific_volume
Definition: NS.h:81
std::vector< VariableName > CoupledName
std::shared_ptr< FEProblemBase > & _problem

◆ coupleMomentums()

void CNSAction::coupleMomentums ( InputParameters params)
protected

Definition at line 733 of file CNSAction.C.

Referenced by setBCCommonParams(), and setKernelCommonParams().

734 {
736 
737  if (_dim >= 2)
739 
740  if (_dim >= 3)
742 }
static const std::string momentum_x
Definition: NS.h:35
T & set(const std::string &name, bool quiet_mode=false)
unsigned int _dim
Mesh dimension.
Definition: CNSAction.h:111
static const std::string momentum_y
Definition: NS.h:36
std::vector< VariableName > CoupledName
static const std::string momentum_z
Definition: NS.h:37

◆ coupleVelocities()

void CNSAction::coupleVelocities ( InputParameters params)
protected

Definition at line 721 of file CNSAction.C.

Referenced by addNSInternalEnergyAux(), addNSMachAux(), setBCCommonParams(), and setKernelCommonParams().

722 {
724 
725  if (_dim >= 2)
727 
728  if (_dim >= 3)
730 }
T & set(const std::string &name, bool quiet_mode=false)
static const std::string velocity_z
Definition: NS.h:48
static const std::string velocity_x
Definition: NS.h:46
unsigned int _dim
Mesh dimension.
Definition: CNSAction.h:111
static const std::string velocity_y
Definition: NS.h:47
std::vector< VariableName > CoupledName

◆ setBCCommonParams()

void CNSAction::setBCCommonParams ( InputParameters params)
protected

Definition at line 691 of file CNSAction.C.

Referenced by addNoPenetrationBC(), addNSEnergyInviscidSpecifiedPressureBC(), addNSEnergyWeakStagnationBC(), addNSMassUnspecifiedNormalFlowBC(), addNSMassWeakStagnationBC(), addNSMomentumInviscidSpecifiedPressureBC(), and addNSMomentumWeakStagnationBC().

692 {
693  // coupled variables
694  params.set<CoupledName>(NS::density) = {NS::density};
696 
697  // Couple the appropriate number of velocities
698  coupleVelocities(params);
699  coupleMomentums(params);
700 
701  // FluidProperties object
702  params.set<UserObjectName>("fluid_properties") = _fp_name;
703 }
static const std::string total_energy_density
Definition: NS.h:65
T & set(const std::string &name, bool quiet_mode=false)
static const std::string density
Definition: NS.h:33
UserObjectName _fp_name
Name of the FluidProperties object to pass on to Kernels.
Definition: CNSAction.h:85
std::vector< VariableName > CoupledName
void coupleMomentums(InputParameters &params)
Definition: CNSAction.C:733
void coupleVelocities(InputParameters &params)
Definition: CNSAction.C:721

◆ setKernelCommonParams()

void CNSAction::setKernelCommonParams ( InputParameters params)
protected

Definition at line 674 of file CNSAction.C.

Referenced by addNSEnergyInviscidFlux(), addNSMassInviscidFlux(), addNSMomentumInviscidFlux(), addNSSUPGEnergy(), addNSSUPGMass(), and addNSSUPGMomentum().

675 {
676  params.set<std::vector<SubdomainName>>("block") = _blocks;
677 
678  // coupled variables
679  params.set<CoupledName>(NS::density) = {NS::density};
681 
682  // Couple the appropriate number of velocities
683  coupleVelocities(params);
684  coupleMomentums(params);
685 
686  // FluidProperties object
687  params.set<UserObjectName>("fluid_properties") = _fp_name;
688 }
static const std::string total_energy_density
Definition: NS.h:65
std::vector< SubdomainName > _blocks
Subdomains Navier-Stokes equation is defined on.
Definition: CNSAction.h:87
T & set(const std::string &name, bool quiet_mode=false)
static const std::string density
Definition: NS.h:33
UserObjectName _fp_name
Name of the FluidProperties object to pass on to Kernels.
Definition: CNSAction.h:85
std::vector< VariableName > CoupledName
void coupleMomentums(InputParameters &params)
Definition: CNSAction.C:733
void coupleVelocities(InputParameters &params)
Definition: CNSAction.C:721

◆ setStagnationBCCommonParams()

void CNSAction::setStagnationBCCommonParams ( InputParameters params,
unsigned int  i 
)
protected

Definition at line 706 of file CNSAction.C.

Referenced by addNSEnergyWeakStagnationBC(), addNSMassWeakStagnationBC(), and addNSMomentumWeakStagnationBC().

707 {
708  params.set<std::vector<BoundaryName>>("boundary") = {_stagnation_boundary[i]};
709  params.set<Real>("stagnation_pressure") = _stagnation_pressure[i];
710  params.set<Real>("stagnation_temperature") = _stagnation_temperature[i];
711  params.set<Real>("sx") = _stagnation_direction[_dim * i];
712  if (_dim == 1)
713  params.set<Real>("sy") = 0;
714  if (_dim >= 2)
715  params.set<Real>("sy") = _stagnation_direction[_dim * i + 1];
716  if (_dim >= 3)
717  params.set<Real>("sz") = _stagnation_direction[_dim * i + 2];
718 }
std::vector< Real > _stagnation_direction
Flow directions on stagnation boundaries.
Definition: CNSAction.h:95
T & set(const std::string &name, bool quiet_mode=false)
unsigned int _dim
Mesh dimension.
Definition: CNSAction.h:111
std::vector< BoundaryName > _stagnation_boundary
Boundaries stagnation BC applies.
Definition: CNSAction.h:89
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
std::vector< Real > _stagnation_pressure
Pressures on stagnation boundaries.
Definition: CNSAction.h:91
std::vector< Real > _stagnation_temperature
Temperatures on stagnation boundaries.
Definition: CNSAction.h:93

◆ validParams()

InputParameters CNSAction::validParams ( )
static

Definition at line 32 of file CNSAction.C.

33 {
35  params.addClassDescription("This class allows us to have a section of the input file like the "
36  "following which automatically adds Kernels and AuxKernels for all "
37  "the required nonlinear and auxiliary variables.");
38 
39  MooseEnum type("steady-state transient", "steady-state");
40  params.addParam<MooseEnum>("equation_type", type, "Navier-Stokes equation type");
41 
42  params.addParam<std::vector<SubdomainName>>(
43  "block", {}, "The list of block ids (SubdomainID) on which NS equation is defined on");
44 
45  params.addRequiredParam<UserObjectName>("fluid_properties",
46  "The name of the user object for fluid properties");
47 
48  params.addParam<std::vector<BoundaryName>>(
49  "stagnation_boundary", std::vector<BoundaryName>(), "Stagnation boundaries");
50  params.addParam<std::vector<Real>>(
51  "stagnation_pressure", std::vector<Real>(), "Pressure on stagnation boundaries");
52  params.addParam<std::vector<Real>>(
53  "stagnation_temperature", std::vector<Real>(), "Temperature on stagnation boundaries");
54  params.addParam<std::vector<Real>>(
55  "stagnation_flow_direction", std::vector<Real>(), "Flow directions on stagnation boundaries");
56  params.addParam<std::vector<BoundaryName>>(
57  "no_penetration_boundary", std::vector<BoundaryName>(), "No-penetration boundaries");
58  params.addParam<std::vector<BoundaryName>>(
59  "static_pressure_boundary", std::vector<BoundaryName>(), "Static pressure boundaries");
60  params.addParam<std::vector<Real>>(
61  "static_pressure", std::vector<Real>(), "Static pressure on boundaries");
62 
65  params.addParam<MooseEnum>(
66  "family", families, "Specifies the family of FE shape functions to use for this variable");
67  params.addParam<MooseEnum>("order",
68  orders,
69  "Specifies the order of the FE shape function to use "
70  "for this variable (additional orders not listed are "
71  "allowed)");
72  params.addParam<Real>("density_scaling", 1, "Scaling for the density variable");
73  params.addParam<RealVectorValue>(
74  "momentum_scaling", RealVectorValue(1, 1, 1), "Scaling for the momentum variables");
75  params.addParam<Real>("total_energy_density_scaling", 1, "Scaling for the total-energy variable");
76 
77  params.addRequiredParam<Real>("initial_pressure",
78  "The initial pressure, assumed constant everywhere");
79  params.addRequiredParam<Real>("initial_temperature",
80  "The initial temperature, assumed constant everywhere");
81  params.addRequiredParam<RealVectorValue>("initial_velocity",
82  "The initial velocity, assumed constant everywhere");
83 
84  params.addParamNamesToGroup("equation_type block fluid_properties", "Base");
85  params.addParamNamesToGroup(
86  "stagnation_boundary stagnation_pressure stagnation_temperature "
87  "stagnation_flow_direction no_penetration_boundary static_pressure_boundary static_pressure",
88  "BoundaryCondition");
89  params.addParamNamesToGroup(
90  "family order density_scaling momentum_scaling total_energy_density_scaling", "Variable");
91  params.addParam<std::string>("pressure_variable_name",
92  "A name for the pressure variable. If this is not provided, a "
93  "sensible default will be used.");
94  return params;
95 }
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addRequiredParam(const std::string &name, const std::string &doc_string)
static MooseEnum getNonlinearVariableFamilies()
static InputParameters validParams()
static MooseEnum getNonlinearVariableOrders()
const std::string & type() const
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void addClassDescription(const std::string &doc_string)

Member Data Documentation

◆ _block_ids

std::set<SubdomainID> CNSAction::_block_ids
protected

Subdomain IDs.

Definition at line 113 of file CNSAction.h.

Referenced by act().

◆ _blocks

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

Subdomains Navier-Stokes equation is defined on.

Definition at line 87 of file CNSAction.h.

Referenced by act(), addNSTimeKernels(), and setKernelCommonParams().

◆ _dim

unsigned int CNSAction::_dim
protected

Mesh dimension.

Definition at line 111 of file CNSAction.h.

Referenced by act(), addNSTimeKernels(), coupleMomentums(), coupleVelocities(), and setStagnationBCCommonParams().

◆ _fe_type

libMesh::FEType CNSAction::_fe_type
protected

FE type for various variables.

Definition at line 103 of file CNSAction.h.

Referenced by act().

◆ _fp_name

UserObjectName CNSAction::_fp_name
protected

Name of the FluidProperties object to pass on to Kernels.

Definition at line 85 of file CNSAction.h.

Referenced by act(), addNSMachAux(), addNSVelocityAux(), addPressureOrTemperatureAux(), setBCCommonParams(), and setKernelCommonParams().

◆ _initial_pressure

Real CNSAction::_initial_pressure
protected

Initial value for pressure.

Definition at line 105 of file CNSAction.h.

Referenced by act().

◆ _initial_temperature

Real CNSAction::_initial_temperature
protected

Initial value for temperature.

Definition at line 107 of file CNSAction.h.

Referenced by act().

◆ _initial_velocity

RealVectorValue CNSAction::_initial_velocity
protected

Initial value for velocity.

Definition at line 109 of file CNSAction.h.

Referenced by act().

◆ _no_penetration_boundary

std::vector<BoundaryName> CNSAction::_no_penetration_boundary
protected

Boundaries no-penetration BC applies.

Definition at line 97 of file CNSAction.h.

Referenced by act(), and addNoPenetrationBC().

◆ _pressure_variable_name

const std::string CNSAction::_pressure_variable_name
protected

◆ _stagnation_boundary

std::vector<BoundaryName> CNSAction::_stagnation_boundary
protected

◆ _stagnation_direction

std::vector<Real> CNSAction::_stagnation_direction
protected

Flow directions on stagnation boundaries.

Definition at line 95 of file CNSAction.h.

Referenced by act(), and setStagnationBCCommonParams().

◆ _stagnation_pressure

std::vector<Real> CNSAction::_stagnation_pressure
protected

Pressures on stagnation boundaries.

Definition at line 91 of file CNSAction.h.

Referenced by CNSAction(), and setStagnationBCCommonParams().

◆ _stagnation_temperature

std::vector<Real> CNSAction::_stagnation_temperature
protected

Temperatures on stagnation boundaries.

Definition at line 93 of file CNSAction.h.

Referenced by CNSAction(), and setStagnationBCCommonParams().

◆ _static_pressure

std::vector<Real> CNSAction::_static_pressure
protected

Pressures on static pressure boundaries.

Definition at line 101 of file CNSAction.h.

Referenced by addNSEnergyInviscidSpecifiedPressureBC(), addNSMassUnspecifiedNormalFlowBC(), addNSMomentumInviscidSpecifiedPressureBC(), and CNSAction().

◆ _static_pressure_boundary

std::vector<BoundaryName> CNSAction::_static_pressure_boundary
protected

Boundaries static pressure BC applies.

Definition at line 99 of file CNSAction.h.

Referenced by act(), addNSEnergyInviscidSpecifiedPressureBC(), addNSMassUnspecifiedNormalFlowBC(), addNSMomentumInviscidSpecifiedPressureBC(), and CNSAction().

◆ _type

MooseEnum CNSAction::_type
protected

Equation type, transient or steady-state.

Definition at line 83 of file CNSAction.h.

Referenced by act().


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