23 "The PorousFlowDictator UserObject");
24 params.
addParam<
unsigned int>(
"phase", 0,
"The fluid phase for this BC");
25 params.
addParam<
unsigned int>(
"fluid_component", 0,
"The fluid component for this BC");
34 _num_phases(_dictator.numPhases()),
35 _phase(getParam<unsigned
int>(
"phase")),
36 _fluid_component(getParam<unsigned
int>(
"fluid_component")),
37 _density(getADMaterialProperty<
std::vector<
Real>>(
"PorousFlow_fluid_phase_density_qp")),
39 getNeighborADMaterialProperty<
std::vector<
Real>>(
"PorousFlow_fluid_phase_density_qp")),
40 _viscosity(getADMaterialProperty<
std::vector<
Real>>(
"PorousFlow_viscosity_qp")),
42 getNeighborADMaterialProperty<
std::vector<
Real>>(
"PorousFlow_viscosity_qp")),
43 _relperm(getADMaterialProperty<
std::vector<
Real>>(
"PorousFlow_relative_permeability_qp")),
45 getNeighborADMaterialProperty<
std::vector<
Real>>(
"PorousFlow_relative_permeability_qp")),
47 getADMaterialProperty<
std::vector<
std::vector<
Real>>>(
"PorousFlow_mass_frac_qp")),
48 _mass_fractions_neighbor(
49 getNeighborADMaterialProperty<
std::vector<
std::vector<
Real>>>(
"PorousFlow_mass_frac_qp")),
50 _permeability(getADMaterialProperty<
RealTensorValue>(
"PorousFlow_permeability_qp")),
51 _permeability_neighbor(
52 getNeighborADMaterialProperty<
RealTensorValue>(
"PorousFlow_permeability_qp")),
53 _pressure(getADMaterialProperty<
std::vector<
Real>>(
"PorousFlow_porepressure_qp")),
55 getNeighborADMaterialProperty<
std::vector<
Real>>(
"PorousFlow_porepressure_qp")),
57 _pp_value(getParam<
Real>(
"porepressure_value"))
62 "The Dictator proclaims that the maximum fluid phase index in this simulation is ",
64 " whereas you have used ",
66 ". Remember that indexing starts at 0. The Dictator does not take such mistakes lightly.");
71 "The Dictator proclaims that the maximum fluid component index in this simulation is ",
73 " whereas you have used ",
75 ". Remember that indexing starts at 0.");
81 diri_params.applySpecificParameters(
_pars, {
"variable",
"boundary"});
82 diri_params.addPrivateParam(
"_moose_app", &
_app);
107 return mobility * pressure_grad *
_normal;
const ADMaterialProperty< std::vector< Real > > & _pressure_neighbor
static InputParameters validParams()
const RealVectorValue & _gravity
Gravity vector.
const FaceInfo * _face_info
FaceInfo::VarFaceNeighbors _face_type
const ADMaterialProperty< std::vector< Real > > & _pressure
Fluid pressure.
static InputParameters validParams()
const ADMaterialProperty< RealTensorValue > & _permeability
Permeability.
const unsigned int _num_phases
Number of fluid phases present.
const unsigned int _fluid_component
Index of the fluid component this BC applies to.
unsigned int numComponents() const
The number of fluid components.
Flux boundary condition where an advective flux is applied.
const ADMaterialProperty< std::vector< std::vector< Real > > > & _mass_fractions_neighbor
DualNumber< Real, DNDerivativeType, true > ADReal
virtual const std::string & name() const
const ADMaterialProperty< std::vector< Real > > & _relperm_neighbor
const ADMaterialProperty< RealTensorValue > & _permeability_neighbor
const ADMaterialProperty< std::vector< std::vector< Real > > > & _mass_fractions
Mass fraction of fluid components in fluid phases.
TensorValue< Real > RealTensorValue
const ADMaterialProperty< std::vector< Real > > & _viscosity
Fluid viscosity.
const ADMaterialProperty< std::vector< Real > > & _density_neighbor
const ADMaterialProperty< std::vector< Real > > & _relperm
Relative permeability.
const Real _pp_value
The porepressure value at the boundary.
bool fvBCsIntegrityCheck() const
ADRealVectorValue _normal
FEProblemBase & _fv_problem
void paramError(const std::string ¶m, Args... args) const
virtual ADReal computeQpResidual() override
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const Point & eCN() const
This holds maps between the nonlinear variables used in a PorousFlow simulation and the variable numb...
registerADMooseObject("PorousFlowApp", FVPorousFlowAdvectiveFluxBC)
const ADMaterialProperty< std::vector< Real > > & _viscosity_neighbor
const PorousFlowDictator & _dictator
UserObject that holds information (number of phases, components, etc)
const InputParameters & _pars
FVPorousFlowAdvectiveFluxBC(const InputParameters ¶ms)
static InputParameters validParams()
virtual void addFVBC(const std::string &fv_bc_name, const std::string &name, InputParameters ¶meters)
const ADMaterialProperty< std::vector< Real > > & _density
Fluid density.
void ErrorVector unsigned int
const unsigned int _phase
Index of the fluid phase this BC applies to.