第一步,分析問題,確定背後的物理機制和過程,即確定應力應變,能量遷移,流體動力學,波,電磁場還是其中某些的共同作用,這決定了有哪些物理場,物理量,和物理性質要被考慮進來。
第二步,根據物理機制和過程建立數學模型。這個數學模型說白了就是一堆方程和公式,其中有以偏微分方程為代表的控制方程和其他表達狀態量之間,狀態量和材料性質之間關系的附加公式。另外,初始和邊界條件也要確定下來,因為我們研究的問題總是對應有限時間和有限空間大小的。
第三步,上述數學模型除非特別簡單的方程和邊界和初始條件,一般沒有解析解(也就是用初等數學函數表達的解)。於是乎,數值離散方法就上場了,常見有有限單元法,有限體積法,和有限差分法等。這些方法所做的,就是把上建立在連續空間和時間之上的數學方程們離散成一個代數方程,一般有A*X=B的形式。X是一個矩陣。如在有限元法中,X就是在有限單元的頂點上的待求函數(因變量)的值,點的數量決定了X的矩陣大小。這裡,在離散中又涉及了空間離散(網格劃分)和方程離散(轉連續方程為代數方程)。有些方法如有限元法者上述過程中還會附加要求推導弱形式等。
第四步,有代數方程以後,我們還需要求解它。這裡面就有很多方法可供選擇,比如直接法如高斯法和各種不同的迭代方法。一般除非我們是做求解器的,我們可以用很多現成的工具去求解這個代數方程,而不用再寫一個求解器來求解。比如,在MATLAB中就可以使用一個再簡單不過的X=A\B命令來求解。
第五步,求出了解之後,取決於你想要做什麼,一般我會想知道解在某一時刻在空間內如何分布的。比如,如果我們做熱傳導分析,我們想到溫度這個因變量是如何分布的。當然,我們也可能會想知道其他依賴於溫度的材料性質如熱傳導係數和比熱容的值,分布或者變化等。這些通過簡單的計算都可以得到。一般的數值軟件都提供至少基本的後處理用於顯示和處理計算結果。如果自己編程的話,我們也可以使用第三方的後處理程序比如Paraview等。有些偏數學和理論的同學,沒準還要做敏感性分析和誤差分析,也就是看誤差隨某些變量和計算過程的變化,以此來推斷模型,離散方法,求解器等中的錯誤,誤差,或者性能。
第一步,分析問題,確定背後的物理機制和過程,即確定應力應變,能量遷移,流體動力學,波,電磁場還是其中某些的共同作用,這決定了有哪些物理場,物理量,和物理性質要被考慮進來。
第二步,根據物理機制和過程建立數學模型。這個數學模型說白了就是一堆方程和公式,其中有以偏微分方程為代表的控制方程和其他表達狀態量之間,狀態量和材料性質之間關系的附加公式。另外,初始和邊界條件也要確定下來,因為我們研究的問題總是對應有限時間和有限空間大小的。
第三步,上述數學模型除非特別簡單的方程和邊界和初始條件,一般沒有解析解(也就是用初等數學函數表達的解)。於是乎,數值離散方法就上場了,常見有有限單元法,有限體積法,和有限差分法等。這些方法所做的,就是把上建立在連續空間和時間之上的數學方程們離散成一個代數方程,一般有A*X=B的形式。X是一個矩陣。如在有限元法中,X就是在有限單元的頂點上的待求函數(因變量)的值,點的數量決定了X的矩陣大小。這裡,在離散中又涉及了空間離散(網格劃分)和方程離散(轉連續方程為代數方程)。有些方法如有限元法者上述過程中還會附加要求推導弱形式等。
第四步,有代數方程以後,我們還需要求解它。這裡面就有很多方法可供選擇,比如直接法如高斯法和各種不同的迭代方法。一般除非我們是做求解器的,我們可以用很多現成的工具去求解這個代數方程,而不用再寫一個求解器來求解。比如,在MATLAB中就可以使用一個再簡單不過的X=A\B命令來求解。
第五步,求出了解之後,取決於你想要做什麼,一般我會想知道解在某一時刻在空間內如何分布的。比如,如果我們做熱傳導分析,我們想到溫度這個因變量是如何分布的。當然,我們也可能會想知道其他依賴於溫度的材料性質如熱傳導係數和比熱容的值,分布或者變化等。這些通過簡單的計算都可以得到。一般的數值軟件都提供至少基本的後處理用於顯示和處理計算結果。如果自己編程的話,我們也可以使用第三方的後處理程序比如Paraview等。有些偏數學和理論的同學,沒準還要做敏感性分析和誤差分析,也就是看誤差隨某些變量和計算過程的變化,以此來推斷模型,離散方法,求解器等中的錯誤,誤差,或者性能。