12/11/2011

新的开始

2011年12月10日,这天标志着又一个里程碑,纪念一下。

来香港三个半月了,一个学期就这样过去了,似乎什么都没有干。开始的时候做了点可视化工作,然后换了方向,做环境污染。但又得从大气模式开始,于是去学WRF,学GrADS,装NETCDF,看空气污染物扩散的文章。但基本都一知半解,毕竟那个领域太专了,整几个热能量、风应力什么的术语就把我搞晕了。前几段时间还有些进展,毕竟搭完了WRF框架,跑了几次模式。但后来就没继续了,一来不知道怎么继续; 二来要准备出国; 三来要考托福。是的,该死的托福。

我真不知道为什么有人能够每天如一日地准备大半年托福。我一拖再拖,剩最后十天左右才正式开始准备,但即使这样,中间有几天还是几度想要放弃。不知道为什么,每当准备托福,甚至一想到还要口语、还要写作、还要听力的时候,我就很恐慌,不愿意去触碰它。现在想来,可能只是自己太弱,被它吓到了吧。

终于还是挺了过来,不过还是没像太傻里那些人这么疯狂,我只是经常地听听力,听TPO,而阅读和写作基本没怎么练。我至今不明白加试、机经是什么。不过昨天做完自我感觉很不错,尤其是口语,我觉得自己条理应该挺清楚了,拿个合适的分数应该不成问题。

就因为这个托福,像一座重山一直压着我,让我无暇顾及其他(其实主要不是没时间,而是精力)。真正的学术耽搁了很久。算是一种代价吧,为了出国。如果这次成绩可以,那也算是种回报;可是万一仍不理想呢?那么之前的时间就相当于挥霍了。现实就是这么残酷,很多时候只是0和1,而没有中值。

下面更要抓紧弄研究了。一年的时间很短,再不出成果就什么都没了。我计划从可视化着手,从礼拜三起花一周的时间看看相关文献。关键字:wrf, cmaq, visulalization, air pollution.

11/17/2011

一个月的乱忙

从10月20号换了一个新方向,但现在已经一个月了。这个月真是忙的可以,主要是压力真的很大。

在忙什么?项目,TOEFL,出国申请,还有感情。

项目进展得不是很快,前期还可以,后面就不给力了,到现在没弄清WRF的各个参数,虽然能跑这个模式了,但跑得糊里糊涂。照理应该系统地看一下说明文档,只是没有时间,等过了这段时间,一定把它啃下来。

TOEFL,一听这个我就头大,满肚子的不自信。不知为什么,一接触他我就感觉压力倍增,可能是以前的印象太坏,甚至都留下了阴影。到现在也没怎么开始准备,只稍微练了下口语,这次口语成绩非常重要。

出国申请可能是最费时间的了。这么多学校、这么多老师,我上哪找和我相近的老师?最后只找了3个老师。试试看吧。

11/05/2011

WRF Introduction and Compilation


Recently (2011/10/20) I've started a new research project about air pollution simulation. In the research we are going to use atmospheric models as input and air pollutants dispersion models as the simulation tool. As a GISer, I have no idea about these models. So these three weeks is not a long time to get familiar with these concepts and configure and run the models.

WRF (Weather Research and Forecasting Model) is "mesoscale numerical weather prediction model designed to provide a  common framework for both operational numerical weather prediction and atmospheric  research". Although WRF is designed to solve mesoscale, or regional problems, it can also be used for smaller scales like local scales by means of nesting.

WRF consists of three components:
1. WRF itself
2. WPS, pre-processing system, to get in static data like terrain and gridded data
3. ARWPost, post-processing system, for data format transforming

This is the WRF system structure:

Compilation:
My environment: Ubuntu 11.10, 32bit
Fortran compiler: gFortran

To install WRF, you have to install NetCDF library first, which is a common shared library for scientific data access and sharing. 
Note: NetCDF 3.6.3 is required (ARWPost does not agree with NetCDF 4)

1. Download and install NetCDF, set environment variable NETCDF
2. Download WRF, configure and compile, according to specific cases. 
3. Download WPS, configure and compile
4. Download ARWPost. ARWPost is used to transform WRF output (wrfout_d*_*) to files (.dat and .tcl) that GrADS can read. And it has stopped to update, instead, NCL is used to directly read WRF output and visualize data, which is also more professional and accurate than GrADS. However, as more people nearby use GrADS, I choose it as well.

