https://mooseframework.inl.gov
Loading...
Searching...
No Matches
LinearFVMomentumPressure.C
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
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
11#include "Assembly.h"
12#include "SubProblem.h"
13#include "NS.h"
14#include "FEProblemBase.h"
17
19
22{
24 params.addClassDescription("Represents the pressure gradient term in the Navier Stokes momentum "
25 "equations, added to the right hand side.");
26 params.addParam<VariableName>(NS::pressure,
27 "The pressure variable whose gradient should be used.");
28 params.addParam<GradientMethodName>(
29 "gradient_method",
30 "Gradient method to use for the pressure gradient in this kernel. If omitted, the pressure "
31 "variable's default gradient method is used.");
32 MooseEnum momentum_component("x=0 y=1 z=2");
34 "momentum_component",
35 momentum_component,
36 "The component of the momentum equation that this kernel applies to.");
37 return params;
38}
39
42 _index(getParam<MooseEnum>("momentum_component")),
43 _pressure_var(getPressureVariable(NS::pressure)),
44 _pressure_gradient_field(registerPressureGradientField())
45{
46}
47
50{
51 auto * ptr = dynamic_cast<MooseLinearVariableFV<Real> *>(
52 &_fe_problem.getVariable(_tid, getParam<VariableName>(vname)));
53
54 if (!ptr)
55 paramError(NS::pressure, "The pressure variable should be of type MooseLinearVariableFVReal!");
56
57 return *ptr;
58}
59
62{
63 const auto & reader =
64 isParamValid("gradient_method")
65 ? _pressure_var.requestCellGradients(getParam<GradientMethodName>("gradient_method"))
67
68 if (dynamic_cast<const FVReconstructedPressureGradient *>(&reader.method()))
69 return _pressure_var.requestCellGradients(reader.method(), 1);
70
71 return reader;
72}
73
74Real
79
80Real
registerMooseObject("NavierStokesApp", LinearFVMomentumPressure)
virtual const MooseVariableFieldBase & getVariable(const THREAD_ID tid, const std::string &var_name, Moose::VarKindType expected_var_type=Moose::VarKindType::VAR_ANY, Moose::VarFieldType expected_var_field_type=Moose::VarFieldType::VAR_FIELD_ANY) const override
Gradient method that reconstructs and relaxes the pressure gradient used for Rhie-Chow momentum-press...
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
const ElemInfo * _current_elem_info
static InputParameters validParams()
Real component(const ElemInfo &elem_info, unsigned int index) const
Kernel that adds the component of the pressure gradient in the momentum equations to the right hand s...
MooseLinearVariableFV< Real > & getPressureVariable(const std::string &vname)
virtual Real computeRightHandSideContribution() override
MooseLinearVariableFV< Real > & _pressure_var
Pointer to the linear finite volume pressure variable.
const unsigned int _index
Index x|y|z of the momentum equation component.
virtual Real computeMatrixContribution() override
static InputParameters validParams()
const LinearFVGradientReader & _pressure_gradient_field
Pressure gradient field used by this kernel.
LinearFVMomentumPressure(const InputParameters &params)
Class constructor.
const LinearFVGradientReader & registerPressureGradientField()
Register the pressure gradient field used by this kernel.
const THREAD_ID _tid
FEProblemBase & _fe_problem
void paramError(const std::string &param, Args... args) const
bool isParamValid(const std::string &name) const
const LinearFVGradientReader & requestCellGradients(unsigned int oldest_state=0)
static const std::string pressure
Definition NS.h:57