- こちらのつづき
- kの値を各位置について与える
- まず を各位置で与え、その から 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<-matrix(0,Nx,Ny)
for(x in 1:Nx){
for(y in 1:Ny){
phi<-pi/2
theta[x,y] <- atan2(y-(Ny+1)/2,x-(Nx+1)/2)+phi
}}
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)
kxx<-(kxx[-1,]+kxx[-Nx,])/2
kxy<-(kxy[,-1]+kxy[,-Ny])/2
kyx<-(kyx[-1,]+kyx[-Nx,])/2
kyy<-(kyy[,-1]+kyy[,-Ny])/2
for (t in 1:Nt){
dUx<-U[-1,]-U[-Nx,]
dUy<-U[,-1]-U[,-Ny]
Ixy<- -dUy*kxy
Iyx<- -dUx*kyx
Ixypp<-(kxy>0)*(-dUy>0)*Ixy
Ixypm<-(kxy<0)*(-dUy>0)*Ixy
Ixymp<-(kxy<0)*(-dUy<0)*Ixy
Ixymm<-(kxy>0)*(-dUy<0)*Ixy
Iyxpp<-(kyx>0)*(-dUx>0)*Iyx
Iyxpm<-(kyx<0)*(-dUx>0)*Iyx
Iyxmp<-(kyx<0)*(-dUx<0)*Iyx
Iyxmm<-(kyx>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))
}