簡(jiǎn)單三維面元法的實(shí)現(xiàn)
很多物理現(xiàn)象或者工程方法,二維的時(shí)候,我們經(jīng)常能夠想到很多巧妙方法來(lái)處理。而一旦我們把問(wèn)題轉(zhuǎn)向三維之后,往往就發(fā)現(xiàn)原來(lái)的方法失效了,甚至是錯(cuò)誤的。二維中行之有效,全面封閉所有可能性的奇思妙想,面對(duì)三維之后,處處都是漏洞。這些漏洞單靠簡(jiǎn)單的升維,或者東拼西補(bǔ),竟完全堵不完。
記得《時(shí)間簡(jiǎn)史》里面提到的一個(gè)想法,這個(gè)想法是嘗試解釋為啥生物是三維的存在,而不是二維的存在。霍金的想法是這樣的,說(shuō)一個(gè)生物通常要具備一個(gè)貫穿通道,用來(lái)吸收能量,排泄廢物。如果這個(gè)生物是三維,比如一個(gè)球形,加了一個(gè)貫穿通道后,還是一個(gè)整體。如果是二維,加了貫穿后,這就變成了兩個(gè)部分,再不是一個(gè)整體。

不得不說(shuō),大科學(xué)家就是大科學(xué)家,多有趣的想法。這也間接反映了二維和三維的差別可能遠(yuǎn)超乎我們的想象,這之間的界限甚至可以決定生死。
二維到三維,難度可能是指數(shù)級(jí)的增加。比如二維本構(gòu),剛度矩陣9個(gè)參數(shù),到三維就是36個(gè)參數(shù)。我們之前解釋的Delaunay網(wǎng)格生成方法,二維的時(shí)候,考慮一個(gè)圓的位置關(guān)系,勉強(qiáng)可以定義清楚。三維之后,上下左右,前前后后的球,這個(gè)時(shí)候的位置關(guān)系變得及其復(fù)雜,也因此雖然Delaunay生成非結(jié)構(gòu)網(wǎng)格的思路非常清晰,但是要徹底實(shí)現(xiàn),難度極大。
本次聊的三維面元法,甚至是后續(xù)的三維結(jié)冰算法,要做的就是這樣一個(gè)升維的工作。
1 三維面元法理論
仍舊參考徐華舫版《空氣動(dòng)力學(xué)基礎(chǔ)》。思路如下:
(1)面網(wǎng)格離散。考慮四邊形網(wǎng)格,以每個(gè)單元中心點(diǎn)作為控制點(diǎn)。計(jì)算并存儲(chǔ)好每個(gè)單元的局部坐標(biāo)系。

(2) 面元強(qiáng)度計(jì)算。對(duì)每個(gè)單元(i)進(jìn)行循環(huán),考慮第j個(gè)單元對(duì)它的擾動(dòng):
a. 考慮在第j個(gè)單元局部坐標(biāo)系下,第i個(gè)單元的法向向量;
b. 考慮在第j個(gè)單元局部坐標(biāo)系下,第j個(gè)單元的坐標(biāo);
c. 循環(huán)計(jì)算第j個(gè)單元四個(gè)邊對(duì)第j個(gè)控制點(diǎn)的擾動(dòng);
d. 形成擾動(dòng)矩陣K(I,J)。
e. 求解面元。
(3) 流場(chǎng)計(jì)算。針對(duì)給定的點(diǎn),循環(huán)計(jì)算每個(gè)單元對(duì)其的擾動(dòng):
a. 考慮給定點(diǎn)在第j個(gè)單元下的局部坐標(biāo);
b. 循環(huán)每個(gè)單元四個(gè)邊對(duì)給定點(diǎn)的擾動(dòng);
c. 將局部坐標(biāo)系下的擾動(dòng)轉(zhuǎn)換到總體坐標(biāo)系下。
2 一些注意事項(xiàng)
單看上面的思路好像和二維區(qū)別不大。實(shí)際上,首先每個(gè)單元的局部坐標(biāo)系的處理方法就很不一樣。
另外循環(huán)計(jì)算每個(gè)面元時(shí),循環(huán)的方向是要特別注意的,搞不好就反了。
最后是程序細(xì)節(jié)的問(wèn)題,比如對(duì)分母可能出現(xiàn)的為0情況的處理,對(duì)反tan函數(shù),可能出現(xiàn)的無(wú)限的處理。對(duì)判斷一個(gè)值是否為0是,是否考慮容差的處理等等。任何一個(gè)細(xì)節(jié),都會(huì)導(dǎo)致出來(lái)的結(jié)果有問(wèn)題。
3 一些結(jié)果的展示



局部坐標(biāo)系的顯示



流場(chǎng)的顯示
4 程序調(diào)試的一點(diǎn)思考
寫(xiě)了這么多程序,我的感覺(jué),一個(gè)程序能不能成,關(guān)鍵是調(diào)試方法的好壞。
找到合適的算例,找到合適的判據(jù),根據(jù)判據(jù)來(lái)定位問(wèn)題,然后各個(gè)擊破。
這次調(diào)試這個(gè)三維面元法,我先用了平直機(jī)翼,然后后掠翼,再用球。我的判據(jù)主要是面元強(qiáng)度的分布,這個(gè)要感謝前面的二維面元法,正是現(xiàn)有了二維面元法,能夠快速得到二維面元分布值,然后才能這么快的幫我定位出各種程序bug。
做仿真找我們!
歡迎大家關(guān)注公眾號(hào):320科技工作室
工程師必備
- 項(xiàng)目客服
- 培訓(xùn)客服
- 平臺(tái)客服
TOP




















