note16-ubuntu上装Generic Grid Generator (g3)或(gCubed)

在ubuntu上装Generic Grid Generator (g3)或(gCubed)

g3是专门为pop海洋模式设计模式水平网格所用的图形软件。由POP的娘家LANL开发(小作坊式的),现在已经停止技术支持。但如果你用ccsm3,或者干脆就是pop,又想做古气候模拟,那很抱歉,你不得不和这个小工具打交道了。

---------------------------------------

编译gCubed需要安装的库函数包:netCDF和VTK4.2

编译器为F90,C++

GUI解释器还需要expectk

此外,为编译上述库函数或gCubed本身,还需要cmake, icc,ifort,g++,c++,gfortran

(如果是在裸机上装,境况将相当悲惨。。。)

所幸,在小U上,大部分软件都直接可以sudo apt-get install 软件名,一个命令就OK,当然,前提是你连在网上。

这些可以直接安装的软件包括: cmake ,VTK 5.0(注意不是4.2,版本不一样,所以才麻烦大了,万恶的gcubed…),gcc/g++/c++/gfortran(感谢强大的gcc编译家族,虽然有些时候也会失灵,而暂时的输给intel家族),expectk

---------------------------------------

当然,netCDF也是可以直接sudo apt-get install,不过,默认安装路径似乎不能自己指定,这让我很不爽,于是自己下载3.6.2版源代码,自己编译,用起来自己知道在那里,方便了很多。具体方法也说一下吧:

先要装ifort(intel fortran)

用电子邮件注册,取得注册码,下载源码包,解压,照着说明书一步一步装,命令记得最好加sudo。

ifort装好后,在.bashrc中添加如下两行:

export PATH=$PATH:/opt/intel/idb/10.0.023/bin/

export PATH=$PATH:/opt/intel/fc/10.0.023/bin/

之后,一切正常

编译netcdf时可能会遇到gcc版本问题,在.bashrc中添加如下一行以设置gcc路径:

export GXX_ROOT=/usr/lib/gcc/i486-linux-gnu/4.0.3/

编译安装netcdf,需要使用下面命令:

(如果ifort命令可以使用的话)

export FC=ifort

export F90=ifort

export FFLAGS=”-O -mp”

export CPPFLAGS=”-DNDEBUG -DpgiFortran”

如果ifort不能使用,则将其替换为/opt/intel/fc/9.1.043/bin/ifortbin;

然后:

sudo ./configure –prefix=/usr/local

sudo make check

sudo make install

---------------------------------------

然后是VTK4.2,不得不说,本来5.0就够用了,如果不是gcubed的话。可惜4.2版本里的有些过时的内容还要在gcubed里用到,没办法,只好千辛万苦从网上下一个源码包,解压到/home/wy/下,然后:

> cd   /home/wy/VTK

> cmake -i

> make

make过程中,有几个地方报错,是由于c++编译器版本太高了,我把出错的函数都给注释了,不影响大局的,就OK了。

注意安装顺序,icc装好设置好之后,cmake会默认使用icc编译,但这里用icc过不去,所以只好把.bashrc中路径设置注释掉,重启系统,默认使用cc或gcc,g++编译,才顺利装好VTK4.2。

---------------------------------------

之后(最好是在装好VTK4.2之后),装icc,和ifort类似,只不过路径设置只需在.bashrc中添加如下一行即可:

export PATH=$PATH:/opt/intel/cc/10.1.008/bin/

注意设置.bashrc之后都要重启终端,以刷新.bashrc

---------------------------------------

最后才是gcubed包,版本为2007年8月16日更新的版本。解压到/home/wy,然后:

cd /home/wy/gCubed/tripole/build/   %这里不需修改,但要删除原来编译好的.o文件

rm *.o

make

第一个部分tripole编译没什么问题

********************************

cd /home/wy/gCubed/hg2nc/build/

需要修改该目录下的makefile文件:

CC = g++

CCFLAGS = -g

VTK_INC = -I/home/wy/VTK 

-I/home/wy/VTK/Common 

-I/home/wy/VTK/Filtering 

