calculate thermal pressure for Dorogokupets 2007 EOS

    :param v: unit-cell volume in A^3
    :param temp: temperature in K
    :param v0: unit-cell volume in A^3 at 1 bar
    :param gamma0: Gruneisen parameter at 1 bar
    :param gamma_inf: Gruneisen parameter at infinite pressure
    :param beta: volume dependence of Gruneisen parameter
    :param theta0: Debye temperature at 1 bar in K
    :param n: number of elements in a chemical formula
    :param z: number of formula unit in a unit cell
    :param three_r: 3 times gas constant.
        Jamieson modified this value to compensate for mismatches
    :param t_ref: reference temperature, 300 K
    :return: thermal pressure in GPa

def dorogokupets2007_pth(v, temp, v0, gamma0, gamma_inf, beta, theta0, n, z,
                         three_r=3. * constants.R, t_ref=300.):
    """
    calculate thermal pressure for Dorogokupets 2007 EOS

    :param v: unit-cell volume in A^3
    :param temp: temperature in K
    :param v0: unit-cell volume in A^3 at 1 bar
    :param gamma0: Gruneisen parameter at 1 bar
    :param gamma_inf: Gruneisen parameter at infinite pressure
    :param beta: volume dependence of Gruneisen parameter
    :param theta0: Debye temperature at 1 bar in K
    :param n: number of elements in a chemical formula
    :param z: number of formula unit in a unit cell
    :param three_r: 3 times gas constant.
        Jamieson modified this value to compensate for mismatches
    :param t_ref: reference temperature, 300 K
    :return: thermal pressure in GPa
    """
    v_mol = vol_uc2mol(v, z)
    # x = v_mol / v0_mol
    gamma = altshuler_grun(v, v0, gamma0, gamma_inf, beta)
    theta = altshuler_debyetemp(v, v0, gamma0, gamma_inf, beta, theta0)

    def f(t):
        xx = theta / t
        debye = debye_E(xx)
        Eth = three_r * n * t * debye
        return (gamma / v_mol * Eth) * 1.e-9
    return f(temp) - f(t_ref)