子程序写好了,也可以运行。但是运行结束后发现应力应变和状态变量都没有更新,子程序在每个增量步开始时输出应力、应变和状态变量都为0,但是子程序本身是计算了应力和雅各比矩阵的,而且也有应变增量。我也试着把应力、应变保存在状态变量里,但是同样每个增量步开始时输出都是0。我参考了其他类型的子程序,语句应该没问题,请问是怎么回事?
这个问题可能与ABAQUS子程序的编写方式有关,子程序在执行时需要注意以下几点:
子程序应该在每个增量步中进行计算,并将结果更新到当前增量步的状态变量中,以便ABAQUS求解器能够读取和使用。
如果在子程序中使用了本地数组或变量,请注意初始化,以确保它们在每个增量步开始时都被正确地设置为零。
请确保子程序中所有必要的输出都是正确的,以便可以在ABAQUS输出文件中找到它们。例如,如果在子程序中计算了应力或应变,但在输出时未能正确设置它们,那么输出的值可能会为零或未定义。
在运行ABAQUS时,请确保正确设置了子程序输入文件,以便ABAQUS能够正确地调用的子程序。
该回答引用GPTᴼᴾᴱᴺᴬᴵ
这可能是子程序未正确与ABAQUS显式耦合的原因。请检查以下事项:
确认子程序已经正确定义了状态变量和材料属性,并且在增量步之间进行了正确的更新。
确认子程序在调用时已经与ABAQUS成功耦合,即将子程序的名称包含在材料定义的INP文件中,并且与子程序使用的名称相匹配。
确认子程序已正确设置了其计算的增量步数和时间步数,并将其与ABAQUS输入文件中的步数相匹配。
如果以上步骤均已经检查,您可以尝试在子程序中添加一些调试语句,例如在每个增量步之前输出一些调试信息,以帮助您进一步诊断问题所在。