在Ubuntu18.04上编译SWASH模型

  • SWASH模型
  • 编译准备
    • 源代码下载
    • Intel Fortran Compiler安装
    • MPICH库安装
    • 其它
  • 编译代码

本文内容参考了用户Mr.ZhengGang的blog ,有兴趣的朋友请到大佬的博客(Mr.ZhengGang–构建HPC生态)上了解更详细的内容。

SWASH模型

SWASH是由Delft大学开发,用于模拟非静压条件下的水动力/波浪运动的数值模型。
模型适用于非稳态、静压/非静压、自由表面的或旋转的流动,以及以及由波浪、潮汐、浮力或风力驱动的沿海水域的运输现象(盐度、温度、悬沙)。

编译准备

这里选择IVF+MPICH的配置,编译并行版的SWASH代码。
Linux系统下Swash的编译过程也可参考:swash编译安装教程。

源代码下载

SOURCEFORGE主页: SWASH home page.
源代码下载:SWASH 7.01
(现更新至swash-7.01版)

Intel Fortran Compiler安装

首先执行以下命令

sudo apt-get update
sudo apt-get install gcc-c++

以升级库并安装 gcc 环境
之后到官网下载 Intel Fortran Compiler parallel studio xe并解压(建议选择2013及以上的版本)。
之后打开解压后的文件夹,输入以下命令

./install.sh

之后按步骤进行安装。本人习惯将其安装于 /opt/intel/parallel_studio_xe_2018 这样的目录下。
安装完成后进入安装文件夹下的bin文件夹,检查icc、icpc、ifort等是否存在。
输入命令:vim ~/.bashrc 进入bash文件,在最后加上:

source /opt/intel/composer_xe_2013.0.079/bin/iccvars.sh intel64
source /opt/intel/composer_xe_2013.0.079/bin/ifortvars.sh intel64
source /opt/intel/composer_xe_2013.0.079/mkl/bin/mklvars.sh intel64

MPICH库安装

安装MPICH库的方法有:

  1. [推荐]直接用sudo apt-get install mpich 安装
  2. 去官网下载MPHICH,解压并编译安装

此处不再介绍方法2,仅考虑上述方法1;在安装完成后,用 mpich --version 检查mpich的版本。之后在终端中输入:

export PATH=/usr/bin:$PATH
#大致就是修改.bashrc文件,在最后一行添加上面那句命令,但是注意命令里的路径需要修改。

以添加环境变量。(附上Linux系统中修改环境变量的教程)

其它

SWASH代码包中还有perl脚本。不过一般的Linux系统中都装有perl库,所以不必额外安装。

编译代码

在终端中进入swash源代码所在的文件夹,输入make可查看所有 make指令

This Makefile supports the following:
make config    -- makes machine-dependent macros include file
make ser       -- makes the serial swash.exe executable
make omp       -- makes the OpenMP swash.exe executable
make mpi       -- makes the    MPI swash.exe executable
make doc       -- makes the SWASH documentation (PDF)
make clean     -- removes compiled objects and modules
make clobber   -- removes compiled objects, modules and swash.exe
make cleandoc  -- removes all SWASH documents

首先输入make config以形成新的macro.inc文件。打开该文件我们可以看到

##############################################################################
# IA32_Intel/x86-64_Intel:  Intel Pentium with Linux using Intel compiler 17.
##############################################################################
F90_SER = ifort
F90_OMP = ifort
# if appropriate, use mpiifort of Intel instead
F90_MPI = mpif90
FLAGS_OPT = -O2
FLAGS_MSC = -W0 -assume byterecl -traceback -diag-disable 8290 -diag-disable 8291 -diag-disable 8293
FLAGS90_MSC = $(FLAGS_MSC)
FLAGS_SER =
FLAGS_OMP = -qopenmp
FLAGS_MPI =
INCS_SER =
INCS_OMP =
INCS_MPI =
LIBS_SER =
LIBS_OMP =
LIBS_MPI =
OUT = -o
EXTO = o
MAKE = make
RM = rm -f
swch = -unix -impi

看到注释 #if appropriate, use mpiifort of Intel instead;这意味着如果要编译SWASH的并行版本,可将上述macro.inc文件中的 F90_MPI = mpif90 改成 F90_MPI = mpiifort 后保存,继而完成后续的编译。

接下来,我们将通过make ser(非并行)或make mpi(并行)生成 swash.exe。
以并行版本为例,在修改并保存macro.inc文件后,输入make mpi,几分钟后,终端的显示如下:
(图示为阿里云Ubuntu18.04的终端界面)

