46 _A(this->template getParam<Real>(
"A")),
47 _B(this->template getParam<Real>(
"B")),
48 _k_anisotropy(parameters.isParamValid(
"k_anisotropy")
49 ? this->template getParam<RealTensorValue>(
"k_anisotropy")
50 : RealTensorValue(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0)),
51 _porosity_qp(this->template getGenericMaterialProperty<Real, is_ad>(
"PorousFlow_porosity_qp")),
52 _dporosity_qp_dvar(is_ad ? nullptr
53 : &this->template getMaterialProperty<
std::vector<Real>>(
54 "dPorousFlow_porosity_qp_dvar")),
55 _dporosity_qp_dgradvar(is_ad ? nullptr
56 : &this->template getMaterialProperty<
std::vector<RealGradient>>(
57 "dPorousFlow_porosity_qp_dgradvar")),
58 _poroperm_function(this->template getParam<
MooseEnum>(
"poroperm_function")
64 _AA =
_A * std::log(10.0);
65 _BB = std::pow(10.0,
_B);
80 _dictator.usePermDerivs(
true);
89 _permeability_qp[_qp] = _k_anisotropy * _BB * exp(_porosity_qp[_qp] * _AA);
93 (*_dpermeability_qp_dvar)[_qp].resize(_num_var, RealTensorValue());
94 for (
unsigned int v = 0;
v < _num_var; ++
v)
95 (*_dpermeability_qp_dvar)[_qp][
v] =
96 _AA * _permeability_qp[_qp] * (*_dporosity_qp_dvar)[_qp][
v];
98 (*_dpermeability_qp_dgradvar)[_qp].resize(LIBMESH_DIM);
101 (*_dpermeability_qp_dgradvar)[_qp][i].resize(_num_var, RealTensorValue());
102 for (
unsigned int v = 0;
v < _num_var; ++
v)
103 (*_dpermeability_qp_dgradvar)[_qp][i][
v] =
104 _AA * _permeability_qp[_qp] * (*_dporosity_qp_dgradvar)[_qp][
v](i);