注册领666大礼包,学习金和优惠券下单直接使用
(原创,欢迎转载,转载请说明出处)
(1)基础理论
(2)商软操作
(3)自编程序
三者结合的方式将复杂繁琐的结构有限元理论通过简单直观的方式展现出来,同时深层次的学习有限元理论和商业软件的内部实现原理。
有限元的理论发展了几十年已经相当成熟,商用有限元软件同样也是采用这些成熟的有限元理论,只是在实际应用过程中,商用CAE软件在传统的理论基础上会做相应的修正以解决工程中遇到的不同问题,且各家软件的修正方法都不一样,每个主流商用软件手册中都会注明各个单元的理论采用了哪种理论公式,但都只是提一下用什么方法修正,很多没有具体的实现公式。商用软件对外就是一个黑盒子,除了开发人员,使用人员只能在黑盒子外猜测内部实现方式。
通用结构有限元软件iSolver介绍视频:
Abaqus的DLOAD采用Fortran语言实现,而iSolver的DLOAD采用Matlab实现。本文首先简单的讨论了DLOAD的输入输出参数,然后详细的介绍了基于Fortran和MATLAB两种方式的DLOAD的开发步骤,对比发现开发步骤基本相同,同时采用MATLAB更加高效和灵活。
和UEL相比,DLOAD的网上资料较少。这里我们列出了Abaqus的DLOAD接口的关键输入输出参数,如下表所示:
一般在Abaqus界面中定义DLOAD,方法是在创建载荷时,在Distribution的下拉框中选择User-defined:
也可直接在inp中定义DLOAD,方法是在定义载荷时将分布类型从P改成对应的用户自定义载荷(面载荷为PNU,体载荷为BXNU),如图所示:
然后在创建Job时,在Usersubroutinefile中选择或输入用户编写的DLOAD的Fortran程序:
使用任意编辑器编写.for文件,比如UltraEdit
Abaqus没有自带Fortran编译器,所以用户需要自己去安装Fortran编译器和VisualStudioBuildTools,并配置相应环境。具体配置过程与UMAT一致,可以查看我们关于环境配置的视频:
在环境配置完成之后,打开命令提示框,输入命令AbaqusmakeLibrary=XXX.for,即开始编译,编译过程中的警告和错误都会打印在命令提示框内。
运行DLOAD有多种方法,除了前面所述的基于模型创建Job时直接选择DLOAD程序外,还可以在命令提示框中输入Abaqusjob=XXXuser=XXX.for,如下图所示。
另一种就是在Abaqus中创建基于inp文件的任务,然后再选择对应的用户子程序for文件,在任务管理器中提交运行,如图所示。
至此,基于Fortran的DLOAD开发流程已经完成,但结果的正确性还需要更加细致的验证,为更方便的查找问题,建议先采用单个单元调试DLOAD,在确保单个单元正确后再将DLOAD用于实际问题。
如果想要知道代码的运行结果是否和预期的一致,一种笨办法是用print打印到log文件中,高效的方法是采用断点调试的方法进行运行中的调试。
有兴趣的可到下面网页下载使用。
基于MATLAB的Abaqus的DLOAD具体开发步骤和Abaqus类似,只不过某些步骤需要用到自研有限元求解器开发平台iSolver。
如果是通过Abaqus界面定义DLOAD,则与Abaqus相应的操作一致(见2.2.1节),
在MATLAB中创建并编写DLOAD.m的文件,放入Abaqus工作目录下。该文件只包括一个DLOAD函数,前面参数接口和Abaqus的接口参数完全一致,功能也是计算分布载荷的幅值,相对Fortran,利用MATLAB可以更容易的编写计算公式,同时可以利用MATLAB在矩阵计算中各种强大功能和算法库。因为Abaqus的DLOAD接口和计算功能各个版本相对固定,这个MATLAB的DLOAD接口参数也相对固定,不会因为iSolver的版本不同而重新修改接口。
具体接口函数可直接查看iSolver的设置界面,在ViewInterface中选择DLOAD就可查看,复制到DLOAD.m即可。
由于MATLAB是脚本语言,不需要编译。
在Abaqus菜单栏的Plug-ins里选择iSolver插件的菜单。
点击iSolver->Engine,按照下图所示,在功能项UserSubroutine中选择DLOAD,勾选Debug。点击Submit进行调试运行。
程序会自动打开MATLAB并加载DLOAD.m文件,手动打上断点
点击在Debug菜单下的RunDLOAD运行。
程序将在断点处停止,且将鼠标移动到需要调试查看的参数上,能够查看到对应的值。
按F10可以进行单步调试。
在上述步骤的基础上去掉勾选Debug选项,点击Submit运行计算,此时将采用iSolver求解器联合DLOAD.m进行求解分析,运行完毕点击Results在Abaqus中查看结果。
如果觉得上面的文字太复杂,也可以看一下视频的简要讲解和软件演示,里面包括DLOAD在Abaqus和iSolver实现的从零开始的一个StepByStep操作的算例演示:
本文首先简单的讨论了DLOAD的一般含义,并详细的介绍了基于Fortran和MATLAB两种方式的DLOAD的开发步骤,对比发现开发步骤基本相同,但MATLAB更加高效和灵活。同时,由于iSolver基本单元类型和Abaqus算法完全一致,可以发现同一个算例验证两者分析结果完全一致,从而证明基于MATLAB的DLOAD的流程和结果的正确性。
DLOAD的开发一方面要有扎实的公式推导能力,另一方面需要基础的编程能力和开发工具应用水平,后者不是重点,但往往浪费了大家很多的精力,善用工具方能提高效率,基于Fortran和MATLAB两种方式的DLOAD的开发步骤和开发工具如下表: