在Abaqus中获取与紧固件节点相关的元素编号
Obtaining the element number related to a node of a fastener in Abaqus
我正在尝试根据施加在紧固件上的压力来改变紧固件的刚度。我正在通过使用场变量并从 .fil 文件中提取紧固件中的力来解决这个问题。
问题是我需要将 UFIELD 提供的节点编号与 .fil 文件中紧固件的元素编号相关联。我知道 .fil 文件在记录 no 中包含该信息。 1900 但是当我为该记录设置 if statement 时,我的子例程中从未命中它。虽然,当我将 .fil 文件转换为 ASCII 时,我可以在那里看到该信息。
记录第1 和 没有。 495打中得当,可以得到里面的元素数和内力
此外,我已经尝试在我拥有的节点和元素上使用 GETPARTINFO。但它 return 的编号与我的紧固件节点或元素本身无关。
此外,我无法从节点本身或 material 点获取紧固件 CTF,因为紧固件没有 material 点。
如果我假设节点和紧固件的顺序相同并且只是匹配它们,我的代码就可以很好地处理一个小模型中的几个元素。但是在一个有很多紧固件的大模型中,一切都会混淆。
关于如何解决这个问题的任何想法或者关于为什么我无法从我的子程序访问 key 1900 或为什么 GETPARTINFO 不访问的一些评论return 会发生什么?
好的,我明白了。 .fil文件中key 1900打印在command默认读取位置之前
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 后,仅在分析开始时调用此子程序一次,它将 return 一个双精度 3 维矩阵,第一列包含紧固件元素编号,第二列 - 相应的第一个节点紧固件,最后一个是空的。我用最后一列来存储对应的力
希望这对某些人有所帮助。
我正在尝试根据施加在紧固件上的压力来改变紧固件的刚度。我正在通过使用场变量并从 .fil 文件中提取紧固件中的力来解决这个问题。
问题是我需要将 UFIELD 提供的节点编号与 .fil 文件中紧固件的元素编号相关联。我知道 .fil 文件在记录 no 中包含该信息。 1900 但是当我为该记录设置 if statement 时,我的子例程中从未命中它。虽然,当我将 .fil 文件转换为 ASCII 时,我可以在那里看到该信息。
记录第1 和 没有。 495打中得当,可以得到里面的元素数和内力
此外,我已经尝试在我拥有的节点和元素上使用 GETPARTINFO。但它 return 的编号与我的紧固件节点或元素本身无关。
此外,我无法从节点本身或 material 点获取紧固件 CTF,因为紧固件没有 material 点。
如果我假设节点和紧固件的顺序相同并且只是匹配它们,我的代码就可以很好地处理一个小模型中的几个元素。但是在一个有很多紧固件的大模型中,一切都会混淆。
关于如何解决这个问题的任何想法或者关于为什么我无法从我的子程序访问 key 1900 或为什么 GETPARTINFO 不访问的一些评论return 会发生什么?
好的,我明白了。 .fil文件中key 1900打印在command默认读取位置之前
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 后,仅在分析开始时调用此子程序一次,它将 return 一个双精度 3 维矩阵,第一列包含紧固件元素编号,第二列 - 相应的第一个节点紧固件,最后一个是空的。我用最后一列来存储对应的力
希望这对某些人有所帮助。