在 UMAT 中获取迭代次数
Get interation number in UMAT
虽然很容易获得当前步数或增量数(变量 KSTEP 和 KINC),但在子程序 UMAT 中我找不到一个简单的方法来知道迭代数。
我知道以下 "if clause" 会告诉我是否处于第一步的第一次增量的第一次迭代中:
IF((KINC.EQ.1).AND.(SUM(STRAN+DSTRAN).EQ.0.0D0)) THEN
而且我也知道我可以获得写入外部文件的迭代数。但是,是否可以仅在 UMAT 子程序中执行此操作?
从来没有真正需要知道 UMAT 中的迭代次数的理由。如果你认为你需要知道它,这通常表明你有更好的方法来实现你想知道的。
您可以使用公共块来跟踪您输入 umat 的频率,以及您正在进行的迭代。但我真的不建议这样做。没有充分的理由知道迭代次数。除非你的算法是完美的,否则它会给你带来比它值得的更多的问题。
还在您的代码中检查第一个增量 - 这不会告诉您何时处于真正的迭代中,它很可能会在 PRE 中发生。
虽然很容易获得当前步数或增量数(变量 KSTEP 和 KINC),但在子程序 UMAT 中我找不到一个简单的方法来知道迭代数。
我知道以下 "if clause" 会告诉我是否处于第一步的第一次增量的第一次迭代中:
IF((KINC.EQ.1).AND.(SUM(STRAN+DSTRAN).EQ.0.0D0)) THEN
而且我也知道我可以获得写入外部文件的迭代数。但是,是否可以仅在 UMAT 子程序中执行此操作?
从来没有真正需要知道 UMAT 中的迭代次数的理由。如果你认为你需要知道它,这通常表明你有更好的方法来实现你想知道的。
您可以使用公共块来跟踪您输入 umat 的频率,以及您正在进行的迭代。但我真的不建议这样做。没有充分的理由知道迭代次数。除非你的算法是完美的,否则它会给你带来比它值得的更多的问题。
还在您的代码中检查第一个增量 - 这不会告诉您何时处于真正的迭代中,它很可能会在 PRE 中发生。