Source code for chempy.kinetics.tests.test_integrated

from __future__ import division

from chempy.util.testing import requires
from ..integrated import pseudo_irrev, pseudo_rev, binary_irrev, binary_rev

try:
    import sympy
except ImportError:
    sympy = None
else:
    one = sympy.S(1)

    t, kf, P0, t0, excess_C, limiting_C, eps_l, beta = sympy.symbols(
        't k_f P0 t0 Y Z epsilon beta', negative=False)  # t0 => -t0

    subsd = {t: one*2, kf: one*3, P0: one*5, t0: one*7, excess_C: one*11,
             limiting_C: one*13, eps_l: one*17, beta: one*23}
    excl_params = {t0: one*0, P0: one, eps_l: one}


@requires('sympy')
[docs]def test_pseudo_irrev(): f = pseudo_irrev(t, kf, P0, -t0, excess_C, limiting_C, eps_l, backend=sympy).subs(excl_params) dfdt = f.diff(t) num_dfdt = dfdt.subs(subsd) assert (num_dfdt - ( excess_C*kf*(limiting_C - f) ).subs(subsd)).simplify() == 0
@requires('sympy')
[docs]def test_pseudo_rev(): f = pseudo_rev(t, kf, P0, -t0, excess_C, limiting_C, eps_l, beta, backend=sympy).subs(excl_params) dfdt = f.diff(t) num_dfdt = dfdt.subs(subsd) assert (num_dfdt - ( excess_C*kf*(limiting_C - f) - kf/beta*f ).subs(subsd)).simplify() == 0
@requires('sympy')
[docs]def test_binary_irrev(): f = binary_irrev(t, kf, P0, -t0, excess_C, limiting_C, eps_l, backend=sympy).subs(excl_params) dfdt = f.diff(t) num_dfdt = dfdt.subs(subsd) assert (num_dfdt - ( kf*(limiting_C - f)*(excess_C - f) ).subs(subsd)).simplify() == 0
@requires('sympy')
[docs]def test_binary_rev(): f = binary_rev(t, kf, P0, -t0, excess_C, limiting_C, eps_l, beta, backend=sympy).subs(excl_params) dfdt = f.diff(t) num_dfdt = dfdt.subs(subsd) ans = kf*(limiting_C - f)*(excess_C - f) - kf/beta*f # symbolic susbsitution fails: assert abs(float(num_dfdt) - float(ans.subs(subsd))) < 2e-14