- ナナメ方向への拡散をあらわす
- こちらの前半にある式を正確に書き表すことにした
- 基本的には拡散項に関してこのときのような計算方法
- ナナメの近傍への移動はない
- つまり、k3やk4は出てこない
- といった条件では形がいびつになることがある
Nx<-30
Ny<-30
Nt<-100
U<-matrix(0,Nx,Ny)
U[11:20,11:20]<-1
kl<-0.20
kt<-0.05
theta<-pi/4
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]
Ex<--(rbind(dUx,dUx[Nx-1,])+rbind(dUx[1,],dUx))/2
Ey<--(cbind(dUy,dUy[,Ny-1])+cbind(dUy[,1],dUy))/2
Ixy<-Ey*kxy
Iyx<-Ex*kyx
Ixyp<-(Ixy>0)*Ixy
Ixym<-(Ixy<0)*Ixy
Iyxp<-(Iyx>0)*Iyx
Iyxm<-(Iyx<0)*Iyx
Ix<--dUx*kxx+Ixyp[-Nx,]+Ixym[-1,]
Iy<--dUy*kyy+Iyxp[,-Ny]+Iyxm[,-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))
}
Nx<-30
Ny<-30
Nt<-100
U<-matrix(0,Nx,Ny)
U[11:20,11:20]<-1
kl<-0.25
kt<-0.05
theta<-pi/4
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]
Ex<--(rbind(dUx,dUx[Nx-1,])+rbind(dUx[1,],dUx))/2
Ey<--(cbind(dUy,dUy[,Ny-1])+cbind(dUy[,1],dUy))/2
Ixx<-Ex*kxx
Iyy<-Ey*kyy
Ixy<-Ey*kxy
Iyx<-Ex*kyx
Ix<--dUx*kxx+(Ixy[-Nx,]+Ixy[-1,])/2
Iy<--dUy*kyy+(Iyx[,-Ny]+Iyx[,-1])/2
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))
}