ezunits not so ez——理想气体
ezunits not so ez -- ideal gas
我在使用 ezunits 时遇到了很多问题,似乎无法获得正确的单位及其转换。应该计算 20°C 下 2 个罐的体积,这些罐在 700bar 相对压力下装满 6kg H_2。
总体积应为 0.103 m^3,一个水箱的体积应为 51.5 l。
这就是我在 Wxmaxima 中得到的:https://ibb.co/6P91kYk
我的代码:
/* [ Created with wxMaxima version 20.06.6 ] */
/* [wxMaxima: input start ] */
kill(all); load(ezunits);
/* [wxMaxima: input end ] */
/* [wxMaxima: section start ]
Brennstoffzellenfahrzeug H_2, 2 Tanks, T=20°C, p_rel=700bar, m=6kg. Welches Volumen hat ein Tank?
[wxMaxima: section end ] */
/* [wxMaxima: input start ] */
T: 273.15`K+20`deg; p_rel: 700`bar; RR:8.314`J/(mol*K); m: 6`kg;
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
p: p_rel+1`bar;
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
p: p``N/m^2;
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
M_H_2:2*1.01`g/mol;
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
R: RR/M_H_2;
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
kill(V); dimensionally(solve(p*V=m*R*T,V)); V: rhs(%[1]);
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
V_tank: V/2;
/* [wxMaxima: input end ] */
/* Old versions of Maxima abort on loading files that end in a comment. */
"Created with wxMaxima 20.06.6"$
我看到的一些东西你可以试试。
(1) bar
不是 built-in 单位。尝试:declare_unit_conversion(1 ` bar = 101325 ` Pa)
(2) 要转换 20 摄氏度,请尝试:T: 20 ` degC `` K
.
(3) 这里m
作为一个变量出现,也是单位m
。将变量 m
重命名为 m_tank
或其他名称。
(4) 单位不会自动缩减为基本单位。尝试:fundamental_units(V_tank);
然后 V_tank `` fundamental_units(V_tank);
以下是这些更改后我得到的结果:
(%i3) load(ezunits)
(%o3) /usr/local/Cellar/maxima/5.44.0/share/maxima/5.44.0/share/\
ezunits/ezunits.mac
(%i4) declare_unit_conversion(1 ` bar = 101325 ` Pa)
(%o4) done
(%i5) T:20 ` degC `` K
5863
(%o5) ---- ` K
20
(%i6) p_rel:700 ` bar
(%o6) 700 ` bar
(%i7) RR:8.314 ` J/(mol*K)
J
(%o7) 8.314 ` -----
K mol
(%i8) m_tank:6 ` kg
(%o8) 6 ` kg
(%i9) p:p_rel+1 ` bar
(%o9) 701 ` bar
(%i10) p:p `` N/m^2
N
(%o10) 71028825 ` --
2
m
(%i11) M_H_2:2*1.01 ` g/mol
g
(%o11) 2.02 ` ---
mol
(%i12) R:RR/M_H_2
J
(%o12) 4.115841584158416 ` ---
K g
(%i13) kill(V)
(%o13) done
(%i14) dimensionally(solve(p*V = m_tank*R*T,V))
rat: replaced -7239.353762376237 by -73117473/10100 = -7239.353762376238
2
24372491 J kg m
(%o14) [V = ------------ ` -------]
239130377500 N g
(%i15) V:rhs(%[1])
2
24372491 J kg m
(%o15) ------------ ` -------
239130377500 N g
(%i16) V_tank:V/2
2
24372491 J kg m
(%o16) ------------ ` -------
478260755000 N g
(%i17) fundamental_units(V_tank)
3
(%o17) m
(%i18) V_tank `` fundamental_units(V_tank)
24372491 3
(%o18) --------- ` m
478260755
(%i19) float(%)
3
(%o19) 0.05096067520739811 ` m
我在使用 ezunits 时遇到了很多问题,似乎无法获得正确的单位及其转换。应该计算 20°C 下 2 个罐的体积,这些罐在 700bar 相对压力下装满 6kg H_2。
总体积应为 0.103 m^3,一个水箱的体积应为 51.5 l。
这就是我在 Wxmaxima 中得到的:https://ibb.co/6P91kYk
我的代码:
/* [ Created with wxMaxima version 20.06.6 ] */
/* [wxMaxima: input start ] */
kill(all); load(ezunits);
/* [wxMaxima: input end ] */
/* [wxMaxima: section start ]
Brennstoffzellenfahrzeug H_2, 2 Tanks, T=20°C, p_rel=700bar, m=6kg. Welches Volumen hat ein Tank?
[wxMaxima: section end ] */
/* [wxMaxima: input start ] */
T: 273.15`K+20`deg; p_rel: 700`bar; RR:8.314`J/(mol*K); m: 6`kg;
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
p: p_rel+1`bar;
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
p: p``N/m^2;
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
M_H_2:2*1.01`g/mol;
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
R: RR/M_H_2;
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
kill(V); dimensionally(solve(p*V=m*R*T,V)); V: rhs(%[1]);
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
V_tank: V/2;
/* [wxMaxima: input end ] */
/* Old versions of Maxima abort on loading files that end in a comment. */
"Created with wxMaxima 20.06.6"$
我看到的一些东西你可以试试。
(1) bar
不是 built-in 单位。尝试:declare_unit_conversion(1 ` bar = 101325 ` Pa)
(2) 要转换 20 摄氏度,请尝试:T: 20 ` degC `` K
.
(3) 这里m
作为一个变量出现,也是单位m
。将变量 m
重命名为 m_tank
或其他名称。
(4) 单位不会自动缩减为基本单位。尝试:fundamental_units(V_tank);
然后 V_tank `` fundamental_units(V_tank);
以下是这些更改后我得到的结果:
(%i3) load(ezunits)
(%o3) /usr/local/Cellar/maxima/5.44.0/share/maxima/5.44.0/share/\
ezunits/ezunits.mac
(%i4) declare_unit_conversion(1 ` bar = 101325 ` Pa)
(%o4) done
(%i5) T:20 ` degC `` K
5863
(%o5) ---- ` K
20
(%i6) p_rel:700 ` bar
(%o6) 700 ` bar
(%i7) RR:8.314 ` J/(mol*K)
J
(%o7) 8.314 ` -----
K mol
(%i8) m_tank:6 ` kg
(%o8) 6 ` kg
(%i9) p:p_rel+1 ` bar
(%o9) 701 ` bar
(%i10) p:p `` N/m^2
N
(%o10) 71028825 ` --
2
m
(%i11) M_H_2:2*1.01 ` g/mol
g
(%o11) 2.02 ` ---
mol
(%i12) R:RR/M_H_2
J
(%o12) 4.115841584158416 ` ---
K g
(%i13) kill(V)
(%o13) done
(%i14) dimensionally(solve(p*V = m_tank*R*T,V))
rat: replaced -7239.353762376237 by -73117473/10100 = -7239.353762376238
2
24372491 J kg m
(%o14) [V = ------------ ` -------]
239130377500 N g
(%i15) V:rhs(%[1])
2
24372491 J kg m
(%o15) ------------ ` -------
239130377500 N g
(%i16) V_tank:V/2
2
24372491 J kg m
(%o16) ------------ ` -------
478260755000 N g
(%i17) fundamental_units(V_tank)
3
(%o17) m
(%i18) V_tank `` fundamental_units(V_tank)
24372491 3
(%o18) --------- ` m
478260755
(%i19) float(%)
3
(%o19) 0.05096067520739811 ` m