拡散の方向性

  • ナナメ方向への拡散をあらわす
  • こちらのつづき
  • 角度を変えて試してみると、斜めの拡散は縦横の移動分とそれに対する45度方向(kxy,kyx)の移動が合わさって実現されてるようだ
    • 縦横の成分 -dUx*kxx, -dUy*kyy を 0 にして斜めにだけ移動させて計算すると、いつも45度方向に細くのびた分布になる
  • 条件 -dUx < 0など は省けるかもしれないのでその場合式の数がへらせる
  • あとはkを各位置で与える
Nx<-30
Ny<-30
Nt<-100
U<-tempU<-matrix(0,Nx,Ny)
U[11:20,11:20]<-1   #初期分布

#これがl方向とt方向の拡散の定数
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

	
#	persp(U,col=heat.colors(Nx*Ny),theta=30,phi=30,zlim=c(0,1))
	image(U,col=topo.colors(100))
#	print(sum(U))
}