PhiPsi-高性能有限元程序

大家好,本期木木給大家分享一個計算性能十分強悍的有限元求解器——PhiPsi,有關PhiPsi程序更詳細的功能介紹,可以點擊歷史推文:開源XFEM程序:PhiPsi介紹。

最近,PhiPsi結合了PyQt5,形成了一個軟件的界面形式PPView:

PhiPsi-高性能有限元程序的圖1PhiPsi-高性能有限元程序的圖2

軟件的使用,相比于前期版本的使用方法要方便很多,只需鼠標點點點,即可完成數據讀取、內核計算、后處理自定義顯示,作為有限元寶藏up主,怎么可能不整點花活兒呢~

模型測試

在體驗完XFEM的一些功能后,我就又回到了有限元求解上,網上都說Fortran計算效率高,我倒要看看到底有多高,拿一個164萬個C3D8單元有限元模型作測試,對比一下Abaqus的計算速度與PhiPsi的計算速度!

底部約束所有的自由度,頂部施加向上的壓力,簡單的拉伸模型:

PhiPsi-高性能有限元程序的圖3

求解設置

Abaqus采用迭代解6線程并行計算

PhiPsi-高性能有限元程序的圖4PhiPsi-高性能有限元程序的圖5

PhiPsi采共享內存并行計算技術:OpenMP,6線程并行計算,在剛度矩陣的求解上采用了EBE-PCG預處理迭代求解技術,相關理論可參考《有限元方法編程(第五版)》P55。

求解時間對比

場變量均只輸出節點位移,PhiPsi的結果文件按照二進制格式輸出。

Abaqus共使用5分42秒

PhiPsi-高性能有限元程序的圖6

PhiPsi共使用298秒,也就是4分58秒,比Abaqus快了44秒

PhiPsi-高性能有限元程序的圖7

求解精度對比

Abaqus的節點位移最大為:

0.0162334625623317

PhiPsi節點位移最大為:

0.016423374759488234

吻合度98.83%,精度可以接受。

PhiPsi-高性能有限元程序的圖8PhiPsi-高性能有限元程序的圖9

番外篇

對于查看Abaqus模型中場邊量的最大值,可以在cae中進行查看:

PhiPsi-高性能有限元程序的圖10

小數點后面最大可以保留九位,對于上文提及的0.0162334625623317是怎么得到的呢?

有限元UP主又可以開始整活兒了!直接來一個python腳本,自定義程度極高,想查看什么就查看什么,相對數據怎么操作就怎么操作,想轉換什么數據格式就轉換...好了進入正題!

# -*-coding:UTF-8-*-
from odbAccess import *
from math import sqrt

# 打開ODB文件
odbName = session.viewports[session.currentViewportName].odbDisplay.name
odb = session.odbs[odbName]
assembly = odb.rootAssembly

# 打印所有節點集的名稱
print("All node sets in the model:")
for nodeSetName in assembly.nodeSets.keys():
    print(nodeSetName)

# 選擇步驟和增量
stepName = 'Step-1'  # 替換為你的實際步驟名稱
lastFrame = odb.steps[stepName].frames[-1]

# 初始化最大位移合量變量
maxDisplacementMagnitude = 0

# 遍歷所有節點
# 我將頂面節點設置為set-up
for node in assembly.nodeSets['SET-UP'].nodes[0]:
    # 獲取節點的位移輸出(這里假設輸出變量為U,即位移)
    displacement = lastFrame.fieldOutputs['U'].getSubset(region=node).values[0]
    # 計算位移合量
    displacementMagnitude = sqrt(displacement.data[0]**2 + displacement.data[1]**2 + displacement.data[2]**2)
    
    # 更新最大位移合量
    if displacementMagnitude > maxDisplacementMagnitude:
        maxDisplacementMagnitude = displacementMagnitude

# 輸出最大位移合量
print('Maximum displacement magnitude is:', maxDisplacementMagnitude)

對于更大模型的測試,讀者感興趣的話也可以自行測試,我的個人筆記本過于老舊,內存也太小,不太方便。不過對于模型數目越大的情況下,并行計算的優勢也會體現的越明顯!

對于PPV的使用,我會錄制一期專門的視頻去講,本次只做案例分享。對PhiPsi感興趣的小伙伴可進入(http://phipsi.top)發現新世界的大門~

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

TOP

1
2