2017-07-16 8 views
-1

特定の座標の温度値を含むファイルがあります。次のようにファイルの形式は次のとおりです。PythonスクリプトでAbaqusの指定されたノードに温度を適用します

X Y Zの温度の目標は、ファイルからこの情報を読み取り、それを適用することです

、その後、Abaqusのは、その魔法を行います。私はモデルを構築するPythonスクリプトを与えられています(私はこのスクリプトがAbaqus GUIを使って自動的に生成されたと考えています)。このファイルでは、edges.findAtfaces.findAtvertices.findAtなどのメソッドを使用して、希望の場所を選択して温度を適用します。今、Abaqusに特定の節点で温度を適用するよう指示する方法を探しています。 inpファイルを見ると、そのようなパターンが見えるので、これは可能なようです。負荷、温度などをファイルから読み込んで特定の場所に適用する例を教えていただければ本当に役に立ちます。

--Edit--

私はこのlinkで発見することができますで作業されているファイル。これには、heat_aba.pyとinput.txtの2つのファイルが含まれています。私の問題は、input.txtから温度を読み取り、Abaqusでモデルを初期化するためのPythonのルーチンに代わる行58-102に関係しています。 input.txtの座標はノード座標です。

+1

位置x、y、zにノードがありますか?ノードの温度は、ノードでのみ指定できます。いずれにしても、この問題は、作業中のコードを表示して問題が発生しない限り、このサイトの範囲外です。 – agentp

+0

質問を更新し、対応するファイルを追加しました。また、座標はノードの位置です。 –

+0

本当にどこに問題があるのか​​はっきりしていません。あなたはPythonでファイルを開く方法を知っていますか?あなたがabaqusを捨てて、Pythonのチュートリアルを読んで行くべきでない場合は、 – agentp

答えて

1

私はAbaqus/Pythonの詳細に焦点を当てます。なぜなら、Pythonでファイルを開く/読み込む方法を学ぶためのリソースはすでに広く利用できるからです。

findAtメソッドが幾何学的フィーチャに使用されます。例えば、指定された位置に顔オブジェクトを返すために、使用:

f = mdb.models[NAME].rootAssembly.instances[NAME].faces.findAt((x,y,z)) 

コマンドは、Cell、エッジ、頂点オブジェクトについても同様です。複数のオブジェクトが指定された座標に関連付けられる可能性がある場合は、あいまいさがあることに注意してください。たとえば、指定されたポイントが複数のFacesの境界にある場合(つまり、端にある場合)、正しい顔がfindAtから返されるようにする必要があります。 (また、上記のコメントの1つでは、ノードが変数tmp_nodeに格納されていますが、実際はVertexオブジェクトです)。あなたは、幾何学的オブジェクト参照を取得したら

次に、などfは上記に示した、あなたはその幾何学的領域に関連するノードを決定するためにそれを使用することができる:再び

node_objects = f.getNodes() 

を、同様の方法が他の幾何学的に利用可能ですエンティティ。 getNodesはNodeオブジェクトのリストを返します。Nodeオブジェクトのリストは、さまざまな属性を持ちます。ラベルや番目ノードの座標を取得するには、使用することができます:

n = node_object[i].label 
c = node_object[i].coordinates 

を今、あなたは、Pythonに精通している場合は、外部データファイル内のエントリに、このノードに一致することは簡単なはず。もしそうでなければ、それはおそらくここでは別の質問でしょう。

ノードに希望の温度を適用するには、Temperatureオブジェクトを使用する必要があります(ここでのオブジェクト使用のパターンを参照)。あなたは、あなたがリンクした(自動生成された?)Pythonスクリプトの例を、あなたが言及した行に示します。単に正確な大きさと地域を代入するだけです。あなたは賢いしている場合は、単一のコマンドですべてのノードの温度を定義することができるようにmyregion.nodesmagnitudesの両方が、順序付けられていることを

# ...various module imports. 
myregion = a.Set(name=NAME, nodes=(node_objects[100:101],)) 
m.Temperature(name=NAME, createStepName=NAME, magnitudes=(NUMBER,), region=myregion) 
a.regenerate() 

お知らせ:maを仮定たとえば、モデルとルートアセンブリです。

関連する問題