Skip to Main Content

      

ANSYS 部落格

November 15, 2022

在 Python 領域中利用 Ansys 的強大功能

Python是全球最受歡迎的程式語言,而 Python 生態系統包含大量開放原始碼程式碼‍函式庫,可供開發人員自由使用來建立新的解決方案。PyAnsys 程式碼函式庫帶來全新格局,讓開發人員可將基於 Ansys 的模擬與 Python 開發專案做整合。

您可以這樣理解模擬:模擬不需要在真實世界執行作業,便可以提供深入分析,而且與真實世界執行的結果相同。不需要破壞甚至建立一個昂貴的原型,便可執行壓力測試。無論是熱能、電氣、流體或其他,無需創造實際的溫度、壓力、電流或流體,即可探索新設計的特性。我們不需要創造實際的經驗,便可以獲得藉該經驗產生的深入分析,尤其當獲得那些深入分析原本可能要費時 50 或 100 年,或需要銷毀價值數百萬美元的原型時,這樣的功能特別地重要。

在模擬的世界中唯一需要在真實世界執行的作業,是與設定、執行和分享模擬結果相關的手動作業。

但由於 PyAnsys 和其他 Ansys 解決方案連接了數位線程,甚至連上述情形也開始發生改變。

PyAnsys 包含一系列 Python 套件,它讓使用者能夠與包括 MAPDL、AEDT 和其他在內的 Ansys 產品,用前所未見的方式進行互動。這些套件為使用者提供一個現代化的程式設計介面,讓他們不但能夠利用 Ansys 模擬‍軟體來編寫執行各種多物理量模擬,也可以編寫工作流程的指令碼,將模擬納入其他自動化作業中。 

3D polar plot of antenna array output using PyAEDT

使用 PyAEDT 繪製的天線陣列輸出的 3D 極座標圖。

為什麼選擇 Python?

為什麼要選擇 Python?Ansys 參數化設計語言 (APDL) 長期提供與 Ansys 產品互動所需要的各式各樣指令碼處理與控制功能。個人可以使用 APDL (或 Mechanical APDL [MAPDL],一種建置於 APDL 的有限元素分析程式) 編寫指令碼,以利於模擬的設定、執行與後處理。Ansys 自訂工具套件 (ACT) 亦提供在 Ansys Mechanical 中控制和自動化模擬的功能。過去其功能僅限如此:使用者只能在工具內使用這些工具的編寫指令碼功能。沒有任何機制可以從 APDL、MAPDL 或 ACT 的外部與任何 Ansys 產品透過程式設計進行互動。

2016 年,一位 Python 開發人員和 Ansys MAPDL 使用者 Alex Kaszynski 建立了一個程式碼‍函式庫,可以使用 Python 與 MAPDL 進行互動,改變了上述限制。許多學校廣泛教授 Python 語言,而且獲得無數開發人員熱情接納,Python 生態系統擁有非常豐富的公共與私有程式碼‍函式庫,讓開發人員可從中擷取並建立自己的應用程式。Kaszynski 也把他的程式碼資料庫 PyMAPDL 公佈在開放原始碼線上儲存庫 GitHub,讓有興趣的使用者可以下載並將其功能與自己使用 MAPDL 的相關專案結合。 

而使用者也的確已經下載使用。PyMAPDL 以無償方式提供給使用者,雖然想要與 Ansys MAPDL 互動的使用者必須獲得該應用程式的授權。而我們很快就發現,Ansys 使用者極其需要能夠以更有程式化方式與 Ansys 模擬‍軟體互動。

Ansys 也知道使用者的積極態度,因而僱用了 Kaszynski 並鼓勵他繼續進行原已展開的工作。  

Exhaust manifold mesh postprocessing using  PyFluent

使用 PyFluent 進行排氣歧管網格後處理。

PyFluent postprocessing  showing an iso-surface of the velocity of flow in an exhaust manifold

PyFluent 後處理顯示排氣歧管中流動速度的等值曲面 (iso-surface)。

用 Python 的方式前行

