在UMAT中获取国际号码

问题描述 投票:1回答:2

尽管很容易获得当前步数或增量数(变量KSTEP和KINC,但是当在子例程UMAT中时,我找不到找到知道迭代数的简便方法。

我知道下面的“ if子句”会告诉我是否在第一步的第一次增量的第一次迭代中:

IF((KINC.EQ.1).AND.(SUM(STRAN+DSTRAN).EQ.0.0D0)) THEN

而且我也知道我可以将迭代编号写入外部文件。但是,是否可以仅在UMAT子例程中执行此操作?

abaqus
2个回答
2
投票

从来没有真正的理由需要知道UMAT中的迭代编号。如果您认为需要了解它,通常表明您有更好的方法来实现自己想要的知识。

您可以使用一个公共块来跟踪输入umat的频率以及进行的迭代。但我真的建议反对。没有充分的理由知道迭代次数。除非您的算法是完美的,否则它将给您带来比其价值更大的问题。

还可以在代码中检查第一个增量-它不会告诉您何时处于实际迭代中,它很有可能会在PRE中发生。


0
投票

尽管其他答案给出了解决方案,主要是使用大小限制为NElements * NIntegration的全局数组,但作者听起来似乎从来没有理由在您的算法中使用它。您可能想知道迭代编号的原因可能有很多种。我使用的UMAT中的一个示例将调用限制为更新昂贵的分析Jacobian。

© www.soinside.com 2019 - 2024. All rights reserved.