爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3799|回复: 4

fortran中每个不同的文件对应的输出结果都跟第一个文件一样

[复制链接]

新浪微博达人勋

发表于 2020-4-3 18:00:38 | 显示全部楼层 |阅读模式
Fortran
系统平台: fortran
问题概况: 我通过Fortran编程计算对流层顶高度,即利用探空数据(探空气球上升时每秒采集的高度和温度数据),输入文件中的高度和温度数据,后一个温度减前一个温度除以后一个高度减前一个高度,算出来小于0.002且这个高度以上2000m内的温度递减率都满足小于0.002的最低高度是对流层顶高度,单独处理一个文件时程序输出结果正常,且换了几个文件,都能输出不同的结果,后来我在前面加了一个批量处理文件的主程序,把计算对流层顶的程序变成子例行程序,结果每个不同的文件输出的结果都跟第一个文件输出的结果一样,不知道在哪个部分出错了
问题截图:
我看过提问的智慧: 看过
自己思考时长(天): 7

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 chocoooe 于 2020-4-3 18:02 编辑

我通过Fortran编程计算对流层顶高度,即利用探空数据(探空气球上升时每秒采集的高度和温度数据),输入文件中的高度和温度数据,后一个温度减前一个温度除以后一个高度减前一个高度,算出来小于0.002且这个高度以上2000m内的温度递减率都满足小于0.002的最低高度是对流层顶高度,单独处理一个文件时程序输出结果正常,且换了几个文件,都能输出不同的结果,后来我在前面加了一个批量处理文件的主程序,把计算对流层顶的程序变成子例行程序,结果每个不同的文件输出的结果都跟第一个文件输出的结果一样,不知道在哪个部分出错了
program ex01
implicit none
external trop
integer m,error
character fname*12
open(11,file='C:\var\guangdong_1\L\2016_rw\list.txt',status='old',iostat=error)
do m=1,441
   read(11,'(A12)')fname
   if(error/=0)exit
   call trop(fname)
end do
close(11)
end program
subroutine trop(fname)
implicit none
integer :: i,j=1,k=1,error
character fname*12
integer,parameter::s1=50000  
real hgt(s1),pre(s1),temp(s1),rh(s1),sita(s1),uu(s1),vv(s1),tro(s1),dhgt(s1),dtemp(s1),dht(s1)
open(45,file='C:\var\guangdong_1\L\2016_rw\'//Trim(AdjustL(fname))//'')
do i=1,2700
    read(45,'(f8.1,f8.1,f8.1,f8.1,f8.1,f8.2,f8.2)')pre(i),hgt(i),temp(i),sita(i),rh(i),uu(i),vv(i)
end do
do i=700,2700
           dhgt(i)=hgt(i+1)-hgt(i)
           dtemp(i)=temp(i)-temp(i+1)
           dht(i)=dtemp(i)/dhgt(i)
  if(dht(i)<0.002)then
                k=i+1
       do_while:do while(hgt(k)-hgt(i)<=2000.0)
           dhgt(k)=hgt(k)-hgt(i)
           dtemp(k)=temp(i)-temp(k)
           dht(k)=dtemp(k)/dhgt(k)
           if(dht(k)<=0.002) k=k+1
           if(dht(k)>0.002) EXIT do_while
       end do do_while
  end if
if (hgt(k)-hgt(i)>2000.0)then
     tro(j)=hgt(i)
           j=j+1
end if
end do
close(45)
open(46,file='C:\var\guangdong_1\L\2016_jf\'//Trim(AdjustL(fname))//'')
write(46,'(f8.1)')tro(1)
close(46)
end subroutine trop

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2020-4-3 18:11:56 | 显示全部楼层
你的数据呢?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-4-3 18:17:23 | 显示全部楼层

   982.1   370.0    12.6    14.1    79.0   -1.17   -2.76
   980.3   380.0    12.7    14.3    77.0   -1.17   -2.76
   979.6   386.0    12.9    14.6    77.0   -1.17   -2.76
   978.9   396.0    12.9    14.6    76.0   -1.22   -2.74
   978.1   402.0    12.9    14.7    76.0   -1.22   -2.74
   977.3   407.0    12.9    14.8    76.0   -1.22   -2.74
   976.6   417.0    12.8    14.7    76.0   -1.22   -2.74
   975.9   422.0    12.8    14.8    76.0   -1.22   -2.74
   975.0   428.0    12.8    14.9    75.0   -1.22   -2.74
   974.3   438.0    12.7    14.8    75.0   -1.22   -2.74
   972.8   449.0    12.7    15.0    75.0   -1.27   -2.72
   972.1   459.0    12.6    14.9    75.0   -1.27   -2.72
   971.4   464.0    12.6    15.0    75.0   -1.27   -2.72
   970.6   475.0    12.6    15.0    75.0   -1.27   -2.72
   969.8   480.0    12.5    15.0    75.0   -1.27   -2.72
   969.0   486.0    12.5    15.1    75.0   -1.27   -2.72
   968.1   496.0    12.4    15.1    75.0   -1.27   -2.72
   967.1   501.0    12.4    15.1    76.0   -1.32   -2.70
   965.2   517.0    12.3    15.2    75.0   -1.32   -2.70
   963.4   528.0    12.3    15.4    75.0   -1.32   -2.70
   962.6   538.0    12.2    15.3    75.0   -1.22   -2.74
   961.9   543.0    12.2    15.4    75.0   -0.78   -1.84

大概是这个样子的,第二列和第三列是高度和温度数据

1585908874(1).png
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 成长值: 0
发表于 2020-4-3 18:34:52 | 显示全部楼层
程序和数据发我邮箱 i@nui.st
晚上帮你看
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-4-3 19:09:02 | 显示全部楼层
kermit 发表于 2020-4-3 18:34
程序和数据发我邮箱
晚上帮你看

发给你啦!!谢谢大佬~
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表