FVCOM安装

    本人以前未接触过FVCOM相关,甚至都不知道FVCOM 是干什么的,但是领导要我安装部署FVCOM ,因此,作为菜鸟程序员,不管FVCOM架构及如何使用,单纯站在程序员角度安装部署FVCOM环境。

    FVCOM(An Unstructured Grid, Finite-Volume Coastal Ocean Model,无结构网格有限体积海洋海岸模型),包含多种生态、海洋等模型(只知道用处很多哈☺)。下面正式讲FVCOM安装:

 一、 FVCOM 获取;

在官网获取与实际应用所需的版本,解压缩,得到文件结构如下:

二、FVCOM安装/编译到运行共包含五个步骤:

前提:官网文档上FVCOM编译及其简单,未说明其前提,需保证编译了libs下的五个库件,且生成的文件需放在make.inc中指定的路径下;未编译成功,会报各种乱七八糟的错。

1. 编译源码

编译源码有两种途径,手动和自动;对于自动编译,运行configure.sh脚本,使其重建“make.inc”文件。运行命令如下:

进入Configure路径,对于串行环境:./configure.sh series;

对于并行环境:./configure.sh parallel。

注:执行configure,前提需保证系统安装了mpicc(作用:Compiles and links MPI programs written in C);mpich安装见附录。

编译之后,修改FVCOM_source目录下的make.inc文件(根据需求选择);

(1) 必须指定“TOPDIR”,”LIBDIR”,”INCIDR”。 TOPDIR一般为make.inc所在路径,本文为:/home/FVCOM3.1.6/FVCOM_source;

 

其他两个可为默认,这两个路径是库文件和include文件路径,该路径包含FVCOM所依赖的库,即:编译libs文件下的5个库,产生的.a等文件需保证在上图指定的LIBDIR和INCCDIR内,若该路径没有,需要将产生的文件复制到该路径。编译成功包含的文件如下:

(2)修改FVCOM_source目录中的make.inc中编译器相关的段落(这里需根据你编译器的具体情况指定)

       (3)最后在FVCOM_source目录下执行make,编译成功会生成fvcom文件。

错误及解决方案集锦:
(1)执行make,出现错误,显示gcc: no input files.
解决方案:进入FVCOM_source目录中的make.inc,找到local install模块下的LIBDIR and INCDIR路径,去掉其注释符,再make。
(2)make,出现错误,显示:
make[2]: *** [ncvalues.lo] 错误 1
make[1]: *** [install-recursive] 错误 1
make: *** [all] 错误 2
解决方案:根据Entering directory进入目录,vi ncvalues.cpp,
#include <string>改为#include <string.h>
(3)make,出现错误,显示:
/usr/bin/ld: cannot  find –lmetis 。
原因:是libs未编译成功。
解决方案:查看本文libs编译部分;进行libs编译。
(4)make,出现新问题: collect2: error: ld returned 1 exit status。
可能原因:函数需要其他库文件或实现;缺少库文件;多个库文件链接顺序(source目录下的Makefile里有指出必要时需更改库文件顺序);也是make,出现新问题4: collect2: error: ld returned 1 exit status。可能原因:函数需要其他库文件或实现;缺少库文件;多个库文件链接顺序(source目录下的Makefile里有指出必要时需更改库文件顺序);
解决方案:查看本文libs编译部分;进行libs编译。

(4)若想使用fvcom的预处理包,进入FVCOM_source-》input,执行make all命令;

2.产生运行清单

(1)新建与FVCOM_source并行目录run;将fvcom复制到run目录,或为fvcom可执行文件创建软链接,创建软链接命令:

 ln –s  /home/FVCOM3.1.6/FVCOM_source/fvcom  /home/FVCOM3.1.6/FVCOM_source/run/fvcom

(2)执行./fvcom;桌面显示信息;

(3)继续执行./fvcom --CREATE_NAMELIST blank,产生blank_run_nml。根据需求修改该文件中参数,并重命名。

3.准备输入文件

输入文件有两种格式,一种ASCII格式,包含文件:

另一种是netcdf文件格式,除以上指出的dat文件外,其他输入文件都必须为netcdf文件格。(FVCOM提供MATLAB预处理程序,帮助用户创建netcdf文件)

4.运行FVCOM

串行:./fvcom --casename=your casename

并行:进入run目录。执行:

mpiexec -n “cpu num” ./fvcom --casename=your casename。其中,“cpu num”是并行进程数。

5.监控FVCOM性能

6.注意事项

若FVCOM应用于多处理器环境,则需编译METIS库。,METIS图表分区库用于执行FVCOM并行化的主要分解部分,该库程序以c语言编码,且必须从主代码中单独编译。若FVCOM未应用于多处理器环境,则没必要编译这些库文件。

步骤:

  1. 编辑METIS source 目录下的makefile,指定C编译器,未避免兼容性,推荐与Fortran 编译器出自同一公司。
  2. 使用make编译,若成功,则生成“libmetis.a”。

三、附录

附录1:编译libs库

进入FVCOM_source下的libs,在该路径下make。

问题:出现 /bin/sh: ./untar.sh :Permission denied 错误,修改该文件权限解决该问题:chmod 777 untar.sh。
继续make,出现新问题:--log2错误;
解决:将 kmetis.c kvmetis.c util.c proto.h rename.h 这些文件里的log2 全部改成 ilog2即可。

注意:若一直不成功,则需要单独编译libs下的几个库。

附录2:安装netcdf

make check,遇到一个关于sfc_pres_temp_rd.cpp的错误,

需进入netcdf3.1.6/examples/CXX目录,vi sfc_pres_temp_rd.cpp,

改为:

#include <iostream>
#include <string.h>
#include <netcdfcpp.h>

附录3:MPICH安装

1. 安装包下载http://www.mpich.org/downloads/

2.解压并配置环境

进入安装包所在的目录下,运行tar xzvf mpich-x.x.x.tgz解压;
切换到解压出来的包目录下进行 configure编译环境配置,./configure --prefix=/usr/local/mpich-x.x.x CC=icc CXX=icpc FC=ifort F77=ifort

3.安装:make make install

4.添加环境变量
 

修改/root/.bashrc 文件,添加 export PATH=$PATH:/usr/local/mpich-3.2.1/bin
export MANPATH=$MANPATH:/usr/local/mpich-3.2.1/man
#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib添加库共享路径 .

5. 验证:在源码包examples目录下,输入:

mpirum –np 3 /home/mpich-3.2.1/examples/cpi

 

猜你喜欢

转载自blog.csdn.net/renzhewudi77/article/details/81806538