----------------补充内容:c/c++编写用户子程序-----------
有知友问怎样用c/c++编写abaqus用户子程序,abaqus帮助文档介绍了该内容,但还是更推荐采用Fortran编写,结合自己的经验,认为c/c++编写abaqus子程序的须掌握以下两个要点:
1.子程序接口。
fortran的用户子程序接口中形参与实参间默认按地址传递,c/c++默认按值传递且c/c++中变量是case sensitiy,因此采用c/c++编程需传递变量指针或引用。对于数组,c/c++中数组名本身为数组第一个元素的地址。此外,fortran二维数组在内存中按列分布,而c/c++按行排列,也应引起注意。
2.子程序编译。
c/c++子程序需先编译为目标文件,然后提交计算,编译obj文件需满足abaqus要求,编译选项参考.env文件中compile_cpp部分。
最后,上传一个c++编写的umat接口。
----------------原答案-----------
说到ABAQUS的二次开发,首先要分清楚到底是哪方面的二次开发,学过有限元课程的童鞋都很清楚,有限元方法的流程为前处理、求解、后处理,在ABAQUS有限元软件中,前处理生成cae文件,提交任务后软件会根据你的分析部类型选择求解器比如standard or explicit,求解完成生成一个output database(也就是odb文件),用户即可进行后处理。ABAQUS利用Python作为脚本语言,主要是对前处理和后处理进行二次开发,以方便使用者建模和处理数据(c++也能做一些后处理),之所以选择Python,个人觉得是出于Python的强大功能;而ABAQUS的求解器应该是用Fortran编写的,因此用户子程序的开发主要是用Fortran语言(当然c/c++也是可以的,需要比较扎实的程序编译基础),这是因为Fortran语言比较古老,并在数值计算和数组应用方面优点突出。