Source code for toughio.capillarity._trust

from ._base import BaseCapillarity

__all__ = [
    "TRUST",
]


[docs] class TRUST(BaseCapillarity): _id = 3 _name = "TRUST" def __init__(self, p0, slr, eta, pe, pmax): """ TRUST capillary pressure. After Narasimhan et al. (1978). Parameters ---------- p0 : scalar Capillary pressure strength (CP(1)). slr : scalar Irreducible liquid saturation (CP(2)). eta : scalar CP(3). pe : scalar Capillary entry pressure (CP(4)). pmax : scalar Maximum pressure (CP(5)). """ if slr < 0.0: raise ValueError() if eta == 0.0: raise ValueError() self.parameters = [p0, slr, eta, pe, pmax] def _eval(self, sl, *args): """TRUST capillary pressure.""" p0, slr, eta, pe, pmax = args if sl > slr: pcap = -pe - p0 * ((1.0 - sl) / (sl - slr)) ** (1.0 / eta) else: pcap = -abs(pmax) pcap = max(pcap, -abs(pmax)) pcap *= (1.0 - sl) / 0.001 if sl > 0.999 else 1.0 return pcap @property def parameters(self): """Return model parameters.""" return [self._p0, self._slr, self._eta, self._pe, self._pmax] @parameters.setter def parameters(self, value): if len(value) != 5: raise ValueError() self._p0 = value[0] self._slr = value[1] self._eta = value[2] self._pe = value[3] self._pmax = value[4]