模塊化編程在Abaqus UMAT編寫中的應用實例

0、前言

UMAT編寫工作量通常較大,對于復雜本構關系的UMAT動輒上千行都是很常見的情況,編寫的人不僅工作量大編到后來有些頭昏腦漲,調試找錯也是痛苦不堪,在這樣的情況下,如何使得UMAT編寫邏輯更加清晰?如何高效重復利用代碼塊?如何更加快捷的調試找錯?遇到錯誤如何盡可能小的改動就可以解決錯誤?本人結合自己編寫UMAT的些許經驗,和大家如何在利用模塊化編程思想編寫邏輯清晰,易于調試圍護,可重復利用UMAT,本人水平有限,如有謬誤或不妥之處,還請大家多多包涵指教。

1、什么是模塊化編程

          模塊化編程(modular programming)是一種軟件設計技術,它將軟件分解為若干獨立 的、可替換的、具有預定功能的模塊,每個模塊實現一個功能,各模塊通過接口(輸入輸出 部分)組合在一起,形成最終程序。對于簡單問題,可以直接構建單一模塊的程序。而對于復雜問題,則可以先創建若干個較小的模塊,然后將它們組裝、鏈接在一起,從而構成復雜的軟件系統。

2、模塊化編程有哪些優點

  • 易設計:較大的復雜問題分解為若干較小的簡單問題,使我們可以從抽象的模塊功 能角度而非具體的實現角度去理解UMAT,從而整個UMAT的結構非常清晰、容易 理解。

  • 易實現:模塊化設計適合課題組團隊開發或者是編寫較為復雜繁瑣的UMAT,UMAT各個模塊之間僅僅通過參數來傳遞信息,盡力隔離各個模塊的互相影響。對于我們個人編寫而言,也有助于我們把任務分解,逐個攻破。

  • 易調試:每個UMAT模塊不但可以獨立編寫,也可以獨立調試,查看各部分的輸入輸出是否正確,可以幫助我們快速的定位UMAT中存在問題,找到UMAT中的問題模塊后,再深入該模塊進行調試,如此不斷深入,不斷聚焦到具體是哪一行代碼出了問題。(UMAT調試方法匯總

  • 易維護:如果需要修改UMAT,比如想要應力積分方法想由顯式修改為隱式,只需針對特定的部分進行修改即可。

  • 可重用:UMAT中一些常見的代碼塊完全可以重復利用,例如模型參數傳遞,向量張量轉換,彈塑性判斷等等,將這些特定的功能編寫成subroutine,形成自己的子程序庫,之后再編其他的UMAT可以直接組裝,減少不少工作量。

3、模塊化編程在UMAT編程中的應用實例

首先我們需要安裝好版本匹配的VS+IVF+Abaqus,并完成關聯

下面我們來看一下, 一個UMAT模塊化編程例子的大體框架,我們把整個UMAT分成三大模塊,分別為前處理模塊,更新模塊,后處理模塊,我們這里僅看前處理模塊,希望能給大家一些啟發。

ATR工作流程圖(3).png

接著我們再來簡單介紹UMAT前處理模塊化編程常用子函數

  • 模型參數傳遞子函數——用于將UMAT中的模型參數數組的值提取出來,并將其賦值給有物理含義的變量,這樣一來方便在UMAT編寫公式時使用,二來可以防止我們不小心在UMAT中修改模型參數的值造成錯誤。

  • 二三維判斷子函數——在UMAT中在應力應變的向量的維度為NTENS,這就使得我們UMAT中應力應變向量的維度取決于模型是三維問題還是平面應力(變)的問題,這不便于我們編寫具有更加普遍適用性的UMAT,因此,按照規則填滿STRESS和STRAN向量,使其維度均為1*6,這也為后面將其轉為張量形式提供便利。

  • 向量轉張量子函數——由于UMAT中默認的應力應變是存儲為向量的形式,但在本構關系式中,我們通常采用的是張量的形式,因此將應力應變向量轉為為張量形式,可以讓我們更加方便將本構關系式子用代碼實現,但這里特別要在處理應變時候要記得應變向量存儲的是工程剪切應變,需要除以2才可以存入到應變張量中。

  • 雅克比張量轉換子函數——UMAT中DDSDDE(NTENS,NTENS),但我們在本構關系中的常用四維的雅克比矩陣,按照一定規則實現二者的形式上的轉換也是十分有必要的。

  • 應力(應變)Invariant 計算子函數——應力應變張量不變量是我們在UMAT中經常需要求解的量,因此將其編寫為統一接口的子函數,我們在其他UMAT中只需要輕松調用即可,節省不少工作量。

  • 類似的子函數還有很多,大家可針對自己的問題,去嘗試開發

4、結束

限于篇幅,我們僅舉這樣幾個比較通用的子函數,希望起到拋磚引玉的作用,最重要的是大家在自己編寫UMAT的過程中,也要常常有這種模塊化編程的思想,爭取省力的寫好UAMT。

也歡迎大家關注我的技術鄰主頁,主頁中有我關于UMAT編寫的教學視頻,也有一些我在編寫UMAT過程中踩過的坑,筆者自己也在學習UMAT的路上,盼望和大家互相學習,一同成長。

參考資料:

1、模塊化編程 https://wizardforcel.gitbooks.io/sjtu-cs902-courseware/content/80.html


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

TOP

14
4
13