21 "dry_thermal_conductivity",
22 "The thermal conductivity of the rock matrix when the aqueous saturation is zero");
24 "The thermal conductivity of the rock matrix when the aqueous " 25 "saturation is unity. This defaults to " 26 "dry_thermal_conductivity.");
29 "Exponent on saturation. Thermal conductivity = " 30 "dry_thermal_conductivity + S^exponent * " 31 "(wet_thermal_conductivity - dry_thermal_conductivity), " 32 "where S is the aqueous saturation");
33 params.
addParam<
unsigned>(
"aqueous_phase_number",
35 "The phase number of the aqueous phase. In simulations without " 36 "fluids, this parameter and the exponent parameter will not be " 37 "used: only the dry_thermal_conductivity will be used.");
38 params.
addClassDescription(
"This Material calculates rock-fluid combined thermal conductivity by " 39 "using a weighted sum. Thermal conductivity = " 40 "dry_thermal_conductivity + S^exponent * (wet_thermal_conductivity - " 41 "dry_thermal_conductivity), where S is the aqueous saturation");
49 _la_dry(this->template getParam<
RealTensorValue>(
"dry_thermal_conductivity")),
50 _wet_and_dry_differ(parameters.isParamValid(
"wet_thermal_conductivity")),
51 _la_wet(_wet_and_dry_differ
53 : this->template getParam<
RealTensorValue>(
"dry_thermal_conductivity")),
54 _exponent(this->template getParam<
Real>(
"exponent")),
55 _aqueous_phase(_num_phases > 0),
56 _aqueous_phase_number(this->template getParam<unsigned>(
"aqueous_phase_number")),
57 _saturation_qp(_aqueous_phase
58 ? &this->template getGenericMaterialProperty<
std::vector<
Real>, is_ad>(
59 "PorousFlow_saturation_qp")
61 _dsaturation_qp_dvar(_aqueous_phase && !is_ad
62 ? &this->template getMaterialProperty<
std::vector<
std::vector<
Real>>>(
63 "dPorousFlow_saturation_qp_dvar")
67 mooseError(
"PorousFlowThermalConductivityIdeal: Your aqueous phase number, ",
69 " must not exceed the number of fluid phases in the system, which is ",
78 _la_qp[_qp] = _la_dry;
79 if (_aqueous_phase && _wet_and_dry_differ)
81 std::pow((*_saturation_qp)[_qp][_aqueous_phase_number], _exponent) * (_la_wet - _la_dry);
86 if (_aqueous_phase && _wet_and_dry_differ)
88 (*_dla_qp_dvar)[_qp][
v] =
89 _exponent *
std::pow((*_saturation_qp)[_qp][_aqueous_phase_number], _exponent - 1.0) *
90 (*_dsaturation_qp_dvar)[_qp][_aqueous_phase_number][
v] * (_la_wet - _la_dry);
virtual void computeQpProperties() override
const unsigned int _num_phases
Number of phases.
void mooseError(Args &&... args)
const bool _aqueous_phase
Whether this is a fluid simulation.
TensorValue< Real > RealTensorValue
registerMooseObject("PorousFlowApp", PorousFlowThermalConductivityIdeal)
PorousFlowThermalConductivityIdealTempl(const InputParameters ¶meters)
This material computes thermal conductivity for a PorousMedium - fluid system, by using Thermal condu...
const unsigned _aqueous_phase_number
Phase number of the aqueous phase.
static InputParameters validParams()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static const std::string v
Base class for materials that provide thermal conducitivity.
IntRange< T > make_range(T beg, T end)
MooseUnits pow(const MooseUnits &, int)
static InputParameters validParams()