How to install asl and ibamr tools:

ASL 和 IBAMR 都是有限元分析的工具,流体力学等,ASL可以使用GPU加速计算,

主机配置,i7 6代,1060, 32G,500G,ubuntu1604。

安装ASL、配置依赖、安装、运行测试:

1.GPU DRIVER && CUDA SDK OpenCL

  在Ubuntu 软件源下载GPU驱动。

  NVIDIA 官网下载cuda run安装包,安装时候不要选择图形图像显示驱动的安装。

装一些依赖:

 sudo apt-get install clinfo dkms xz-utils openssl libnuma1 libpciaccess0 bc curl libssl-dev lsb-core libicu-dev -y
 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get install mono-complete -y

2.CMAKE

 sudo apt-get install libncurses5-dev cmake-curses-gui -y
 sudo apt-get install build-essential -y
wget http://www.cmake.org/files/v3.2/cmake-3.2.2.tar.gz
tar xf cmake-3.11..tar.gz && cd cmake-3.11. && ./configure
make -j8 && sudo make install

3.OpenGL

 sudo apt-get install build-essential libgl1-mesa-dev freeglut3-dev libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev gfortran  doxygen graphviz -y

4.VTK

The Visualization Toolkit (VTK) is an open-source, freely available software system for 3D computer graphics, image processing, and visualization.

又是一个神乎其技的开源工具。

 sudo apt-get install libvtk6.
wget https://www.vtk.org/files/release/6.3/VTK-6.3.0.zip
unzip VTK-6.3..zip
mkdir VTK-build && cd VTK-build&&ccmake ../VTK-6.3.

然后按“c”确认配置生成可编译文件,直到“g”选项出现,然后按“g”即可

 make -j8
sudo make install

5.BOOST

首先安装一个低版本的boost,这个是给ASL用的。

 sudo apt-get install libboost1.-all-dev -y

6.ASL

 unzip ASL-0.1..zip
mkdir build-asl && cd build-asl
cmake -D OpenCL_INCLUDE_DIR=/usr/local/cuda-9.0/include/ -G "Unix Makefiles" ../ASL-0.1.
cmake -D OpenCL_LIBRARY=/usr/local/cuda-9.0/lib64/libOpenCL.so -G "Unix Makefiles" ../ASL-0.1.
make -j8
sudo make install

运行实例:

 cd examples/flow/locomotive
wget http://asl.org.il/input_data/locomotive.stl
./asl-locomotive --input locomotive.stl

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

安装IBAMR、配置依赖、安装、运行测试:此处已经是旧版的ibamr了下载其源码需要找到GitHub上倒数第二个版本v0.2 https://github.com/IBAMR/IBAMR/releases

1.安装BOOST

 mkdir sfw && cd sfw && mkdir linux && cd linux && mkdir boost && cd boost
unzip boost_1_60_0.zip
mv boost_1_60_0 1.6.
export BOOST_ROOT=$HOME/sfw/linux/boost/1.6.
mkdir $BOOST_ROOT/include
ln -s $BOOST_ROOT/boost $BOOST_ROOT/include
7 sudo apt install libz-dev m4 gfortran -y

2.安装eigen

 cd sfw && cd linux && mkdir eigen && cd eigen
下载 eigen 3.3.
tar -jxvf 3.3..tar.bz2
cmake eigen-eigen-f562a193118d
make -j8 && sudo make install

3.安装HDF5

 cd sfw/linux && mkdir hdf5 && cd hdf5
下载 hdf5-1.8..tar.bz2
tar xvjf ~/hdf5-1.8..tar.bz2
cd hdf5-1.8.
./configure \
CC=gcc \
CXX=g++ \
FC=gfortran \
F77=gfortran \
--enable-production \
--disable-debug \
--prefix=$HOME/sfw/linux/hdf5/1.8.
 make -j8 && make check && sudo make install

4.安装SILO

 cd $HOME/sfw/linux
