centos7.6安装Funwave-TVD 3.3全过程

基本环境如下:%后表示获取该信息使用的命令, /表示或者

    系统版本:CentOS Linux release 7.6.1810 (Core)      %cat /etc/redhat-release

    gnu编译器版本:4.8.5                                                      %gcc/gfortran --version

    openmpi版本:1.6.5

    intel 编译器版本:2018

    Funwave版本:3.3

 

安装过程:

(1)新建一个文件夹Funwave3.3,把Funwave的压缩包解压到该目录下(假设压缩包放在主目录下),过程如下:

cd $HOME

mkdir Funwave3.3

tar zxvf FUNWAVE-TVD-Version_3.3.tar.gz -C/$HOME/Funwave3.3/

(2)根据个人需求,修改makefile,这里只是一个示例。

cd Funwave3.3/FUNWAVE-TVD-Version_3.3

cd src

ln -sf Makefile-Mills Makefile          %这里打开了并行计算,此时要确保系统上有并行编译器。

make

(3)编译的过程不同的环境难免出错,根据错误提示进行修改

3.1 错误1

io.f90(1184): error #6404: This name does not have a type, and must have an explicit type.   [RAND]
          Phase_LEFT(J,I)=rand(0)*2.0_SP*3.1415926
--------------------------^

这里io.F这个源码里头引用了为定义的函数RAND

解决办法:

vim io.F

阅读模式下输入/Phase_LEFT(J,I)=rand*2.0_SP*3.1515926查找,可以发现SUBROUTINE READ_INPUT没有定义RAND,此时在io.F第133行输入如下一行来声明RAND为外部函数:

REAL(SP), EXTERNAL ::RAND

保存退出之后重新编译

make clean

make

错误2:(错误1之后又出现错误2,同样类型的错误,按照错误1的解决办法修改)

wavemaker.f90(193): error #6404: This name does not have a type, and must have an explicit type.   [RAND]
          Phase2D(J,I)=rand(0)*2.0_SP*pi
-----------------------^
wavemaker.f90(808): error #6404: This name does not have a type, and must have an explicit type.   [RAND]
          Phase_Ser(kf)=rand(0)*2.0_SP*3.1415926
------------------------^
wavemaker.f90(1112): error #6404: This name does not have a type, and must have an explicit type.   [RAND]
          Phase_Ser(kf)=rand(0)*2.0_SP*3.1415926
------------------------^
wavemaker.f90(1571): error #6404: This name does not have a type, and must have an explicit type.   [RAND]
          phi1(kf,ktheta)=rand(0)*2.0_SP*pi
--------------------------^
wavemaker.f90(1787): error #6404: This name does not have a type, and must have an explicit type.   [RAND]
          phi1(kf,ktheta)=rand(0)*2.0_SP*pi
--------------------------^
compilation aborted for wavemaker.f90 (code 1)
make: *** [wavemaker.o] Error 1

解决办法:

wavemaker.F中的第61, 934, 1267, 1549, 1833行分别添加以下一句:

REAL(SP), EXTERNAL :: RAND

make clean

make

编译完成。Makefile中用到的模型功能如下所示:

#==========================================================================
#--------------------------------------------------------------------------
#        PRECISION          DEFAULT PRECISION: SINGLE                     
#                           UNCOMMENT TO SELECT DOUBLE PRECISION
#--------------------------------------------------------------------------

#            FLAG_1 = -DDOUBLE_PRECISION
             FLAG_2 = -DPARALLEL
             FLAG_3 = -DCARTESIAN
#              FLAG_4 = -DINTEL
#               FLAG_5 = -DCOUPLING
#             FLAG_6 = -DZALPHA
#              FLAG_7 = -DMANNING
#                FLAG_8 = -DVESSEL
#               FLAG_9 = -DMETEO
#              FLAG_10 = -DWIND
#               FLAG_11 = -DSEDIMENT
#               FLAG_12 = -DCHECK_MASS_CONSERVATION
#--------------------------------------------------------------------------
#  mpi defs
#--------------------------------------------------------------------------
         CPP      = /usr/bin/cpp
         CPPFLAGS = $(DEF_FLAGS)
         FC       = mpif90
         DEBFLGS  =
         OPT      =
         CLIB     =
#==========================================================================

         FFLAGS = $(DEBFLGS) $(OPT)
         MDEPFLAGS = --cpp --fext=f90 --file=-
         RANLIB = ranlib

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值