10 #include "gtest/gtest.h" 30 const Real th = (eff - _sn) / (_ss - _sn);
31 const Real t1 = (1.0 / _c) * std::log((_c - th) / (_c - 1.0) / th);
32 const Real t2 = (th - 1.0) / th;
33 EXPECT_NEAR(-1.0, _las * (t2 - t1), 1.0E-5);
64 const Real th = (sat - _sn) / (_ss - _sn);
65 const Real expect = _kn + (_ks - _kn) * th * th * (_c - 1.0) / (_c - th);
108 sat.derivatives() = {};
111 const auto adrelperm =
116 const auto drelperm =
119 EXPECT_NEAR(adrelperm.value(), relperm, 1.0E-5);
120 EXPECT_NEAR(adrelperm.derivatives()[0], drelperm, 1.0E-5);
Real d2RelativePermeability(Real s, Real c, Real sn, Real ss, Real kn, Real ks)
Second derivative of relative permeability with respect to saturation.
Real dEffectiveSaturation(Real pc, Real c, Real sn, Real ss, Real las)
Derivative of effective saturation wrt capillary pressure.
TEST_F(PorousFlowBroadbridgeWhiteTest, sat)
T relativePermeability(const T &s, Real c, Real sn, Real ss, Real kn, Real ks)
Relative permeability as a function of saturation.
Real d2EffectiveSaturation(Real pc, Real c, Real sn, Real ss, Real las)
Second derivative of effective saturation wrt capillary pressure.
DualNumber< Real, DNDerivativeType, true > ADReal
Real effectiveSaturation(Real pc, Real c, Real sn, Real ss, Real las)
Effective saturation as a function of capillary pressure If pc>=0 this will yield 1...
Real dRelativePermeability(Real s, Real c, Real sn, Real ss, Real kn, Real ks)
Derivative of relative permeability with respect to saturation.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void derivInsert(SemiDynamicSparseNumberArray< Real, libMesh::dof_id_type, NWrapper< N >> &derivs, libMesh::dof_id_type index, Real value)