AI for Science系列(二):基於AI框架的CFD工具組件!賽槳v1.0 Beta API介紹以及典型案例分享!

AI for Science被廣泛認爲是下一代科研範式,可以有效處理多維度、多模態、多場景下的模擬和真實數據,解決複雜推演計算問題,加速新科學問題發${現}^{[1]}$ 。百度飛槳科學計算工具組件賽槳PaddleScience是國內首個公開且可應用於CFD(Computational Fluid Dynamics,計算流體力學)領域的工具,提供端到端應用API,致力於解決科學計算類任務。賽槳綜合數學計算與物理數據相結合的處理方法,提供物理機理約束的PINNs(Physics Informed Neural Networks 物理信息神經網絡)加速求解偏微分方程,解決計算流體力學中的仿真分析。本篇文章將重點介紹賽槳PaddleScience v1.0 Beta的典型案例及API使用示例。

賽槳提供的典型案例包含使用AI方法進行頂蓋驅動方腔流(LDC)、達西流、2D&3D圓柱繞流的流場預測及渦激振動(VIV)。所有案例都基於泛化的微分方程、PINNs求解器、控制體、網絡定義以及可視化等多種接口。下面我們將詳細講解賽槳PaddleScience v1.0 Beta中提供的計算流體力學案例及科學計算API的功能及使用。

圖1 PaddleScience v1.0 Beta產品全景

場景案例詳解

前言

在流體領域,流體力學作爲比較傳統的物理學科,廣泛應用於航空航天、船舶工業以及建築、水利、能源等工程領域。

  • 在航空工程和造船工業中,如飛行器和船舶的外形設計、操控性、穩定性等問題成爲流體力學中廣泛的研究課題,並促使流體力學得到了很大的發展。
  • 在水利工程中,如大型水利樞紐和水力發電站的設計與建造、洪峯的預報工作、河流泥沙等問題都與流體力學緊密關聯。
  • 在動力機械製造工業中,如何提高水力及蒸汽渦輪、噴氣發動機、壓縮機和水泵等動力機械的性能,與葉片、導流片及其他零件設計形狀的正確性有關。

隨着工程問題的深入,流體力學已經逐漸與其他學科互相交叉滲透,形成新的交叉學科或邊緣科學,如磁流體力學、物理-化學流體力學、生物流變學等等。

圍繞不同的流體問題,當前流體力學分析主要基於數值計算。典型的方法有直接數值模擬 (DNS) 、雷諾平均方法 (RANS)、大渦模擬方法 (LES)、分離渦模擬 (DES) 以及格子玻爾茲曼法(LBM)等求解流體本構N-S (Navier-Stokes) 方程。由於物理問題的複雜度,數值方法往往有很多侷限性,如計算效率等。PaddleScience的PINNs科學計算求解器,將物理信息融入神經網絡,針對流體力學問題提供新的解決思路。本章節中,我們將介紹2D&3D圓柱繞流及渦激振動的案例,展示PaddleScience的基礎科研能力。

圖2 不可壓縮N-S(Navier-Stokes)方程

2D非定常圓柱繞流

圓柱繞流作爲經典的CFD問題,在不同的雷諾數下,渦脫落產生的卡門渦街類型不同,是能夠綜合體現層流、湍流過渡的典型問題。針對該問題,採用PINNs方法,並基於連續時間的2D不可壓、非定常NS方程作爲約束深度學習神經網絡的物理規則,將傳統的CFD求解轉換爲神經網絡參數的優化問題。同時,爲了加速訓練的收斂時間,提高預測精度,採用半監督方式,從開源CFD工具OpenFOAM的結果中記錄邊界位置處約200個測點在不同時刻的流場信息,與N-S方程、初邊值條件等共同形成了網絡優化的損失函數。對雷諾數Re=100工況,定義約110W個時空訓練點(t, x, y),並採用NVIDIA V100-32G單卡訓練約8小時,結果如下圖所示。基於PINNs方法構建的網絡能夠完整的模擬卡門渦的週期性脫落,且預測的流場結果與OpenFOAM相對誤差小於5%(除邊界層中個別點外),可滿足工程需求。

