- ナナメ方向への拡散をあらわす
- こちらのつづき
- 角度を変えて試してみると、斜めの拡散は縦横の移動分とそれに対する45度方向(kxy,kyx)の移動が合わさって実現されてるようだ
- 縦横の成分 -dUx*kxx, -dUy*kyy を 0 にして斜めにだけ移動させて計算すると、いつも45度方向に細くのびた分布になる
- 条件 など は省けるかもしれないのでその場合式の数がへらせる
- あとはkを各位置で与える
Nx<-30
Ny<-30
Nt<-100
U<-tempU<-matrix(0,Nx,Ny)
U[11:20,11:20]<-1
kl<-0.20
kt<-0.05
theta<-pi/16
kxx<-kl*cos(theta)^2+kt*sin(theta)^2
kyy<-kl*sin(theta)^2+kt*cos(theta)^2
kxy<-(kl-kt)*sin(theta)*cos(theta)
kyx<-(kl-kt)*sin(theta)*cos(theta)
for (t in 1:Nt){
dUx<-U[-1,]-U[-Nx,]
dUy<-U[,-1]-U[,-Ny]
Ixy<- -dUy*kxy
Iyx<- -dUx*kyx
Ixypp<-(Ixy>0)*(-dUy>0)*Ixy
Ixypm<-(Ixy<0)*(-dUy>0)*Ixy
Ixymp<-(Ixy>0)*(-dUy<0)*Ixy
Ixymm<-(Ixy<0)*(-dUy<0)*Ixy
Iyxpp<-(Iyx>0)*(-dUx>0)*Iyx
Iyxpm<-(Iyx<0)*(-dUx>0)*Iyx
Iyxmp<-(Iyx>0)*(-dUx<0)*Iyx
Iyxmm<-(Iyx<0)*(-dUx<0)*Iyx
Ix<--dUx*kxx
Ix[,-Ny]<-Ix[,-Ny]+Ixypp[-Nx,]+Ixypm[-1,]
Ix[,-1]<-Ix[,-1]+Ixymp[-Nx,]+Ixymm[-1,]
Iy<--dUy*kyy
Iy[-Nx,]<-Iy[-Nx,]+Iyxpp[,-Ny]+Iyxpm[,-1]
Iy[-1,]<-Iy[-1,]+Iyxmp[,-Ny]+Iyxmm[,-1]
U[-1,]<-U[-1,]+Ix
U[-Nx,]<-U[-Nx,]-Ix
U[,-1]<-U[,-1]+Iy
U[,-Ny]<-U[,-Ny]-Iy
image(U,col=topo.colors(100))
}