麻烦高手帮我将fortran转成C++ 或者帮我写个注释
我自己尝试着写了一下,希望各位帮我指正一下,多谢!!
! program mian
! integer deltat,ifh0,nx,ny,nz,nt,idx_map,nvar
! real dx,dy
! integer idx_vars(nvar)
! real var(nx,ny,nz,nt,nvar),xlon(nx,ny),xlat(nx,ny)
!---------------------------
! 调用前需要对()中的变量赋值。
.....
!--------------------------
!call putout1h(filename,deltat,ifh0,nx,ny,nz,nt,nvar,
! + dx,dy,idx_map,xlon,xlat,idx_vars,var)
!end
subroutine putout1h(filename,deltat,ifh0,nx,ny,nz,nt,nvar,
+ dx,dy,idx_map,xlon,xlat,idx_vars,var) //声明函数putout1h
integer deltat,ifh0,nx,ny,nz,nt,idx_map,nvar //声明整形
real dx,dy //浮点型声明
integer idx_vars(nvar) //声明整形数组
real var(nx,ny,nz,nt,nvar),xlon(nx,ny),xlat(nx,ny) //声明三个浮点型数组第一个五维数组
!input
character filename*200 //字符串
!temp
real,allocatable::u1h(:,:,:,:) //应该类似开辟一个内存块吧?这里不清楚了
integer idx_vars0(nvar+2) //声明一个整形数组?
!---------------------------------------------
idx_vars0(1)=1 //类似 int idx_vars0[1] = 1
idx_vars0(2)=2 //类似 int idx_vars0[2] = 2
do iv=1,nvar-2 //类似 for(int iv = 1;iv <nvar-2; i++)
idx_vars0(iv+2)=idx_vars(iv) //类似idx_vars0[iv+2]=idx_vars[iv]
enddo
allocate(u1h(nx,ny,nz,nt)) //这里好像是真的分配内存块吧,搞不灵清了
!-------------------------------------------------
! read head
open(1,file=trim(filename),form='binary') //打开文件
write(1) deltat //第一行写入 这里问题最大 是说我文件里 个名字是deltat的变量,然后把这个变量的值取出来么?
write(1) ifh0 //第二行写入 同理 将ifho的值取出来
write(1) nx //同上
write(1) ny //同上
write(1) nz //同上
write(1) nt //同上
write(1) idx_map
write(1) dx
write(1) dy
write(1) nvar+2
write(1) idx_vars0 //同上
write(1) xlon
write(1) xlat
do i=1,nvar
write(1) u1h
do it=1,nt
do iz=1,nz
do iy=1,ny
do ix=1,nx
var(ix,iy,iz,it,i)=u1h(ix,iy,iz,it)
enddo
enddo
enddo
enddo
enddo
close(1)
return
deallocate(u1h)
end
搞了一大圈 发现最大的问题是,我不知道他是如何读取文件中的数据的,因为这个fortarn语句的功能就是读取一个dat文件,将dat文件转成一个类似excel表格的txt文件 请教了,谢谢
[解决办法]
是不是matlab等可以完成自动转换?