首页 理论教育编程技巧与好的编程习惯

编程技巧与好的编程习惯

【摘要】:在Abaqus/Explicit中,每个用户子程序都必须在形参列表的后面包含下面的语句,与Abaqus/Standard中类似,这也是用来声明隐式类型的变量和指定浮点数的单双精度的:注意:事实上,上面的两条语句并不是必需的,但包含这两条语句能避免很多不必要的错误,这是一种好的编程习惯。下面是测试用户子程序的一些编程技巧:尽可能地测试最小的模型。另外,下面的一些编程习惯对于编写漂亮的、可读性高的用户子程序也是非常重要的,在编写用户子程序时需要特别注意。

在Abaqus/Standard的用户子程序中,每个用户子程序都必须在形参列表后包含下面的语句以用于指定隐式数据类型和浮点数的单双精度:

对于双精度运算,文件aba_param.inc中指定了“implicit real*8(a-h,o-z)”,也就是以a~h、o~z字母开头的变量都是双精度的实数。这个文件位于ABAQUS的默认目录中,不需要人为地去找到它并指定它的路径,ABAQUS会自动找到它。

在Abaqus/Explicit中,每个用户子程序都必须在形参列表的后面包含下面的语句,与Abaqus/Standard中类似,这也是用来声明隐式类型的变量和指定浮点数的单双精度的:

注意:事实上,上面的两条语句并不是必需的,但包含这两条语句能避免很多不必要的(且不容易被发现的)错误,这是一种好的编程习惯。通过参数列表传进来的变量,有些是需要计算赋值的(或者说更新的),而有些只是用来被使用的,用户不能改变传进来使用的量的值,否则可能发生未知的错误。

下面是测试用户子程序的一些编程技巧:

(1)尽可能地测试最小的模型。例如,测试用户单元子程序(UEL)时,只测试含有一个单元的模型。

(2)不要引入其他复杂的特性,如接触(除非它对于测试这个子程序是必须引入的)。

(3)在向子程序中继续加入新的模块(代码)之前,测试所有可能的基本的变量,并保证正确。(www.chuimin.cn)

(4)数组尽量给定大小,随时检查数组是否越界。例如,对每个积分点只定义8个SDV,而程序中却使用(或赋值)了第10个SDV,这就有可能发生不可预知的错误(实际上,ABAQUS此时会访问某个我们无法控制的内存位置)。

另外,下面的一些编程习惯对于编写漂亮的、可读性高的用户子程序也是非常重要的,在编写用户子程序(特别是编写大型用户子程序)时需要特别注意。这对于后期代码的维护和传承非常重要。

(1)在编写程序前,对要求程序实现的过程进行正式的(或粗略的)设计;对每个重要的公式都至少推导一遍,以确保其理论的正确性。不要在没有任何设计的前提下就开始编写程序。

(2)按照一个固定的命名习惯去命名,包括对文档的命名、对对象变量的命名、对模块的命名。例如,当前模块的命名为crackSurface时,将其源文件命名为crackSurface.f90。

(3)将程序编写到多个文件中,每个文件的代码不要太长;不要将所有程序都写进同一个文件,特别是在子程序非常复杂和庞大的情况下。

(4)在程序的源文件中,为每个主要程序段添加注释,以解释代码的基本逻辑,最好注明程序的构建和修改日期,以及修改的原因。对于代码而言,注释是非常重要的。

(5)定期为程序写说明文档。特别是在程序版本升级之后,一定要更新程序的说明文档。