Fortran Abaqus争议子程序
目前我正在用Fortran Abaqus争议子程序,fortran,subroutine,abaqus,Fortran,Subroutine,Abaqus,目前我正在用fortran编写一个子程序DISP,对此我是新手。在这段代码中,我想读取一个我使用的文件 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
fortran
编写一个子程序DISP
,对此我是新手。在这段代码中,我想读取一个我使用的文件
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
将值分配给节点
和U(1)
,它们已经是子例程中声明的参数
SUBROUTINE DISP(U,KSTEP,KINC,TIME,NODE,NOEL,JDOF,COORDS)
我可以声明一个像实数,维(n,m)这样的数组吗
循环为已经是参数的节点和U(1)赋值
在子程序中声明
SUBROUTINE DISP(U,KSTEP,KINC,TIME,NODE,NOEL,JDOF,COORDS)
不,不能以这种方式分配给节点。DISP的工作方式是,它被多次调用,每个自由度调用一次。因此,对于给定的pass-through DISP,必须更新Abaqus在node中指定的节点位移和JDOF中指定的方向
每次打开一个文件都会很慢,所以这可能不是最好的方法。最好的解决方案是在DISP例程中使用计算U的算法。
另一种解决方案是在代码中定义矩阵。这在代码中可能有点难看,但比每次打开一个文件要好 欢迎来到堆栈溢出!我对你的问题进行了编辑,以便更具可读性。有关如何设置帖子格式的更多信息,请参阅。另外,请确保我在编辑过程中没有犯任何可能导致代码无效的错误。现在我可以阅读您的问题,但我无法理解,我认为您没有提供足够的代码来正确说明您正在尝试做什么,到目前为止您有什么,以及您的困境。输入文件的示例也可能有所帮助。不幸的是,几乎所有编程问题的答案都是从哪个开始的。。。是的,你可以。或者不,你不能。这两样对你都没有多大用处。你可能应该问我怎样才能。。。然后明确说明自己在回答这个问题时遇到的麻烦。除了文档中“待定义变量”下列出的参数外,您不得更改任何参数,在本例中,这些参数仅为
U
。你可以用你自己声明的A
做你想做的事。