让模式源代码动起来

2020-04-21 17:49:31 浏览数 (1)

每个转数值模式的都逃不了查看源代码的命运。每当看源代码时,总是理不清那复杂的亲属关系。为了在查阅源代码时更好的理清思路,我们可以使用 f90tohtml 构建模式代码调用流程图。

f90tohtml 是转化 FORTRAN 源代码为 html 的 perl 脚本。所有子程序的调用关系都会被串起来,从而构建一个调用流程树。除此之外,还支持使用 正则表达式 对源代码进行检索,可以边查边搜索,多开(苦)心(逼)啊。

f90tohtml 的目的就是为了浏览数值预报模式的庞大程序库(作者估计也是一个搞模式的啊)。可以查看ARPS,MM5,PSU/UCAR,COAPMS等模式的源代码,当然少不了WRF模式了。

安装

  • 下载 源码安装包,然后解压
代码语言:javascript复制
tar -zxvf f90tohtml.tar.gz
  • 进入 f90tohtml 目录下,编辑 f90tohtml 文件
代码语言:javascript复制
cd f90tohtml
vi f90tohtml

更改 perl 的路径,文件中默认的为 #!/usr/bin/perl

将其更改为你的系统中的 perl 的路径,可能是 /usr/local/bin/perl 或 /usr/bin/perl

然后更改 f90tohtml 路径为解压后 f90tohtml 所在路径

$path_f90tohtml="/home/bfiedler/f90tohtml/"

  • 更改权限(根据你所使用的环境,可能需要使用 root 权限执行)
代码语言:javascript复制
chmod u x f90tohtml
  • 添加 f90tohtml 路径到 .bashrc 或 .cshrc 中
代码语言:javascript复制
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 目录,进入到此目录下
代码语言:javascript复制
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,并没有放到外网,所以和我不在一个内网下的你是无法查看的

0 人点赞