- 积分
- 117
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2015-7-10
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
program main
implicit none
integer mm,nn
parameter(mm=801,nn=50)
integer i,j,k,m,n,x,y,g,i1,j1,i2,j2,intval
real :: a(nn,nn,4),v(mm,mm,4)
real :: vart(mm,mm,4)
real :: sloc1(mm,mm,2),sloc2(nn,nn,2)
real :: res1,res2
open(11,file='F:\cx\trec.dat',form='binary',status='old')
do k=1,4
read(11) a(:,:,k)
where(a(:,:,k)<0)
a(:,:,k)=0
endwhere
enddo
close(11)
res1=0.01
res2=0.16
do i=1,mm
do j=1,mm
sloc1(i,j,1)=112.0+(i-1)*res1
sloc1(i,j,2)=23.3+(i-1)*res1
enddo
enddo
do i=1,nn
do j=1,nn
sloc2(i,j,1)=112.07+(i-1)*res2
sloc2(i,j,2)=23.38+(i-1)*res2
enddo
enddo
intval=int(res2/res1)
do k=1,4
do i=1,mm
do j=1,mm
! write(*,*) i,j,k
if(sloc1(i,j,1).ge.sloc2(1,1,1).and.sloc1(i,j,1).le.sloc2(nn,1,1))then
if(sloc1(i,j,2).ge.sloc2(1,1,2).and.sloc1(i,j,2).le.sloc2(1,nn,2))then
i1=int((sloc1(i,j,1)-sloc2(1,1,1))/res2)
i2=i1+1
j1=int((sloc1(i,j,2)-sloc2(1,1,2))/res2)
j2=j1+1
if(i2.le.sloc1(mm,j,1).and.j2.le.sloc1(i,mm,2).and.i1.ge.1.and.j1.ge.1)then
! write(*,*) i1,i2,j1,j2
v(i,j,k)=a(i1,j1,k)*(sloc2(i2,j1,1)-sloc1(i,j,1))*(sloc2(i2,j2,2)-sloc1(i,j,2))&
&+a(i2,j,k)*(sloc1(i,j,1)-sloc2(i1,j1,1))*(sloc2(i2,j2,2)-sloc1(i,j,2))&
&+a(i1,j2,k)*(sloc2(i2,j1,1)-sloc1(i,j,1))*(sloc1(i,j,2)-sloc2(i1,j1,2))&
&+a(i2,j2,k)*(sloc1(i,j,1)-sloc2(i1,j1,1))*(sloc1(i,j,2)-sloc2(i1,j1,2))
endif
endif
endif
enddo
! write(*,*) i,j,k
enddo
enddo
open(unit=12,file='F:\cx\trec2.dat',form='binary',status='old')
do g=1,4
write (12) v(:,:,g)
enddo
close(unit=12)
end program
求助大神帮忙看看这个插值程序哪里出错了
|
|