0

圧力に応じてファスナーの剛性を変えようとしています。フィールド変数を使用し、.filファイルからファスナーの力を抽出することで、この問題に取り組んでいます。

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

レコードNo.1No.495を適当に打って、その中の要素番号と内力を求めることができます。

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

さらに、ファスナーには質点がないため、ノード自体または質点からファスナーCTFを取得できませんでした。

ノードとファスナーが同じ順序で一致していると仮定すると、私のコードは小さなモデルのわずかな要素でうまく機能します。しかし、多くの留め具を備えた大きなモデルでは、すべてが混乱します。

これを解決する方法や、サブルーチンからキー 1900にアクセスできない理由、またはGETPARTINFOが期待どおりに返されない理由についての意見はありますか?

4

1 に答える 1

2

わかりました、私はこれを理解しました。.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 次元マトリックスが返されます。最後の列を使用して、対応する力を保存しました。

これが誰かの役に立てば幸いです。

于 2016-04-18T13:29:33.920 に答える