113namespace NonWettingPhaseTransmissibility {
116template<
class Scalar>
121 template<
class Element,
class FVElementGeometry,
class FluxVariablesCache>
122 static Scalar nonWettingPhaseTransmissibility(
const Element& element,
123 const FVElementGeometry& fvGeometry,
124 const typename FVElementGeometry::SubControlVolumeFace& scvf,
125 const FluxVariablesCache& fluxVarsCache)
129 const Scalar throatLength = fluxVarsCache.throatLength();
130 const auto nPhaseIdx = fluxVarsCache.nPhaseIdx();
131 const Scalar aNw = fluxVarsCache.throatCrossSectionalArea(nPhaseIdx);
132 const Scalar rEff = 0.5*(sqrt(aNw / M_PI) + fluxVarsCache.throatInscribedRadius());
133 const Scalar result = M_PI/(8*throatLength) * rEff*rEff*rEff*rEff;
139template<
class Scalar,
class SinglePhaseTransmissibilityLaw>
144 template<
class Element,
class FVElementGeometry,
class FluxVariablesCache>
145 static Scalar nonWettingPhaseTransmissibility(
const Element& element,
146 const FVElementGeometry& fvGeometry,
147 const typename FVElementGeometry::SubControlVolumeFace& scvf,
148 const FluxVariablesCache& fluxVarsCache)
152 const auto nPhaseIdx = fluxVarsCache.nPhaseIdx();
153 const Scalar aNw = fluxVarsCache.throatCrossSectionalArea(nPhaseIdx);
154 const Scalar aTot = fluxVarsCache.throatCrossSectionalArea();
156 const Scalar result = SinglePhaseTransmissibilityLaw::singlePhaseTransmissibility(element, fvGeometry, scvf, fluxVarsCache)
163template<
class Scalar>
173 template<
class Element,
class FVElementGeometry,
class FluxVariablesCache>
174 static Scalar nonWettingPhaseTransmissibility(
const Element& element,
175 const FVElementGeometry& fvGeometry,
176 const typename FVElementGeometry::SubControlVolumeFace& scvf,
177 const FluxVariablesCache& fluxVarsCache)
181 const Scalar throatLength = fluxVarsCache.throatLength();
182 const auto nPhaseIdx = fluxVarsCache.nPhaseIdx();
183 const Scalar aNw = fluxVarsCache.throatCrossSectionalArea(nPhaseIdx);
184 const Scalar rEff = 0.5*(sqrt(aNw / M_PI) + fluxVarsCache.throatInscribedRadius());
185 const Scalar result = rEff*rEff*aNw / (8.0*throatLength);
void fill(const Problem &problem, const Element &element, const FVElementGeometry &fvGeometry, const typename FVElementGeometry::SubControlVolumeFace &scvf, const ElementVolumeVariables &elemVolVars, const FluxVariablesCache &fluxVarsCache, const int phaseIdx)
Definition transmissibility2p.hh:63
static Scalar beta(const Scalar alpha, const Scalar theta, const Scalar f=0)
Returns the crevice resistance factor used for calculating the w-phase conductance in an invaded pore...
Definition transmissibility2p.hh:35
static Scalar wettingLayerTransmissibility(const Element &element, const FVElementGeometry &fvGeometry, const typename FVElementGeometry::SubControlVolumeFace &scvf, const FluxVariablesCache &fluxVarsCache)
Returns the integral conductivity of all wetting layers occupying the corners of a throat.
Definition transmissibility2p.hh:91