美文网首页
fortran处理二进制文件

fortran处理二进制文件

作者: Aerosols | 来源:发表于2018-11-06 16:44 被阅读0次

一共有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

image.png
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

相关文章

  • fortran处理二进制文件

    一共有ixXiyXkxX30X12X33,网格点数X20层X30个变量X12个月X33年的数据,二进制grd加ct...

  • 利用Python的subprocess调用Fortran

    目前有个需求,即由python的subprocess模块调用fortran语言编译的二进制执行文件; 其中fort...

  • GPOPSIM软件使用

    软件介绍软件介绍 软件用途软件用途 语言:Fortran 90 输入文件 一个TXT文本文件,Fortran语言风...

  • git push大文件处理方法

    Git对二进制文件处理效率不高(Git默认会压缩并存储二进制文件的所有完整版本,如果二进制文件很多,这种做法显然不...

  • File文件读写

    一、python3读文本 二、处理二进制文件 使用struct来解析二进制数据 三、设置文件的缓冲 python文...

  • App Store上架出现"二进制文件无效"的处理方法

    App Store上架出现"二进制文件无效"的处理方法 App Store上架点击审核之后,出现二进制文件无效,最...

  • tomcat目录结构

    \bin 目录binary文件,startup.bat shutdown.bat 等二进制批处理文件

  • Xcode 10 各种报错

    1.Xcode上传成功后,itunes上却显示二进制文件无效的处理方法 二进制文件无效的解决方法: Product...

  • C语言

    第一章 预处理阶段->得到.i文件->编译阶段->得到.s文件->汇编阶段->得到.o文件(二进制文件)->链接阶...

  • 关于python中文件和数据的处理

    文件分为文本文件和二进制文件,文件的处理步骤是:打开-操作-关闭。 文件打开文件打开使用:<变量名> = f.op...

网友评论

      本文标题:fortran处理二进制文件

      本文链接:https://www.haomeiwen.com/subject/syvuxqtx.html