今日无稿可推,推推老本 导读 “ 在我所有的程序 Bug 中,80% 是语法错误。剩下的 20% 中,80% 是不重要的逻辑错误。剩下的 4% 中,80% 是指针错误。最后剩下的 0.4% 是有难度的问题。” -MarcDonner,IBM Watson 研究中心 经常收到读者关于Abaqus软件使用过程中Fortran子程序调试的问题,在形形色色的错误面前许多初学者无从下手,不知如何去查找问题所在。本文将对Abaqus中子程序的调试方法以及如何对错误进行预警做一个简单的介绍。 通过总结各类错误问题,大致可以把子程序编写过程中的错误归为三类:模型错误、语法错误和逻辑错误。 01 — 模型错误 有限元模型中自身材料、截面属性、网格类型、网格划分方式、接触设置、边界/载荷设置、输出设置、软件子程序配置等引起的错误,非子程序本身的错误。此类错误一般会在任务监控界面下的Error或Warning栏中有具体提示。 模型错误属于有限元模型常规建模错误,可以先使用非子程序模型予以测试,排除建模错误之后,再改为子程序计算模型。该类错误属于最容易解决的一类。 02 — 语法错误 03 — 逻辑错误
针对逻辑错误,建议如下:
print * ,NOEL,dft,dmt,dfc,dmc !输出多个单变量 print *,stress(1:6) !输出数组stress print*,'F1=’,F1,'F2=’,F2 !输出变量及提示信息 do ii=1,6 print*,int(C0 (ii,1:6)) end do !输出6*6矩阵C0 open(unit=10, file='error.dat') ! 打开error.dat文件,unit指定文件代码,file指定文件名称。 write(10, *) "hello" ,SDV1 ,X,Y,Z !在文件中写入hello及多个变量 04 — 提示预警 有些情况下,错误是可以预计的,即在某种条件下,数据自然会出现异常,因此,可以提前在可能出现错误的地方给予相应的错误提示信息。例如,下面的公式: |
|
来自: 复合材料力学 > 《Abaqus子程序开发》