弦月之舞

人生不设限

在Debian 12 Linux上安装Abaqus+关联gfortran

折腾一周,终于在Linux系统上装了Abaqus 2022,并将其与gfortran关联,成功运行用户子程序。越折腾越发现是基础问题,在此记录踩的坑和解决办法。

写在前面:
27日早,惊闻李克强总理逝世。深切悼念。记得之前同学常玩谐音梗,因为谐音“理科强”而关注李总理。再听闻消息已是逝世,而且是卸任不久后逝世。叹惋。
27日傍晚,又闻吴尊友逝世。百味杂陈,再次悼念。

安装过程

需要根据你的电脑做调整。大致可以分为三步:安装破解版的软件许可服务器;安装Abaqus;设置子程序编译器的关联。

装激活服务器程序

破解服务器是Win和Linux、几个不同软件通用的。所以可能会和UG NX什么的打架,不同版本的也会打架。Abaqus 2022要求v11.13以上版本的FLEXIM程序,我装了v11.14,版本号2018开头的那个。还有个更新一点的(20开头),未尝试。点这下载:下载v11.14-Core(通用的主程序) 下载v11.14-Module(Abaqus的许可文件)

解压、合并到一个文件夹底下(这一步操作和Win下一样)后,做2处修改:

  1. 打开后缀为.lic的文件,把里面的this_host字段改成你的计算机名,或者localhost,其余的端口什么的不变,安软件时填的要与之对应。

  2. 把.sh文件开头注释里的#!bin/sh/改成#!bin/bash/(指定用bash运行该脚本),然后把整个文件夹移动到有root权限的文件夹下(比如/usr下面,不然无法启动服务:

1
sudo cp SolidSQUAD_License_Servers/ /usr/local/SolidSQUAD_License_Servers/

然后切换到复制到的文件夹,运行脚本:

1
sudo ./install_or_update.sh

如果一切正常,应该不会报错。用pssystemctl看看是否正常运行:

1
2
ps aux |grep lmgrd
systemctl list-unit-files | grep lmgrd

如果能找到就说明跑起来了。不行的话就用killkillall杀掉进程,或者运行uninstall.sh,然后重来一遍。对着错误日志查,有助排查报错,我之前遇到的问题是没有权限开启服务:

1
sudo journalctl -xeu flexlmsrvssq.service

也可能因为版本问题缺少lsb的库,在脚本里似乎已经考虑到此问题,但以防万一,遇到报错时也可尝试:

1
sudo ln -s /lib/ld-linux.so.2 /lib/ld-lsb.so.3

也可以开启回显,把脚本运行的细节打出来(或者加个 |tee foo.bar打到文件里)慢慢查错(但其实并没有什么用):

1
sudo bash -x ./install_or_update.sh

嫌用方向键找历史命令烦的话,就用grep:

1
history | grep systemctl

嫌需要重新打参数烦的话,就按Alt+.。需要快速清屏,就按Ctrl+U。如果灵活运用功能键操纵光标,选择和定位都很快,建议学一下。注意命令行下复制粘贴什么的是Ctrl+Shift+C/V/X。

装Abaqus

大致思路和以往的教程类似,但需要做调整,可能需要多装几次。这里贴一些别人的教程:CentOS+Intel Fortran CentOS下安装 各版本Abaqus下载 Ubuntu下安装1

先装好依赖和gfortran,并下载Linux版的安装镜像,提取码es38或者Win+Linux完整版的镜像,提取码9a94,解压(不要挂载)。

1
sudo apt install csh tcsh ksh gcc g++ gfortran libstdc++5 build-essential make libjpeg62 libmotif-dev

可以看看几个txt文件,里面列出了每个文件夹内的安装包内容。注意当前用户是否对文件有读写、执行权限。文件夹1里的安装程序会调用其他文件夹里的内容,但我安装时会找不到目录,所以就打开装4和5里面的东西,一个个装。不要安装3里面的FLEXIM Server。我装了核心的软件(Established Products)和CAA_API(在5里面),装帮助文档没成功,放弃。