tar xvfz silo-4.10.tar.gz && cd silo-4.10
./configure \
CC=gcc \
CXX=g++ \
FC=gfortran \
F77=gfortran \
--prefix=$HOME/sfw/linux/silo/4.10 \
--disable-silex
 make -j8 && sudo make install

5.安装MUPARSER

 sudo apt-get install libmuparser-dev -y

6.安装OpenMPI

 cd $HOME/sfw/linux

 tar xvfj openmpi-1.10..tar.bz2
cd openmpi-1.10. ./configure \
CC=gcc \
CXX=g++ \
FC=gfortran \
F77=gfortran \
--prefix=$HOME/sfw/linux/openmpi/1.10. \
--disable-mpi-cxx-seek \
--disable-heterogeneous \
--enable-orterun-prefix-by-default make -j8 && make check && sudo make install

7.安装PETSC

  7.1首先编译debug 版:

 sudo apt-get install libblas-dev liblapack-dev -y

 cd $HOME/sfw && mkdir petsc && cd petsc

 wget http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-3.7.2.tar.gz

 tar xvfz petsc-3.7..tar.gz

 mv petsc-3.7. 3.7. && cd 3.7.

 export PETSC_DIR=$PWD

 export PETSC_ARCH=linux-debug

./config/configure.py \
--CC=$HOME/sfw/linux/openmpi/1.10./bin/mpicc \
--CXX=$HOME/sfw/linux/openmpi/1.10./bin/mpicxx \
--FC=$HOME/sfw/linux/openmpi/1.10./bin/mpif90 \
--LDFLAGS="-L$HOME/sfw/linux/openmpi/1.10.2/lib -Wl,-rpath,$HOME/sfw/linux/openmpi/1.10.2/lib" \
--with-debugging= \
--with-c++-support \
--download-hypre= make && make test

  7.2再编译optimize版:

 export PETSC_DIR=$PWD

 export PETSC_ARCH=linux-opt

./config/configure.py \
--CC=$HOME/sfw/linux/openmpi/1.10./bin/mpicc \
--CXX=$HOME/sfw/linux/openmpi/1.10./bin/mpicxx \
--FC=$HOME/sfw/linux/openmpi/1.10./bin/mpif90 \
--COPTFLAGS="-O3" \
--CXXOPTFLAGS="-O3" \
--FOPTFLAGS="-O3" \
--LDFLAGS="-L$HOME/sfw/linux/openmpi/1.10.2/lib -Wl,-rpath,$HOME/sfw/linux/openmpi/1.10.2/lib" \
--with-default-arch= \
--PETSC_ARCH=$PETSC_ARCH \
--with-debugging= \
--with-c++-support \
--with-hypre= \
--download-hypre= \
--with-x=\ make && make test

8.安装SAMRAI

 cd $HOME/sfw && mkdir samrai && cd samrai && mkdir 2.4.&& cd 2.4.

 tar xvfz SAMRAI-v2.4.4.tar.gz && mv SAMRAI SAMRAI-2.4.

然后要打一个补丁

 wget https://github.com/IBAMR/IBAMR/releases/download/v0.1-rc1/SAMRAI-v2.4.4-patch-121212.gz

 cd SAMRAI-2.4.

 gunzip -c ../SAMRAI-v2.4.4-patch-.gz | patch -p2

 ./source/scripts/includes --link

 cd $HOME/sfw/samrai/2.4.

 mkdir objs-debug && cd objs-debug

../SAMRAI-2.4./configure \
--prefix=$HOME/sfw/samrai/2.4./linux-g++-debug \
--with-CC=gcc \
--with-CXX=g++ \
--with-F77=gfortran \
--with-MPICC=$HOME/sfw/linux/openmpi/1.10./bin/mpicc \
--with-hdf5=$HOME/sfw/linux/hdf5/1.8. \
--without-hypre \
--with-silo=$HOME/sfw/linux/silo/4.10 \
--without-blaslapack \
--without-cubes \
--without-eleven \
--without-kinsol \
--without-petsc \
--without-sundials \
--without-x \
--with-doxygen \
--with-dot \
--enable-debug \
--disable-opt \
--enable-implicit-template-instantiation \
--disable-deprecated make -j8 && sudo make install

