一共有ixXiyXkxX30X12X33,网格点数X20层X30个变量X12个月X33年的数据,二进制grd加ctl文件,求33年平均,10年平均,5年平均。生成的是文本文件。
编译器把Fortran高级语言翻译为机器码,即扩展名为exe的文件。
ifort test.f90
./a.out
如果不想使用默认的a.out作为执行文件的名字,
则编译时可以使用ifort test.f90 -o hello
在遇到数据量大的时候 http://www.nbi.dk/cgi-bin/man2html?ifort+1
在编译时使用 ifort -mcmodel=medium test.f90

program main
implicit none
integer,parameter:: ix=195,jx=153,kx=20,nvar=30
integer i,j,k,ivar,iyr,imn,yrb,yre
real var(ix,jx,kx,nvar),sumvar(ix,jx,kx,nvar)
real mean_33(ix,jx,kx,nvar),mean_5(ix,jx,kx,nvar,6),mean_10(ix,jx,kx,nvar,3) ,mean_3(ix,jx,kx,nvar)
real varyr(ix,jx,kx,nvar,33)
character(len=80) filename
character(len=4) cyr
character(len=2) cmn
yrb=1980
yre=2012
sumvar=0.
varyr=0.
do iyr = yrb, yre
do imn = 1, 12
write (cyr(1:4),fmt='(i4.4)') iyr
write (cmn(1:2),fmt='(i2.2)') imn
filename="/public/month_avg/"//cyr//"/"//"testd2."//cyr//cmn//".grd"
open(11,file=filename,convert='big_endian',form='binary',status='old')
print*,filename
do ivar = 1, nvar
do k =1 ,kx
read(11) ((var(i,j,k,ivar),i=1,ix),j=1,jx)
!varyr(i,j,k,ivar,iyr-1979) = varyr(i,j,k,ivar,iyr-1979)+var(i,j,k,ivar)
enddo
enddo
varyr(:,:,:,:,iyr-1979) = varyr(:,:,:,:,iyr-1979) + var
!print*,varyr(:,10,4,1,1)
!pause
close(11)
enddo
enddo
do i=1,6
sumvar=0.
do j=1+(i-1)*5,i*5
sumvar=varyr(:,:,:,:,j)+sumvar
enddo
mean_5(:,:,:,:,i)=sumvar/5./12.
enddo
do i=1,3
sumvar=0.
do j=1+(i-1)*10,i*10
sumvar=varyr(:,:,:,:,j)+sumvar
enddo
mean_10(:,:,:,:,i)=sumvar/10./12.
enddo
sumvar=0.
do j=1,33
sumvar=varyr(:,:,:,:,j)+sumvar
enddo
mean_33=sumvar/33./12.
!print*,varyr(:,1,1,1,1)
!stop
sumvar=0.
do j=30,33
sumvar=varyr(:,:,:,:,j)+sumvar
enddo
mean_3=sumvar/3./12.
!open(21,file="mean33_3.bin",form="binary",status='unkowmn')
open(21,file="mean33_2.log")
do ivar=1,nvar
do k=1,1
write(21, "(153(1XF12.4))") ((mean_33(i,j,k,ivar),i=1,ix),j=1,jx)
! !write(21, "(75(1XF8.2))") ((mean_3(i,j,k,ivar),i=1,ix),j=j,jx)
enddo
enddo
open(21,file="mean3_2.log")
do ivar=1,nvar
do k=1,1
write(21, "(153(1XF12.4))") ((mean_3(i,j,k,ivar),i=1,ix),j=1,jx)
enddo
enddo
close(21)
!
!!open(21,file="mean5.bin",form="binary",status='unkowmn')
open(21,file="mean5_2.log")
do iyr=1,6
do ivar=1,nvar
do k=1,1
write(21,"(153(1XF12.4))") ((mean_5(i,j,k,ivar,iyr),i=1,ix),j=1,jx)
enddo
enddo
enddo
close(21)
!
!open(21,file="mean10.bin",form="binary",status='unkowmn')
open(21,file="mean10_2.log")
do iyr=1,3
do ivar=1,nvar
do k=1,1
write(21,"(153(1XF12.4))") ((mean_10(i,j,k,ivar,iyr),i=1,ix),j=1,jx)
enddo
enddo
enddo
close(21)
end
网友评论