ここに質問の内容を詳しく書いてください。
(例)二次元の熱伝導問題を解析しようとしたところ、以下のようにコードを入力しましたがアニメーションが動きません。原因のわかる方がいれば回答をお願いしたいです。
発生している問題・エラーメッセージ
該当のソースコード
Python
1import numpy as np 2import matplotlib.pyplot as plt 3import matplotlib.animation as animation 4from IPython.display import HTML 5 6def init_heat(a,b,T_0,T_i): 7 temp=np.zeros((a,b,t_max)) 8 temp[:,:,0]=(T_i)*np.ones((a,b)) 9 temp[int(a/2)-5:int(a/2)+6,int(b/2)-5:int(b/2)+6,:]=T_0 10 return temp 11 12h,a,b=1,300,300 13T_0=5000000 14T_i=-10 15tau,t_max=1,100 16rho=9.17e5 17C_p=2.1e3 18l=2.5e6 19k=2.2 20kappa=k/(C_p*rho) 21 22def scatter(T_n,r): 23 n=len(T_n[:,0]) 24 m=len(T_n[0,:]) 25 T_n1=np.zeros_like(T_n) 26 T_n1[1:n,1:m]=T_n[1:n,1:m]+r*(T_n[0:n-1,1:m]+T_n[2:n+1,1:m]+T_n[1:n,0:m-1]+T_n[1:n,2:m+1]) 27 return T_n1 28 29def calc(kappa): 30 temp=init_heat(a,b,T_0,T_i) 31 r=kappa*tau/(h**2) 32 print(r) 33 for t in range(t_max-1): 34 temp[:,:,t+1]=scatter(temp[:,:,t],r) 35 return temp 36 37def anime(temp): 38 fig=plt.figure() 39 imgs=[] 40 for t in range(t_max): 41 im0=plt.imshow(temp[:,:,t],animated=True,cmap='jet',vmin=T_i,vmax=T_0) 42 imgs.append([im0]) 43 ani=animation.ArtistAnimation(fig,imgs,interval=10) 44 plt.colorbar() 45 plt.close() 46 return ani 47 48temp=calc(kappa) 49ani=anime(temp) 50HTML(ani.to_jshtml()) 51 52
試したこと
T_n1の表式を以下のように書き換えましたがダメでした。np.rollに関しても同様です。
T_nN=np.vstack([T_n[1:n,:],T_n[n-1:n,:]])
T_nE=np.hstack([T_n[:,0:1],T_n[:,0:m-1]])
T_nW=np.hstack([T_n[:,1:m],T_n[:,m-1:m]])
T_nS=np.vstack([T_n[0:1,:],T_n[0:n-1,:]])
T_n1=T_n+r*(T_nN+T_nE+T_nW+T_nS-4*T_n)
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。