omega_r = 2.0 * pi / Tr d_omega_r = omega_r * d_Tr / Tr omega = 0.5 * (omega_l + omega_r) d_omega = 0.5 * sqrt(d_omega_l**2 + d_omega_r**2) omega_spec = 2.0 * pi * f d_omega_spec = 2.0 * pi * d_f ## Output if __name__ == '__main__': print( dpr.tbl([ dpr.lst(gen.l, gen.d_l, name='l', unit='m'), dpr.lst(Tl, d_Tl, name='TL', unit='s'), dpr.lst(Tr, d_Tr, name='TR', unit='s'), dpr.lst(omega_l, d_omega_l, name='ω_L', unit='s'), dpr.lst(omega_r, d_omega_r, name='ω_R', unit='s') ])) print( dpr.tbl([ dpr.lst(gen.l, gen.d_l, name='l', unit='m'), dpr.lst(omega, d_omega, name='ω', prefix=False, unit='1/s'), dpr.lst(omega_spec, d_omega_spec, name='ω_spec', prefix=False, unit='1/s'), dpr.dev(omega, d_omega, omega_spec, d_omega_spec, name='ω, ω_spec'),
]) ## Data processing omega_F1 = 2 * pi * f_F d_omega_F1 = 2 * pi * d_f_F omega_F2 = omega_F1 * exp(-delta * T_P) d_omega_F2 = omega_F2 * sqrt((d_omega_F1 / omega_F1)**2 + (d_delta * T_P)**2 + (d_T_P * delta)**2) omega_F = 0.5 * (omega_F1 + omega_F2) d_omega_F = sqrt(d_omega_F1**2 + d_omega_F2**2) ## Evaluation if output: print(dpr.tbl([ dpr.lst(m / cs.gram, name='m', unit='g'), dpr.lst(l / cs.centi, name='l', unit='cm') ])) if output: plt.subplots(num=2) plt.xlabel(r'$\omega_F / (1/s)$') plt.ylabel(r'$T_P / s$') s, d_s = np.zeros(len(m)), np.zeros(len(m)) b, d_b = np.zeros(len(m)), np.zeros(len(m)) for i in range(len(m)): par = [omega_F[i], T_P[i], d_T_P[i], d_omega_F[i]] for j in range(len(par)): par[j] = np.insert(par[j], 0, 0.0) s[i], d_s[i], b[i], d_b[i] = dp.linreg(*par)
d_W_pV = d_A W_D = pi * l * F d_W_D = W_D * d_F / F eta_th = W_pV / Q_el d_eta_th = eta_th * sqrt((d_W_pV / W_pV)**2 + (d_Q_el / Q_el)**2) eta_eff = W_D / Q_el d_eta_eff = eta_eff * sqrt((d_W_D / W_D)**2 + (d_Q_el / Q_el)**2) if output: print(dpr.tbl([ dpr.lst(F, d_F, name='F', unit='N'), dpr.lst(f, d_f, name='f', unit='Hz'), dpr.lst(Q_el, d_Q_el, name='Q_el', unit='J'), dpr.lst(W_pV, d_W_pV, name='W_pV', unit='J'), dpr.lst(W_D, d_W_D, name='W_D', unit='J') ])) if output: plt.subplots(num=1) plt.xlabel(r'$f$ / Hz') plt.ylabel(r'$\eta_\textnormal{th}$, $\eta_\textnormal{eff}$') plt.errorbar(f, eta_th, d_eta_th, d_f, fmt='o', ls='-') plt.errorbar(f, eta_eff, d_eta_eff, d_f, fmt='o', ls='-') if output: fig_folder_path = 'figures/stirling_engine' if not os.path.exists(fig_folder_path): os.makedirs(fig_folder_path)
d_T = 0.3 m = np.array([0.0, 4.0, 9.0, 14.0, 19.0]) p_mano = np.array([[735.0, 680.0, 605.0, 535.0, 460.0], [730.0, 670.0, 595.0, 525.0, 450.0], [730.0, 670.0, 600.0, 525.0, 455.0]]) * cs.torr ## Data procession p = p_mano[:, 0:1] - p_mano[:, 0:] d_p = sqrt((5 * cs.torr)**2 + p / (5 * cs.torr) * (0.006 * 5 * cs.torr)**2) if output: print( dpr.tbl([ dpr.lst(m, name='m'), *[ dpr.lst(p_, d_p_, name='p', unit='Pa') for p_, d_p_ in zip(p, d_p) ] ])) popts = np.zeros((len(p), 2)) d_popts = np.zeros((len(p), 2)) for i in range(len(p)): popt = dpl.linreg(m, p[i], d_p[i]) popts[i] = popt[0], popt[2] d_popts[i] = popt[1], popt[3] if output: fig, axes = plt.subplots(num=1, nrows=2, ncols=2) plt.subplots_adjust(hspace=0.25, wspace=0.25) axes[-1][-1].axis('off') for i in range(len(popts)):
## Evaluation r2 = r**2 d_r2 = 2 * r * d_r v = s / t d_v = v * d_t / t lda = 1 + 2.1 * r / R d_lda = 2.0 * d_r / R v_c = v * lda d_v_c = sqrt(d_v**2 + d_lda**2) if output: print(dpr.tbl([ dpr.lst(r, d_r, name='r', unit='m'), dpr.lst(lda, d_lda, name='λ'), dpr.lst(v, d_v, name='v', unit='m / s'), dpr.lst(v_c, d_v_c, name='v_corr', unit='m / s'), dpr.dev(v, d_v, v_c, d_v_c, name='v, v_c') ])) print() v_rho_ratio = v / (rho_K - rho_peg) d_v_rho_ratio = v_rho_ratio * sqrt((d_v / v)**2 + (d_rho_K**2 + d_rho_peg**2) / (rho_K - rho_peg)**2) if output: plt.subplots(num=1) plt.xlabel(r'$r^2$ / mm$^2$') plt.ylabel(r'$\frac{v}{\varrho_K - \varrho_\textnormal{PEG}} / \frac{\textnormal{cm}^4}{\textnormal{g} \, \textnormal{s}}$') plt.errorbar(*dp.to_units(r2, v_rho_ratio, d_v_rho_ratio, d_r2, x_unit=cs.milli**2, y_unit=(cs.centi**4 / cs.gram)), fmt='o') v[:7] = v_c[:7]
pL = 0.5 * (pL2 + pL1) d_pL = 0.5 * (pL2 - pL1) print(dpr.val(pL, d_pL, name='pL', unit='Pa')) print() kappa_rL = 4 * m * V / (r**4 * tL**2 * pL) d_kappa_rL = kappa_rL * sqrt((d_m / m)**2 + (d_V / V)**2 + (4 * d_r / r)**2 + (2 * d_tL / tL)**2 + (d_pL / pL)**2) kappa_rAr = 4 * m * V / (r**4 * tAr**2 * pL) d_kappa_rAr = kappa_rAr * sqrt((d_m / m)**2 + (d_V / V)**2 + (4 * d_r / r)**2 + (2 * d_tAr / tAr)**2 + (d_pL / pL)**2) print( dpr.tbl([ dpr.lst(kappa_cd, d_kappa_cd, name='ĸ_cd'), dpr.dev(kappa_cd, d_kappa_cd, kappa_rL, d_kappa_rL, name='κ_cd, κ_r') ])) kappa_cd = np.mean(kappa_cd) d_kappa_cd = sqrt(np.sum(d_kappa_cd**2)) / len(d_kappa_cd) print(dpr.val(kappa_cd, d_kappa_cd, name='ĸ_cd')) print(dpr.val(kappa_rL, d_kappa_rL, name='ĸ_rL')) print() print(dpr.dev(kappa_cd, d_kappa_cd, kappa_L, name='ĸ_cd, ĸ_L')) print(dpr.dev(kappa_rL, d_kappa_rL, kappa_L, name='ĸ_rL, ĸ_L')) print(dpr.dev(kappa_cd, d_kappa_cd, kappa_rL, d_kappa_rL, name='ĸ_cd, ĸ_rL')) print() print(dpr.val(kappa_rAr, d_kappa_rL, name='ĸ_rAr')) print() print(dpr.dev(kappa_rAr, d_kappa_rAr, kappa_Ar, name='ĸ_rAr, ĸ_Ar'))