-I/home/wy/VTK/Graphics 

-I/home/wy/VTK/Hybrid 

-I/home/wy/VTK/IO 

-I/home/wy/VTK/Imaging 

-I/home/wy/VTK/Rendering 

-I/home/wy/VTK/Utilities/jpeg 

-I/home/wy/VTK/Utilities/png 

-I/home/wy/VTK/Utilities/zlib 

-I/home/wy/VTK/Wrapping 

-I/home/wy/VTK/Wrapping/Tcl

netCDF_INC = -I/user/local/include 

              -I/home/wy/netcdf-3.6.2/cxx

INC_DIRS = $(VTK_INC) $(netCDF_INC) -I../include

OBJS = goyou2pop.o etopo.o text2nc.o

VTK_LIBS = -L/home/wy/VTK/bin -lvtkRendering   -lvtkGraphics 

-lvtkImaging -lvtkFiltering -lvtkCommon -lvtkIO -lvtkHybrid 

     -lvtkftgl -lvtkfreetype

netCDF_LIBS = -L/usr/local/lib -lnetcdf_c++ -lnetcdf

上面是makefile文件需要修改的部分,VTK的库用的是4.2版本的,其lib在/home/wy/VTK/bin下,我的netCDF装在/user/local/下的lib和include下,源代码在/home/wy/netcdf-3.6.2/下。

改好之后,make就可以了。

这样,第二部分ok。

******************************

cd /home/wy/gCubed/e3/build/

修改Makefile文件:

CC = c++

CCFLAGS =

VTK_INC = -I/usr/include/vtk-5.0

netCDF_INC = -I /usr/local/include

INC_DIRS = $(VTK_INC) $(netCDF_INC) -I../source

OBJS = coastlines.o gridLines.o pickCallBack.o subPickCallBack.o 

        controls.o gridValues.o subGridLines.o textDisplay.o 

        fastEd.o subGridValues.o topography.o

VTK_LIBS = -L/usr/lib -L/usr/lib/vtk-5.0/CMake 

       -L/home/wy/VTK/bin    -lvtkRendering   -lvtkGraphics 

-lvtkImaging -lvtkFiltering -lvtkCommon -lvtkIO -lvtkHybrid 

     -lvtkftgl -lvtkfreetype

netCDF_LIBS = -L/usr/local/lib   -lnetcdf_c++ -lnetcdf

上面修改的部分中,VTK的include文件用的是5.0版本,lib也大部分是5.0版本,但只用5.0版本编译时会报错,说有个libvtkfreetype.so找不到,据查,这个库在5.0中已经消失不见,只好补上4.2版本的lib文件路径,于是make,顺利ok。

第三部分也好了

**********************************

cd /home/wy/gCubed/nc2pop/build/

修改makefile为如下内容:

FC = gfortran

FFLAGS =

INCS = -I/usr/local/include

OBJS = pop2grid.o

LIBS = -L/usr/local/lib -lnetcdf

../../run/pop2grid: pop2grid.o netcdf.o

gfortran -o ../../run/pop2grid -g -O0 pop2grid.o netcdf.o -L/usr/local/lib -lnetcdf

pop2grid.o: ../source/pop2grid.f90 netcdf.mod

$(FC) $(FFLAGS) $(INCS) -c $<

netcdf.o:

cp /home/wy/netcdf-3.6.2/f90/netcdf.o .

netcdf.mod: typesizes.mod

cp /home/wy/netcdf-3.6.2/f90/netcdf.mod .

typesizes.mod:

cp /home/wy/netcdf-3.6.2/f90/typesizes.mod .

这个文件里用的编译器本来是pgf90,就是前面提到的f90,用gfortran替换。

然后make,一切顺利的话就搞定了,万事OK.

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

您正在使用您的 WordPress.com 账号评论。 登出 /  更改 )

Google photo

您正在使用您的 Google 账号评论。 登出 /  更改 )

Twitter picture

您正在使用您的 Twitter 账号评论。 登出 /  更改 )

Facebook photo

您正在使用您的 Facebook 账号评论。 登出 /  更改 )

Connecting to %s