問題タブ [abaqus]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 存在しない場合、未知の型の変数を自動的に作成しますか?
不明なタイプのさまざまな変数 (ABAQUS では「シーケンス」と表示されます) があり、それらをループで結合したいと考えています。
問題は、x を = [] で初期化すると、エラー メッセージが表示されることです。
TypeError: リスト (「シーケンス」ではなく) をリストに連結することしかできません。
最初のループで x を自動的に作成するなど、別の (単純で効率的な) 方法はありますか?
python - Pythonコマンドを使用してパーツを節点座標
特定のノードの座標にアクセスする必要があります。オーファン メッシュをインポートしました。CAE でクエリ オプションを使用して節点座標を要求すると、必要な座標が得られます。ただし、python コマンドを使用して同じことを要求すると、いくつかの異なる座標が取得されます。コマンドの何が間違っているのか、なぜそのような違いがあるのか わかりません。
これは、図で述べたようにクエリをリクエストしたときに得られるものです
ノード 69 の座標:3.732E-03、-3.118594、1.189815
次のコマンドを使用すると、別の値が得られます
mdb.models['Model-4'].parts['Bio_Mech1_2'].nodes[69].coordinates (-1.37620043754578, -3.04504609107971, 1.26058506965637)
または、アセンブリからノードを呼び出しても
mdb.models['Model-4'].rootAssembly.instances['Bio_Mech1_2-1'].nodes[69].coordinates (-1.37620043754578, -3.04504609107971, 1.26058506965637)
python - ABAQUS で部品のセル全体を自動的に削除するスクリプト
セルの体積が特定の値よりも小さい場合、ABAQUS でパーツ内のセルを削除するスクリプトを作成しようとしています。セルを削除する簡単なコマンドはありますか?
これは私が試したことです:
ありがとう!
python - Abaqus nogui python インターフェイスを使用した端末への出力
abaqus nogui python スクリプトを実行しているときに、スクリプトのステータスをターミナルに出力したいと考えています。しかし、私がそうするとき、例えば:
私も試しました:
と
ターミナルには何も出力されません。それにもかかわらず、私のコードは正常に動作し、本来の動作をすべて実行します。
この問題を解決する方法を知っている人はいますか?
fortran - Abaqus でファスナーの節点に関連する要素番号を取得する
圧力に応じてファスナーの剛性を変えようとしています。フィールド変数を使用し、.filファイルからファスナーの力を抽出することで、この問題に取り組んでいます。
問題は、UFIELDによって提供される節点番号を.filファイル内のファスナーの要素番号に関連付ける必要があることです。私は、.filファイルのレコード番号にその情報が含まれていることを知っています。1900ですが、そのレコードにif ステートメントを設定すると、サブルーチンでヒットすることはありません。ただし、.filファイルを ASCII に変換すると、そこにその情報が表示されます。
レコードNo.1とNo.495を適当に打って、その中の要素番号と内力を求めることができます。
さらに、私が持っているノードと要素の両方でGETPARTINFOを使用してみました。しかし、ファスナーのノードまたは要素自体に関連しない番号を返します。
さらに、ファスナーには質点がないため、ノード自体または質点からファスナーCTFを取得できませんでした。
ノードとファスナーが同じ順序で一致していると仮定すると、私のコードは小さなモデルのわずかな要素でうまく機能します。しかし、多くの留め具を備えた大きなモデルでは、すべてが混乱します。
これを解決する方法や、サブルーチンからキー 1900にアクセスできない理由、またはGETPARTINFOが期待どおりに返されない理由についての意見はありますか?
python - Odb の State 変数名を Python に置き換える
Abaqus には、独自の材料記述 (VUMAT) があります。この VUMAT は、SDV1、SDV2 などの名前の状態変数を生成します。これらの変数は、abaqus の他の出力データと共にバイナリ .odb ファイルに保存されます。これらの変数が非常に多いため、S1、S2、E1、E2 などの意味のある名前を付けたいと思います。そのため、Abaqus ビューアで .odb を表示すると、どの変数がどれであるかが明確になります。
現在、abaqus は、その .odb ファイルを読み書きするための Python インターフェースを提供しています。しかし、検索できる限り、これらの変数の名前を変更する方法が見つかりませんでした。それらを変更しようとすると、読み取り専用エラーが発生します。
したがって、メモ帳++で.odbを開こうとしたところ、そのファイル内のすべてのSDVエントリを手動で必要なものに置き換えて保存することがわかりました。名前も Abaqus Viewer で変更されます。それはとても良いです!
しかし、私はこのプロセスを自動化したいと考えています。そこで、最初の .odb を読み取り、SDV を置き換え、変更された .odb を別のファイルとして保存する Python スクリプトを作成しました。
しかし、新しい .odb を abaqus ビューアで開くと、次のメッセージが表示されます。
***エラー: Abaqus データベース ファイルが壊れています。このファイルが FTP または同等の機能を使用して別のマシンから転送された場合は、ファイルが ASCII モードではなくバイナリ モードを使用してコピーされたことを確認してください。
さらに、現在、このコードは SDV20 も置き換えていますが、それを回避し、SDV20、SDV21 などの一部ではなく、SDV2 のみを置き換えるにはどうすればよいですか?
私は何が欠けていますか?私はpython 2.7を使用しています。
編集:
ODB を HEX エディターで開くと、次のパターンが表示されます。 SDV9 の後に SDV10 が続く場合:
エンコーディングが文字数で始まることがわかります。SDV9 の場合は 04、SDV10 の場合は 05 の後に NULL 値が続きます。SDV1 ~ SDV9 は 3、残りは 6 です。SDV9の部分を次のように変更してみました:
SDV10の部分を次のように変更しているときに、同じエラーが発生しました。
完全に正常に動作します。誰かがこれに精通している場合は、助けていただければ幸いです。
EDIT2:
新しい変数は古い変数とまったく同じ長さでなければならないため、私のコードは機能しません。長さが合っていれば問題ありません。短い変数は、必要な長さの文字を取得するために、変数の後にスペースを入れることができます。
SSchneid によって提案されたコードを使用することで、長い SDV の一部を含まない、交換用の正確な SDV を一致させることができました。
FieldOutput() と addData() を含むフィールド変数を追加する標準的な方法は、既存の SDV を別の名前で複製するため、良い解決策ではありません。非常に大規模な分析では、odb のサイズが大幅に増加します。古いものを削除する方法がない限り。
もちろん、必要な変数をサブルーチンから直接別のテキスト ファイルに出力することで、さらに進めることもできます。次に、そのテキスト ファイルを使用して、odb 内に新しい Field 出力を生成します。テキストファイルは後で削除できます。そして、これらすべてが SDV 出力を要求することなく行われます。
または、SDV 出力を .fil ファイルに要求してから、FieldOutput() と addData() を使用して、odb にアセンブルすることもできます。しかし、これらは非常にハックなソリューションであり、ディスクへの大量の書き込みと、出力テキスト ファイルを解析するための多数のコード行が必要です。
完全な解決策が投稿されるか、自分でそれを理解するまで、私はこのトレッドを未回答のままにしておきます(この場合、回答うさぎを投稿します)
助けてくれてありがとう!