修改bash的配置文件,添加环境变量

首先要改一下系统的环境变量(env),设置跳过许可验证,并应用于终端。要编辑的是shell的全局配置文件/etc/bash.bashrc和用户配置文件~/.bashrc,用文本编辑器在里面加一行export NOLICENSECHECK=true

1
2
3
sudo vim /etc/bash.bashrc 
(Adding environmental variables:) export NOLICENSECHECK=true
source /etc/bash.bashrc

然后就发现终端字体全变成白色了。不要惊慌,因为现在使用的是全局配置文件,一会再换回用户配置文件就行。这是一个坑,因为运行安装程序时需要sudo,只有改全局配置才能确保root用户身份时能读到加进去的环境变量,不然会一直报服务器版本不对,或者No Socket Connection (-7)错误。关于许可服务器的错误代码,看这个

当然,用户配置文件也需要加这一行。而且有趣的是,在安装成功后,我删除全局配置文件里的那行环境变量,也不影响运行。之后需要对后缀为.sh的脚本动些手脚。

改Linux.sh的内容

进入解压后的目录,用find命令找出Linux.sh的位置,并输出到当前目录下的文件:

1
find . -name Linux.sh | tee ./AbaLinuxsh.txt

然后照着这篇教程(Scientific Linux下安装)改。因为不是官方支持列表里的系统,只能强行跳过系统版本验证。

之后,把Linux.sh和上层目录里StartGUI.sh开头注释里的#!bin/sh/改成#!bin/bash/(指定用bash运行该脚本)。这里得夸夸KDE的文件管理器Dolphin,在浏览文件时按F4就能打开下拉终端,很方便。

然后切回上层目录,运行安装程序:

1
sudo ./StartGUI.sh

之后照着教程做就行,记得留意一下都装在哪个文件夹下了。我把它装在另一个分区下,并修改了fstab文件,设置了系统自动挂载,保证每次挂到同一个地方,程序能找到。如果许可服务器配置正确,应该可以正常安装。不正确的话,排查到问题再装。我一开始选择跳过,结果一直没搞好,重装后才行……

如果选择跳过许可验证,装完之后也可以跑到程序的Commands文件夹下检查下许可服务器状态:

1
./abq licensing ru

安装完就可以切回自己的配置文件了:

1
source ~/.bashrc

(选做)快捷方式

把Commands目录下的程序做个链接,就可以随时随地敲abaqus来调用程序了。不过要注意,在哪启动,哪里就是工作目录,程序会读取当前目录下的配置文件,计算中产生的文件都会写到当前目录下面。然后就可以打开程序看看了。

1
2
sudo ln ~/DassaultSystemes/SIMULIA/Commands/abq2022 /usr/bin/abaqus
abaqus cae -mesa

也可以在启动器里再加个快捷方式,但从那里默认就是从Home启动了。

设置关联

照着这篇教程做。/media/kai/Software/Linux/SIMULIA/EstProducts/2022/linux_a64/SMA/site(软件主程序目录)下的全是配置文件,修改lnx86_64.env是修改全局配置,在工作目录下建abaqus_v6.env是修改局部配置。但在这台电脑上,奇怪的是,同样的配置文件,放在工作目录下才起效果。因此,运行目录下需要复制一堆abaqus_v6.env……

之后验证一下,直到需要用的功能全都PASS。不行再去查在当前目录下生成的verify文件下的log文件:

1
./abq verify -all -verbose 

加-verbose是输出更多错误相关信息。如果只验证子程序相关的,把-all换成-user_std-make。如果想把验证时输出的结果保存下来,加-log。更多参数,查官方文档

也请参考:教程1 教程2,讲得透彻

关于设置CUDA加速,看这篇

之后,就是拼命学怎么使用软件的事了……