C&S 9.2-A - Jupyter Notebook

You might also like

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

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

2-a - Jupyter Notebook

In [1]:  import numpy as np


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

In [4]:  T1=288.15 #Kelvin


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

In [18]:  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.4*1e5*math.exp(0.0035*T))

dYfuncvecdr = [dTdr, drQrdr]


return dYfuncvecdr

In [30]:  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-a.ipynb 1/7


2/27/23, 12:01 PM C&S 9.2-a - Jupyter Notebook

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


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

yini[0]=300
yini[1]=315
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[0,-1]-T1
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[0,-1]-T1
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

300.0000 0.00 0.00

Trial y0 f(0) Temp.

1 300.000 156.7073 156.7073

2 315.000 -108.1752 179.9748

3 308.87416 -1.1761e+02 1.7054e+02

4 385.23240 -5.6873e+00 2.8246e+02

5 389.11246 -2.9078e-01 2.8786e+02

6 389.32153 -6.9592e-04 2.8815e+02

7 389.32203 -8.5002e-08 2.8815e+02

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


2/27/23, 12:01 PM C&S 9.2-a - Jupyter Notebook

In [36]:  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 389.3220 0.000000

1.3793e-04 389.2118 7995.183112

2.7586e-04 388.8808 15999.614640

4.1379e-04 388.3289 24022.661819

5.5172e-04 387.5551 32074.162764

6.8966e-04 386.5588 40162.447078

8.2759e-04 385.3388 48297.212002

9.6552e-04 383.8937 56488.840238

1.1034e-03 382.2216 64748.341945

1.2414e-03 380.3203 73087.406240

1.3793e-03 378.1879 81513.500839

1.5172e-03 375.8217 90036.157058

1.6552e-03 373.2191 98666.846510

1.7931e-03 370.3770 107418.234836

1.9310e-03 367.2916 116303.755265

2.0690e-03 363.9591 125337.352756

2.2069e-03 360.3752 134533.324075

2.3448e-03 356.5351 143906.230175

2.4828e-03 352.4332 153474.617390

2.6207e-03 348.0639 163251.371254

2.7586e-03 343.4221 173248.413805

2.8966e-03 338.5017 183482.083542

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


2/27/23, 12:01 PM C&S 9.2-a - Jupyter Notebook

3.0345e-03 333.2961 193972.131685

3.1724e-03 327.7976 204740.980278

3.3103e-03 321.9982 215813.165765

3.4483e-03 315.8890 227214.916116

3.5862e-03 309.4603 238973.825528

3.7241e-03 302.7017 251118.601422

3.8621e-03 295.6022 263678.865654

4.0000e-03 288.1500 276684.996852

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


2/27/23, 12:01 PM C&S 9.2-a - Jupyter Notebook

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

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


2/27/23, 12:01 PM C&S 9.2-a - Jupyter Notebook

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


2/27/23, 12:01 PM C&S 9.2-a - Jupyter Notebook

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

You might also like