【问题标题】:How to get total increments in Disp subroutine in ABAQUS如何在 ABAQUS 的 Disp 子程序中获得总增量
【发布时间】:2019-01-23 09:50:07
【问题描述】:

我在 ABAQUS 中使用 Disp 子程序。我想对我的模型应用特定的边界条件。这是我的代码的一部分:

  IF (NODE==mst(2,1)) THEN
     IF (JDOF .EQ. 1) THEN
       U(1)=0.01
     ELSE IF (JDOF .EQ. 2) THEN
       U(1)=0
     ELSE
       U(1)=0
     END IF
  END IF

问题是我不知道 ABAQUS 使用多少增量来求解模型。因此,我不知道如何将“U(1)=0.01”的值更改为增量。我知道“KINC”给出了当前的增量编号。但是,我不知道如何获得增量的总数。 Morover,是否需要将值更改为增量或 ABAQUS 会自动执行?

【问题讨论】:

    标签: fortran subroutine abaqus


    【解决方案1】:

    增量的总数是先验未知的,除非您指定它(即,如果它无法收敛,它将减小步长,从而增加步数)。您可以使用 TIME(1) 和 TIME(2) 来了解步进时间的当前值,并据此重新制定您的负载,我认为这正是您要寻找的。​​p>

    对于第二个问题,Abaqus 将根据您指定的求解器设置自动计算增量或遵循指定的增量。有一些用户子程序可以控制增量大小,但 DISP 不是其中之一。

    【讨论】:

    • 亲爱的米格尔,感谢您的回复。我的问题是:“我需要将 U_x(1) 的最终值设置为 0.01。如果 ABAQUS 需要多个增量来解决我的模拟,我如何将 U_x(1) 的值更改为增量值?还是 ABAQUS 会自动执行,它会理解 U_x(1)=0.01 是最终值?"
    • U(1) 是此时规定变量的总值。因此,如果位移从零变化到您的幅度,您可以使其与当前步长时间 TIME(1) 成比例。 U(...) = 0.01 * TIME(1) 这意味着对于 step time = 1,您的点的位移为 0.01,线性增加。
    • 这正是我想要的。谢谢。请告诉我是否应该将 DISP 中的 U(1) 的值更改为其增量值?如果 ABAQUS 需要多个增量来进行此模拟,则在每次增量时,它都会尝试应用你(1)?
    • 应该是总值而不是增量。如果它需要更多增量,它将使用适当的时间步调用您的子例程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    • 2022-10-31
    • 1970-01-01
    相关资源
    最近更新 更多