图中红框内容表示swash.exe已经编译。

在文件夹中可看到编译生成的swash.exe。
之后使用swashrun指令即可运行swash程序。

在Ubuntu18.04上编译SWASH模型相关推荐

  1. 在Windows10上编译SWASH模型

    在Windows10上编译SWASH模型 SWASH模型简介 编译准备 源代码下载 Microsoft Visual Studio安装 Intel Visual Fortran安装 Perl安装 MP ...

  2. Ubuntu18.04上编译并跑通VINS-Fusion

    VINS-Fusion github 地址:​​​​​​GitHub - HKUST-Aerial-Robotics/VINS-Fusion: An optimization-based multi- ...

  3. 在Ubuntu18.04上编译安装NTL

    这篇文章介绍一下NTL库的编译安装过程,也包含测试程序来帮助检查是否已经安装成功 由于NTL库需要依赖GMP库,所以需要先完成GMP的安装,可以参考我的文章「Ubuntu安装GMP」 首先要在http ...

  4. 【FFmpeg】FFmpeg5.1在ubuntu18.04上编译

    [目录]郭老二博文之:图像视频汇总 1.FFmpeg5.1源码下载 https://github.com/FFmpeg/FFmpeg/tree/release/5.1 2.配置 ./configure ...

  5. 20221218解决在Ubuntu18.04下编译Firefly的Core-3588J出现lz4的问题

    20221218解决在Ubuntu18.04下编译Firefly的Core-3588J出现lz4的问题 2022/12/18 15:37 解决方法:编译最新的lz4的dev分支! https://wi ...

  6. 【python初级】 Ubuntu18.04上升级pip

    [python初级] Ubuntu18.04上升级pip 1.背景 2.pip3升级 3.示例 1.背景 我们使用pip安装模块的时候经常提示安装失败,经常由于pip版本太老造成. 为什么要升级pip ...

  7. Ubuntu14.04上编译指定版本的protobuf源码操作步骤

    Google Protobuf的介绍可以参考 http://blog.csdn.net/fengbingchun/article/details/49977903 ,这里介绍在Ubuntu14.04上 ...

  8. ubuntu18.04上安装ffmpeg

    ubuntu18.04上安装ffmpeg 下载ffmpeg wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.t ...

  9. 在32位Ubuntu 10.04上编译Android 2.3

    在32位Ubuntu 10.04上编译Android 2.3 http://www.ylmf.net/ubuntu/tips/2011021722700.html 本人在Ubuntu 10.04系统 ...

最新文章

  1. Codeforces 1110G Tree-Tac-Toe (博弈论)
  2. a - 数据结构实验之串一:kmp简单应用_中高级面试必备:快速入门数据结构和算法
  3. 修改网站首页批处理_几个神奇的批处理,万事不求人!
  4. 数据库事务、存储过程、函数以及触发器之间的区别和联系
  5. Web流程图绘制使用raphael
  6. GNS3(eNSP)和VMWare搭建网络学习环境
  7. Java开发入门与实战!打印杨辉三角java代码
  8. Java开发心得:HttpServletRequest基本功能
  9. 计算机网络 考研复试常见题汇总
  10. asp.net接受表单验证格式后再提交数据_药物临床试验数据管理与统计分析的计划和报告指导原则...
  11. 5二十五项反措——防止机网协调事故
  12. 计算广告学(Computational Advertising)概述学习
  13. [Android]bp侧gerrit提交不上去时,删除编译生成的二进制文件
  14. 论文笔记:基于特征选择与增量学习的非侵入式电动自行车充电辨识方法
  15. 常用C++库及测试程序
  16. 神经网络提取图片特征,神经网络算法识别图像
  17. 摄像头模组 Golden Sample
  18. vector容器的动态分配空间
  19. 使用OpenCV实现一个文档自动扫描仪
  20. 链家地产-Java工程师面试

热门文章

  1. React + TS项目开发小技巧总结
  2. react中的 .d.ts
  3. IoT僵尸网络Miori通过ThinkPHP远程代码执行漏洞进行传播
  4. 超详细!简单的物联网模块esp8266接入小爱爱同学控制电器(一)——控制开关灯
  5. cad旋转命令_CAD中根据角度画圆弧的方法有哪些?【AutoCAD教程】
  6. 文件夹里面的文件批量改名字
  7. 怎样取消隐式推送_iPhone XS ios12系统隐式推送开启后怎么关闭
  8. sencha 安装教程
  9. Filezilla使用教程
  10. HashMap、ConcurrentHashMap原理分析