拡散とNeumann条件

KABIRA2010-12-28

  • こちらのつづき
  • Neumann条件になっているか不安だったので
  • 全体の量が保存されているかを見てみた
    • 下の枠の5行が総量のプロット
    • 初期値は33
    • 36くらいまで増加している
  • 保存されていない...?
    • 立ち上がりまでに少しかかるところをみると
    • 境界からの流入が0になっていないのだろうか
  • 追記
    • 保存されるようにしたのがこちら
N<-30
M<-40
T<-200

d<-1    #キョリの次元
dt<-1   #時間の次元
D<-0.12  #拡散係数

U<-array(0,c(N,M,T))

U[12:10,20:10,1]<-1    #初期条件

#拡散
for(t in 1:(T-1)){

for(i in 2:(N-1)){
for(j in 2:(M-1)){
du<-D*(sum(U[(i-1):(i+1),(j-1):(j+1),t])-9*U[i,j,t])/(d^2)*dt        #uの変化量duを計算
U[i,j,t+1]<-U[i,j,t]+du
}
}
U[,1,t+1]<-U[,2,t+1]  #Neumann条件
U[1,,t+1]<-U[2,,t+1]
U[N,,t+1]<-U[N-1,,t]
U[,M,t+1]<-U[,M-1,t]


}
min(U)

for (t in 1:T){
persp(U[,,t],col=3,theta=20,phi=30,zlim=c(0,1))
#image(U[,,t],col=topo.colors(10))
}
v<-c()
for(t in 1:T){
v<-c(v,sum(U[,,t]))
}
plot(v)