1 引言
为了满足不同用户的需求,许多工程计算软件都同时发布Windows版本和Linux版本。现在Itasca的3DEC、FLAC3D和PFC从7.0版本开始为网络许可证用户免费推出Linux版本,运行在Ubuntu 20.04 Linux操作系统。Ubuntu是一个非常流行的开源Linux操作系统,可以在Windows系统下安装,实现双系统运行;也可以使用可启动的U盘,不需要把系统安装在硬盘上。
2 L版比W版运行速度快?
按照Itasca目前的说法,Linux版与Windows版的运行速度差不多。不过Linux比Windows有着天然的优势,一些Abaqus用户作的基准测试表明,Linux版本比Windows版本运行得更快,这可能是由于Linux内存管理和硬盘写入算法比Windows更好一些。此外,在Linux系统(Debian/Ubuntu或Fedora)下使用Abaqus,可以使用免费的Fortran编译器(gfortran)运行子程序。一些ANSYS用户也证实Fluent在Linux系统下比在Windows系统下运算速度快。
3 L版与W版的模型文件
在Linux版本上创建的模型保存文件(model save)能在Windows版本上加载,反之亦然。在Ubuntu系统下,也可以使用GUI和命令行,并以单一的Debian文件分发。
4 L版与W版的差异
1) 一些微小的图形用户界面上的差异(如字体)。Ubuntu的用户界面更炫酷一些,色彩更重些(我自己的体验,使用过一段时间,但不太适应它的那种界面风格);
2) 由于不同操作系统版本使用不同的编译器,Linux版本的结果可能与Windows版本的结果不完全相同。所有的模型在Linux或Windows中都是可以重复的,不过当更新或改变编译器时,由于浮点运算和编译器优化的变化,模型结果会发生变化。有多大的不同?这取决于模型的类型。对于一些模型来说,由于编译器的数值差异,结果会出现分歧。在某些情况下,差异可能小于0.1%。
3) Linux系统的文件名和路径是区分大小写的,不应该包括空格。因此,从其他数据文件中调用数据文件时要小心。
4) Linux版本构模型的C++插件功能还没有实现。
5 串函数string()
题外话,这个部分与本文主题无关,刚好遇上啦,顺便记录一下。在原来的FISH语句中,下面这段代码是没有问题的:
fish define in_def(msg,default) local xx = io.in(msg+'('+'default:'+string(default)+'):') if type(xx) = 3 in_def = default else in_def = xx endifend
但不知什么时候软件作了改变,导致运行这段程序时出现错误:“Cannot use operator + between types Float and String.” 意思是浮点数和字符串不可以用+号相连接, 这意味着不能使用string()函数显式地把数字转换为字符串, 必须使用下面的string.build函数才不出错。string.build()函数类似于Python的format()定位函数,技术上讲,这种改变是一种进步。
xx = io.in(string.build('%1 (default:%2):',msg,default))
测试显示在3DEC和FLAC3D中都存在这个问题,但在UDEC中还未作出改变,string()和string.build()都可以使用,整合时期感觉弄得挺混乱的,估计以后UDEC也会作出相应的改变。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删