https://mooseframework.inl.gov
navier_stokes
src
linearfvbcs
LinearFVPressureFluxBC.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
#include "
LinearFVPressureFluxBC.h
"
11
12
registerMooseObject
(
"NavierStokesApp"
,
LinearFVPressureFluxBC
);
13
14
InputParameters
15
LinearFVPressureFluxBC::validParams
()
16
{
17
InputParameters
params =
LinearFVAdvectionDiffusionBC::validParams
();
18
params.
addClassDescription
(
19
"Adds a fixed diffusive flux BC which can be used for the assembly of linear "
20
"finite volume system and whose normal face gradient values are determined "
21
"using the H/A flux. This kernel is only designed to work with advection-diffusion "
22
"problems."
);
23
params.
addRequiredParam
<MooseFunctorName>(
"HbyA_flux"
,
"The total HbyA face flux value."
);
24
params.
addRequiredParam
<MooseFunctorName>(
25
"Ainv"
,
"The 1/A where A is the momentum system diagonal vector."
);
26
return
params;
27
}
28
29
LinearFVPressureFluxBC::LinearFVPressureFluxBC
(
const
InputParameters
& parameters)
30
:
LinearFVAdvectionDiffusionBC
(parameters),
31
_HbyA_flux(getFunctor<
Real
>(
"HbyA_flux"
)),
32
_Ainv(getFunctor<
RealVectorValue
>(
"Ainv"
))
33
{
34
}
35
36
Real
37
LinearFVPressureFluxBC::computeBoundaryValue
()
const
38
{
39
const
auto
face_arg =
makeCDFace
(*
_current_face_info
);
40
const
auto
elem_info =
_current_face_type
==
FaceInfo::VarFaceNeighbors::ELEM
41
?
_current_face_info
->
elemInfo
()
42
:
_current_face_info
->
neighborInfo
();
43
const
Real
distance
=
computeCellToFaceDistance
();
44
45
return
_var
.
getElemValue
(*elem_info,
determineState
()) -
46
_HbyA_flux
(
singleSidedFaceArg
(
_current_face_info
),
determineState
()) /
47
std::max(
_Ainv
(face_arg,
determineState
())(0), 1e-8) *
48
distance
;
// We use the 0th component of Ainv. Components of Ainv are
49
// equal for most applications, and Ainv(0) has a value for 1D,2D,3D.
50
}
51
52
Real
53
LinearFVPressureFluxBC::computeBoundaryNormalGradient
()
const
54
{
55
const
auto
face_arg =
singleSidedFaceArg
(
_current_face_info
);
56
return
-
_HbyA_flux
(face_arg,
determineState
()) /
57
std::max(
_Ainv
(face_arg,
determineState
())(0), 1e-8);
58
}
59
60
Real
61
LinearFVPressureFluxBC::computeBoundaryValueMatrixContribution
()
const
62
{
63
return
1.0;
64
}
65
66
Real
67
LinearFVPressureFluxBC::computeBoundaryValueRHSContribution
()
const
68
{
69
const
auto
face_arg =
singleSidedFaceArg
(
_current_face_info
);
70
const
Real
distance
=
computeCellToFaceDistance
();
71
72
return
-
_HbyA_flux
(face_arg,
determineState
()) /
73
std::max(
_Ainv
(face_arg,
determineState
())(0), 1e-8) *
distance
;
74
}
75
76
Real
77
LinearFVPressureFluxBC::computeBoundaryGradientMatrixContribution
()
const
78
{
79
return
0.0;
80
}
81
82
Real
83
LinearFVPressureFluxBC::computeBoundaryGradientRHSContribution
()
const
84
{
85
return
-
_HbyA_flux
(
singleSidedFaceArg
(
_current_face_info
),
determineState
());
86
}
LinearFVPressureFluxBC::validParams
static InputParameters validParams()
Definition:
LinearFVPressureFluxBC.C:15
LinearFVPressureFluxBC.h
LinearFVAdvectionDiffusionBC::computeCellToFaceDistance
Real computeCellToFaceDistance() const
FaceInfo::VarFaceNeighbors::ELEM
LinearFVAdvectionDiffusionBC::determineState
Moose::StateArg determineState() const
FaceInfo::neighborInfo
const ElemInfo * neighborInfo() const
LinearFVPressureFluxBC::computeBoundaryNormalGradient
virtual Real computeBoundaryNormalGradient() const override
Definition:
LinearFVPressureFluxBC.C:53
FaceInfo::elemInfo
const ElemInfo * elemInfo() const
VectorValue< Real >
distance
Real distance(const Point &p)
InputParameters::addRequiredParam
void addRequiredParam(const std::string &name, const std::string &doc_string)
LinearFVPressureFluxBC::LinearFVPressureFluxBC
LinearFVPressureFluxBC(const InputParameters ¶meters)
Class constructor.
Definition:
LinearFVPressureFluxBC.C:29
InputParameters
LinearFVAdvectionDiffusionBC
LinearFVPressureFluxBC::_Ainv
const Moose::Functor< RealVectorValue > & _Ainv
The functor for the 1/A tensor serving as a diffusion coefficient.
Definition:
LinearFVPressureFluxBC.h:49
LinearFVAdvectionDiffusionBC::_current_face_type
FaceInfo::VarFaceNeighbors _current_face_type
LinearFVPressureFluxBC
Class implementing a flux boundary condition for linear finite volume pressure variables used in the ...
Definition:
LinearFVPressureFluxBC.h:19
LinearFVAdvectionDiffusionBC::_var
MooseLinearVariableFV< Real > & _var
registerMooseObject
registerMooseObject("NavierStokesApp", LinearFVPressureFluxBC)
Real
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
LinearFVPressureFluxBC::computeBoundaryValueRHSContribution
virtual Real computeBoundaryValueRHSContribution() const override
Definition:
LinearFVPressureFluxBC.C:67
LinearFVAdvectionDiffusionBC::_current_face_info
const FaceInfo * _current_face_info
MooseLinearVariableFV< Real >::getElemValue
Real getElemValue(const ElemInfo &elem_info, const StateArg &state) const
LinearFVPressureFluxBC::computeBoundaryGradientMatrixContribution
virtual Real computeBoundaryGradientMatrixContribution() const override
Definition:
LinearFVPressureFluxBC.C:77
LinearFVPressureFluxBC::computeBoundaryValueMatrixContribution
virtual Real computeBoundaryValueMatrixContribution() const override
Definition:
LinearFVPressureFluxBC.C:61
InputParameters::addClassDescription
void addClassDescription(const std::string &doc_string)
LinearFVAdvectionDiffusionBC::singleSidedFaceArg
Moose::FaceArg singleSidedFaceArg(const FaceInfo *fi, Moose::FV::LimiterType limiter_type=Moose::FV::LimiterType::CentralDifference, bool correct_skewness=false) const
LinearFVPressureFluxBC::computeBoundaryGradientRHSContribution
virtual Real computeBoundaryGradientRHSContribution() const override
Definition:
LinearFVPressureFluxBC.C:83
LinearFVPressureFluxBC::computeBoundaryValue
virtual Real computeBoundaryValue() const override
Definition:
LinearFVPressureFluxBC.C:37
LinearFVAdvectionDiffusionBC::makeCDFace
Moose::FaceArg makeCDFace(const FaceInfo &fi, const bool correct_skewness=false) const
LinearFVAdvectionDiffusionBC::validParams
static InputParameters validParams()
LinearFVPressureFluxBC::_HbyA_flux
const Moose::Functor< Real > & _HbyA_flux
The H/A flux functor for this BC (can be variable, function, etc)
Definition:
LinearFVPressureFluxBC.h:46
Generated on Tue Jun 2 2026 21:45:24 for https://mooseframework.inl.gov by
1.8.14