实验室新的服务器组开始使用Scientific Linux release 7.9 (Nitrogen)作为操作系统,传说中Abaqus求解器在Linux下资源利用效率更高,不过对我们这坨从小学开始学微软的老用户就有些不友好了……幸好带GUI的Linux用起来与Windows差异不大,但之前在Windows下用来批量提交的那坨脚本显然就没法用了,不得已开始用Bash写新的批处理,好消息是代码改动并不多。
在Linux似乎拖放提交这种操作是不简单了,考虑下来主要采用两种方法进行批量提交,同样还是写文本文档将下方代码写入后保存sh格式文件。
方案一:终端调用该sh脚本来进行批量提交
#!/bin/bash
export PATH=/var/DassaultSystemes/SIMULIA/Commands/:$PATH
pushd $1
for file in `ls $1/*.inp`;
do
abaqus job=`basename $file` cpus=6 gpus=1 mp_mode=thread int ask_delete=OFF;
done
保存该文本文档为sh脚本文件,在终端输入 sh+该文件名+INP文件所在的目录地址 即可进行计算,例如脚本文件名为“批量提交.sh”,在终端输入“sh 批量提交.sh /home/Spectrum/Downloads”则将会遍历计算“/home/Spectrum/Downloads”下的所有INP文件
第三行“PATH=”到“:$PATH”之间为Abaqus Command的目录位置,这一行命令是用于添加临时PATH来调用Abaqus的
模版代码中的计算配置为隐式计算,如运行显示计算可按照上上期作适当修改,如涉及联合仿真则可参照上期作适当修改
方案二:双击sh脚本提交该脚本所在文件夹中的所有INP文件
#!/bin/bash
export PATH=/var/DassaultSystemes/SIMULIA/Commands/:$PATH
pasway=`dirname $0`
pushd $pasway
for file in `ls $pasway/*.inp`;
do
abaqus job=`basename $file` cpus=6 gpus=1 mp_mode=thread int ask_delete=OFF;
done
echo 计算结束,按任意键退出
read -n 1
保存该文本文档为sh脚本文件,放置在INP文件所在的文件夹中,双击运行将遍历计算此文件夹中所有INP文件
第三行“PATH=”到“:$PATH”之间为Abaqus Command的目录位置,这一行命令是用于添加临时PATH来调用Abaqus的
同样这是隐式计算配置,运行显示计算可按照上上期作适当修改、涉及联合仿真则可参照上期作适当修改
补充:双击sh脚本提交该脚本所在目录下所有子文件夹中的INP文件
#!/bin/bash
export PATH=/var/DassaultSystemes/SIMULIA/Commands/:$PATH
pasway=`dirname $0`
cd $pasway
for dire in `ls -d */`;
do
cd $dire
for file in `ls *.inp`;
do
abaqus job=`basename $file` cpus=6 gpus=1 mp_mode=thread int ask_delete=OFF;
done
cd ..
done
echo 计算结束,按任意键退出
read -n 1
同样保存为sh文件,双击运行将遍历计算此脚本所在目录子文件夹中的所有INP文件
也可以通过简单修改将这个代码匹配联合仿真:
#!/bin/bash
export PATH=/var/DassaultSystemes/SIMULIA/Commands/:$PATH
pasway=`dirname $0`
cd $pasway
for dire in `ls -d */`;
do
cd $dire
abaqus cosimulation cosimjob=Co-execution-1 job=Co-execution-1-Project_01,Co-execution-1-CSF-2 configure=Co-execution-1_config.xml cpus=6,6 double=both,off int ask_delete=OFF;
cd ..
done
echo 计算结束,按任意键退出
read -n 1
补充信息:
突然想起来Linux下脚本一定要先赋予“可执行”属性,否则将不可以运行,方法是使用“chown +x 文件名”来赋予可执行性,在图形界面下属性→权限中也有该设置
此外linux下通过命令行提交显式计算并不会显示计算情况,不过可以通过在脚本中加入tail -f命令来让终端实时显示sta文件的内容,这样可以实现类似的效果,命令用法示例:“tail -f ***.sta”
如果Linux下运行abaqus cae出现大量图像方面的报错,可以添加-mesa来解决显卡不支持问题,用法示例:abaqus cae -mesa
参考资料同前两次文章。