ABAQUS用戶定義單元UEL與VUEL從入門到放棄系列3————講一講的RHS和NBLOCK
大家好,我是借風一尺,一個終極懶癌患者。
......說完這句話其實已經不想再碼字了。
好的,直入主題,速戰速決。
來技術鄰其實已經很久了,也目睹了技術鄰這兩年飛一般的發展速度,好像突然火起來了哈哈。最初來技術鄰,講實話其實就是來學UEL的,后來發現沒帖子,然后就各種找論壇,simweABAQUS版塊的帖子二零零幾年的帖子都被我挖干凈了,做UEL的人確實比做UMAT的少多了,但技術鄰這個平臺依舊讓我受益良多,諸如藍牙老師,isolver團隊snowwave02等大佬,他們的分享,甚至很多是免費分享確實高屋建瓴,知識的學習必是知其所以然,我想只有這樣的學術氛圍越來越重,這樣樂于分享的大佬越來越多,中國的自研工業軟件才能走向世界,我們的工業4.0才有可能實現。
學于此,也該傳于此,作為一只科研狗,我想我比誰都清楚什么叫從“入門”到“放棄”,未知的知識就是這樣,不懂的時候它比金子都貴,等你學會了它好像又像水一樣普通,亦如水一樣珍貴。
之后也會逐漸在技術鄰更一些帖子,可能也會有視頻吧,內容大概會圍繞有限元理論,用戶子程序開發,ABAQUS python開發,XFEM,lamb波的SHM等,因為不知道想學UEL\VUEL的人群多大,也不知道大家都想了解些什么,不知道應該從何說起,可能有些想學UEL的小白基礎很差連有限元理論都沒學全,再加上我確實是個懶癌晚期,其實很多東西都做好了,懶的發,也希望能治療一下自己的懶癌吧。
今日份正事,給大家簡單講一講VUEL中幾個重要的數組,并發一個平面四節點等參單元的VUEL程序。
首先講一講最重要的,也是最讓大家疑惑的數組RHS,我們先來看看ABAQUS幫助文檔的介紹。

此為UEL中RHS的定義,right-hand-side,譯為右端項,表示這個單元在整個系統平衡方程中右端的量,是一個the residual vector(殘差向量),這個殘差向量就是回傳給ABAQUS進行迭代收斂平衡的,在大部分NRHS=1的分析中,其等于external forces minus internal forces(外力減內力),因此我們在UEL編程時,所求的RHS就應該等于外力減去內力,但其實寫過UEL的都知道, 我們計算的RHS=-KU(不考慮非線性的時候,其中K為剛度矩陣),僅僅是負的內力,而并沒有使用外力減內力,那么這究竟是為什么呢?很多人解釋為外力由ABAQUS自己求得,所以我們只需要提供內力的負值。
對此問題,我個人有不同見解,在此進行學術探討,請各位指點。
在說明我的觀點之前,請各位先看以下三個數組

JDLTYP:用來定義單元所受分布式載荷類型的整數型數組
ADLMAG:用來定義單元所受分布式載荷大小的數組
DDLMAG:用來定義單元所受分布式載荷增量大小的數組
此時就要牽扯出另一個話題,那就是使用UEL\VUEL時,無法正常和CAE一樣加載分布式載荷的問題,比如體力,重力,如果和CAE一樣加載就會報錯,再聯系UEL中有專門針對分布式載荷定義的一套數組,不難推測出分布式載荷應當只能在UEL的程序中進行定義計算,而非直接在inp中添加。(Ps:我也沒用過,畢竟懶癌,如果哪位大佬使用過,希望可以和我們分享一下經驗,代表千萬網友感謝!)
因此,我個人得出的結論是,RHS定義中所說的外力-內力,指的應當是程序中用數組定義的分布式外載荷P-內力KU,而其他在inp中加載的外力由ABAQUS自行計算,在UEL程序中不做考慮。
我們再來看VUEL中關于RHS的說明
依舊定義為單元對系統方程右端的貢獻,但此時不再是外力-內力,而是定義為包含單元的內力或是由分布式載荷計算而來的外部載荷,故在沒有分布式載荷時,RHS=內力KU(不考慮非線性);因此可再次猜測,ABAQUS UEL和VUEL所說的外載荷就是分布式載荷,其它INP中定義的外載荷不做考慮。
接下來討論一個VUEL中特有的數組NBLOCK,譯為塊,也正是這個數組標志著VUEL與UEL運行的不同;眾所周知,ABAQUS調用UEL計算時,是一次進一個單元,然后計算這個單元的RHS、AMATRX等數組并回傳給ABAQUS,然后再進第二個單元,如此進行...;
而ABAQUS調用VUEL計算時,是一次進入一批單元,這個一批單元個數即為NBLOCK的大小(之前一位名為Xujianqing的作者曾經發過一個帖子說明說明過NBLOCK最大值為136,但我后來測試發現,在低版本如6.14中,最大NBLCOK=136,在高版本如2020中,最大NBLOCK=144)。
這是個什么意思呢?
就是說,當你單元總數a小于等于136(或144)時,則NBLOCK=a,ABAQUS只調用一次VUEL程序,然后把你這a個單元挨個塞進第kblock個籃子里,計算得到各個kblock中rhs,amass等值,而后組成數組rhs(nblock,ndofel),amass(nblock,ndofel)等一起回傳給ABAQUS;當a大于136(或者144)時,且a=n*136+b時,則NBLOCK=136(或144),ABAQUS將依次調用n+1次VUEL程序,前n次每次進入136(或144)個單元,即NBLOCK=136(或144),按照上述所說計算完并回傳數組后,繼續下一次調用,n次調用結束后,第n+1次進入最后剩余的b個單元,即NBLOCK=b。

以上便是VUEL的調用和工作方式,那么為什么ABAQUS在顯示分析中會弄出這么一個數組呢,為什么要給單元分批,并且每次讀進一批單元后,要把他們分在不同的“籃子”里呢,在此我們猜測這是為了多核并行計算準備的數組,這樣便可以說通一切。
以上便是今天的全部分享,祝大家工作順利,科研順利!Respect!
以下內容為付費內容,請購買后觀看
27人購買
平面四節點vuel程序(未考慮幾何非線性),Fortran+inp
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















