Daily Archives: January 27, 2011

今天见着诺贝尔了

中午经过研究所北门,有很奇怪的一哥们在北门口大声的喊道:我是诺贝尔,不该把火药发明成炸药,我是大傻X (啪啪啪打自己的声音)。字圆腔正,有板有眼。^_^

在mingw/win7上进行 micromet/snowmelt

Micro-met提供了优秀的气象要素的插值方法。其代码是fortran写成。在windows 7下进行编译需要一点trick。

1. 安装mingw,我安装的gcc 是4.4.0 版本。

2. 安装gfortran,一样4.4.0 版本。

3. 在micro-met code目录下,写一个 build.bat文件,内容是

gfortran -O3 -I. -o ../snowmodel enbal_code.f micromet_code.f preprocess_code.f readparam_code.f snowmodel_main.f snowpack_code.f snowtran_code.f dataassim_user.f outputs_user.f

4. Build.bat生成的snowmodel.exe将在上一级目录。

5. 确保 mingw的bin目录在path里,双击 build.bat,将在上级目录生成 snowmodel.exe

6. 切换到上级目录,双击生成的snowmodel.exe,提示说 页面文件太小,无法执行,类似。在命令行里执行snowmodel,将提示“系统无法执行指定的程序”。此提示是由于内存不够引起。清空占用内存的程序腾出内存一般可以解决。如果还不够,设置page file缓冲。

7. 这是由于 gfortran生成的代码受32MB 内存的限制。一些详细的解释可见以下网址:

http://www.trnicely.net/misc/vista.html

8. 使用管理员权限打开 regedit,在ComputerHKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlWOW 目录下,新建一个 DWORD类型的键DpmiLimit,并将其值设成128000000 (10进制),或者0x7A12000(16进制)。关闭注册表。

9. 双击build.bat重新编译。

10. 在命令行里,执行 snowmodel,将执行。