わかりました、私はこれを理解しました。.fil ファイルのキー 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 を呼び出した後、解析の開始時にこのサブルーチンを 1 回だけ呼び出すと、最初の列にファスナー エレメント番号が含まれ、2 番目の列に対応するファスナーの最初のノードがあり、最後の 1 列が空である倍精度の 3 次元マトリックスが返されます。最後の列を使用して、対応する力を保存しました。
これが誰かの役に立てば幸いです。