Fortran实习-子程序调用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实习二 区域水汽压计算
实习目的:熟悉水汽压物理量的计算方法,掌握子程序的循环调用。 实习内容:
已知有区域(25ºN-50ºN ,100°E-140ºE ),水平分辨为5纬度×10经度的露点温度(ºC )如下,请利用下面公式(1),计算各个格点的水汽压值(hPa )。
区域露点温度资料 7.5()237.36.1110
d d t t
e ⨯+=⨯ (1)
资料输入提示:可用以下Fortran 语句对资料进行输入。 data td/17.8,17.9,18.1,18.2,18.3,18.2, & 17.9,18.0,18.1,18.3,18.4,18.3, & 18.1,18.2,18.2,18.4,18.5,18.4, & 18.2,18.3,18.3,18.2,18.4,18.2, & 18.1,18.2,18.3,18.2,18.2,17.9/
实习要求:
根据实习内容和资料,以调用子程序形式计算水汽压,撰写Fortran 程序,并运行检查。
program main
implicit none
external e
real td(30)
real es(30)
data td/17.8,17.9,18.1,18.2,18.3,18.2, &
17.9,18.0,18.1,18.3,18.4,18.3, &
18.1,18.2,18.2,18.4,18.5,18.4, &
18.2,18.3,18.3,18.2,18.4,18.2, &
18.1,18.2,18.3,18.2,18.2,17.9/
call e(td,es)
print '(1x,5f10.5)',es
end program
subroutine e(b,p)
real b(30)
real p(30)
integer ::i=0
do i=1,30
p(i)=6.11*10**((7.5*b(i))/(237.3+b(i)))
enddo
end subroutine
心得体会:此次实习我们主要训练了子程序的运用,子程序使编程的规范性可读性更强,使其更简洁的服务于人类需要。个人感觉插入子程序不是难点,语法上并不复杂,而逻辑上很符合人类思维方式,难点在于怎样把实际问题转化成所需的子程序。
这个实习内容并不是很难,但有很多细节需要注意。比如数组的逻辑结构和存储结构不一样,存储是按列进行的,所以最好使用循环才能按照指定格式输出结果。
今后我应该多多复习细节上的问题,多阅读良好的程序培养自己的编程能力。