优化版本:

 cd $HOME/sfw/samrai/2.4. &&mkdir objs-opt &&cd objs-opt

../SAMRAI-2.4./configure \
CFLAGS="-O3" \
CXXFLAGS="-O3" \
FFLAGS="-O3" \
--prefix=$HOME/sfw/samrai/2.4./linux-g++-opt \
--with-CC=gcc \
--with-CXX=g++ \
--with-F77=gfortran \
--with-MPICC=$HOME/sfw/linux/openmpi/1.10./bin/mpicc \
--with-hdf5=$HOME/sfw/linux/hdf5/1.8. \
--without-hypre \
--with-silo=$HOME/sfw/linux/silo/4.10 \
--without-blaslapack \
--without-cubes \
--without-eleven \
--without-kinsol \
--without-petsc \
--without-sundials \
--without-x \
--with-doxygen \
--with-dot \
--disable-debug \
--enable-opt \
--enable-implicit-template-instantiation \
--disable-deprecated make -j8 && sudo make install

9.安装libMesh

 cd $HOME/sfw/linux &&mkdir libmesh &&cd libmesh &&mkdir 1.0. &&cd 1.0.

 wget https://github.com/libMesh/libmesh/releases/download/v1.0.0/libmesh-1.0.0.tar.gz

 THEN: tar xvfz libmesh-1.0..tar.gz && mv libmesh-1.0. LIBMESH &&cd $HOME/sfw/linux/libmesh/1.0. && mkdir objs-debug && cd objs-debug

 export BOOST_ROOT=$HOME/sfw/linux/boost/1.6.

../LIBMESH/configure \
--prefix=$HOME/sfw/linux/libmesh/1.0./1.0.-debug \
--with-methods=dbg \
PETSC_DIR=$HOME/sfw/petsc/3.7. \
PETSC_ARCH=linux-debug \
CC=$HOME/sfw/linux/openmpi/1.10./bin/mpicc \
CXX=$HOME/sfw/linux/openmpi/1.10./bin/mpicxx \
FC=$HOME/sfw/linux/openmpi/1.10./bin/mpif90 \
F77=$HOME/sfw/linux/openmpi/1.10./bin/mpif90 \
--enable-triangle \
--disable-cxx11 \
--disable-openmp \
--disable-perflog \
--disable-strict-lgpl \
--disable-pthreads \
--disable-cppthreads \
--disable-unique-ptr make -j8 && sudo make install

然后安装优化版:

 cd $HOME/sfw/linux/libmesh/1.0. &&mkdir objs-opt &&cd objs-opt

 export BOOST_ROOT=$HOME/sfw/linux/boost/1.6.

../LIBMESH/configure \
--prefix=$HOME/sfw/linux/libmesh/1.0./1.0.-opt \
--with-methods=opt \
PETSC_DIR=$HOME/sfw/petsc/3.7. \
PETSC_ARCH=linux-opt \
CC=$HOME/sfw/linux/openmpi/1.10./bin/mpicc \
CXX=$HOME/sfw/linux/openmpi/1.10./bin/mpicxx \
FC=$HOME/sfw/linux/openmpi/1.10./bin/mpif90 \
F77=$HOME/sfw/linux/openmpi/1.10./bin/mpif90 \
--enable-triangle \
--disable-cxx11 \
--disable-openmp \
--disable-perflog \
--disable-strict-lgpl \
--disable-pthreads \
--disable-cppthreads \
--disable-unique-ptr
make -j8 && sudo make install

终于到了主角,10.安装IBAMR

 cd $HOME/sfw && mkdir ibamr && cd ibamr

 git clone https://github.com/IBAMR/IBAMR.git

 THEN:4

 tar xvfj ibamr.tar.bz2 && cd $HOME/sfw/ibamr && mkdir ibamr-objs-dbg && cd ibamr-objs-dbg

 export BOOST_ROOT=$HOME/sfw/linux/boost/1.6. && export PETSC_ARCH=linux-debug && export PETSC_DIR=$HOME/sfw/petsc/3.7.

