![b76e74e3f5efebcc0f32c46f32fac61c.gif](https://i-blog.csdnimg.cn/blog_migrate/a05878b998a11f117ff0bc9150c56ec5.gif)
点击上方蓝字,关注我们
NCL读取netcdf文件并进行绘图十分方便,此外还可以进行循环等计算,但是NCL是解释性的语言,在循环计算等方面的效率十分低。这里介绍如何调用Fortran中的子函数进行计算来提高效率:
1. 步骤:
![83a4eaa3509bae82af0a90275acb50e4.png](https://i-blog.csdnimg.cn/blog_migrate/67fe2cc7224be8a71fa1198f12be8197.png)
注:
① stub声明变量的格式
② so文件可以理解为让NCL可以读懂的媒介
C NCLFORTSTART
subroutine f1 (x, y, z)integer
real
C NCLEND
或者:
C NCLFORTSTARTfunction f2 (x, y, z)integer
real
C NCLEND
③ abc是调用函数的“引子”,告诉NCL我们要调用Fortran啦
2. 示范:
a) 提前准备好要调用的子函数,用Fortran写好,保存为ex01.F90:
![0d5127d59b6a5dcbafc5a6833d913118.png](https://i-blog.csdnimg.cn/blog_migrate/37f79baa5de295a8cd7a4f8feb9d5673.jpeg)
b) 为F90文件写好变量声明,保存为ex01.stub:
![0abb48fc8dc8a68498410b546ec41e10.png](https://i-blog.csdnimg.cn/blog_migrate/e77ed981f32e1efe395654261f37624c.jpeg)
c) 按照步骤的方式,在NCL脚本中加入Fortran函数调用申明并调用子函数:
d) 运行:
① 先产生so文件:WRAPIT ex01.stub ex01.f90
② 运行ncl:ncl ex01.ncl
刚开始y是没有值的,由new函数初始化,最后输出到屏幕可以看出试验成功。
参考:NCL官网范例
http://www.ncl.ucar.edu/Document/Manuals/
PS. 感谢小婷同学提供的材料
![5fec4850574a652ada60e9410be543e9.png](https://i-blog.csdnimg.cn/blog_migrate/935af5df5faed5facd660b57edcf826c.jpeg)