You are on page 1of 7

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

2-c - Jupyter Notebook

In [40]:  import numpy as np


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

In [41]:  Tb=288.15 #Kelvin


K= 5 #w/m.K
K1=0.2 #w/m.K
R1=0.004 #m
I=50 #imps
R2=0.015

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

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

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


if r<R1:
dTdr = 0 - (Qr / K)

else:
dTdr = 0 - (Qr / K1)

if r<R1:
drQrdr = ((I/(3.14*R1**2))**2)*r/(1.4*1e5*math.exp(0.0035*T))

else:
drQrdr=0

dYfuncvecdr = [dTdr, drQrdr]


return dYfuncvecdr

In [45]:  tspan = [0,0.015]


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-c.ipynb 1/7


2/27/23, 12:13 PM C&S 9.2-c - Jupyter Notebook

In [46]:  tspan = [0,0.015]


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[0,-1]
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]/R2)-(1.32*((abs(sol.y[0,-1]-Tb)/(2*R2))**(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]/R2)-(1.32*(abs(sol.y[0,-1]-Tb)/(2*R2))**(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 307.5189 307.5189

2 380.000 999.9430 282.5465

3 408.88239 5.8981e+02 3.2245e+02

4 450.41746 -4.5195e+01 3.7331e+02

5 447.46128 3.3715e+00 3.6972e+02

6 447.66649 1.3428e-02 3.6997e+02

7 447.66731 -4.0723e-06 3.6997e+02

8 447.66731 4.0927e-12 3.6997e+02

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


2/27/23, 12:13 PM C&S 9.2-c - Jupyter Notebook

In [47]:  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 447.6673 0.000000

5.1724e-04 447.6673 381.863301

1.0345e-03 447.6673 763.726601

1.5517e-03 447.6673 1145.589902

2.0690e-03 447.6673 1527.453202

2.5862e-03 447.6673 1909.316503

3.1034e-03 447.6673 2291.179803

3.6207e-03 447.7286 2680.131835

4.1379e-03 445.5876 2847.297478

4.6552e-03 438.4746 2514.795195

5.1724e-03 432.3065 2263.315676

5.6897e-03 426.7029 2057.559705

6.2069e-03 421.5754 1886.096397

6.7241e-03 416.8654 1741.012058

7.2414e-03 412.5193 1616.654054

7.7586e-03 408.4888 1508.877117

8.2759e-03 404.7309 1414.572297

8.7931e-03 401.2078 1331.362162

9.3103e-03 397.8868 1257.397598

9.8276e-03 394.7407 1191.218777

1.0345e-02 391.7474 1131.657838

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


2/27/23, 12:13 PM C&S 9.2-c - Jupyter Notebook

1.0862e-02 388.8901 1077.769369

1.1379e-02 386.1571 1028.779853

1.1897e-02 383.5421 984.050294

1.2414e-02 381.0440 943.048198

1.2931e-02 378.6545 905.326270

1.3448e-02 376.3587 870.506029

1.3966e-02 374.1497 838.265065

1.4483e-02 372.0209 808.327027

1.5000e-02 369.9669 780.453681

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


2/27/23, 12:13 PM C&S 9.2-c - Jupyter Notebook

In [48]:  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[48]: <matplotlib.legend.Legend at 0x2456a2a59a0>

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


2/27/23, 12:13 PM C&S 9.2-c - Jupyter Notebook

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


2/27/23, 12:13 PM C&S 9.2-c - Jupyter Notebook

In [ ]:  ​

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

You might also like