../IBAMR/configure \
CFLAGS="-g -O1 -Wall" \
CXXFLAGS="-g -O1 -Wall" \
FCFLAGS="-g -O1 -Wall" \
CC=$HOME/sfw/linux/openmpi/1.10./bin/mpicc \
CXX=$HOME/sfw/linux/openmpi/1.10./bin/mpicxx \
FC=$HOME/sfw/linux/openmpi/1.10./bin/mpif90 \
CPPFLAGS="-DOMPI_SKIP_MPICXX" \
--with-hypre=$PETSC_DIR/$PETSC_ARCH \
--with-samrai=$HOME/sfw/samrai/2.4./linux-g++-debug \
--with-hdf5=$HOME/sfw/linux/hdf5/1.8. \
--with-silo=$HOME/sfw/linux/silo/4.10 \
--with-boost=$HOME/sfw/linux/boost/1.6. \
--enable-libmesh \
--with-libmesh=$HOME/sfw/linux/libmesh/1.0./1.0.-debug \
--with-libmesh-method=dbg
make lib -j8 && make examples -j8

然后安装优化版本

 cd $HOME/sfw/ibamr && mkdir ibamr-objs-opt && cd ibamr-objs-opt && export PETSC_ARCH=linux-opt && export PETSC_DIR=$HOME/sfw/petsc/3.7.

../IBAMR/configure \
CC=$HOME/sfw/linux/openmpi/1.10./bin/mpicc \
CXX=$HOME/sfw/linux/openmpi/1.10./bin/mpicxx \
F77=$HOME/sfw/linux/openmpi/1.10./bin/mpif90 \
FC=$HOME/sfw/linux/openmpi/1.10./bin/mpif90 \
MPICC=$HOME/sfw/linux/openmpi/1.10./bin/mpicc \
MPICXX=$HOME/sfw/linux/openmpi/1.10./bin/mpicxx \
CFLAGS="-O3 -Wall" \
CXXFLAGS="-O3 -Wall -std=gnu++11" \
FFLAGS="-O3 -Wall" \
FCFLAGS="-O3 -Wall" \
CPPFLAGS="-DOMPI_SKIP_MPICXX" \
--with-hypre=$PETSC_DIR/$PETSC_ARCH \
--with-samrai=$HOME/sfw/samrai/2.4./linux-g++-opt \
--with-hdf5=$HOME/sfw/linux/hdf5/1.8. \
--with-silo=$HOME/sfw/linux/silo/4.10 \
--with-boost=$HOME/sfw/linux/boost/1.6. \
--enable-libmesh \
--with-libmesh=$HOME/sfw/linux/libmesh/1.0./1.0.-opt \
--with-libmesh-method=opt
make -j8 &&make check

运行实例程序:

 cd $HOME/sfw/ibamr/ibamr-objs-opt/examples/IB/staggered_grid/explicit/ex1

 make examples

 ./main2d input2d

完,qsy。

