詹先覺,左宏志
(寶山鋼鐵股份有限公司,上海 201900)
油套管特殊螺紋接頭在石油、天然氣開采過程中受到惡劣的外界環(huán)境載荷的長期作用,主要有拉伸、壓縮、內(nèi)壓、外壓等載荷[1-6]。特殊螺紋接頭是由數(shù)控車床加工而成的,每個接頭的尺寸不可避免地存在偏差,因此在研發(fā)時需要按照ISO 13679 ∶2019《石油天然氣工業(yè) 套管及油管螺紋連接試驗程序》及ISO/PAS 12835 ∶2013《熱采井用套管連接的質(zhì)量評定》加工多組極限偏差組合的試樣進行全尺寸復(fù)合載荷試驗。該試驗的費用高、周期長,若在試驗過程中發(fā)生螺紋黏結(jié)或氣體泄漏等異常情況,需要修改設(shè)計并重新試驗。為了提高試驗的成功率,在設(shè)計時除了采取以往經(jīng)驗、解析方法外[7-8],有限元方法是最有效的工具。現(xiàn)介紹一種基于Python 的特殊螺紋接頭參數(shù)化有限元分析方法。
有限元方法在常規(guī)的機械結(jié)構(gòu)受力分析中有成熟的理論模型,可模擬得到無法測量位置的應(yīng)力、應(yīng)變,找到危險點,從而在設(shè)計初始階段優(yōu)化結(jié)構(gòu),避免對實物試驗的過分依賴,降低研發(fā)成本,縮短研發(fā)周期。但是,特殊螺紋接頭的有限元案例與常規(guī)案例相比,具有以下不同特點:①內(nèi)、外螺紋間有很長的相互接觸;②螺紋升角很小,可將三維模型簡化為二維軸對稱模型;③密封面處為大位移變形,應(yīng)力≥材料屈服強度;④過盈配合面對尺寸偏差變化敏感;⑤載荷為變化的復(fù)合載荷。
目前,采用Abaqus 等軟件對特殊螺紋接頭進行有限元分析已較普遍[9-11]。一般采用人工建模的方式進行特殊螺紋接頭分析,但是該方式存在以下缺點:①手工界面操作過多,過程離散;②效率較低,大批量尺寸組合的分析難以進行;③手工錯誤率較高,模型不完全相同;④計算結(jié)果不收斂時,糾錯時間成本高。
一種結(jié)構(gòu)形式的特殊螺紋接頭包含上百個規(guī)格(一種外徑、壁厚和鋼級組合為一個規(guī)格),每個規(guī)格又有多種尺寸、偏差配合,從而帶來了大量的有限元分析任務(wù)。
Python 語言是一種應(yīng)用廣泛的多平臺高級程序語言,具有豐富的擴展模塊,適用于各類應(yīng)用程序的快速開發(fā),是Abaqus 軟件的內(nèi)置語言,可用于Abaqus 軟件從前處理至后處理的全過程開發(fā)[12]。采用基于Python 的參數(shù)化分析的方式,可以克服人工建模的缺點,實現(xiàn)特殊螺紋接頭有限元分析的自動化、標(biāo)準化分析[13-15]。但是由于特殊螺紋接頭結(jié)構(gòu)的復(fù)雜性,基于Python 語言,實現(xiàn)參數(shù)化全過程控制的研究尚不多見。
Abaqus 軟件具有強大的多物理場模擬仿真功能,可用于解決從相對簡單的線性問題到復(fù)雜的高度非線性問題,提供了豐富的單元庫和材料模型庫。Abaqus 軟件的對象模塊分為session、mdb 和odb 三類。其中,session 為視圖對象,可用于用戶定義視圖;mdb 為模型數(shù)據(jù)對象,主要包含計算模型對象和作業(yè)對象;odb 為數(shù)據(jù)庫對象,包含計算模型數(shù)據(jù)和結(jié)果數(shù)據(jù)等信息。前處理主要在mdb對象中操作,后處理主要是對給出的odb 對象進行數(shù)據(jù)分析,session 對象主要在輸出結(jié)果圖片時定義視圖。
特殊螺紋接頭所有參數(shù)可以分為:外螺紋接頭參數(shù)、內(nèi)螺紋接頭參數(shù)、外螺紋參數(shù)、內(nèi)螺紋參數(shù)。其中,每一個實際尺寸參數(shù)L 都可以看成是名義值N_L 加上偏差值D_L,即L=N_L+D_L。
帶密封面與扭矩臺肩的特殊螺紋接頭約有64個尺寸,因此程序設(shè)定了等量的名義參數(shù)和偏差參數(shù)。在產(chǎn)品設(shè)計中,如果接頭結(jié)構(gòu)不太確定,可以更改少數(shù)幾個參數(shù)的名義值,偏差值暫時設(shè)為0,從而對接頭進行粗略對比;如果接頭結(jié)構(gòu)設(shè)計基本確定,參數(shù)的名義值不變,僅改動少數(shù)幾個偏差值,從而對接頭進行極限偏差下的精細分析。
編寫幾何模型程序時,除了定義必要的尺寸約束外,還需要定義位置約束,從而使整個模型處于完全定義狀態(tài)。幾何造型過程中,為了將圖紙上的標(biāo)注作為尺寸約束,部分關(guān)鍵點的相對和絕對坐標(biāo)需要根據(jù)幾何關(guān)系求出算式,以驅(qū)動幾何參數(shù)模型的成型。
在完成pin-body(外螺紋接頭主體),pin-thread(外螺紋),box-body(內(nèi)螺紋接頭主體)和box-thread(內(nèi)螺紋)四個草圖參數(shù)化構(gòu)建后,利用布爾函數(shù)InstanceFromBooleanCut(),由pin-thread/box-thread切除pin-body/box-body,從而生成部件pin(外螺紋接頭)和box(內(nèi)螺紋接頭),這樣可避免螺紋首、末端交點的復(fù)雜計算過程。螺紋草圖可以通過陣列函數(shù)linearPattern()對構(gòu)建好的單個完整螺紋進行復(fù)制,從而方便得出全部螺紋線。
為了避免程序運行過程中的人工介入,將參數(shù)的輸入接口統(tǒng)一放置于外部的電子表格里,以方便管理。部分參數(shù)的輸入接口示例見表1。
表1 部分參數(shù)的輸入接口示例
為了實現(xiàn)Python 程序與電子表格數(shù)據(jù)的交互,首先將Python 的xldr 和xlwt 擴展模塊添加至Abaqus 的安裝文件夾中,使用以下程序調(diào)用電子表格中的數(shù)值。
data = xlrd.open_workbook(′.../input_data.xls′)
sh = data.sheet_by_name(′sheet1′)
NP_seal_dia = str(sh.cell(1,1).value)
DP_seal_dia = str(sh.cell(2,1).value)
在材料屬性分配、網(wǎng)格布種、相互作用面指定、載荷施加等過程中需要準確拾取關(guān)鍵的點、線、面等幾何元素。參數(shù)化模型的幾何元素拾取必然也是參數(shù)化的,現(xiàn)通過組合運用findAt()、get-Closest()、getByBoundingBox()等函數(shù)自動拾取各類點、線、面等幾何元素。
網(wǎng)格劃分對于后續(xù)計算結(jié)果收斂與否影響較大,考慮到特殊螺紋接頭螺紋段、密封面以及臺肩面是相互接觸的主要區(qū)域,因此可利用Partion()函數(shù)對pin 和box 部件進行分區(qū),再進行局部布種細化網(wǎng)格。網(wǎng)格劃分過細或過粗都有可能影響計算時間與計算收斂性。對首個參數(shù)化模型需進行調(diào)校,以取得最佳的分析效果,因此建議將需要調(diào)校的主要數(shù)值也放置于電子表格里,以方便修改而不影響Python 主程序。網(wǎng)格劃分中選用線性軸對稱減縮積分的CAX4R 和CAX3 單元。
選擇剛度較大的內(nèi)螺紋表面作為主面,選擇剛度較小的外螺紋作為從面。主面網(wǎng)格設(shè)置較粗,從面網(wǎng)格設(shè)置較細。由于螺紋與密封面接觸過盈量較大,可以分多個分析步緩慢完成相互接觸,以提高計算收斂概率。
程序設(shè)置了thread-contact(螺紋接觸)、sealshoulder-contact(密封面臺肩面接觸)、make-up(擰接)和load(加載)四個分析步。實際接頭在旋轉(zhuǎn)擰接過程中,固定外螺紋接頭時,沿軸向某一個剖面的內(nèi)螺紋接頭扭矩臺肩與螺紋的相對位置(軸向與徑向)是逐漸變化的。由于采用的是二維模型,在模型草圖繪制完成后就確定了二維模型,因此無法模擬實際擰接過程,但是可以采用以下兩種方法彌補:①將整個分析設(shè)置為循環(huán)程序,每次循環(huán),逐漸改變外螺紋的偏差參數(shù),分析結(jié)束后,將多個結(jié)果文件結(jié)合起來;②由于螺紋錐度為1 ∶16,接頭在最后擰接過程中軸向擰進距離小于0.2 mm,該距離將引起螺紋直徑增大0.012 5 mm,相比于軸向變化,徑向變化量可忽略不計,因此在make-up(擰緊)分析步中,將外螺紋接頭端部的柱面定義沿軸向的溫度場,改變柱面軸向長度,從而模擬擰接過程中扭矩臺肩與螺紋的相對軸向位置的變化。
雖然第一種方式與實際情況更相符,但是第二種方式的計算量明顯要少,因此采用第二種方式。
ISO 13679 ∶2019 標(biāo)準規(guī)定了實物試驗的A 系、B 系和C 系載荷點以及具體的計算方法,在參數(shù)化分析不同規(guī)格特殊螺紋接頭時,不同規(guī)格相應(yīng)的載荷也不同,為了方便參數(shù)化分析,將需要施加的載荷值通過電子表格中的內(nèi)置函數(shù)內(nèi)嵌于電子表格中,Python 程序直接調(diào)用載荷值。
odb 數(shù)據(jù)庫文件包括模型數(shù)據(jù)(model data)和結(jié)果數(shù)據(jù)(result data)。其中,模型數(shù)據(jù)是用來描述根裝配中的部件和部件實例,例如節(jié)點坐標(biāo)、集合定義、單元類型等;結(jié)果數(shù)據(jù)是用來描述各種分析結(jié)果,例如應(yīng)力、應(yīng)變和位移等。同樣地,可以使用Python 的擴展模塊,如NumPy(獨立的函數(shù)庫)、SciPy(科學(xué)計算工具庫)、Matplotlib(繪圖函數(shù)庫)等直接對從多個odb 文件中提取的數(shù)據(jù)進行計算與繪圖分析。
從myJob.sta 文件中可以查看到分析結(jié)果里各分析步每個增量步的詳細列表,所有單元的數(shù)值結(jié)果都包含在一個樹形架構(gòu)里,因此可以通過在“命令行界面”輸入命令“print(odb.steps["load"].frames[12].fieldOutputs["S"].values[100].mises)”查看具體數(shù)值。該命令的含義是:load 分析步第12個增量步中單元編號為100 的Mises 等效應(yīng)力值。
為了提高后處理分析的自動化,可以根據(jù)編寫的相應(yīng)程序?qū)?shù)據(jù)進行處理分析。例如,可以用程序?qū)oad 分析步各增量步的節(jié)點應(yīng)力/應(yīng)變求平均值后保存為data.txt 文件。
現(xiàn)以最常見的接箍式氣密封特殊螺紋接頭為例,運行所開發(fā)的Python 程序。首先,在電子表格中錄入圖紙中的尺寸及其偏差以及其他相關(guān)參數(shù),然后在Abaqus 軟件里打開Python 程序并運行,程序自動提交作業(yè)(花費時間小于10 s),作業(yè)計算完成后,自動進行后處理分析,并生成所需的數(shù)據(jù)和圖片。由于作業(yè)計算花費的時間最長,為確保所建立模型的正確性,可在提交作業(yè)前設(shè)置程序中斷,檢查模型接觸面、網(wǎng)格、載荷等是否正確,然后再運行后續(xù)程序。
對9 種接頭尺寸偏差情況進行有限元分析,接頭偏差配合情況見表2,借助開發(fā)的Python 程序可以高效完成分析任務(wù)。借助上海超級計算中心運行程序,獲得Ф244.48 mm×11.99 mm 規(guī)格P110 鋼級某特殊螺紋接頭擰接后的應(yīng)力云圖,如圖1 所示。
程序化的分析計算對特殊螺紋接頭各個設(shè)計參數(shù)的敏感性分析有很大幫助,可有力地支撐產(chǎn)品開發(fā)和結(jié)構(gòu)優(yōu)化,獲得實物試驗難以測量的數(shù)據(jù)。
從圖1 中發(fā)現(xiàn),試樣4 和8 外螺紋入口處應(yīng)力較大,采用“print(odb.steps["make-up"].frames[35].fieldOutputs["S"].values[7750].mises)”命令查看該單元(編號7750)應(yīng)力值高達473 MPa。試樣8 的螺紋局部應(yīng)力分析結(jié)果如圖2 所示。按模擬尺寸加工試樣4 和8,發(fā)現(xiàn)上卸扣過程中試樣4 和8 的最后1~2 牙均發(fā)生了螺紋黏結(jié)現(xiàn)象,與有限元模擬結(jié)果吻合,黏結(jié)形貌如圖3 所示。為了克服該尺寸組合下螺紋黏結(jié)的發(fā)生,適當(dāng)調(diào)整接頭設(shè)計公差或檢驗公差,從而可有效降低螺紋黏結(jié)的發(fā)生幾率。
表2 接頭偏差配合情況
圖1 用Python 程序獲得的不同尺寸偏差接頭的應(yīng)力分析結(jié)果
圖2 試樣8 的螺紋局部應(yīng)力分析結(jié)果
借助于Python 豐富的擴展模板,可方便實現(xiàn)與電子表格的數(shù)據(jù)交互功能,實現(xiàn)有限元分析全程自動化;將基于Python 的參數(shù)化建模與分析方法運用在特殊螺紋接頭的有限元分析中,不僅能節(jié)省大量人工建模時間,提高效率,而且可實現(xiàn)有限元分析的標(biāo)準化,有利于技術(shù)人員之間交流與合作;此外,Python 程序具有良好的繼承性,程序也方便改進、升級,避免技術(shù)的原地踏步,使分析工作具有成長性。