Everything is done.

Trouble shoot:
During the compilation, various errors and problems may rise up, mostly because of a lack of related libraries or environment variables. It is advised to redirect the compilation log to a log file:
./compile your_case >& compile.log
Then search the log file for such key words  as "error" "ignored" "no such file" "missing" "not found" "can't find", etc. You are not to complete the compilation until you can run wrf.exe and ideal.exe or real.exe in the run/ dir.

Below is some problems and solutions I came across when compiling:

1. Unknown command m4. Install m4: sudo apt-get install m4
2. Wrong with libcgool-ppl0.  Install libcgool-ppl0: sudo apt-get install libcgool-ppl0
3. When compiling module_cu_g3.o, input seed invalid. Edit module_cu_g3.F90,revise dimension (8) to dimension (12). (It is strange, beyond my understanding)





10/15/2011

Ogre(2)



Ogre的总体架构如下图,它主要是三个部分:
1. Scene Management,管理整个场景,包括模型如何组织,camera怎么放
2. Resource Management,管理资源,包括模型、纹理、字体等等,负责资源的加载、重用及释放
3. Rendering,对底层的rendering pipeline的包装,scene management用它来渲染场景内的内容。

对用户而言,root是他们所关心的,一切的开发从root开始。

另外,Ogre还有很多的plugin,可以根据需要来加载。


images/uml-overview
具体地看SceneManager

SceneManager管理着场景中的几乎所有东西:模型及其位置、camera、光、粒子等等。SceneManager还有很多种,如专门渲染地形的,渲染BSP maps的,等等(这里有详细列表)。

场景内的物体叫Entity,就是一些3D mesh。不过它只是单独的模型而已,并没有位置和朝向信息;所以Entity是不能直接加到场景里的,必须通过SceneNode. 

一个场景里可以有多个SceneNode,这些SceneNodes可以形成树状(parent node, child node,以及顶部的root node)。一个SceneNode可以attach多个Entity,也可以attach light object。但一个Entity attached 到一个SceneNode时,这个Entity才被渲染出来。注意,SceneNode的位置都是相对于parent SceneNode来的。




First Ogre application中一些代码的解释


mSceneMgr->setAmbientLight(Ogre::ColourValue(1.0, 1.0, 1.0)); //Ogre颜色采用RGB,每个值的范围在[0, 1]

Ogre::Entity* ogreHead = mSceneMgr->createEntity("Head", "ogrehead.mesh");//创建Entity,第一个参数是Entity的名称,必须是唯一的。第二个参数是要加载的mesh,这里用的是SDK中的资源

Ogre::SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("HeadNode");//创建一个childSceneNode,参数是SceneNode的名称,同样必须是唯一的

headNode->attachObject(ogreHead); //将Entity attached 到 SceneNode上
翻译自Ogre Basic Tutorial 1

Ogre(1)

Computational geometry需要花很多时间,因为项目需要,先看Ogre这个3d渲染引擎。

在选择这个引擎之前,将几个三维渲染引擎比较了一下,主要有OpenSourceGraph, Open Inventor, Visualization ToolKit, Unity3D, OpenSim等。最后选择了Ogre,主要因为它的资源比较多,代码复杂性小。Unity3D和OpenSim虽然可以联网操作,但前者性能较差,无法支持大量数据;后者数据结构复杂,不够灵活,不支持particle systems等。

Ogre从2001年起,逐渐成为最受欢迎的开源三维渲染引擎之一。它主要有这些特点:

1. 采用面向对象的设计原则,为开发者省去了底层的三维API操作;
2. 相比OSG只支持OpenGL,它同时支持Direct3D,为今后的扩展提供了可能;
3. 采用C++语言,支持跨平台
4. 虽然较多地用于游戏开发,但也可以用作科学可视化,尤其是可以与VTK(包含了许多计算机几何学的算法)结合。
5. Ogre的社区非常活跃,有大量的toturial,论坛里也有很多大牛。

基于以上原因,我打算尝试Ogre。

9/28/2011

Start learning computational geometry

It's too bad that I didn't know there exists a scientific field named Computational Geometry until today. I should have learnt the theory earlier. It covers many practical topics involved in GIS, such as shortest path analysis, map overlay and so on.

From today on, I will read the book Computational Geometry: Algorithms and Applications by M. de Berg, et al. I will keep record of the reading here.