Import Numpy As NP
Import Numpy As NP
MIS:612210029
DIV:1
SUBJECT: COMPUTATIONAL FLUID AND DYNAMICS
ASSIGNMENT
#grid spacing
h=np.float64(L/(N-1))
#iteration number
interations=0
#initializing temperature number
T=np.zeros(N)
T[N-1]=100.
numerical_error=0
for i in range (1,N-1):
numerical_error=numerical_error+abs(T[i]-T_new[i])
interations=interations+1
T=T_new.copy()
x_dom=np.arange(N)*h
plt.plot(x_dom,T,'gx--',linewidth=2,markersize=10)
plt.grid(True,color='k')
plt.xlabel("position",size=20)
plt.ylabel("Temperature",size=20)
plt.title("T(x)")
plt.show()
2) 1D STEADY STATE WITH NEUMAN BOUNDARY CONDITION
import numpy as np
import matplotlib.pyplot as plt
#grid points
N=101
#domain size
L=1
#grid spacing
h=np.float64(L/(N-1))
k=0.1;
A=0.001;
q=10;
#iteration number
interations=0
T=np.zeros(N)
T[N-1]=1.
T_new=np.zeros(N)
T_new[N-1]=1.
epsilon=1.E-2
numerical_error=1
while numerical_error>epsilon:
for i in range(0,N-1):
a_E=np.float64(A*k/h)
a_W=np.float64(A*k/h)
if i==(N-1):
a_W=0
T_new[i]=(-q+a_W*T[i-1])/a_P
a_P=a_W+a_E
T_new[i]=(a_E*T[i+1]+a_W*T[i-1])/a_P
numerical_error=0
for i in range (1,N-1):
numerical_error=numerical_error+abs(T[i]-T_new[i])
interations=interations+1
T=T_new.copy()
# Plotting the results
plt.figure()
T=np.zeros((N,N))
T[0,:]=1
T_new=np.zeros((N,N))
T_new[0,:]=1
epsilon=1.E-8
numerical_error=1
plt.figure(10)
while numerical_error>epsilon:
for i in range(1,N-1):
for j in range(1,N-1):
a_E=np.float64(A*k/h)
a_W=np.float64(A*k/h)
a_S=np.float64(A*k/h)
a_N=np.float64(A*k/h)
a_P=a_E+a_W+a_S+a_N
T_new[i,j]=(a_E*T[i,j+1]+a_W*T[i,j-1]+a_N*T[i-1,j]+a_S*T[i+1,j]
+h*q*A)/a_P
numerical_error=0
for i in range (1,N-1):
for j in range (1,N-1):
numerical_error=numerical_error+abs(T[i,j]-T_new[i,j])
iterations=interations+1
T=T_new.copy()
if interations%1000==0:
plt.figure(10)
plt.semilogy(iterations,numerical_error,'ko')
x_dom=np.arange(N)*h
y_dom=L-np.arange(N)*h
[X,Y]=np.meshgrid(x_dom,y_dom)
plt.figure(11)
plt.contourf(X,Y,T,12)
plt.colorbar(orientation='vertical')
plt.title("T(x,y)")
plt.show()
4) DIFFERENT TEMPEATURE AT BOUNDARY
import numpy as np
import matplotlib.pyplot as plt
# Grid parameters
N = 21 # Number of grid points
L = 1 # Length of domain
h = np.float64(L / (N - 1)) # Grid spacing
k = 0.1 # Thermal conductivity
A = 0.001 # Area (assumed constant)
# Boundary temperatures
T_top = 300
T_right = 300
T_left = 0
T_bottom = 0
# Convergence criteria
epsilon = 1.E-8
numerical_error = 1
iterations = 0
plt.figure(10)
if iterations % 1000 == 0:
plt.figure(10)
plt.semilogy(iterations, numerical_error, 'ko')
plt.colorbar(orientation='vertical')
plt.title("T(x,y)")
plt.show()