dealii是优秀的开源有限元框架,但是其依赖的安装包环境十分复杂,本人手动编译遇到太多错误,目前通过candi可以成功编译。
平台:ubuntu 18.04 新系统
方法:candi 自动配置需要的安装包,免去一个个下载安装的烦恼
1.通过 apt-get安装必要的软件包
sudo apt-get install lsb-release subversion wget bc libgmp-dev build-essential autoconf automake libtool zlib1g-dev libsuitesparse-dev
由于部分软件包对编译器版本要求较高,而ubuntu软件库的gcc g++ gfortran只有7.5版本,不能满足要求,需安装gcc-10以上版本,添加其他仓库:
sudo apt install software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
现在可以安装10版本号的编译器了:
sudo apt install gcc-10 g++-10 gfortran-10
如果之前安装有gcc g++ gfortran,那么此时就有两个版本,需要指定优先级,如9、10版本:
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 10
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 20
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 10
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 20
update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-9 10
update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-10 20
然后需要安装openmpi。注意,通过apt-get获取的openmpi在编译mumps时会遇到严重问题,提示mpi.md文件不是由相同fortran文件生成的,建议手动编译openmpi,再添加到环境变量:
./configure --prefix=/home/yourName/openmpi
make
make install
#再将openmpi的bin 和 lib添加到环境变量PATH LD_LIBRARY_PATH
然后安装boost blas lapack:
sudo apt-get install libboost-all-dev libblas-dev liblapack-dev
现在可进行下一步。
2.安装candi
candi是能在多平台配置安装dealii的软件包:
git clone https://github.com/dealii/candi.git
cd candi
./candi.sh
通过修改 candi.cfg 文件,可以指定安装模式、要安装的软件包。比如可以选择开发模式,可供修改代码后编译;可以不选择某些安装包。然后运行:
./candi.sh
即可。
注意:一定要用新版本编译器,并且用新编译器重新编译openmpi,文件版本要一致。
版权声明:本文为u012161192原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。