1

目前我正在编写一个子程序DISPfortran我对此很陌生。在这段代码中,我想读取一个我使用的文件

OPEN(UNIT = 1, FILE = "abcd.txt", FORM = "FORMATTED", STATUS = "OLD", ACTION = "READ")

这些文件包含 nxm 矩阵中的值。我想分配这个矩阵中的值,例如column 5 = displacement,和column 1 = nodes

我可以声明一个数组,REAL,DIMENSION(n,m)::A然后DO LOOP将值分配给哪些已经是子例程中声明的参数?NODESU(1)

SUBROUTINE DISP(U,KSTEP,KINC,TIME,NODE,NOEL,JDOF,COORDS)
4

1 回答 1

1

我可以声明一个像 REAL,DIMENSION(n,m)::A 这样的数组,然后使用 DO LOOP 为 NODES 和 U(1) 分配值,它们已经是子程序中声明的参数吗?

不,您不能以这种方式分配给节点。DISP 的工作方式是多次调用,每个自由度调用一次。因此,对于给定的通过 DISP,您必须更新 Abaqus 在 NODE 中指定的节点的位移和在 JDOF 中指定的方向。

每次打开文件都会很慢,所以这可能不是最好的方法。最好的解决方案是让你的算法在你的 DISP 例程中计算出 U。一个不同的解决方案是在代码中定义你的 A 矩阵。这在您的代码中会有点难看,但比每次都打开一个文件要好。

于 2015-09-09T13:26:54.263 回答