圖3 Re=100的2D圓柱繞流結果

(左:OpenFOAM結果,右:PINNs方法結果)

同時,基於訓練完成的模型,利用推理功能,8ms內即可完成百萬級空間位置在30個時間步的結果預測,相比於同樣網格數量且固定求解配置的OpenFOAM計算過程,速度提升近12000倍,非常利於後期在線評估、優化等工程應用。

  • 案例鏈接:

https://github.com/PaddlePaddle/PaddleScience/tree/develop/examples/cylinder/2d_unsteady_continuous

3D非定常圓柱繞流

除2D圓柱繞流外,賽槳PaddleScience同時提供3D圓柱繞流案例,基於PINNs方法,求解3D非定常不可壓縮Navier-Stokes方程,完成了無模化Re=100的圓柱繞流問題求解。在該問題中,採用OpenFOAM的結果作爲基準,選擇流場穩定的相對0時刻,並記錄有限時間內特定測點的數據。採用離散時間的PINNs神經網絡進行訓練,其模型數量與所選取的時間步長相關,在t_start至t_end內,定義離散時間步長dt,採用(t_end-t_start)/(T*dt)個模型進行訓練,其中T爲渦脫週期。對比OpenFOAM的理論值,相對誤差在5%以內。x軸上的流場速度變化如下:

圖4 3D圓柱繞流x軸流場速度

  • 案例鏈接:

https://github.com/PaddlePaddle/PaddleScience/tree/develop/examples/cylinder/3d_unsteady_discrete

渦激振動

渦激振動(VIV)是一種典型的流致振動,是流體經過結構後穩定渦脫頻率與結構固有頻率綜合的流固耦合問題。是海洋工程中立管、輸油管路等大跨度結構的主要損傷源,但由於結構複雜,無法有效測量剛度、阻尼等本構特徵,導致損傷探測及預防難度較大。相比基於PINNs方法實現2D圓柱繞流正問題分析,解決“反問題”是PINNs方法的一個亮點,可通過部分實驗數據“逆向”預測流場中結構的剛度、阻尼等本構特徵,從而對實際工程中的複雜結構的疲勞損傷及破壞的預測及預防提出指導。

從工程落地的角度,賽槳 PaddleScience 從“半實物仿真”的技術路線出發,構建了渦激振動試驗檯架以及模型驅動試驗裝備的電控閉環,創新性地探索並論證深度學習模型與物理裝備的虛實結合的技術可行性。通過對渦激振動開展分階段分析,首先基於加速度計及激光設備等傳感器採集結構振動振幅與結構升力,對系統進行彈簧-振子單自由度等效。基於實測的160組位移及受力數據,訓練過程中最小化“振幅”、“升力”、“方程”等共同組成的損失函數。採用V100-16G單卡訓練約0.5h,預測結果如下圖(右上)。基於PINNs預測的結構振動振幅、結構升力結果與試驗數據的相對誤差均在2%以內。同時基於“反問題”方式分析得到的結構剛度、阻尼分別爲1.092964與4.1e-6,相比真實值1.09與0,相對誤差均小於2%。

渦激振動主要基於試驗與深度學習模型結合的方式進行,通過構建風洞試驗裝備,在第一階段完成結構剛度、阻尼的預測,在第二階段則基於得到的結構剛度、阻尼等屬性,進行流場重構以及升阻力的預測。過程中基於賽槳提供的泛化PDE接口,對渦激振動中流固耦合方程也重新進行了整合,定義新的網絡與求解過程,具體流程如下圖所示。

圖5 VIV試驗及深度學習模型聯合驗

  • 案例鏈接:

https://github.com/PaddlePaddle/PaddleScience/tree/develop/examples/fsi

API功能及使用示例

上述案例充分利用了賽槳PaddleScience v1.0 Beta提供的API。本部分將着重介紹涉及的主要API接口及使用示例方法。

圖6 PaddleScience科學計算工具組件設計架構

科學計算問題定義

