Fortran处理资料,读取文件问题
把书重新看了一遍,里面说open只能读取单个文件。但我一直好奇不能通过循环来读取更多文件吗,非要复制一大行open来读取很多文件吗?有谁知道其他办法吗?我的编程如下:(,...
把书重新看了一遍,里面说open只能读取单个文件。但我一直好奇不能通过循环来读取更多文件吗,非要复制一大行open来读取很多文件吗?
有谁知道其他办法吗?
我的编程如下:(,计算2000年4月13日20时和4月14日08时500和850hPa的涡度以及散度,水汽通量、水汽通量散度 。。。。老是提示找不到路劲unused local variable NAME)
parameter(nx=111,ny=61,a=63.71,pi=3.14,g=9.8)
dimension u(nx,ny),v(nx,ny),vor(nx,ny),div(nx,ny),q(nx,ny),adqv(nx,ny),qu(nx,ny),qv(nx,ny)
real lat(ny)
integer i,j
parameter(n=3)
character name(n)*13
data (name(i),i=1,n)/'00041312.50u','00041312.50v','00041312.50Q'/
do i=1,n
open(i,file='f:\data\name(n)',status='old',form='formatted')
end do
read(1,*)
do j=1,ny
read(11,100)(u(i,j),i=1,nx)
enddo
close(1)
read(2,*)
do j=1,ny
read(12,100)(v(i,j),i=1,nx)
enddo
close(2)
read(3,*)
do j=1,ny
read(13,100)(q(i,j),i=1,nx)
enddo
CLOSE(3)
100 format(10f8.2)
do j=1,ny
lat(j)=10.0+float(j-1)*1.0
lat(j)=lat(j)*pi/180
enddo
do i=2,nx-1
do j=2,ny-1
vor(i,j)=((v(i+1,j)-v(i-1,j))/(cos(lat(j))*pi/180)-(u(i,j+1)-u(i,j-1))/pi*180+2*u(i,j)*tan(lat(j)))/(2*a)
div(i,j)=((u(i+1,j)-u(i-1,j))/(cos(lat(j))*pi/180)+(v(i,j+1)-v(i,j-1))/pi*180-2*v(i,j)*tan(lat(j)))/2/a
qu(i,j)=q(i,j)*u(i,j)
qv(i,j)=q(i,j)*v(i,j)
adqv(i,j)=((u(i,j)*(q(i+1,j)-q(i-1,j))/(cos(lat(j))*pi/180)+v(i,j)*(q(i,j+1)-q(i,j-1))/(pi/180))/(2*a)+q(i,j)*div(i,j))/g
enddo
enddo
open(8,file='f:\data\adqv.grd',form='binary')
write(8)((vor(i,j),i=1,nx),j=1,ny)
write(8)((div(i,j),i=1,nx),j=1,ny)
write(8)((adqv(i,j),i=1,nx),j=1,ny)
write(8)((qu(i,j),i=1,nx),j=1,ny)
write(8)((qv(i,j),i=1,nx),j=1,ny)
close(8)
end
根据下楼的建议修改为:open(i,file="f:\data\"//trim(name(i)),status='old',form='formatted')
链接后,没有错误,但还是显示“ warning FOR4280: unused local variable NAME
” 展开
有谁知道其他办法吗?
我的编程如下:(,计算2000年4月13日20时和4月14日08时500和850hPa的涡度以及散度,水汽通量、水汽通量散度 。。。。老是提示找不到路劲unused local variable NAME)
parameter(nx=111,ny=61,a=63.71,pi=3.14,g=9.8)
dimension u(nx,ny),v(nx,ny),vor(nx,ny),div(nx,ny),q(nx,ny),adqv(nx,ny),qu(nx,ny),qv(nx,ny)
real lat(ny)
integer i,j
parameter(n=3)
character name(n)*13
data (name(i),i=1,n)/'00041312.50u','00041312.50v','00041312.50Q'/
do i=1,n
open(i,file='f:\data\name(n)',status='old',form='formatted')
end do
read(1,*)
do j=1,ny
read(11,100)(u(i,j),i=1,nx)
enddo
close(1)
read(2,*)
do j=1,ny
read(12,100)(v(i,j),i=1,nx)
enddo
close(2)
read(3,*)
do j=1,ny
read(13,100)(q(i,j),i=1,nx)
enddo
CLOSE(3)
100 format(10f8.2)
do j=1,ny
lat(j)=10.0+float(j-1)*1.0
lat(j)=lat(j)*pi/180
enddo
do i=2,nx-1
do j=2,ny-1
vor(i,j)=((v(i+1,j)-v(i-1,j))/(cos(lat(j))*pi/180)-(u(i,j+1)-u(i,j-1))/pi*180+2*u(i,j)*tan(lat(j)))/(2*a)
div(i,j)=((u(i+1,j)-u(i-1,j))/(cos(lat(j))*pi/180)+(v(i,j+1)-v(i,j-1))/pi*180-2*v(i,j)*tan(lat(j)))/2/a
qu(i,j)=q(i,j)*u(i,j)
qv(i,j)=q(i,j)*v(i,j)
adqv(i,j)=((u(i,j)*(q(i+1,j)-q(i-1,j))/(cos(lat(j))*pi/180)+v(i,j)*(q(i,j+1)-q(i,j-1))/(pi/180))/(2*a)+q(i,j)*div(i,j))/g
enddo
enddo
open(8,file='f:\data\adqv.grd',form='binary')
write(8)((vor(i,j),i=1,nx),j=1,ny)
write(8)((div(i,j),i=1,nx),j=1,ny)
write(8)((adqv(i,j),i=1,nx),j=1,ny)
write(8)((qu(i,j),i=1,nx),j=1,ny)
write(8)((qv(i,j),i=1,nx),j=1,ny)
close(8)
end
根据下楼的建议修改为:open(i,file="f:\data\"//trim(name(i)),status='old',form='formatted')
链接后,没有错误,但还是显示“ warning FOR4280: unused local variable NAME
” 展开
3个回答
2009-05-16
展开全部
do i=1,n
open(i,file='f:\data\name(n)',status='old',form='formatted')
end do
这段中open语句是有问题的。
name应该是character数组,它后面有空白字符的,而且括号里应该用变量i,而不是n。
open(i,file="f:\data\"//trim(name(i)),status='old',form='formatted')
==================
答复补充:
parameter(nx=111,ny=61,a=63.71,pi=3.14,g=9.8,parameter(n=3)
u(nx,ny),v(nx,ny),vor(nx,ny),div(nx,ny),q(nx,ny),adqv(nx,ny),qu(nx,ny),qv(nx,ny)
real lat(ny)
integer i,j
)
character(len=13) name(n)
data (name(i),i=1,n)/'00041312.50u','00041312.50v','00041312.50Q'/
do i=1,n
open(i,file="f:\data\"//trim(name(i)),status='old',form='formatted')
end do
open(i,file='f:\data\name(n)',status='old',form='formatted')
end do
这段中open语句是有问题的。
name应该是character数组,它后面有空白字符的,而且括号里应该用变量i,而不是n。
open(i,file="f:\data\"//trim(name(i)),status='old',form='formatted')
==================
答复补充:
parameter(nx=111,ny=61,a=63.71,pi=3.14,g=9.8,parameter(n=3)
u(nx,ny),v(nx,ny),vor(nx,ny),div(nx,ny),q(nx,ny),adqv(nx,ny),qu(nx,ny),qv(nx,ny)
real lat(ny)
integer i,j
)
character(len=13) name(n)
data (name(i),i=1,n)/'00041312.50u','00041312.50v','00041312.50Q'/
do i=1,n
open(i,file="f:\data\"//trim(name(i)),status='old',form='formatted')
end do
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询