好的,我想通了。.fil 文件中的 key 1900 打印在命令默认读取位置之前
call DBFILE(0,ARRAY,JRCD)
为了获得所需的密钥,必须重置文件读取位置
call DBFILE(2,ARRAY,JRCD)
但问题是,无论您指定的 elset 是什么,都会为模型中的每个元素生成键 1900、1901、1933 等。因此,我编写了一个小子程序来生成一个带有元素编号和相应节点编号的紧固件数组。
subroutine obtain_relation(REL)
INCLUDE 'ABA_PARAM.INC'
DIMENSION ARRAY(513),JRRAY(NPRECD,513),REL(500,3)
character*8 CVALUE
EQUIVALENCE (ARRAY(1),JRRAY(1,1)), (ARRAY(4),CVALUE)
!Rewinding the file
CALL DBFILE(2,ARRAY,JRCD)
i = 1
DO K1=1,999999
!Start reading output file
CALL DBFILE(0,ARRAY,JRCD)
!If the end of the end of pre-step records go to 120
IF (KEY .EQ. 2000) GO TO 120
!If the end of all records is reached go to position 120
IF (JRCD .NE. 0) GO TO 120
!The key of the output table is at second possition (first is length of
!the array)
KEY=JRRAY(1,2)
! Record 1900 contains information about element conectivity
IF (KEY .EQ. 1900) THEN
IF(trim(CVALUE).eq."CONN3D2") then
Rel(i,1) = JRRAY (1,3) ! <- Element number
Rel(i,2) = JRRAY (1,5) ! <- First node number
i = i + 1
END IF
END IF
ENDDO
120 Continue
Return
end
在 URDFIL 中调用 POSFIL 后,在分析开始时仅调用一次此子程序,它将返回一个双精度 3 维矩阵,第一列包含紧固件元件编号,第二列 - 对应紧固件的第一个节点,最后一个为空。我使用最后一列来存储相应的力。
希望这对某人有帮助。