Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

2/27/23, 12:11 PM C&S 9.

2-b - Jupyter Notebook

In [9]:  import numpy as np


from scipy.integrate import solve_ivp
import math
import matplotlib.pyplot as plt

In [10]:  Tb=288.15 #Kelvin


K= 5 #w/m.K
R1=0.004 #m
I=50 #imps

In [11]:  def ODEfun(r,Yfuncvec):

T = Yfuncvec[0]
rQr = Yfuncvec[1]

if r > 0:
Qr = rQr / r
else:
Qr = 0

dTdr = 0 - (Qr / K)
drQrdr = ((I/(3.14*R1**2))**2)*r/(1.4e5*math.exp(0.0035*T))

dYfuncvecdr = [dTdr, drQrdr]


return dYfuncvecdr

In [12]:  tspan = [0,0.004]


y0 = [300, 0]
sol=ODEfun(0,y0)
print (sol)
print(y0)

[0.0, 0.0]

[300, 0]

localhost:8888/notebooks/Downloads/C%26S 9.2-b.ipynb 1/7


2/27/23, 12:11 PM C&S 9.2-b - Jupyter Notebook

In [13]:  tspan = [0,0.004]


Tb=288.15 #Kelvin
K= 5 #w/m.K
R1=0.004 #m
I=50


yini=np.zeros(21)
f=np.zeros(21)

yini[0]=400
yini[1]=380
y0 = [yini[0],0]

k=0
print(' y dy/dt dy/dt dy/dt ')
soln=ODEfun(tspan[0],y0)
print(' {:7.4f} {:7.2f} {:7.2f} \n'.format(y0[0],soln[0],soln[1]))
sol=solve_ivp(ODEfun,tspan,y0)
f[k] = (sol.y[1,-1]/R1)-(1.32*((abs(sol.y[0,-1]-Tb)/(2*R1))**(1/4))*(sol.y[0,-1]-Tb))
print(' Trial y0 f(0) Temp.')
print(' {:d} {:8.3f} {:8.4f} {:6.4f}'.format(k+1, yini[k], f[k], sol.y[0,-1]))

k=1
y0 = [yini[k],0]
sol=solve_ivp(ODEfun,tspan,y0)
f[k] = (sol.y[1,-1]/R1)-(1.32*((abs(sol.y[0,-1]-Tb)/(2*R1))**(1/4))*(sol.y[0,-1]-Tb))
print(' {:d} {:8.3f} {:8.4f} {:6.4f}'.format(k+1, yini[k], f[k], sol.y[0,-1]))
err=np.abs(f[k])

while (err>1e-6 and k<20):


yini[k+1]= yini[k]-f[k]*(yini[k]-yini[k-1])/(f[k]-f[k-1])
y0 = [yini[k+1],0]
sol=solve_ivp(ODEfun,tspan,y0)
f[k+1] = (sol.y[1,-1]/R1)-(1.32*(abs(sol.y[0,-1]-Tb)/(2*R1))**(1/4)*(sol.y[0,-1]-Tb))
print(' {:d} {:8.5f} {:8.4e} {:6.4e}'.format(k+2, yini[k+1], f[k+1], sol.y[0,-1]))
err=np.abs(f[k+1])
k=k+1

y dy/dt dy/dt dy/dt

400.0000 0.00 0.00

Trial y0 f(0) Temp.

1 400.000 1917.3630 398.6026

2 380.000 2522.5909 378.5011

3 463.36004 9.6591e+00 4.6224e+02

4 463.68045 6.5919e-02 4.6256e+02

5 463.68265 2.0538e-06 4.6256e+02

6 463.68265 1.8190e-12 4.6256e+02

localhost:8888/notebooks/Downloads/C%26S 9.2-b.ipynb 2/7


2/27/23, 12:11 PM C&S 9.2-b - Jupyter Notebook

In [14]:  num=30
teval=np.linspace(tspan[0],tspan[1],num)
sol=solve_ivp(ODEfun,tspan,y0,t_eval=teval)



print(' Summary of Results\n')

print('\nSolution ')
print(' r T Qr ')
print(' (m) (K) (W/m2) ')



Qr=np.zeros(num)

row=0
for row in range(num):

rQr=sol.y[1][row]

r=sol.t[row]

if r>0:
Qr[row] = rQr / (r)
else:
Qr[row]=0

print('{:4.4e} {:10.4f} {:10.6f}'.format(sol.t[row],


sol.y[0][row],Qr[row] ))

Summary of Results

Solution

r T Qr

(m) (K) (W/m2)

0.0000e+00 463.6827 0.000000

1.3793e-04 463.6813 96.279549

2.7586e-04 463.6773 192.560629

4.1379e-04 463.6707 288.844188

5.5172e-04 463.6614 385.131622

6.8966e-04 463.6495 481.424412

8.2759e-04 463.6348 577.724216

9.6552e-04 463.6176 674.033211

1.1034e-03 463.5977 770.352065

1.2414e-03 463.5751 866.681604

1.3793e-03 463.5498 963.022914

1.5172e-03 463.5219 1059.377223

1.6552e-03 463.4914 1155.745839

1.7931e-03 463.4582 1252.130122

1.9310e-03 463.4223 1348.531465

2.0690e-03 463.3838 1444.951282

2.2069e-03 463.3426 1541.391003

2.3448e-03 463.2987 1637.852067

2.4828e-03 463.2522 1734.335921

2.6207e-03 463.2030 1830.844020

2.7586e-03 463.1512 1927.377820

2.8966e-03 463.0967 2023.938781

localhost:8888/notebooks/Downloads/C%26S 9.2-b.ipynb 3/7


2/27/23, 12:11 PM C&S 9.2-b - Jupyter Notebook

3.0345e-03 463.0395 2120.528367

3.1724e-03 462.9797 2217.148040

3.3103e-03 462.9172 2313.798929

3.4483e-03 462.8521 2410.482180

3.5862e-03 462.7842 2507.199150

3.7241e-03 462.7137 2603.951203

3.8621e-03 462.6406 2700.739704

4.0000e-03 462.5647 2797.566025

localhost:8888/notebooks/Downloads/C%26S 9.2-b.ipynb 4/7


2/27/23, 12:11 PM C&S 9.2-b - Jupyter Notebook

In [15]:  plt.figure(figsize=(10,12))

plt.subplot (2,1,1)
plt.plot(sol.t,sol.y[0],'r',label='T',dashes=[3, 2],linewidth=0.8)

plt.title(' Temp. Profile')


plt.xlabel('Radius (m)')
plt.ylabel('Temp (K)')
plt.legend()

plt.subplot (2,1,2)
plt.plot(sol.t,Qr,'b',label='Flux',dashes=[6, 3])

plt.title(' Heat flux profile')
plt.xlabel('Radius (m)')
plt.ylabel('Heat flux (W/m2)')
plt.legend()

Out[15]: <matplotlib.legend.Legend at 0x200a2faa880>

localhost:8888/notebooks/Downloads/C%26S 9.2-b.ipynb 5/7


2/27/23, 12:11 PM C&S 9.2-b - Jupyter Notebook

localhost:8888/notebooks/Downloads/C%26S 9.2-b.ipynb 6/7


2/27/23, 12:11 PM C&S 9.2-b - Jupyter Notebook

In [ ]:  ​

localhost:8888/notebooks/Downloads/C%26S 9.2-b.ipynb 7/7

You might also like