科學計算問題定義包含三部分:方程定義(PDE)、計算域定義(Geometry)、初邊值條件定義(IC/BC)。下圖展示瞭如何定義在一個方形區域內求解二維非定常Navier-Stokes方程問題。具體而言,該問題數學上由(圖b) 定義,包含方程、初邊值條件及計算域信息,代碼上每一條信息由相應接口描述(圖a及圖c)。圖中展示了一部分數學信息和接口的對應關係,該對應關係由同樣的顏色方框表示。

圖7 PaddleScience科學計算問題定義

本章節將介紹關於科學計算問題定義相關的API。

偏微分方程(PDE)

賽槳支持調用預置方程接口及自定義方程接口。

  • 預置方程接口:方程定義內置在賽槳中,用戶直接調用即可,僅需配置相關參數(如維度、物理屬性等)。
  • 自定義方程接口:用戶使用 Python SymPy 定義自變量、因變量及方程,通過“add_equation”接口將方程加入PDE模塊。

對於高維偏微分方程,連續時間方法將時間和空間均視爲網絡的輸入;離散時間方法首先使用數值(隱式)方法對時間離散,得到僅包含空間變量的方程,進而使用PINNs方法求解該方程,3D N-S方程及使用隱式離散方法得到的方程如下,其中 n 時刻的狀態(3個方向的速度)已知,求解n+1時刻的狀態(3個方向的速度)。

圖8 使用隱式方法對時間離散後得到的方程

如下代碼展示如何定義一個非定常N-S方程,以及如何使用連續時間方法和離散時間方法,進行方程離散。僅需通過改變參數 "time_method" 的取值即可選取對應的方法。

計算域(Geometry)

賽槳提供了常用的計算域形狀,如立方體、立方體除去圓柱等幾何外形,及VTK 可視化支持,同時提供 " add_boundary " 接口定義邊界。

初邊值條件(IC/BC)

邊值條件模塊預置了Dirichlet/Neumann/Robin邊值條件,僅需定義邊值條件,並通過 "set_bc" 接口將其指定到對應邊界即可。對於PDE,以類似方式增加了初值條件模塊。

深度學習方法求解模塊

上一章節介紹瞭如何使用賽槳定義科學計算問題,本章節繼續介紹深度學習方法求解上述科學計算問題所需使用到的模塊。

網絡(Network)

賽槳支持全連接網絡(FC)以及初始化網絡權重的接口initialize,支持從文件讀取權重進行初始化,以及使用飛槳預置的初始化函數(paddle.nn.initializer)進行初始化。 

損失函數(Loss)

賽槳提供了靈活的Loss設置方式,允許通過設置獨立的權重係數配置多任務Loss (Loss = w_1 * Loss_equation + w_2 * Loss_ic+ w_3 * loss_bc +w_4 * Loss_data)。

優化器(Optimizer)

賽槳支持Adam優化器。

求解器(Solver)及求解模式

求解器提供了控制功能,在訓練和推理階段可以分別使用。

啓動自動並行模式

使用自動並行技術實現分佈式計算內嵌在賽槳中,無需特別設置,使用如下代碼運行程序即可實現數據自動並行。

啓動動態圖/靜態圖/自動微分模式

賽槳後端支持動態圖和靜態圖模式,可以通過簡單的接口進行切換。另外,在單機靜態圖模式下,賽槳提供接口啓用高階自動微分。

下一期我們將對支持PaddleScience的底層框架技術,如自動微分機制、編譯器等功能進行詳細介紹,敬請期待~

  • 引用:

[1]《IDC perspective:AI for Science市場研究》報告正式啓動.https://mp.weixin.qq.com/s/gtEbuSULI5fzCIvbDKhkfA

  • 拓展閱讀:

1.《AI+Science系列(一):飛槳加速CFD(計算流體力學)原理與實踐》

2.賽槳PaddleScience v1.0 Beta:基於飛槳核心框架的科學計算通用求解器

  • 相關地址:

1.飛槳AI for Science共創計劃:

https://www.paddlepaddle.org.cn/science

2.飛槳PPISG-Science小組:

https://www.paddlepaddle.org.cn/specialgroupdetail?id=9

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章