Advanced Simulation Library(ASL)&& An adaptive and distributed-memory parallel implementation of the immersed boundary (IB) method (IBAMR)的更多相关文章

  1. <转>C Runtime Library(MSVCRT)来历

    (转载)C Runtime Library(MSVCRT)来历   msvcrt.dll (名称:Microsoft C Runtime Library)提供了printf,malloc,strcpy ...

  2. 【CF802C】Heidi and Library(网络流)

    [CF802C]Heidi and Library(网络流) 题面 CF 洛谷 题解 前面两个Easy和Medium都是什么鬼玩意啊.... 不难发现如果这天的要求就是第\(a_i\)种书的话,那么\ ...

  3. Android Design Support Library(三)用CoordinatorLayout实现Toolbar隐藏和折叠

    此文的代码在Android Design Support Library(一)用TabLayout实现类似网易选项卡动态滑动效果代码的基础上进行修改,如果你没有看过本系列的第一篇文章最好先看一看.Co ...

  4. 35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n

      35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现in ...

  5. JAVA进阶之旅(二)——认识Class类,反射的概念,Constructor,Field,Method,反射Main方法,数组的反射和实践

    JAVA进阶之旅(二)--认识Class类,反射的概念,Constructor,Field,Method,反射Main方法,数组的反射和实践 我们继续聊JAVA,这次比较有意思,那就是反射了 一.认识 ...

  6. 1、NASA Super Cloud Library(SCL)

    Empowering Data Management, Diagnosis, and Visualization of Cloud-Resolving Models (CRM) by Cloud Li ...

  7. (转载)Ubuntu 安装GNU Scientific library(GSL)

    背景: Blei的hlda的C语言实现需要使用C语言的科学计算包GSL,因此决定安装.由于在windows下安装极其繁琐,先在Linux上安装之. 系统环境: Linux version 2.6.35 ...

  8. 【转】使用Boost Graph library(二)

    原文转自:http://shanzhizi.blog.51cto.com/5066308/942972 让我们从一个新的图的开始,定义一些属性,然后加入一些带属性的顶点和边.我们将给出所有的代码,这样 ...

  9. 数据结构(六)查找---平衡二叉树(ASL)

    前提 我们之前的二叉排序树的插入(构建)是按照我们输入的数据来进行的,若是我们的数据分布不同,那么就会构造不同的二叉树 { , , , , , , , , , } { , , , , , , , , ...

随机推荐

  1. poj2411 轮廓线dp裸题

    题意:用12的骨牌覆盖nm的矩阵的方案数 题解:dp[i][j]表示枚举到了第i行,j状态的方案数,三种转移,向上的,要求不是第一行而且上面的没有覆盖过,向下的,要求不是第一列而且左边没有覆盖过,不放 ...

  2. Java中wait()和notify()方法的使用

    1. wait方法和notify方法 这两个方法,包括notifyAll方法,都是Object类中的方法.在Java API中,wait方法的定义如下: public final void wait( ...

  3. 一张思维导图教你使用google一下

    导图总览 google搜索技巧.png 双引号 代表完全匹配搜索 也就是说搜索结果返回的页面包含双引号中出现的所有的词,连顺序也必须完全匹配 例如搜索"java 排序"与无引号的j ...

  4. UVA-10801 Lift Hopping (最短路)

    题目大意及分析:一道简单的最短路...好几天没写程序了,憋得难受!!! 代码如下: # include<iostream> # include<cstdio> # includ ...

  5. jQuery.prop() 函数详解

    prop()函数用于设置或返回当前jQuery对象所匹配的元素的属性值. 该函数属于jQuery对象(实例).如果需要删除DOM元素的属性,请使用removeProp()函数. 语法jQuery 1. ...

  6. BZOJ3288 Mato矩阵

    网上说高斯消元得到下三角矩阵然后都是phi(i)...反着我是搞不出来 打个表什么的还是能看出来点奇怪的东西,比如后面能整除前面的,然后再乱搞吧2333 /********************** ...

  7. ossim中Spot5模型bug修复

    ossim中Spot5模型在读取像素视线角时存在一个严重的bug,导致某些点的视线角提取错误. 下面是ossim中getPixelLookAngleX 函数的代码: ossimSpotDimapSup ...

  8. 关于父类私有属性在子类构造函数中super调用的解释

    package test; public class Car { private int carMoney; //汽车租金 private String carName; //汽车名字 private ...

  9. css中用#id.class的形式定义样式,为什么这样用,不直接写成.class.代码如下:#skin_0.selected{}这种的

    <ul class="skin"> <li id="skin_0" title="蓝色" class="sele ...

  10. STL标准库-容器-deque

    技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性. deque双向开口可进可出的容器 我们知道连续内存的容器不能随意扩充,因为这样容易扩充别人那去 deque却可以,它创造了内存 ...