2016-04-18 8 views
0

締め具の硬さを圧力に応じて変更しようとしています。フィールド変数を使用してファスナーの力を.filファイルから抽出することで、この問題に近づいています。Abaqusのファスナーのノードに関連する要素番号を取得する

問題は、私は .filファイル内のファスナーの要素番号にUFIELDによって提供されるノード番号を関連付ける必要があることです。 .filファイルにはその情報がレコードには含まれています。 1900しかし、そのレコードの文をに設定した場合、サブルーチンでは決してヒットしません。私の.filファイルをASCIIに変換すると、そこにその情報が表示されます。

記録第1第495が適切にヒットしていると私はそれで要素数と内力を得ることができます。

さらに、私は持っているノードと要素の両方でGETPARTINFOを使ってみました。しかし、ファスナーのノードや要素自体に関連しない番号を返します。

さらに、ファスナが物点を持たないため、ノード自体またはマテリアルポイントからファスナを取得できませんでした。CTF

ノードとファスナーが同じ順序であり、それらにマッチすると仮定すると、私のコードは小さなモデルのほんの少しの要素でうまく機能します。しかし、ファスナーがたくさんある大きなモデルでは、すべてが混ざり合ってしまいます。

このまたは私は私のサブルーチンからのアクセスキー1900を傾けるか、なぜGETPARTINFOが予想されるものを返さない?理由についておそらくいくつかの発言を解決するためにどのように任意のアイデア

+0

私はAbaqusがFEMパッケージであることは分かっていますが、これについては何も分かりません。あなたの質問に、より専門的な場所を見つけることを検討してください。このタグ付きFortranはなぜですか? Fortranコードはありますか?ここでのすべての質問は、コードやコードの問題に関するものです。 –

+0

AbaqusサブルーチンはFortran言語で書かれています。この質問は、FortranとAbaqusの相互作用と結果へのアクセスについてのものであり、FEMの背後にある力学や物理に関するものではありません。だから私は思った、それはそれを求める正しい場所です。 私はそれを自分で考え出したと思う。私は後で同じような問題を持つ他の人々がそれを見つけることができるように答えを投稿します。 – UN4

答えて

2

私はこれを理解しました。 .filファイルのキー1900が読み取った位置が

call DBFILE(2,ARRAY,JRCD) 

をリセットしなければならない必要なキーファイルを取得するためには、コマンド

call DBFILE(0,ARRAY,JRCD) 

のデフォルトの読み取り位置の前に印刷されたしかし、問題は、キーということです1900,1901,1933などは、指定されたelsetに関係なく、モデル内のすべての要素に対して生成されます。そこで、要素番号と対応するノード番号を持つファスナーの配列を生成するための小さなサブルーチンを書きました。

 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次元マトリックス返された後に一度だけ、分析の開始時にこのサブルーチン - ファスナーの対応する第1のノードとを最後の1つは空です。私は対応する力を格納するために最後の列を使用しました。

これは誰かに役立つことを期待しています。

関連する問題