該項工作目前仍在進行中。在撰寫本文時,GitHub 上的 PyAnsys 頁面提供一系列套件,可以與 Ansys 產品以「Python 方式」進行互動:

  • 電子模擬: PyAEDT
  • 固體機械模擬: PyMAPDL
  • 流體模擬:PyFluent、PyFluent-Parametric、PyFluent-Visualization
  • 後處理:PyDPF-Core、PyDPF-Post
  • 材料管理: Granta MI BoM Analytics

此外,您可以利用 GitHub 上的 PyAnsys 頁面存取各種共用元件,以利於套件的互通性並將維護需求降至最低。

由於 Python 生態系統提供程式碼‍函式庫,讓使用者可以用自訂的使用者介面 (UI) 建立網頁應用程式,因此可以透過那些自訂化 UI 輕鬆叫用 PyAnsys 產品。這確保了基於PyAnsys的專案非常易於使用,因為使用者不需要熟悉與各別 Ansys 產品相關的‍使用者介面。即使是一個存取多個不同Ansys模擬工具的Python腳本,也可以向使用者呈現一個只包含與自動化工作流程相關的選項和輸入要求的使用者界面。

GitHub 社群一直積極上傳基於 PyAnsys 的專案供他人使用,而 Ansys 一直審查這些專案並與開發人員合作,在新的 PyAnsys 套件中融入他們的想法。這些套件 (連同完整的文件與程式碼範例) 會根據 MIT 授權,在 GitHub 上以開放原始碼資料庫形式繼續提供。

此外,我們也推出 Ansys Developer Experience數位平台,旨在鼓勵並讓廣大的開發人員生態系統可與 Ansys 互動。該平台包括開發人員入口網站、同儕專家論壇,並可存取 Ansys 文件和工具,讓開發人員可以快速上手並使用。這是 Ansys 第一次提供平台和資源,支援開發人員使用全新與新興 Ansys 技術。Developer Experience 旨在鼓勵開發人員生態系統繼續發展並成熟,同時讓他們輕鬆存取相關資源與獲得技術支援,藉此改善使用者體驗。 

MAPDL volume plot of a lathe cutter

MAPDL 車床切削體積繪圖。

MAPDL modal principal stresses of lathe cutter

MAPDL 車床切削模態主應力。

為現實世界帶來的好處

PyAnsys 為全球使用者帶來具體的好處。例如德國系統設計和工程公司 Bewind GmbH 的工程團隊,使用 PyAnsys 建立自訂的自動化工作流程,以更準確、有效地評估風力發電機葉片的疲勞情況。這種方法使用 Ansys 解決器預測的準確度,來驗證葉片的結構健全且有效率地運作,可大幅節省時間與成本。

其他公司已經使用 PyAnsys 將重複性、複雜的模擬自動化,例如可能用來訓練機器學習 (ML) 或人工智慧 (AI) 系統的模擬作業。訓練這類系統可能需要數千次模擬,若能利用 Python 指令碼,藉由程式設計的方式來管理執行過程,那麼管理這些模擬的執行與分析會變得容易非常多。仍有其他公司採用 PyAnsys 來協助確保能夠使用完全相同的方式執行重複性模擬,以便減少因為無法完美地重複執行那些已無新鮮感的複雜任務,而發生人為錯誤的機率。

使用 Python 規劃流程的功能也讓工程師們有機會重新思考執行活動的方式。例如,藉由將複雜的工作流程分拆成使用不同資源但同時執行的多個任務,一個 Python 指令碼可以大幅減少完成工作流程所需的時間。以往可能需要結構團隊、流體團隊和熱團隊之間進行持續協調和交接的活動,每個團隊傳統上在不同的工具上依序運行模擬,但現在這些活動可以全部納入指令碼當中,並在連結的數位線程中搭配其他解決方案一起使用,提供所有團隊所需的資訊。

對於最終使用者和開發人員而言,PyAnsys 套件的可用性以及將 Ansys 模擬與活動的廣大生態系統結合的能力,開創了新的可能性。現今許多組織都使用 PyAnsys 將既有流程自動化,而這個做法相當合理,因為這些是已知且必須依照特定方式執行的流程。PyAnsys 也創造了讓 Ansys 模擬‍軟體與工作流程整合的機會,這是之前未曾嘗試過的做法。如今,PyAnsys 是另一項 Ansys 技術,讓創新可以相互連結,並最後促成數位轉型。

瀏覽 Ansys Developer Experience 網站。