基於matlab的Spring-ICE 結冰算法述評-(1)翼型前處理

前天和同學聊天,我問他,我的Spring-ICE到底有沒有前途?

“沒,太小衆。”

不得不承認,這傢伙的回答扎心又客觀。

這個軟件的算法,我前後花了近兩年的時間,探索,調試。是我迄今爲止做過的最難也是最系統的軟件。

好巧不巧,剛讀研究生,接手的第一個項目也是算法開發。工作後,發起的第一個衝鋒,也是做程序。

不過我可絕非是個程序員,歸根結底,我們是做工程的,所謂的算法、軟件等等,目的都是爲了完成數值計算,以解決工程實際問題爲第一要務。

這個軟件從完成後,至今未曾給我帶來任何直接的收益,榮譽上的也好,金錢上的也罷。但是,通過這個過程,我對工程分析軟件的定位,對數值算法的理解等多個層面的認知提高了很多。從個人科技樹的角度,這個科技可能點歪了,但確實收穫良多。

我希望能從頭到尾,把這個算法的一些心得和思考整理出來,爲己鑑,爲後人鑑。

 

1 Spring-ICE結冰軟件簡介

 

之前在往期的文章裏,簡單介紹過。此處再提下。

這款軟件的功能是要完成翼型在特定飛行工況、氣象工況下的結冰冰型的預測。

(1)       要完成冰型的預測,就必須先計算流場,拿到速度分佈的數據。

(2)       其後,我們假定翼型前方有大量過懸浮小水滴,在流場的推動下,水滴往翼面上撞擊,從而確定出,翼型哪些地方被水撞到了,撞到了多少。

(3)       最後,根據熱平衡,計算這些水凍結多少,流到翼面其他地方多少。

(4)       水凍成冰以後,翼面的邊界上長出冰了,這時候,流場發生變化,再重複上述的步驟,繼續結冰。

這裏面主要的大塊,是流場計算、水滴撞擊的計算、熱平衡的分析。要想把這個過程成功的實施並銜接得當,還要完成諸如翼型幾何的處理、冰型的生長更新等多個零散的細節難點。

再進一步,你還希望別人拿過來就能很快用起來這個軟件,那麼就需要便捷的操作,越簡單越好。這就意味着,算法的魯棒性、強大的前後處理都要非常完備。

再再進一步,你還想要它算的足夠準,那就需要足夠的試驗數據來校準算法。

Spring-ICE基本上走完了上面的步驟。今天就先介紹下它的翼型前處理算法。

 

1.png

Spring-ICE LOGO

2.png

Spring-ICE 操作界面

 

2 翼型前處理—過密點的稀疏化處理

Spring-ICE首先加了對過密點的稀疏化處理模塊。之所以做這個處理,是爲了防止過密點影響計算效率。經過測試,100—150個點左右,足夠保證計算精度。Spring-ICE沒有對過少的點做加密處理,是因爲大部分的從業者,在做網格時,都有着網格不能太粗的常識。

稀疏化的處理方法如下:

(1)   定義一個參考長度,這個相當於是一個衡量是否過密的標尺,如果你希望整個翼型節點在150左右,那麼這個參考長度就可以定爲翼型總弧長的1/150。

(2)   從尾緣點開始,逐個進行如下步驟:

n  固定住當前點,向下搜索,逐個確定處於參考長度內的點。

n  消除參考長度內的點。

(3)   更新翼型點。進入下個循環

3.png

參考標尺示意

4.png

             

5.png

     稀疏化後的結果

3 翼型前處理—前緣區域的加密

 

稀疏化處理後,可能會面臨前緣點佈置不夠精密的問題。爲此對前緣點進行適當加密。這個加密不是說在兩個點直接加一箇中點。我們知道,節點連在一起是折線,直接在折線上加點,意義不大。所以需要通過樣條曲線,完成加密。

6.png

思路如下:

(1)       搜索出前緣加密區的點,你可以定義前5%或者10%作爲加密區。Spring-ICE定義的是5%。

(2)       建立加密區樣條;

(3)       根據樣條函數,通過極座標方式完成新的點排布。

(4)       用新的加密點替換原來翼型的加密區。

加密後的結果

3 小結

 

上面的方法只是一個參考,如果你有更好的思路或者對這款軟件有興趣,歡迎通過微信公衆號聯繫我們。

微信公衆號:320科技工作室。

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