basiliskinstall

Basilisk执行用户的创建

创建用户

切换 root 用户执行下列命令

$ sudo su - root

创建 cfd 软件使用的用户组

$ groupadd cfduser

查看是否创建成功

$ cat /etc/group | grep cfduser

在 cfduser 用户组中创建 basilisk 用户

$ useradd -m -s /bin/bash -g cfduser  -c "注释" basilisk

查看是否创建成功

$ cat /etc/passwd | grep basilisk

为用户组添加sudo权限

安装vim编辑器,也可以使用vi,emacs等编辑器

$ apt install vim

编辑 /etc/sudoers 文件,为 cfduser 用户组内所有成员添加 sudo 权限,如下图所示:%cfduser ALL=(ALL) ALL

basilisk用户设置密码:

$ echo -e "密码\n重复密码" | passwd basilisk 2>/dev/null

切换至basilisk用户

安装Basilisk和后处理软件

安装Basilisk

安装必要的软件包

$ sudo apt install darcs make gawk

darcs也是一个版本控制工具,类似于经常使用的 git

获取basilisk源代码

$ darcs clone http://basilisk.fr/basilisk

如果更新源代码则只需要,进入basilisk目录,执行以下命令

$ darcs pull

然后进行编译

$ make -k clean && make

进入源文件目录进行编译安装

$ cd basilisk/src
$ ln -s config.gcc.config

一般新装的系统默认是不带 c/c++ 和 cmake 编译器的,需要自行安装

$ sudo apt install gcc g++ cmake

编译器安装完成之后再进行编译

$ make

该过程需要等待较长时间,完成后执行以下命令添加环境变量

$ echo "export BASILISK=$PWD" >> ~/.bashrc
$ echo "export PATH=$PATH:$BASILISK" >>  ~/.bashrc

安装额外的软件包

执行以下命令

$ sudo apt install gnuplot imagemagick ffmpeg graphviz valgrind gifsicle pstoedit

在python中可以使用Basilisk(我没尝试过)

$ sudo apt install swig libpython3.dev

安装自选库(我也没使用到过)

$ sudo apt install gfortran
$ cd $BASILISK/ppr
$ make

验证是否安装成功

安装文件编辑器

$ sudo apt-get install emacs

查看Basilisk编译器的qcc版本

$ qcc --version

查看C编译器的gcc版本

$ gcc --version

二者的编译器版本一定要一致,否则qcc无法正常将模拟文件编译为可执行文件

在桌面文件夹中创建案例文件

$ mkdir /home/basilisk/Desktop/example

在example中创建bump.c文件编译测试

$ vim bump.c

#include "saint-venant.h"
int main() {
	run();
}

编译 bump.c 文件,得到可执行文件 a.out

$ qcc bump.c -lm

执行 a.out 文件

$ ./a.out

得到以下结果

#Quadtree, 0 steps, 0 CPU, 0.001075 real, 0 points.step/s, 5 var

则代表安装成功且运行顺利

gcc与qcc版本不一致的解决方法

正常情况下,ubuntu22.04 版本用户使用 apt 命令默认安装的是 11.4.0 版本的gcc编译器,qcc 是基于 gcc 对模拟文件进行编译的编译工具,因此要求二者版本一致,基本不会遇到文件,如图所示

但是若用户安装了最新发布的ubuntu24.04版本,apt 库中默认安装的 gcc 版本是 13.2.0,虽然basilisk是可以顺利安装的,但是在使用 qcc 编译模拟文件时会报错。所以解决方法是:将 gcc 版本回退或者更新至11.4.0即可,步骤如下:

由于我使用的是ubuntu22.04版本,该版本默认的apt库并没有13.2.0版本的gcc,演示使用9.5.0版本替代

下载 11.4.0 版本的 gcc/g++ 编译器

$ sudo apt install gcc-11 g++-11

切换 gcc 版本至11.4.0,使用 update-alternatives 工具

$ sudo update-alternatives --install /usr/bin/gcc gcc /user/bin/gcc-11 80 --slave /usr/bin/g++ g++ /user/bin/g++-11

上述命令的含义是将gcc编译器的默认版本切换到11.4.0,80是优先级(该优先级只在系统中有多版本的gcc并且是auto模式时才具有作用),数字越大优先级越高,--slave则是代表同时对以下参数执行相同的命令。这样可以使gcc和g++编译器同步进行版本更改。

由于本人使用 ubuntu22.04 版本,所以无法演示 gcc 13.2.0 回退至 11.4.0 的操作,因此使用 gcc 9.5.0 版本代替。分别执行以下命令:

$ sudo update-alternatives --install /usr/bin/gcc gcc /user/bin/gcc-11 80 --slave /usr/bin/g++ g++ /user/bin/g++-11

$ sudo update-alternatives --install /usr/bin/gcc gcc /user/bin/gcc-9 20 --slave /usr/bin/g++ g++ /user/bin/g++-9

该操作是为不同版本的 gcc 编译器设置优先级,如果查看目前 gcc 所使用的版本,则执行以下命令

$ sudo update-alternatives --config gcc

得到如下结果

该工具可以将不同版本的 gcc 编译器进行统一的管理,0 序号代表正在使用的编译器,可以通过输入其他需要选择所需要的版本。

需要与 gcc 同步更改的还有 g++ 和 gcov 两个命令,使用 --slave 进行捆绑更改即可,删除 gcc 的版本则执行以下命令

$ sudo update-alternatives --remove gcc /usr/bin/gcc-9