美文网首页
build delft3d on ubuntu 16

build delft3d on ubuntu 16

作者: 西贝_贾 | 来源:发表于2020-04-06 21:22 被阅读0次

    一些基础论坛知识

    Please check the following sites for additional information:

    General information: http://oss.deltares.nl/web/delft3d/source-code

    FAQ : http://oss.deltares.nl/web/delft3d/faq

    Compile forum : http://oss.deltares.nl/web/delft3d/general/-/message_boards?_19_mbCategoryId=200432

    Copyright (C) Stichting Deltares, 2011-2017.

    本教程适用于Ubuntu 16,高版本的有问题,使用的某个包版本过新

    安装必要的包

    按照以下命令安装所需的包,这些可以使用系统自带的版本,delft3d的源

    码可以自行下载

    
    sudo apt-get update
    
    sudo apt-get upgrade
    
    sudo apt-get install subversion
    
    sudo apt-get install autoconf
    
    sudo apt-get install libtool
    
    sudo apt-get install flex
    
    sudo apt-get install g++ 
    
    sudo apt-get install gfortran
    
    sudo apt-get install libstdc++6
    
    sudo apt-get install byacc
    
    sudo apt-get install libexpat1-dev
    
    sudo apt-get install uuid-dev
    
    sudo apt-get install ruby
    
    sudo apt-get install gedit
    
    svn co https://svn.oss.deltares.nl/repos/delft3d/trunk delft3dtrunk
    
    cd ~/delft3dtrunk/src
    
    

    安装特定的库文件

    需要几个特定的库文件,包括zlib,hdf5,netcdf-c,netcdf-f,mpich2

    In your home directory, go to Downloads and make a directory, e.g. libraries for installation all the libraries. type in:

    建立临时文件夹

    
    cd ~/Downloads
    
    mkdir libraries
    
    cd libraries
    
    

    编译安装库

    Download the libraries codes and compile them.

    
          BASHRC="~/.bashrc"
    
    

    这一步不是必须的,可能没用

    安装zlib

    
    v=1.2.8 
    
    wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4/zlib-${v}.tar.gz
    
    tar -xf zlib-${v}.tar.gz && cd zlib-${v}
    
    export ZLIB_DIR=/usr/local/zlib-${v}
    
    

    这儿的zlib可以自由下载,版本不低于这个都可以,ZLIB_DIR导出共后续设置环境变量使用

    
    ./configure --prefix=$ZLIB_DIR
    
    #sudo make check install
    
    make
    
    sudo make install
    
    export PKG_CONFIG_PATH=$ZLIB_DIR/lib/pkgconfig:$PKG_CONFIG_PATH
    
    

    这一步先导出吧,后续编译hdf5时指定了with-zlib的路径,所以不是必须的

    安装HDF5

    
    v=1.8.13
    
    wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4/hdf5-${v}.tar.gz
    
    tar -xf hdf5-${v}.tar.gz && cd hdf5-${v}
    
    echo "# HDF5 libraries for Delft3D"
    
    export HDF5_DIR="/usr/local/hdf5-${v}"
    
    

    这步的HDF5_DIR导出也是共后续使用,config的时候要指定zlib的路径

    
    ./configure --enable-shared=yes --enable-hl --prefix=$HDF5_DIR --with-zlib=$ZLIB_DIR
    
    make -j 2 /* -j 2 的意思是使用2个核心进行编译,不需要
    
    make
    
    make check
    
    sudo make install
    
    cd ..
    
    

    导出HDF5的路径,hdf5没有使用pkg-config,所以不用导出PKG_CONFIG_PATH 变量

    
    export PATH=$HDF5_DIR/bin:$PATH
    
    export LD_LIBRARY_PATH=$ZLIB_DIR/lib:$HDF5_DIR/lib:$LD_LIBRARY_PATH
    
    

    安装netcdf c

    官方帮助文档见unidata

    这儿的netcdf可以使用新的版本,netcdf其实就是netcdf clibrary,也是

    netcdf最基础的库,必须首先安装这个,我用了4.7.4版本的

    
    v=4.4.0
    
    wget http://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-${v}.tar.gz
    
    tar -xf netcdf-${v}.tar.gz && cd netcdf-${v}
    
    echo "# NETCDF4 libraries for Delft3D"
    
    export NETCDF4_DIR="/usr/local/netcdf-4.4.0"
    
    

    编译参数给出HDF5和zlib的路径,最好先写hdf5的

    
    export CPPFLAGS="-I$HDF5_DIR/include -I$ZLIB_DIR/include"
    
    export LDFLAGS="-L$HDF5_DIR/lib -L$ZLIB_DIR/lib"
    
    ./configure --enable-netcdf-4 --enable-shared=yes --enable-dap --prefix=$NETCDF4_DIR
    
    

    以上三行命令如果不分开写的话可以不用导出export CPPFLAGS LDFLAGS,如果单独运行了,就得导出变量

    如果一起写的话如下:

    
    CPPFLAGS="-I$HDF5_DIR/include -I$ZLIB_DIR/include" \
    
    LDFLAGS="-L$HDF5_DIR/lib -L$ZLIB_DIR/lib" \
    
    ./configure --enable-netcdf-4 --enable-shared=yes --enable-dap --prefix=$NETCDF4_DIR
    
    

    配置无误,然后编译,安装,然后导出netcdf的变量

    
    make
    
    make check # 这步check个人认为有必要
    
    sudo make install
    
    cd ..
    
    export PATH=$PATH:$NETCDF4_DIR/bin
    
    export LD_LIBRARY_PATH=$NETCDF4_DIR/lib:$LD_LIBRARY_PATH
    
    export PKG_CONFIG_PATH=$NETCDF4_DIR/lib/pkgconfig:$PKG_CONFIG_PATH
    
    

    安装netcdf fortran

    官方帮助文档见Netcdf fortran

    
    v=4.4.4
    
    wget http://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-fortran-${v}.tar.gz
    
    unzip netcdf-fortran-${v}.zip && cd netcdf-fortran-${v}
    
    export NETCDF_FOR_DIR=/usr/local/netcdf-f-${v}
    
    

    此处我把netcdf fortran和netcdf c分别安装到了不同的文件夹,也可以在同一文件夹安装。

    
    export CPPFLAGS="-I$NETCDF4_DIR/include"
    
    export LDFLAGS="-L$NETCDF4_DIR/lib"
    
    

    这两步导出了netcdf c的处理变量,安装netcdf fortran只需要netcdf c,hdf5和zlib的不需要,然后编译安装即可

    
    ./configure --prefix=$NETCDF4_DIR
    
    make
    
    make check # 有必要,可以发现问题
    
    sudo make install
    
    cd ..
    
    

    安装完成后没有导出netcdf fortran的一些环境变量,是因为安装mpich不需要,这些环境变量最后统一在bashrc文件中初始化。

    安装MPICH

    
    v=3.2
    
    wget http://www.mpich.org/static/downloads/${v}/mpich-${v}.tar.gz
    
    tar -xzf mpich-${v}.tar.gz
    
    cd mpich-${v}
    
    export MPICH2_DIR="/usr/local/mpich-${v}"
    
    ./configure --prefix=$MPICH2_DIR
    
    make
    
    sudo make install
    
    cd ..
    
    export PATH=$MPICH2_DIR/bin:$PATH
    
    export LD_LIBRARY_PATH=$MPICH2_DIR/lib:$LD_LIBRARY_PATH
    
    export PKG_CONFIG_PATH=$MPICH2_DIR/lib/pkgconfig:$PKG_CONFIG_PATH
    
    

    编译安装完库后可以将环境变量添加到shell的配置文件中,此处用的是zsh,如果是其它的手动替换。

    
    echo "export PATH=$MPICH2_DIR/bin:$NETCDF_FOR_DIR/bin:$NETCDF4_DIR/bin:$HDF5_DIR/bin:$PATH" >> ~/.zshrc
    
    echo "export LD_LIBRARY_PATH=$MPICH2_DIR/lib:$NETCDF_FOR_DIR/lib:$NETCDF4_DIR/lib:$HDF5_DIR/lib:$ZLIB_DIR/lib:$LD_LIBRARY_PATH" >> ~/.zshrc
    
    echo "export PKG_CONFIG_PATH=$MPICH2_DIR/lib/pkgconfig:$NETCDF_FOR_DIR/lib/pkgconfig:$NETCDF4_DIR/lib/pkgconfig:$ZLIB_DIR/lib/pkgconfig:$PKG_CONFIG_PATH" >> ~/.zshrc
    
    

    编译Delft3D源码

    Go back to ~/delft3dtrunk/src, build DELFT3D source code,

    Check in file ./build_ubuntu1604.sh that all references to libraries, include files, etc. match with the paths on your system, and then type in, for example:

    切换到源码的文件夹,修改build.sh文件,指定正确的mpich,netcdf,hdf5及zlib的路径,然后用build.sh直接编译即可

    
    ./build_ubuntu1604.sh -gnu -64bit
    
    

    另一种方法是手动config,手动编译,这样的话需要给出几个附加的环境变量。

    
    export MPI_INCLUDE=$MPICH2_DIR/include
    
    export MPILIBS_ADDITIONAL="-L$MPICH2_DIR/lib -lfmpich -lmpich -lmpl"
    
    export MPIFC=$MPICH2_DIR/bin/mpif90
    
    export MPIF77=$MPICH2_DIR/bin/mpif77
    
    export MPICXX=$MPICH2_DIR/bin/mpicxx
    
    

    编译成功后的操作

    官方给出的操作如下:

    After finishing the compiling, there must be a bin directory in ~/delft3dtrunk. You probably have to copy some mpi libraries to the bin directory.

    
    cp ~/Downloads/libraries/mpich-3.2/lib/* ~/delft3dtrunk/bin/lnx64/flow2d3d/bin
    
    cp ~/Downloads/libraries/mpich-3.2/bin/* ~/delft3dtrunk/bin/lnx64/flow2d3d/bin
    
    cd ~/delft3dtrunk/bin/lnx64/flow2d3d/bin
    
    chmod a+x *
    
    

    官方文档给出的这两步其实是将所有运行需要的库文件都复制到了delft3d的bin文件夹,这样在运行时自动从当前文件夹查找,这是一种方法,好处是在其它机器上部署的话直接把这个文件夹拷走就行了?我自己没有试过。

    另一种方法是之前已经安装了许多依赖,因此可以将之前安装的库文件添加到环境变量里,就不用复制了。执行以下代码:

    
    sudo mkdir -p /usr/local/delft3d
    
    sudo cp -r bin /usr/local/delft3d/
    
    sudo cp -r lib /usr/local/delf3d/
    
    echo "export PATH=/usr/local/delft3d/bin:$PATH"
    
    echo "export LD_LIBRARY_PATH=/usr/local/delft3d/lib:$LD_LIBRARY_PATH"
    
    

    测试

    官方给出的教程:

    Running examples without GUI

    ============================

    In directory "examples\01_standard":

    • Execute script "run_flow2d3d.sh"

      Parallel:

      • Depending on your system settings, you might need to change the script "run_flow2d3d_parallel.sh"

      • Execute script "run_flow2d3d_parallel.sh"

    REMARK:

    1. In step 3, you can get the version of libraries of netcdf, netcdf-fortran, mpich2 by changing the v variable .

    2. In step 3, if it complains " The install directory can't be the same with the build or src directory", you may have to adjust the directory name and the path accordingly.

    两个联系人

    qinghua.ye@deltares.nl

    adri.mourits@deltares.nl

    相关文章

      网友评论

          本文标题:build delft3d on ubuntu 16

          本文链接:https://www.haomeiwen.com/subject/yrpiphtx.html