Demo entry 6754838

crank nicholson

   

Submitted by anonymous on Jul 23, 2018 at 00:56
Language: Python. Code size: 1.2 kB.

#########################################

#Criando a Matriz Tridiagonal - Crank Nicholson

gama = 1/6.000
teta=   1/2.0000

T = 13 #passos no espaço
N = 20 #passos no tempo

A=[0]
B=[]
C=[]
D=[0]*N

    
for i in range(N):
   A = A + [-1.000*gama*teta]
print 'A = ',A

for i in range(N):
    B = B + [1.000+2*gama*teta]
print 'B = ',B

for i in range(1, N,1):
   C = C + [-1.000*gama*teta]
C = C + [0]
print 'C = ',C

CC1 = ((1000*250.000)/(200.000*100))*gama

z= [0]*N #linha com N itens

x =[0]*T #matriz de T linhas

x[0]=z #no tempo 0 a concentração é zero para toda posição

for i in range(1,T):
    D[0] = gama*(1 - teta)*(x[i-1][1]) + (1 - 2*gama*(1 - teta))*(x[i-1][0]) + gama*(1 - teta)*CC1 + gama*teta*CC1
    
    for j in range(1,N-2):
        D[j] = gama*(1 - teta)*(x[i-1][j+1]) + (1 - 2*gama*(1 - teta))*(x[i-1][j]) + gama*(1 - teta)*(x[i-1][j-1])
        
    D[N-1]= (1 - 2*gama*(1 - teta))*(x[i-1][N-1]) + gama*(1 - teta)*(x[i-1][N-2])
    
    x[i]= dsweep(A,B,C,D,N)
    
    #substituindo a condição CC1 em cada linha
    x[i][0]=CC1
    

print 'fim da dupla varredura'
print 'x = ',x

This snippet took 0.01 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).