每个转数值模式的都逃不了查看源代码的命运。每当看源代码时,总是理不清那复杂的亲属关系。为了在查阅源代码时更好的理清思路,我们可以使用 f90tohtml 构建模式代码调用流程图。
f90tohtml 是转化 FORTRAN 源代码为 html 的 perl 脚本。所有子程序的调用关系都会被串起来,从而构建一个调用流程树。除此之外,还支持使用 正则表达式 对源代码进行检索,可以边查边搜索,多开(苦)心(逼)啊。
f90tohtml 的目的就是为了浏览数值预报模式的庞大程序库(作者估计也是一个搞模式的啊)。可以查看ARPS,MM5,PSU/UCAR,COAPMS等模式的源代码,当然少不了WRF模式了。
安装
- 下载 源码安装包,然后解压
tar -zxvf f90tohtml.tar.gz
- 进入 f90tohtml 目录下,编辑 f90tohtml 文件
cd f90tohtml
vi f90tohtml
更改 perl 的路径,文件中默认的为 #!/usr/bin/perl
将其更改为你的系统中的 perl 的路径,可能是 /usr/local/bin/perl 或 /usr/bin/perl
然后更改 f90tohtml 路径为解压后 f90tohtml 所在路径
$path_f90tohtml="/home/bfiedler/f90tohtml/"
- 更改权限(根据你所使用的环境,可能需要使用 root 权限执行)
chmod u x f90tohtml
- 添加 f90tohtml 路径到 .bashrc 或 .cshrc 中
cd ~
vi .bashrc
export PATH=$PATH:/f90tohtmlpath/
- 进入 f90tohtml 目录下的 examples 目录,然后编辑 d2ps_prepare.pl 和 crm_prepare.pl ,改变其中的 $the_path 为f90tohtml/examples/d2ps 所在路径。改变 d2ps.f2h 中的 $dir_html,这是用来指定要创建的 d2psbrowser 路径。注意:不要自行创建此目录。
- 键入 perl d2ps_prepare.pl ,然后执行此脚本,最终会创建 d2ps_ls 目录和此目录下的 src.ls 文件
- 然后键入 f90tohtml d2ps.f2h ,如果成功了的话,就可以使用任意浏览器查看源代码了
以上只是安装及测试,下面主要说一下WRF模式代码调用树的构建
- 在 f90tohtml 目录下执行 ll 即可查看目录内容,可以看到 nwp_codes 目录,进入到此目录下
cd nwp_codes
vi wrf_prepare.pl
- 然后更改 $the_path 为WRF源码路径 : /path/of/wrf/../WRFV3/
- 键入 perl wrf_prepare.pl 生成 .ls 等文件(一般生成后就不用管了)
- 改变 wrf.f2h 中的 $dir_html 为转换后的输出目录
- 然后键入 f90tohtml wrf.f2h 即可得到你想要的结果了
注:浏览代码时,程序旁的绿色圆表示打开流程树,青色的圆表示调用状态
后面就可以方便的看源代码了
以下是完成后的效果图
打开 index.html
以上就是构建后的所有代码,每一个模块和子程序的开始行都有两个数字,这就是代码的 被调用次数 和 调用其它子程序的次数。一般要查看的调用代码是在右下角的窗口显示。
左上角为目录窗口,底部提供了正则表达式引擎,用于进行代码检索
构建好流程树后也可以搭建个 ftp 服务器,供大家查看,如下图:
注:不要好奇那个 IP 地址了,这仅是在本地搭建的 ftp,并没有放到外网,所以和我不在一个内网下的你是无法查看的