2016-12-20 4 views
2

これはこのWebで初めてのことです。Pythonのパラメータ化

私はシリンダーの熱拡散シミュレーションを行っています。熱源は円筒の外側にあるため、円筒形の対称性はないので、私はX-Yグリッドを作成し、それを近似することにしました。 このようないくつかの事:

enter image description here

これが私の最初のと最も単純試みです:

from numpy import empty,zeros,max 
import matplotlib.pyplot as plt 

# Constants 
M = 10  # Grid squares on a side 
V = 100.0   # Voltage at top wall 
target = 1e-4 # Target accuracy 

# Create arrays to hold potential values 
phi = zeros([M+1,M+1],float) 
phi[0,:] = V 
phi[M,:]=V 
phi[:,0]=V 
phi[:,M]=V 
phiprime = empty([M+1,M+1],float) 

# Main loop 

delta = 1.0 
while delta>target: 
    # Calculate new values of the potential 
    for i in range(M+1): 
     for j in range(M+1): 
     if i==0 or i==M or j==0 or j==M: 
      phiprime[i,j] = phi[i,j] 

     elif i==1 or i==M-1: 
      if j==1 or j==2 or j==M-2 or j==M-1: 
       phiprime[i,j]=V-V/2 
      else: 
       phiprime[i,j] = (phi[i+1,j] + phi[i-1,j] \ 
          + phi[i,j+1] + phi[i,j-1])/4 
     elif i==2 or i==M-2: 
      if j==1 or j==M-1: 
       phiprime[i,j]=V-V/2 
      else: 
       phiprime[i,j] = (phi[i+1,j] + phi[i-1,j] \ 
          + phi[i,j+1] + phi[i,j-1])/4 
     else: 
      phiprime[i,j] = (phi[i+1,j] + phi[i-1,j] \ 
          + phi[i,j+1] + phi[i,j-1])/4 

    delta = max(abs(phi - phiprime)) 

    phi, phiprime = phiprime, phi 

plt.imshow(phiprime) 
plt.gray() 
plt.show() 

これは非常に簡単だったが、これはシリンダーのために良い近似ではありません、私がする必要がありますそれをかなり大きくする。 ご覧のように、その場では「ポジション」を手作業でコーディングできますが、100x100または1000x1000にすると不可能です。

私の質問は、「字下げした四角形(黒いもの)」のパラメータ化がありますか?私はあなたが何をしたいと考えてい

おかげ

答えて

関連する問題