2017-07-16 34 views
-1

我有一個包含特定座標溫度值的文件。文件的格式如下:使用Python腳本將溫度應用於Abaqus中的指定節點

X Y Z ^溫度

的目標是從文件中讀取這些信息,並應用它,然後Abaqus的做它的魔力。我得到了一個建立模型的Python腳本(我懷疑這個腳本是使用Abaqus GUI自動生成的)。在此文件中,使用諸如edges.findAt,faces.findAtvertices.findAt的方法來選擇所需位置並應用溫度。現在,我正在尋找一種方法告訴Abaqus在某個節點位置施加溫度。這似乎是可能的,因爲當我看到inp文件時,我看到了這樣的模式。即使如果你能給我一個例子來讀取文件中的負載,溫度或任何東西,並將它應用到特定的位置,它可能會非常有用。

- 編輯 -

文件我一直在與可以在這個link找到。它包含兩個文件,heat_aba.py和input.txt。我的問題是關於第58-102行,用python中的例程替換爲從input.txt讀取溫度,並在Abaqus中初始化模型。 input.txt中的座標是節點座標。

+1

在位置x,y,z有沒有節點?你只能在一個節點開出溫度。在任何情況下,這個問題都超出了本網站的範圍,除非您能夠顯示您正在使用的代碼並遇到問題。 – agentp

+0

我更新了問題並添加了相應的文件。另外,座標是節點的位置。 –

+0

它真的不清楚你有什麼問題。你知道如何在python中打開文件嗎?如果沒有,你應該放棄abaqus並閱讀python教程。 – agentp

回答

1

由於用於學習如何使用Python打開/讀取文件的資源已經廣泛可用,因此我將回答關於Abaqus/Python的詳細信息。

findAt方法用於幾何特徵。例如,爲了在指定的位置返回到面部對象,使用:

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

的命令是用於細胞,邊緣和頂點對象相似。請注意,如果多個對象可能與指定的座標相關聯,則可能會有些不明確之處。例如,如果指定的點位於多個面的邊界上(比如它位於邊上),則有責任確保從findAt返回正確的面。 (另外,在上面的一條評論中,您提到您有一個存儲在變量tmp_node中的節點,但實際上它是一個Vertex對象)。現在

,一旦你有一個幾何對象的引用,如上所示,例如f,可以使用它來確定與該幾何區域相關聯的節點:

node_objects = f.getNodes() 

同樣,類似的方法可用於其它幾何實體。請注意,getNodes返回一個Node對象列表,其中每個對象都有不同的屬性。爲了讓標籤或節點的座標,你可以使用:

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

現在,如果你熟悉Python,這個節點匹配到外部數據文件中的條目應該很容易。如果不是的話,那麼這在SO上應該是一個單獨的問題。

要將所需溫度應用於節點,您必須使用Temperature對象(在此處查看對象的使用模式?)。在您提到的行中,您鏈接到的(自動生成的?)Python腳本中有一個例子。簡單地替換正確的大小和區域。例如假設ma是模型和根組件:

# ...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() 

注意兩個myregion.nodesmagnitudes是有序的,所以,如果你聰明可以用一個命令定義溫度的所有節點。

相關問題