def test_yield_errors() -> None: with pytest.raises(ValueError) as e: # < lower bound ple = dca.PLE(-1000, 0.8, 0.0, 0.5) with pytest.raises(ValueError) as e: # lower bound excluded tplehm = dca.PLE(1000, 0.8, 0.0, 0.0) with pytest.raises(ValueError) as e: # > upper bound thm = dca.THM(1000, 0.5, 2.0, 10.0, 30.0) with pytest.raises(ValueError) as e: # upper bound exluded thm = dca.THM(1000, 1.5, 2.0, 0.5, 30.0) with pytest.raises(KeyError) as e: # invalid parameter thm = dca.THM(1000, 0.5, 2.0, 0.5, 30.0) thm.get_param_desc('n') with pytest.raises(ValueError) as e: # invalid parameter sequence length thm = dca.THM.from_params([1000, 0.5, 2.0, 0.5])
def test_THM(qi: float, Di: float, bf: float, telf: float) -> None: thm = dca.THM.from_params((qi, Di, 2.0, bf, telf, 0.0, 0.0)) thm = dca.THM(qi, Di, 2.0, bf, telf, 0.0, 0.0) check_model(thm, qi) check_transient_model(thm) thm = dca.THM(qi, Di, 2.0, 0.0, telf) check_model(thm, qi) check_transient_model(thm)
def test_yield(qi: float, Di: float, bf: float, telf: float, bterm: float, tterm: float, c: float, m0: float, m: float, t0: float) -> None: assume(tterm * dca.DAYS_PER_YEAR > telf) assume(bterm < bf) thm = dca.THM(qi, Di, 2.0, bf, telf, bterm, tterm) sec = dca.PLYield(c, m0, m, t0) thm.add_secondary(sec) check_yield_model(thm.secondary, 'secondary', qi) thm = dca.THM(qi, Di, 2.0, bf, telf, bterm, tterm) wtr = dca.PLYield(c, m0, m, t0) thm.add_water(wtr) check_yield_model(thm.water, 'water', qi)
def test_THM_transient_extra() -> None: thm = dca.THM(1000.0, 0.80, 2.0, 0.8, 30.0, 0.3, 5.0) check_transient_model(thm) check_transient_model_rate_cum(thm) thm = dca.THM(1000.0, 0.80, 2.0, 0.8, 30.0, 0.06, 0.0) check_transient_model(thm) check_transient_model_rate_cum(thm) thm = dca.THM(1000.0, 1e-10, 2.0, 0.8, 1e-5, 0.5, 0.06) check_transient_model(thm) check_transient_model_rate_cum(thm) with pytest.raises(ValueError) as e: thm = dca.THM(1000.0, 1e-10, 2.0, 0.3, 30.0, .5, 10.0)
def test_THM_zero_Di(qi: float, bf: float, telf: float, bterm: float, tterm: float) -> None: assume(tterm * dca.DAYS_PER_YEAR > telf) assume(bterm < bf) thm = dca.THM(qi, 0.0, 2.0, bf, telf, bterm, tterm) check_model(thm, qi) check_transient_model(thm)
def test_time_arrays() -> None: t = dca.get_time() assert is_monotonic_increasing(t) int_t = dca.get_time_monthly_vol() thm = dca.THM(1000, 0.5, 2.0, 1.0, 30.0)
def test_terminal_exceeds() -> None: with pytest.raises(ValueError) as e: # Dinf > Di ple = dca.PLE(1000, 0.8, 0.9, 0.5) with pytest.raises(ValueError) as e: # Dterm > Di mh = dca.MH(1000, 0.5, 1.0, 0.9) with pytest.raises(ValueError) as e: # bf > bi thm = dca.THM(1000, 0.8, 1.5, 1.6, 30.0) with pytest.raises(ValueError) as e: # tterm < telf thm = dca.THM(1000, 0.8, 2.0, 1.0, 200.0, 0.3, 100.0 / dca.DAYS_PER_YEAR)
def test_THM_terminal_exp(qi: float, Di: float, bf: float, telf: float, bterm: float) -> None: assume( dca.THM.nominal_from_secant(Di, 2.0) >= dca.THM.nominal_from_tangent( bterm)) thm = dca.THM(qi, Di, 2.0, bf, telf, bterm, 0.0) check_model(thm, qi) check_transient_model(thm)
def test_THM_harmonic(qi: float, Di: float, telf: float, bterm: float, tterm: float) -> None: assume(tterm * dca.DAYS_PER_YEAR > telf) thm = dca.THM(qi, Di, 2.0, 1.0, telf, bterm, tterm) check_model(thm, qi) check_transient_model(thm)
from petbox import dca # ftime = dca.get_time() # thm = dca.THM(qi=750, Di=.8, bi=2, bf=.5, telf=28) q_trans = thm.transient_rate(ftime) N_trans = thm.transient_cum(ftime) D_trans = thm.transient_D(ftime) b_trans = thm.transient_b(ftime) beta_trans = thm.transient_beta(ftime) # q_thm = thm.rate(ftime) N_thm = thm.cum(ftime) D_thm = thm.D(ftime) b_thm = thm.b(ftime) beta_thm = thm.beta(ftime) # mh = dca.MH(qi=725, Di=0.85, bi=0.6, Dterm=0.2) q_mh = mh.rate(ftime) N_mh = mh.cum(ftime) N_mh = mh.monthly_vol(ftime) N_mh = mh.interval_vol(ftime) D_mh = mh.D(ftime) b_mh = mh.b(ftime) beta_mh = mh.beta(ftime) #