Abaqus二次開發系列 (一)python參數化建模的快捷方法簡介

Abaqus二次開發系列

(一)Abaqus python參數化建模的快捷方法簡介

1.如何快速創建參數化腳本

我們在操作Abaqus/CAE時,所有動作指令都存儲在工作目錄下的abaqus.rpy文件中,abaqus.rpy是實時更新的,每操作一步就會更新一下,包括對視圖的操作都會記錄在內,因此可以直接修改abaqus.rpy文件。

另外,當保存自己創建的CAE模型時,與模型同名的會出現一個.jnl的文件,該文件記錄的也是建模過程中的操作指令,不過不包含一些視圖操作。代碼更為簡練,用戶同樣可以修改此文件來獲取腳本。

例如,下面幾句是rpy中獲得的指令:

p = mdb.models['Model-1'].parts['Ball']

session.viewports['Viewport: 1'].setValues(displayedObject=p)

session.viewports['Viewport: 1'].partDisplay.setValues(sectionAssignments=ON,

    engineeringFeatures=ON)

session.viewports['Viewport: 1'].partDisplay.geometryOptions.setValues(

    referenceRepresentation=OFF)

p = mdb.models['Model-1'].parts['Bulk']

session.viewports['Viewport: 1'].setValues(displayedObject=p)

a = mdb.models['Model-1'].rootAssembly

session.viewports['Viewport: 1'].setValues(displayedObject=a)

session.viewports['Viewport: 1'].assemblyDisplay.setValues(

optimizationTasks=OFF, geometricRestrictions=OFF, stopConditions=OFF)

 

下面幾句則是.jnl文件中的指令格式:

from part import *

from material import *

from section import *

from optimization import *

from assembly import *

from step import *

from interaction import *

from load import *

from mesh import *

from job import *

from sketch import *

from visualization import *

from connectorBehavior import *

mdb.jobs['Job-1']._Message(STARTED, {'phase': BATCHPRE_PHASE,

    'clientHost': 'taishanbuzuo-PC', 'handle': 0, 'jobName': 'Job-1'})

mdb.jobs['Job-1']._Message(ODB_FILE, {'phase': BATCHPRE_PHASE,

    'file': 'D:\\temp\\Job-1.odb', 'jobName': 'Job-1'})

mdb.jobs['Job-1']._Message(COMPLETED, {'phase': BATCHPRE_PHASE,

    'message': 'Analysis phase complete', 'jobName': 'Job-1'})

mdb.jobs['Job-1']._Message(STATUS, {'totalTime': 0.0, 'attempts': ' 1U',

    'timeIncrement': 0.0001, 'increment': 1, 'stepTime': 0.0, 'step': 1,

    'jobName': 'Job-1', 'severe': 1, 'iterations': 12, 'phase': STANDARD_PHASE,

    'equilibrium': 11})

Abaqus二次開發系列 (一)python參數化建模的快捷方法簡介的圖1Abaqus二次開發系列 (一)python參數化建模的快捷方法簡介的圖2

2.python腳本的格式控制


在修改由.rpy或者.jnl文件獲取的代碼時,經常會出現下面這種格式的語句:

p = mdb.models['Model-1'].parts['Part-1']

f = p.faces

faces = f.getSequenceFromMask(mask=('[#2 ]', ), ) 

p.Set(faces=faces, name='Set-2')

上述語句中對于一個和特征的索引采用的是一種掩碼的方式,即getSequenceFromMask()函數,我們是無法確定自己所需對象的掩碼的。因此,就需要采用其他更直觀的方式獲取用戶所需要的對象。下面將介紹如何轉換.rpy文件以及.jnl文件的指令輸出格式。

第一種,在CAE主視圖下方的命令交互行輸入以下指令:

>>>session.journalOptions.setValues(replayGeometry=COORDINATE,recoverGeometry= COORDINATE)

 

運行上述指令之后,在CAE中重復上述set的建立過程,將set命名為“set-3,類型擇Geometry,且仍舊選擇同一平面作為該集合對象。操作完成后,重新查閱當前工作目錄下的Abaqus.rpy文件,代碼會變成如下形式:

p = mdb.models['Model-1'].parts['Part-1']

f = p.faces

faces = f.findAt(((20.211912, 3.333333, 20.0), ))

p.Set(faces=faces, name='Set-3')

此時對象faces的索引方式已經轉換為findAt()函數配合點坐標的方式。

第二種:在Abaqus GUI命令行交互窗口輸入以下指令:

>>>session.journalOptions.setValues(replayGeometry=INDEX,recoverGeometry=INDEX)

    上述命令執行完后,再次重復建立一個集合,命名為“set-4”,集合類型和對象同上。再次查看工作目錄下的Abaqus.rpy文件,其最新更新內容如下:

p = mdb.models['Model-1'].parts['Part-1']

f = p.faces

faces = f[1:2]                                   

p.Set(faces=faces, name='Set-4')

此時選取對象faces的索引方式已經轉換為實際特征索引號的方式。按照同樣的道理,讀者可以建立相同的單元集合或者節點集合來檢驗上述區別,一般地,在AbaqusGUI程序開發中,優先選擇這兩種對象索引方式,不推薦使用掩碼的方式,該方式一般不具有通用性。

     

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

48
42
40