# CFDLAB_ML 2023-03-10 ###### Tags: `CFDLab` 哈囉學弟, 我沒有交接過也沒被交接過沒有什麼經驗,有什麼問題再跟我說不用客氣~那目前應該是還沒整理完全部的內容,就一邊做一邊整理吧,那目前整理的內容大概是: ## Objective ### What 重新簡述一下這個研究,這個研究是想要用Machine Learning 來加速 Gauss Seidel 的迭代過程,針對的是使用Projection method(或稱作Fractional step method)解Lid Driven Cavity 的 Gauss Seidel 迭代過程。Projection method這個演算法有四個演算的步驟: step-1 u*, v* step-2 u**, v** step-3 p step-4 u, v 在 step-3解壓力場的過程中要解的的是Poisson equation, $$ \frac{\nabla \cdot \mathbf{u^{**}}}{\Delta t} = \nabla^2 p $$ ,解這條隱性方程式需要透過Gauss Seidel的迭代過程,而要透過 machine learning改善的就是這個環節。 ### How 直接採用Gauss Seidel 的話, $$ p^n \text{的起始值} = p^{n-1}, \\ n:\text{時間步} $$ 起始值是上一個時間步 $t^{*}=n-1$ 迭代後,收斂過後的結果 $p^{n-1}$,然後基於起始值再開始迭代。那machine learning 介入的就是起始值的,更準確的說,是「$p^{n-1}$ 與 $p^n$」差異的猜測。 $$ p^n \text{的起始值} = p^{n-1}+ \delta p, \\ n:\text{時間步}, \delta p: \text{machine learning 要去學習的值} $$ ## Code ### Intro 目前的程式主要分成兩個大的分支: 一,在 C++ 中跑Projection method並生成資料,在python(pytorch)上訓練模型,最後,把模型匯出回到 C++ 跑Projection method程式。 > 這個是老師的目標,也就是要讓模型能夠落地到實驗室的C程式,不然machine learning 在python上來回還是比較主流比較常見的。在這個分支裡比較tricky的是最後一步"把模型匯出回 C++",我有把一些東西整理在[這邊](https://en-chou.github.io/2022/09/21/2022-09-21-%E5%9C%A8C-%E9%83%A8%E5%B1%ACpytorch%E6%A8%A1%E5%9E%8B/),你有興趣可以先看一下,但不是必要可以先跳過。 二,在 Python 中跑Projection method並生成資料,在python(pytorch)上訓練模型,最後,把模型用在python跑Projection method程式。 > 全部搬到python這個是最近轉換的,這有一個很大的好處,在python上面做一些檢查都很方便,找問題快很多。那我也會先給你這組程式。 ### Python + 熟悉python:Python 寫起來應該可以比 C++ 愉快許多,如果 python 對你來說很陌生的話,可以用 [w3school](https://www.w3schools.com/python/) 來熟悉認識一下語法,python modules 底下 numpy 跟 pandas 也可以看一下。 > Python 是直譯語言,跟C++不一樣它不需要compile,會比較像是matlab。可以先玩玩看用用看 [colab](https://colab.research.google.com/) ,這個題目只使用colab是沒有問題的,在上面跑資源應該是會比實驗是的桌機好。本地的東西架一架說不定會耗掉你很多時間,我覺得可以以後有興趣再回頭看。 ### 附件 + 在python跑Projection method 程式: https://colab.research.google.com/drive/1C-BuHxUzNirJdKpk9YveN_uisSxX5FnY?usp=sharing > 點`執行階段`->`執行全部`,然後往下滑到"Algorithm"的地方可以看到執行中的區塊(第32個區塊),這支程式有machine learning的地方都先註解掉了,可以直接跑。 + 我最近在跑的Auto encoder 程式: https://colab.research.google.com/drive/12_fvVrDPVqO2MB_anGTBtEgqkxh4VXzi?usp=sharing > 這個要成功執行需要你先將 colab 與你的 google drive 連接好,並把訓練資料放到指定的目錄才能運行。 連接到colab與google drive的程式: ```python= from google.colab import drive drive.mount('/content/gdrive') path=F"/content/gdrive/My Drive/你選擇的路徑/" ``` + 訓練資料以及範例模型:https://drive.google.com/drive/folders/1TTk7sRr9uJnj8wsbMRmwDSKAQNCy0PAY ## 先前的內容 + [李宏毅老師的課程](http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML20.html?fbclid=IwAR2mgMgY9mnTdS250l3IKum5MvJ93z1TiX5shDX2WSOXoPmBctPG1I2NV4M) + Rebecca 的 thesis + Lid Driven Cavity flowfield-Re regression 的 ppt + [2023-03-08個咪筆記](https://hackmd.io/uP1CLE9lR6SAi3Pl_6SsHQ?view&fbclid=IwAR0o5JlC_aqn-FxM8IVEVj5kindUiKbtF21AH1OiZXvIvRhpe1yHCdLDrTg)