www.mooseframework.org
PorousFlowHeatAdvection.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 
11 
13 
14 template <>
15 InputParameters
17 {
18  InputParameters params = validParams<PorousFlowDarcyBase>();
19  params.addClassDescription("Fully-upwinded heat flux, advected by the fluid");
20  return params;
21 }
22 
23 PorousFlowHeatAdvection::PorousFlowHeatAdvection(const InputParameters & parameters)
24  : PorousFlowDarcyBase(parameters),
25  _enthalpy(getMaterialProperty<std::vector<Real>>("PorousFlow_fluid_phase_enthalpy_nodal")),
26  _denthalpy_dvar(getMaterialProperty<std::vector<std::vector<Real>>>(
27  "dPorousFlow_fluid_phase_enthalpy_nodal_dvar")),
28  _relative_permeability(
29  getMaterialProperty<std::vector<Real>>("PorousFlow_relative_permeability_nodal")),
30  _drelative_permeability_dvar(getMaterialProperty<std::vector<std::vector<Real>>>(
31  "dPorousFlow_relative_permeability_nodal_dvar"))
32 {
33 }
34 
35 Real
36 PorousFlowHeatAdvection::mobility(unsigned nodenum, unsigned phase) const
37 {
38  return _enthalpy[nodenum][phase] * _fluid_density_node[nodenum][phase] *
39  _relative_permeability[nodenum][phase] / _fluid_viscosity[nodenum][phase];
40 }
41 
42 Real
43 PorousFlowHeatAdvection::dmobility(unsigned nodenum, unsigned phase, unsigned pvar) const
44 {
45  Real dm = _denthalpy_dvar[nodenum][phase][pvar] * _fluid_density_node[nodenum][phase] *
46  _relative_permeability[nodenum][phase] / _fluid_viscosity[nodenum][phase];
47  dm += _enthalpy[nodenum][phase] * _dfluid_density_node_dvar[nodenum][phase][pvar] *
48  _relative_permeability[nodenum][phase] / _fluid_viscosity[nodenum][phase];
49  dm += _enthalpy[nodenum][phase] * _fluid_density_node[nodenum][phase] *
50  _drelative_permeability_dvar[nodenum][phase][pvar] / _fluid_viscosity[nodenum][phase];
51  dm -= _enthalpy[nodenum][phase] * _fluid_density_node[nodenum][phase] *
52  _relative_permeability[nodenum][phase] * _dfluid_viscosity_dvar[nodenum][phase][pvar] /
53  std::pow(_fluid_viscosity[nodenum][phase], 2);
54  return dm;
55 }
PorousFlowHeatAdvection::_denthalpy_dvar
const MaterialProperty< std::vector< std::vector< Real > > > & _denthalpy_dvar
Derivative of the enthalpy wrt PorousFlow variables.
Definition: PorousFlowHeatAdvection.h:37
PorousFlowDarcyBase::_fluid_viscosity
const MaterialProperty< std::vector< Real > > & _fluid_viscosity
Viscosity of each component in each phase.
Definition: PorousFlowDarcyBase.h:108
pow
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
Definition: ExpressionBuilder.h:673
validParams< PorousFlowHeatAdvection >
InputParameters validParams< PorousFlowHeatAdvection >()
Definition: PorousFlowHeatAdvection.C:16
PorousFlowDarcyBase::_fluid_density_node
const MaterialProperty< std::vector< Real > > & _fluid_density_node
Fluid density for each phase (at the node)
Definition: PorousFlowDarcyBase.h:96
PorousFlowHeatAdvection::_drelative_permeability_dvar
const MaterialProperty< std::vector< std::vector< Real > > > & _drelative_permeability_dvar
Derivative of relative permeability of each phase wrt PorousFlow variables.
Definition: PorousFlowHeatAdvection.h:43
PorousFlowHeatAdvection::dmobility
virtual Real dmobility(unsigned nodenum, unsigned phase, unsigned pvar) const override
The derivative of mobility with respect to PorousFlow variable pvar.
Definition: PorousFlowHeatAdvection.C:43
validParams< PorousFlowDarcyBase >
InputParameters validParams< PorousFlowDarcyBase >()
Definition: PorousFlowDarcyBase.C:21
PorousFlowHeatAdvection::mobility
virtual Real mobility(unsigned nodenum, unsigned phase) const override
The mobility of the fluid.
Definition: PorousFlowHeatAdvection.C:36
PorousFlowHeatAdvection::_enthalpy
const MaterialProperty< std::vector< Real > > & _enthalpy
Enthalpy of each phase.
Definition: PorousFlowHeatAdvection.h:34
PorousFlowHeatAdvection.h
PorousFlowHeatAdvection
Advection of heat via flux of component k in fluid phase alpha.
Definition: PorousFlowHeatAdvection.h:24
PorousFlowDarcyBase::_dfluid_viscosity_dvar
const MaterialProperty< std::vector< std::vector< Real > > > & _dfluid_viscosity_dvar
Derivative of the fluid viscosity for each phase wrt PorousFlow variables.
Definition: PorousFlowDarcyBase.h:111
PorousFlowDarcyBase::_dfluid_density_node_dvar
const MaterialProperty< std::vector< std::vector< Real > > > & _dfluid_density_node_dvar
Derivative of the fluid density for each phase wrt PorousFlow variables (at the node)
Definition: PorousFlowDarcyBase.h:99
PorousFlowHeatAdvection::PorousFlowHeatAdvection
PorousFlowHeatAdvection(const InputParameters &parameters)
Definition: PorousFlowHeatAdvection.C:23
PorousFlowDarcyBase
Darcy advective flux.
Definition: PorousFlowDarcyBase.h:28
PorousFlowHeatAdvection::_relative_permeability
const MaterialProperty< std::vector< Real > > & _relative_permeability
Relative permeability of each phase.
Definition: PorousFlowHeatAdvection.h:40
registerMooseObject
registerMooseObject("PorousFlowApp", PorousFlowHeatAdvection)