📄 qiemiantu3.f90
字号:
program main
IMPLICIT NONE
integer i,j,k
real slicew(313,19),w(617,447,19)
real x(313),y(313)
character(len=40) inname(30),outname(30)
character(len=3) in
character(len=10) out
character(len=80) inpath
character(len=80) outpath
character(len=5) flnm
!把slicew(18,297)换成slicew(297,18)似乎更好,因为a(i,j)与a(i+1,j)在内存中位置连续
inpath='e:\dixing\w\'
outpath='e:\dixing\slicew\'
flnm='.dat'
in='dw_'
out='slicew_'
do i=7,21
write(unit=inname(i),fmt="(a3,i0.1)")in,(i)
!inuname(i)=trim(inu)//trim(adjustl(inuname(i)))
write(unit=outname(i),fmt="(a7,i0.1)")out,(i)
!outnbename(i)=trim(outnbe)//trim(adjustl(outnbename(i)))
write(*,*) inname(i),outname(i)
enddo
do k=7,21
write(*,*)trim(inpath)//trim(inname(k))//trim(flnm)
write(*,*)trim(outpath)//trim(outname(k))//trim(flnm)
open(10,file=trim(inpath)//trim(inname(k))//trim(flnm),form="binary")
read(10)w
close(10)
x(1)=227.0
y(1)=203.0
do i=2,313
x(i)=x(1)+(i-1)*0.5
y(i)=67.0*x(i)/156.0+16459.0/156.0
enddo
do j=1,19
slicew(1,j)=w(227,203,j)
slicew(313,j)=w(383,270,j)
enddo
do j=1,19
do i=2,312,2
slicew(i,j)=(w(int(x(i)),int(y(i)),j)+w(int(x(i+1)),int(y(i)),j)+w(int(x(i)),int(y(i+1)),j)+w(int(x(i+1)),int(y(i+1)),j))/4.0
enddo
enddo
do j=1,19
do i=3,311,2
slicew(i,j)=(w(int(x(i)),int(y(i)),j)+w(int(x(i)),int(y(i+1)),j))/2.0
enddo
enddo
!write(*,*)x
!write(*,*)y
open(12,file=trim(outpath)//trim(outname(k))//trim(flnm),form="binary")
!open(12,file="slicew.txt")
do j=1,19
do i=1,313 !j=1,297必须在里层,grads数据从内到外循环是x-y-z-v-t
if (slicew(i,j)>=9999.0)then
slicew(i,j)=1.e35
endif
write(12)slicew(i,j)
enddo
enddo
CLOSE(12)
enddo
end program
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -