Added mBWR conversion iPython notebook

Signed-off-by: Ian Bell <ian.h.bell@gmail.com>
This commit is contained in:
Ian Bell
2014-07-25 13:24:56 -04:00
parent eb30d38c2b
commit 06c098eced

View File

@@ -0,0 +1,228 @@
{
"metadata": {
"name": "",
"signature": "sha256:4f22d42e96a1a086f159a429a1263cf7425ca5408c840ec424520d88bfd35839"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"from __future__ import division\n",
"import numpy as np\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from math import exp, fsum\n",
"b = np.zeros((33,), dtype = np.double)\n",
"\n",
"fluid = 'R152a'\n",
"if fluid == 'R123':\n",
" # Start with the coefficients from Younglove and McLinden as written\n",
"\n",
" b = [0,-6.57453133659e-3,2.93479845842,-9.89140469845e1,2.01029776013e4,-3.83566527886e6,2.27587641969e-3,-9.08726819450,4.34181417995e3,3.54116464954e6,-6.35394849670e-4,3.20786715274,-1.31276484299e3,-1.16360713718e-1,-1.13354409016e1,-5.37543457327e3,2.58112416120,\n",
" -1.06148632128e-1,5.00026133667e1,-2.04326706346,-2.49438345685e6,-4.63962781113e8,-2.84903429588e5,9.74392239902e9,-6.37314379308e3,3.14121189813e5,-1.45747968225e2,-8.43830261449e6,-2.41138441593,1.08508031257e3,-1.06653193965e-2,-1.21343571084e1,-2.57510383240e2]\n",
"\n",
" Tc = 456.831\n",
" rhoc = 3.596417\n",
" R = 0.08314510\n",
" M = 152.930\n",
" gamma = 1\n",
"\n",
"elif fluid == 'R152a':\n",
" \n",
" b = [0,-0.101623317e-1,+0.215677130e1,-0.648581254e2,+0.122535596e5,-0.206805988e7,-0.379836507e-3,-0.441333233e0,+0.158248875e3,+0.564062216e6,-0.124115350e-3,+0.494972179e0,-0.208058040e3,-0.131403187e-1,+0.212083849e0,-0.151263785e3,+0.311108025e-1,-0.115280980e-2,+0.437040026e0,-0.965596535e-2,-0.242705525e6,-0.518042519e8,-0.119070546e5,+0.459333195e9,-0.719317287e2,-0.840102861e4,-0.102910957e1,-0.325913881e5,-0.412362182e-2,+0.175102808e1,-0.198636625e-4,-0.421363036e-2,-0.198696761e1]\n",
" Tc = 386.411\n",
" rhoc = 5.57145\n",
" R = 0.08314471\n",
" M = 66.051\n",
" gamma = 1\n",
"else:\n",
" raise ValueError(fluid)\n",
" \n",
"# Coefficients for Equation 3.28 from Span, 2000\n",
"n_2i = b[:]\n",
"t_2i = np.array([0, 1,0.5,0,-1,-2, 1,0,-1,-2, 1,0,-1, 0, -1,-2, -1, -1,-2, -2, -2,-3, -2,-4, -2,-3, -2,-4, -2,-3, -2,-3,-4],dtype = np.longdouble)\n",
"d_2i = np.array([0, 2,2,2,2,2, 3,3,3,3, 4,4,4, 5, 6,6, 7, 8,8, 9, 3,3, 5,5, 7,7, 9,9, 11,11, 13,13,13],dtype = np.longdouble)\n",
"\n",
"### Translate to the common Equation 3.26 formulation\n",
"n_3_26 = [0] + [n_2i[i]*rhoc**(d_2i[i]-1)*Tc**(t_2i[i]-1)/R for i in range(1,33)]\n",
"t_3_26 = [0] + [-t_2i[i]+1 for i in range(1,33)]\n",
"d_3_26 = [0] + [d_2i[i]-1 for i in range(1,33)]\n",
"\n",
"# First polynomial part is easy (see Span, 2000, page 26)\n",
"n = [0] + [n_3_26[i]/d_3_26[i] for i in range(1,20)]\n",
"t = [0] + t_3_26[1:20]\n",
"d = [0] + d_3_26[1:20]\n",
"\n",
"# Next part is harder\n",
"n += [0]*21\n",
"d += [0,0,0,0,0,0,2,2,2,4,4,4,6,6,6,8,8,8,10,10,10]\n",
"t += [3,4,5,3,4,5,3,4,5,3,4,5,3,4,5,3,4,5,3,4,5]\n",
"\n",
"nn = n_3_26[:]\n",
"n[20] = nn[20]/(2.0*gamma)+nn[22]/(2.0*gamma**2)+nn[24]/(gamma**3)+3*nn[26]/(gamma**4)+12*nn[28]/(gamma**5)+60*nn[30]/(gamma**6)\n",
"n[21] = nn[21]/(2*gamma**2)+nn[25]/(gamma**3)+12*nn[29]/(gamma**5)+60*nn[31]/(gamma**6)\n",
"n[22] = nn[23]/(2*gamma**2)+3*nn[27]/(gamma**4)+60*nn[32]/(gamma**6)\n",
"n[23] = -n[20]\n",
"n[24] = -n[21]\n",
"n[25] = -n[22]\n",
"\n",
"n[26] = -nn[22]/(2*gamma)-nn[24]/(gamma**2)-3*nn[26]/(gamma**3)-12*nn[28]/(gamma**4)-60*nn[30]/(gamma**5)\n",
"n[27] = -nn[25]/(gamma**2)-12*nn[29]/(gamma**4)-60*nn[31]/(gamma**5)\n",
"n[28] = -nn[23]/(2*gamma)-3*nn[27]/(gamma**3)-60*nn[32]/(gamma**5)\n",
"n[29] = -nn[24]/(2*gamma)-3*nn[26]/(2*gamma**2)-6*nn[28]/(gamma**3)-30*nn[30]/(gamma**4)\n",
"n[30] = -nn[25]/(2*gamma)-6*nn[29]/(gamma**3)-30*nn[31]/(gamma**4)\n",
"n[31] = -3*nn[27]/(2*gamma**2)-30*nn[32]/(gamma**4)\n",
"n[32] = -nn[26]/(2*gamma)-2*nn[28]/(gamma**2)-10*nn[30]/(gamma**3)\n",
"\n",
"n[33] = -2*nn[29]/(gamma**2)-10*nn[31]/(gamma**3)\n",
"n[34] = -nn[27]/(2*gamma)-10*nn[32]/(gamma**3)\n",
"n[35] = -nn[28]/(2*gamma)-5*nn[30]/(2*gamma**2)\n",
"n[36] = -nn[29]/(2*gamma)-5*nn[31]/(2*gamma**2)\n",
"\n",
"n[37] = -5*nn[32]/(2.0*gamma**2)\n",
"n[38] = -nn[30]/(2.0*gamma)\n",
"n[39] = -nn[31]/(2.0*gamma)\n",
"n[40] = -nn[32]/(2.0*gamma)\n",
"\n",
"l = [0] + [0 for i in range(1,23)] + [2 for i in range(23,41)]\n",
"\n",
"# Reorder the terms in REFPROP ordering\n",
"n = [0] + n[20:23] + n[1:20] + n[23::]\n",
"d = [0] + d[20:23] + d[1:20] + d[23::]\n",
"t = [0] + t[20:23] + t[1:20] + t[23::]\n",
"l = [0] + l[20:23] + l[1:20] + l[23::]\n",
"\n",
"print 'n:', n[1:41]\n",
"print 't:', t[1:41]\n",
"print 'd:', d[1:41]\n",
"print 'l:', l[1:41]\n",
"\n",
"for i in range(1,41):\n",
" print n[i],t[i],d[i],l[i]\n",
"\n",
"if fluid =='R123':\n",
" def p_328(T_K, rho_molL):\n",
" T = T_K\n",
" rho = rho_molL\n",
"\n",
" s = n_2i*T**t_2i*rho**d_2i\n",
" sum1 = fsum(s[1:20])\n",
" sum2 = fsum(s[20:32])\n",
"\n",
" # Form of equation 3.28 from Span, 2000\n",
" return rho*R*T + sum1 + exp(-(rho/rhoc)**2)*sum2\n",
"\n",
" print p_328(146+273.15, 129.92/M), 'should yield', 19.5614, 'to within rounding error'\n",
"\n",
" def p_326(T_K, rho_molL):\n",
" T = T_K\n",
" rho = rho_molL\n",
" tau = Tc/T\n",
" delta = rho/rhoc\n",
"\n",
" sum1 = fsum([n_3_26[i]*tau**t_3_26[i]*delta**d_3_26[i] for i in range(1,20)])\n",
" sum2 = fsum([n_3_26[i]*tau**t_3_26[i]*delta**d_3_26[i] for i in range(20,33)])\n",
"\n",
" # Form of equation 3.26 from Span, 2000\n",
" return rho*R*T*(1+sum1 + exp(-(rho/rhoc)**2)*sum2)\n",
"\n",
" print p_326(146+273.15, 129.92/M), 'should yield', 19.5614, 'to within rounding error'\n",
"\n",
" def p_325(T_K, rho_molL):\n",
" T = T_K\n",
" rho = rho_molL\n",
" tau = Tc/T\n",
" delta = rho/rhoc\n",
"\n",
" sum1 = fsum([n[i]*d[i]*tau**t[i]*delta**(d[i]-1) for i in range(1,23)])\n",
" sum2 = fsum([n[i]*delta**(d[i]-1)*(d[i]-2*delta**2)*exp(-delta**2)*tau**t[i] for i in range(23,41)])\n",
"\n",
" daddelta = sum1 + sum2\n",
" print tau, delta, daddelta\n",
" # Form of equation 3.26 from Span, 2000\n",
" return rho*R*T*(1+delta*daddelta)\n",
"\n",
" print p_325(146+273.15, 129.92/M), 'should yield', 19.5614, 'to within rounding error'\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"n: [-3.5465795001851741, -0.36463127995636307, 0.033323333061128141, -0.6809684338301859, 7.3521264810280345, -11.247306378057127, 5.4991671429765772, -2.401863270213656, -0.070903644643947439, -0.21320088682136959, 0.19783973673284622, 1.824947698265976, -0.086054647670446016, 0.88813736685420042, -0.9661273471407773, -0.098522347852955536, 0.018341936863418316, -0.033855020406882257, 0.012492110085780536, -0.0022105670710377131, 0.0021687913327794162, -0.0002335976904702689, 3.5465795001851741, 0.36463127995636307, -0.033323333061128141, 2.7613383040168675, -0.069118571023672817, -0.033323333061128141, 0.7827613268561544, -0.034559285511836409, 0.13781353206688696, 0.18617312581521558, -0.03411193928992716, 0.045937844022295643, 0.021647001270605898, -0.0085279848224817899, 0.006203940397171849, 0.0018521029114874563, 0.00101674662708817, 0.0012407880794343697]\n",
"t: [3, 4, 5, 0.0, 0.5, 1.0, 2.0, 3.0, 0.0, 1.0, 2.0, 3.0, 0.0, 1.0, 2.0, 1.0, 2.0, 3.0, 2.0, 2.0, 3.0, 3.0, 3, 4, 5, 3, 4, 5, 3, 4, 5, 3, 4, 5, 3, 4, 5, 3, 4, 5]\n",
"d: [0, 0, 0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 4.0, 5.0, 5.0, 6.0, 7.0, 7.0, 8.0, 0, 0, 0, 2, 2, 2, 4, 4, 4, 6, 6, 6, 8, 8, 8, 10, 10, 10]\n",
"l: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]\n",
"-3.54657950019 3 0 0\n",
"-0.364631279956 4 0 0\n",
"0.0333233330611 5 0 0\n",
"-0.68096843383 0.0 1.0 0\n",
"7.35212648103 0.5 1.0 0\n",
"-11.2473063781 1.0 1.0 0\n",
"5.49916714298 2.0 1.0 0\n",
"-2.40186327021 3.0 1.0 0\n",
"-0.0709036446439 0.0 2.0 0\n",
"-0.213200886821 1.0 2.0 0\n",
"0.197839736733 2.0 2.0 0\n",
"1.82494769827 3.0 2.0 0\n",
"-0.0860546476704 0.0 3.0 0\n",
"0.888137366854 1.0 3.0 0\n",
"-0.966127347141 2.0 3.0 0\n",
"-0.098522347853 1.0 4.0 0\n",
"0.0183419368634 2.0 5.0 0\n",
"-0.0338550204069 3.0 5.0 0\n",
"0.0124921100858 2.0 6.0 0\n",
"-0.00221056707104 2.0 7.0 0\n",
"0.00216879133278 3.0 7.0 0\n",
"-0.00023359769047 3.0 8.0 0\n",
"3.54657950019 3 0 2\n",
"0.364631279956 4 0 2\n",
"-0.0333233330611 5 0 2\n",
"2.76133830402 3 2 2\n",
"-0.0691185710237 4 2 2\n",
"-0.0333233330611 5 2 2\n",
"0.782761326856 3 4 2\n",
"-0.0345592855118 4 4 2\n",
"0.137813532067 5 4 2\n",
"0.186173125815 3 6 2\n",
"-0.0341119392899 4 6 2\n",
"0.0459378440223 5 6 2\n",
"0.0216470012706 3 8 2\n",
"-0.00852798482248 4 8 2\n",
"0.00620394039717 5 8 2\n",
"0.00185210291149 3 10 2\n",
"0.00101674662709 4 10 2\n",
"0.00124078807943 5 10 2\n"
]
}
],
"prompt_number": 19
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}