COMSOL仿真你遇到過哪些“莫名其妙”的報錯?

COMSOL仿真你遇到過哪些“莫名其妙”的報錯?

很多用戶最頭疼的莫過於在自己的建模過程中遇到各種各樣的,“莫名其妙”的錯誤;那麼如何快速找出並分析排除模型中的錯誤,以及如何快速實現收斂。

本文結合實踐經驗,指出幾點分析報錯的要點供大家參考。

一、 我們可以把報錯信息分爲2種:
  1、報錯信息中給出了具體出錯信息
       1.1    根據報錯提示,若材料有問題,那就查看材料設置;例如:在模塊中對應的材料位置,選擇了“來自材料”選項,而沒有給相應的域或邊界設定材料。
       1.2  若網格有錯誤,就查看網格。例如:提示某網格沒有劃分,或網格劃分重複,或邊界層網格沒有組後劃分等等。這樣的錯誤比較明顯,只需要修改相應的位置即可。
       1.3   如果是變量未定義,可能來自於自己需要定義的變量;例如:變量的作用域有錯誤,在組件中定義的變量只能此組件中使用,而使用組件中的原始變量去定義新的變量要注意作用域問題;比如在全局中定義一個變量,而需要使用組件下面某個模塊中的變量,那必須給出這個變量所在的組件名稱,比如comp1.T。這說明,在全局中定義的變量使用的是組件1中的溫度T變量,而不是組件2或組件3的,因爲如果不使用變量的全部限定名,將會出現二義性,自然程序會報錯。
  2、根據報錯信息無法準確定位錯誤的位置
       2.1  莫名的未定義,這些錯誤會讓很多新手用戶崩潰,要仔細檢查。這可能是模塊中的變量的問題;那爲什麼會出現未定義呢?每個變量都有全部的限定名,這個全部的限定名是”組件名.模塊名.變量名“這樣的格式。但用戶往往在修改錯誤的過程中會有某種不當操作,使得求解器在編譯方程的過程中所使用的變量名和模塊中定義的變量名不同就會造成這樣的錯誤。修改方法是,使用查找(ctrl+F)功能,搜索這個變量,或者在模塊的方程視圖中查找並修改。
       2.2  在計算一段時間後,出現某變量未定義,這在很大程度上是因爲初始條件不適當造成的,這就要修改初值。

       2.3  對於除零錯和試圖計算負數的開方等問題,也會讓很多新用戶崩潰,特別是對於模塊非常不熟悉的用戶。同理,這種問題必須要找到對應的變量,將對應的變量調出在結果中畫出圖像,查看是否有值。而且需要找到計算這個變量的所有值,特別是分母,開方內等位置的變量,看看它們是否等於0以及是否小於0。造成這樣錯誤的原因有很多種,比如它們是在計算了幾個時間步之後出現0的,這往往是初始值或邊界條件不適當造成的。而如果它們是在剛計算還沒有出現收斂圖時就報錯了,多半是因爲它們的初始值就是0,這樣的錯誤往往是用戶自己不認真導致的,比如出現了絕對壓強等於0。 

       2.4  如果你的模型本來是可以計算的,而在不斷修改的過程中,最後發現怎麼修改也不對,回不到原來的正常情況,那麼可以直接重新打開這個程序,且選擇不保存,即退回到正常狀況。或者直接刪除求解器,重新設置求解器。             

 
  技巧1:學會查找方程視圖中的變量

  技巧2:注意每個變量在不同作用域中所使用的名稱不同

  技巧3:刪除求解器,重新設置

二、收斂性問題

 簡要討論一下不收斂的主要原因。

 1.  穩態計算過程中,如果收斂圖上下震盪,或者增加到上千迭代次數最後收斂曲線也很難下降,這時候就需要好好設置初邊值條件了。前者,對於震盪劇烈的模型,多半是初邊值條件不適當;如邊界過約束,某位置梯度過大,邊界條件與域初始值相差太大,動網格等特殊求解技術的設置中參數設置不當等等。這時候應該修改自己的初邊值條件,或修改對應設置。對於後者,基本上很難收斂,偷懶的技巧是,增大一下容差。或在模塊中添加收斂項或穩定性條件(模塊設置中有相應的位置),穩態和瞬態問題都適用。

 2. 瞬態計算,對於瞬態計算最頭疼的是計算很久之後報錯。除修改初邊值條件和網格外,可以考慮修改求解器。

三、技巧

  對於新用戶來講,核心手段仍然是要理解模塊,知道如何設置初邊值,如何加密網格。因爲調試技巧終歸是在模型設置沒有太大問題的時候纔可以使用的手段。假如邊界條件本就是錯誤的,初始條件本非常不合適,那所有的技巧都是浮雲。
  使用這些技巧的前提是,用戶要百分百確定自己的邊界條件沒有問題,網格適當,初始值也適當。
  
  技巧4:將全耦合求解改成分離求解,注意求解變量的順序,最好先求解單場,比如熱流耦合,先計算溫度;熱電耦合先計算電場。

  技巧5:修改雅可比修正位置,比如將每個時間步一次,改爲初次迭代,當然修正次數越多,計算越慢。

  技巧6:增大每個分離步的迭代次數,並降低其阻尼因子

  建模都是從簡到繁的過程,不要試圖一次建立完整的模型。

  技巧7:建模一句話口訣:先建立最簡單的模型,只要能跑就行。然後逐步添加更多的項,耦合更多的模塊,添加更復雜的技術,而對於本可以運行的程序,最後怎麼修改都無法運行,記住,刪掉重做。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章