現(xiàn)螺旋槳性能快速評估)
做小型螺旋槳性能評估時我最常用的第一輪工具并不是CFD而是葉素動量理論BEMT。標(biāo)題里那個“動量理論剖面刀片方法”其實(shí)就是這個理論的另一種直譯國內(nèi)工程圈更習(xí)慣叫葉素動量理論或者片條理論。它的任務(wù)很明確給定一套螺旋槳幾何在轉(zhuǎn)速恒定的前提下把來流速度從零逐步往上推算出不同前進(jìn)比下的拉力、扭矩、功率和效率。這個工作用Matlab實(shí)現(xiàn)并不難難在誘導(dǎo)速度的迭代收斂處理以及把翼型氣動數(shù)據(jù)、幾何參數(shù)和動量約束接在一起不出錯。我把實(shí)際跑通這套流程的經(jīng)驗(yàn)整理在下面希望能幫你少踩幾個坑。1. 動手之前先搞懂BEMT到底在算什么1.1 為什么第一輪評估用BEMT而不是CFD螺旋槳?dú)鈩臃治龅姆椒ㄆ鋵?shí)不少從經(jīng)驗(yàn)公式、動量理論、葉素動量理論到全三維RANS、Lattice Boltzmann甚至直接上風(fēng)洞臺架測力。放在同一個天平上比BEMT的定位是“方案階段的快速篩選器”。我做預(yù)研時選它有三個理由。第一計(jì)算量小到可以忽略把一片槳葉沿展向切幾十個葉素每個葉素解一個二維非線性方程Matlab跑一個工況就是毫秒級掃一遍前進(jìn)比也就幾秒鐘。第二物理因果鏈非常清楚弦長變化、扭轉(zhuǎn)變化、轉(zhuǎn)速變化、來流變化都會直接映射到某個剖面的迎角、升阻力系數(shù)和整槳性能曲線上調(diào)試時一眼就能看出問題在哪。第三輸入數(shù)據(jù)全是設(shè)計(jì)階段已經(jīng)確定的參數(shù)不需要網(wǎng)格、不需要湍流模型、不需要壁面處理。CFD的優(yōu)勢在細(xì)節(jié)比如分離流、槳尖渦、三維失速、機(jī)翼與滑流的強(qiáng)干擾這些BEMT天然給不了。但在“給定幾何、恒定轉(zhuǎn)速、掃前進(jìn)比”這類任務(wù)里CFD的單工況耗時從小時到天不等幾何稍有改動又要重新來一輪網(wǎng)格根本不劃算。我的經(jīng)驗(yàn)是先用BEMT把設(shè)計(jì)空間快速縮小選定少數(shù)幾個候選幾何再讓CFD去做精確校核最后實(shí)驗(yàn)驗(yàn)證。這比一上來就全流程CFD高效得多。方法單工況耗時輸入要求適用范圍典型用途BEMT毫秒級弦長、扭角、翼型極曲線附著流為主、載荷中等選型、趨勢分析、動力匹配CFD RANS小時到數(shù)天三維幾何、網(wǎng)格、湍流模型分離流、復(fù)雜干擾、流場細(xì)節(jié)最終校核、診斷特殊現(xiàn)象臺架試驗(yàn)天到周樣機(jī)、臺架、傳感器真實(shí)完備定型驗(yàn)證、標(biāo)定1.2 動量理論和葉素理論是怎么互補(bǔ)的“BEMT”這個名字里的兩個部分不是在講同一件事。動量理論把螺旋槳簡化成一個無限薄的致動盤假設(shè)來流均勻、不可壓、無粘并忽略尾流旋轉(zhuǎn)的細(xì)節(jié)只研究槳盤前后的速度變化和壓力突跳。它給出的是宏觀結(jié)論槳盤從流場中吸收了動量氣流通過槳盤后軸向速度增加同時獲得與旋轉(zhuǎn)方向相反的切向速度于是形成推力和反扭矩。動量理論的優(yōu)點(diǎn)是不依賴槳葉長什么樣缺點(diǎn)是它根本不認(rèn)識槳葉幾何。葉素理論則反過來。它把槳葉沿展向切成一個個二維剖面每個剖面看成一段獨(dú)立翼型用當(dāng)?shù)叵鄬λ俣取⒂呛投S翼型升阻力數(shù)據(jù)算出剖面氣動力再沿展向積分。葉素的優(yōu)點(diǎn)是能夠考慮真實(shí)的弦長、扭轉(zhuǎn)和翼型缺點(diǎn)是它沒有回答“來流進(jìn)入槳盤后到底被加速了多少”。這個加速量恰恰決定了當(dāng)?shù)赜?。BEMT把兩邊接起來動量理論給出軸向和周向誘導(dǎo)速度與載荷的關(guān)系葉素理論給出槳葉幾何產(chǎn)生的載荷關(guān)系兩者必須相等于是誘導(dǎo)速度被唯一確定。這就是它能把幾何參數(shù)變成性能數(shù)據(jù)的核心機(jī)制。標(biāo)題里的“剖面刀片方法”強(qiáng)調(diào)的正是葉素那一側(cè)的“切剖面”思想翻譯上可以接受但習(xí)慣上還是叫葉素動量理論。1.3 輸入、輸出和適用邊界輸入部分非常明確。幾何上需要螺旋槳半徑、沿展向的弦長分布和安裝角分布安裝角實(shí)際上就是每個剖面的幾何扭轉(zhuǎn)角。氣動上需要翼型極曲線也就是升力系數(shù)Cl和阻力系數(shù)Cd隨迎角α的查表數(shù)據(jù)。工況上需要轉(zhuǎn)速rpm、來流速度Vinf、來流密度ρ和葉片數(shù)N。輸出部分首先是每個葉素的誘導(dǎo)因子a和a、當(dāng)?shù)赜恰⑹芰θ缓笱卣瓜蚍e分得到整槳推力T、扭矩Q、功率P和推進(jìn)效率η。為了方便跨工況對比我還會額外算無量綱系數(shù)推進(jìn)系數(shù)C_T T/(ρ n2D?)、功率系數(shù)C_P P/(ρ n3D?)、前進(jìn)比J Vinf/(nD)其中n是每秒轉(zhuǎn)速D是直徑。適用邊界也必須要講清楚。BEMT建立在均勻定常來流、附著流、低速亞聲速這些假設(shè)上所以槳尖馬赫數(shù)最好不要超過0.7翼型數(shù)據(jù)要覆蓋實(shí)際遇到的雷諾數(shù)范圍且不需要處理失速后的復(fù)雜分離。如果來流很不均勻比如螺旋槳裝在機(jī)翼后方或者在大攻角狀態(tài)下工作BEMT只能給出趨勢級的結(jié)果。這個約束不是缺點(diǎn)而是工具本身的定位快速、可解釋、覆蓋大多數(shù)正常設(shè)計(jì)點(diǎn)。2. 把BEMT公式拆到能直接寫代碼的程度2.1 截面速度三角與微元?dú)鈩恿θ“霃絩處的一個小段厚度為dr。當(dāng)?shù)剌S向速度是來流速度加上誘導(dǎo)速度寫成Vinf×(1a)這里的a叫軸向誘導(dǎo)因子。切向速度稍微繞一些槳葉以角速度Ω旋轉(zhuǎn)當(dāng)?shù)匦D(zhuǎn)速度為Ωr但由于槳盤把動量給了氣流氣流獲得與旋轉(zhuǎn)方向相反的切向速度所以在葉素坐標(biāo)系中切向來流速度表示為Ωr×(1-a)a是切向誘導(dǎo)因子。不同教材對a的符號定義會有差異但只要自己在代碼里保持一致結(jié)果不會出問題。相對速度Vrel就是由軸向和切向兩個分量合成的Vaxial Vinf * (1 a); Vtang Omega * r * (1 - ap); Vrel sqrt(Vaxial^2 Vtang^2); phi atan2(Vaxial, Vtang); alpha theta - phi;phi是流入角theta是幾何安裝角alpha就是當(dāng)?shù)赜?。有了alpha就能從翼型極曲線插值得到Cl和Cd。單個葉素的升力是0.5ρVrel2c dr×Cl阻力是0.5ρVrel2c dr×Cd。把升力阻力分別沿軸向和切向投影軸向分量形成拉力切向分量形成對槳轂的旋轉(zhuǎn)阻力矩。乘上葉片數(shù)N就得到整個槳盤在這一小段上的氣動貢獻(xiàn)。這里有個地方特別容易寫錯升力方向定義為垂直于相對速度阻力方向定義為平行于相對速度。投影到軸向時需要用流入角phi的正弦余弦公式是dT_el N×0.5ρVrel2c dr(Cl cosφ ? Cd sinφ)dQ_el N×0.5ρVrel2c dr(Cl sinφ Cd cosφ)×r。如果角度定義反了推力變成阻力整個迭代直接發(fā)散。2.2 動量方程那一側(cè)的約束同一小段還可以從動量角度建立方程。單位時間流過半徑r處環(huán)形微元的質(zhì)量流量是ρ×2πr dr×Vinf(1a)。氣流通過槳盤后軸向速度增量在下游逐漸達(dá)到2aVinf由動量定理軸向力的增量就是質(zhì)量流量乘以速度增量整理后得到dT_mom 4πρr Vinf2(1a)a dr。這是BEMT中軸向誘導(dǎo)因子a的動量約束。切向方向同理。氣流通過槳盤后獲得旋轉(zhuǎn)速度角動量變化產(chǎn)生扭矩。最常見的表達(dá)形式是dQ_mom 4πρr3 Ω Vinf(1a)a dr。這個式子里的倍率在不同教材中可能差一個2的因子因?yàn)閷Α氨P面處的切向速度”和“尾流遠(yuǎn)場切向速度”的定義不同。我在代碼里采用上面這組形式推導(dǎo)過程中只要保證質(zhì)量流量和速度增量的定義一致最終結(jié)果就是自洽的。從物理上看動量方程說的是“流場給定誘導(dǎo)速度因此能容納多大載荷”葉素方程說的是“槳葉幾何在某個誘導(dǎo)速度下能產(chǎn)生多大載荷”。兩者必須相等這正是迭代求解的出發(fā)點(diǎn)。2.3 為什么必須迭代而不是直接解公式如果把葉素方程和動量方程合起來看a和a出現(xiàn)在速度合成、流入角、迎角、Cl/Cd插值里而Cl/Cd通常是一張離散的查表和α的非線性函數(shù)。整個方程組是強(qiáng)非線性隱式方程不可能像線性方程組那樣一步解出閉式解。實(shí)際操作中幾乎都用數(shù)值迭代。最穩(wěn)妥的做法是對每個葉素列兩個殘差方程F1(a,a) dT_el ? dT_mom F2(a,a) dQ_el ? dQ_mom然后用二維牛頓法或者M(jìn)atlab的fsolve把a(bǔ)和a解出來。注意每個葉素的a和a只對這個半徑位置有效所以整個槳葉在計(jì)算時是逐段獨(dú)立求解的唯一的聯(lián)系只是把力積分起來。這個“逐段獨(dú)立”的好處是代碼結(jié)構(gòu)清晰壞處是一旦某一段解飛了整條曲線就會在對應(yīng)位置出現(xiàn)一個尖刺。3. Matlab實(shí)現(xiàn)從幾何數(shù)據(jù)到性能曲線3.1 輸入數(shù)據(jù)怎么準(zhǔn)備我習(xí)慣把幾何參數(shù)放在一個表里每一行對應(yīng)一個徑向截面歸一化半徑rNorm、弦長c、安裝角thetaDeg。翼型極曲線單獨(dú)放兩個文件或者一個矩陣第一列是alpha第二列Cl第三列Cd。Matlab里用readmatrix讀入方便替換翼型。下面的示例描述一個半徑0.254米、兩片槳葉的幾何采樣30個截面R 0.254; % 槳半徑單位米 r linspace(0.08*R, R, 30); c 0.05 * ones(size(r)) .* (1 - 0.5 * r / R); % 弦長從根到尖遞減 thetaDeg 30 - 20 * r / R; % 安裝角從根到尖遞減 Nb 2; % 葉片數(shù) rho 1.225; % 來流密度 rpm 6000; Omega rpm * 2 * pi / 60; D 2 * R; n_rps rpm / 60;實(shí)際的幾何數(shù)據(jù)通常來自CAD或三維掃描弦長和扭角分布不一定是光滑函數(shù)但只要每個徑向位置都有對應(yīng)值BEMT完全可以直接處理。翼型極曲線需要注意迎角范圍。低速小型螺旋槳常用的翼型在-5度到15度范圍內(nèi)能有完整的Cl/Cd表但如果掃前進(jìn)比時當(dāng)?shù)赜浅隽诉@個范圍插值函數(shù)會返回NaN迭代直接失敗。這個問題我在第5節(jié)專門講。3.2 核心求解器代碼骨架核心求解函數(shù)接收半徑數(shù)組、弦長數(shù)組、安裝角數(shù)組和工況參數(shù)返回整槳推力、扭矩、誘導(dǎo)因子分布。殘差函數(shù)就是上一節(jié)的F1和F2。這里給出一個能直接修改使用的骨架function [T, Q, P, a, ap] bemSolve(r, c, thetaDeg, Vinf, Omega, rho, Nb) n length(r); theta deg2rad(thetaDeg); a zeros(n,1); ap zeros(n,1); T 0; Q 0; x0 [0.05; 0.01]; % 第一個葉素用保守初值 for i 1:n if i 1 x0 [a(i-1); ap(i-1)]; % 用上一葉素的解作為初值 end opt optimoptions(fsolve, Display, off, ... MaxIterations, 600, ... FunctionTolerance, 1e-12, ... StepTolerance, 1e-12); x fsolve((x) bemResidual(x, r(i), R, c(i), theta(i), ... Vinf, Omega, rho, Nb), x0, opt); a(i) x(1); ap(i) x(2); va Vinf * (1 a(i)); vt Omega * r(i) * (1 - ap(i)); Vrel sqrt(va^2 vt^2); phi atan2(va, vt); alpha theta(i) - phi; [Cl, Cd] lookupAirfoil(alpha); dT Nb * 0.5 * rho * Vrel^2 * c(i) * ... (Cl * cos(phi) - Cd * sin(phi)); dQ Nb * 0.5 * rho * Vrel^2 * c(i) * ... (Cl * sin(phi) Cd * cos(phi)) * r(i); T T dT; Q Q dQ; end P Q * Omega; end function F bemResidual(x, ri, R, c, theta, Vinf, Omega, rho, Nb) a x(1); ap x(2); va Vinf * (1 a); vt Omega * ri * (1 - ap); Vrel sqrt(va^2 vt^2); phi atan2(va, vt); alpha theta - phi; [Cl, Cd] lookupAirfoil(alpha); dT_el Nb * 0.5 * rho * Vrel^2 * c * ... (Cl * cos(phi) - Cd * sin(phi)); dQ_el Nb * 0.5 * rho * Vrel^2 * c * ... (Cl * sin(phi) Cd * cos(phi)) * ri; dT_mom 4 * pi * rho * ri * Vinf^2 * (1 a) * a; dQ_mom 4 * pi * rho * ri^3 * Vinf * Omega * (1 a) * ap; F [dT_el - dT_mom; dQ_el - dQ_mom]; endfsolve需要優(yōu)化工具箱如果沒有工具箱可以自己寫一個二維牛頓迭代核心就是數(shù)值差分算雅可比矩陣邏輯并不復(fù)雜。但對于大多數(shù)場景直接使用fsolve更省事把容差收緊到1e-12能明顯減少積分累積誤差。lookupAirfoil函數(shù)沒有寫在骨架里因?yàn)椴煌?xiàng)目的翼型表格式不一樣。我建議在函數(shù)里用interp1對alpha做線性插值同時加一句邊界判斷把超出范圍的迎角做受限外插具體做法后面會說。3.3 前進(jìn)比掃描主程序給定恒定轉(zhuǎn)速前進(jìn)比JVinf/(nD)所以掃描前進(jìn)比就是在同一個轉(zhuǎn)速下改變來流速度。主程序循環(huán)調(diào)用bemSolve即可Jlist 0.05:0.05:1.0; for k 1:length(Jlist) Vinf Jlist(k) * n_rps * D; [T(k), Q(k), P(k), a_last, ap_last] ... bemSolve(r, c, thetaDeg, Vinf, Omega, rho, Nb); if k 1 % 保存初值供下一工況 end eta(k) T(k) * Vinf / P(k); end這里有幾個工程細(xì)節(jié)。第一J0不能直接算因?yàn)閯恿糠匠汤颲inf0會讓dT_mom變成0迭代失去依據(jù)。我的做法是從J0.05起步然后利用相鄰工況的解作為初值一路向前推進(jìn)。第二每個工況之間傳遞初值非常關(guān)鍵如果每次都從固定初值重新開始中高前進(jìn)比區(qū)域很可能收斂到錯誤分支或直接不收斂。第三效率η的定義是T×Vinf/P在J很低時分子很小效率接近0此時算出來的η噪聲會很大畫圖前可以先做一次平滑。4. 不同前進(jìn)比下性能到底怎么變化4.1 懸停點(diǎn)J0J0對應(yīng)來流速度為零的懸停狀態(tài)這類工況在固定翼巡航評估里不常用但在多旋翼和垂直起降方案里是必須校核的設(shè)計(jì)點(diǎn)。此時槳盤完全靠誘導(dǎo)速度把靜止空氣加速往下推當(dāng)?shù)赜亲畲罄σ沧畲蠊β蔬_(dá)到峰值而推進(jìn)效率按定義嚴(yán)格等于零因?yàn)橛杏霉×Vinf為零。工程上更關(guān)注的是另一個指標(biāo)單位功率能產(chǎn)生多大拉力即懸停效率或FoM。J0對BEMT是個數(shù)值陷阱。動量方程在Vinf0時右端是0葉素方程仍然有載荷兩邊無法匹配解不再唯一。我的處理是給一個很小的來流速度比如0.2米/秒把它當(dāng)作“準(zhǔn)懸?!庇?jì)算結(jié)果與真實(shí)懸停的偏差通常很小因?yàn)檎T導(dǎo)速度遠(yuǎn)大于這一微小的來流擾動。如果你有實(shí)驗(yàn)懸停數(shù)據(jù)用這個點(diǎn)做校驗(yàn)更能暴露翼型數(shù)據(jù)和動量假設(shè)的系統(tǒng)誤差。4.2 巡航點(diǎn)效率峰值在中間隨著J增大來流對槳葉的沖刷作用增強(qiáng)當(dāng)?shù)赜侵饾u減小升力系數(shù)下降所以推力和功率都下降。但這兩者下降的速度不一樣推力大致線性下降功率在高J區(qū)間下降得更快結(jié)果是效率曲線先上升后下降在某個中間J處出現(xiàn)峰值。峰值出現(xiàn)在哪里直接取決于弦長分布、扭角分布和翼型特性。常規(guī)設(shè)計(jì)里如果槳葉扭轉(zhuǎn)合理峰值效率落在J0.5到J0.8之間。做動力匹配時我會把峰值效率對應(yīng)的J乘以轉(zhuǎn)速和直徑換算成巡航速度再和飛行器的設(shè)計(jì)巡航速度對比。如果峰值點(diǎn)偏快了就增加槳距角或降低轉(zhuǎn)速如果偏慢了就減小槳距角。這個匹配過程用BEMT掃一遍J就完成比靠經(jīng)驗(yàn)調(diào)槳高效得多。需要提醒的是效率曲線峰值往往比較平緩峰值附近±0.1的J區(qū)間性能差別并不大選擇工作點(diǎn)還應(yīng)兼顧噪聲、電機(jī)轉(zhuǎn)速限制和低推力的穩(wěn)定性。4.3 風(fēng)車點(diǎn)拉力歸零以后繼續(xù)增大J拉力會持續(xù)下降直到某一前進(jìn)比下推力變?yōu)榱氵@個點(diǎn)通常叫風(fēng)車點(diǎn)。此時螺旋槳不消耗功率來流反而帶動槳葉旋轉(zhuǎn)產(chǎn)生負(fù)扭矩相當(dāng)于一個阻力面或回收裝置。風(fēng)車點(diǎn)兩側(cè)的物理特性差異很大推力為正時槳是推進(jìn)器功率從軸端輸入推力為負(fù)時槳變成渦輪可能從氣流中提取能量。BEMT在這個區(qū)間仍然能算出結(jié)果但翼型表往往需要包含負(fù)迎角數(shù)據(jù)否則Cl/Cd插值會失真。如果在設(shè)計(jì)任務(wù)里只需要評估正常飛行包線掃到推力和效率變?yōu)樨?fù)值之前就可以停。但如果項(xiàng)目涉及自轉(zhuǎn)下滑、能量回收、空中風(fēng)車啟動風(fēng)車點(diǎn)附近的特性就很重要。我實(shí)際測過幾個小直徑螺旋槳風(fēng)車點(diǎn)對應(yīng)的C_T通常隨轉(zhuǎn)速變化不大用BEMT預(yù)測的零推力J和實(shí)驗(yàn)誤差大約在百分之幾足夠支撐概念評估。下面對典型前進(jìn)比區(qū)間的特征做個匯總方便直觀對照前進(jìn)比范圍推力趨勢功率趨勢效率表現(xiàn)主要關(guān)注點(diǎn)J接近0最大最大接近0懸停拉力、電機(jī)功率上限中J區(qū)間下降下降較快有峰值巡航匹配、最高效率點(diǎn)接近風(fēng)車點(diǎn)接近0接近0趨近0零推力點(diǎn)、阻力特性超過風(fēng)車點(diǎn)變負(fù)變負(fù)定義失效風(fēng)車回收、自轉(zhuǎn)下滑5. 調(diào)試過程與常見問題速查5.1 迭代不收斂的根因與初值策略我在這套代碼上遇到最多的報(bào)錯就是fsolve提前退出提示找不到解。絕大多數(shù)原因不在方程本身而在初值給得不好。BEMT的每個葉素方程可能存在多解或非物理解初值落在錯誤的吸引域里就會收斂到一個看起來合理但完全錯誤的誘導(dǎo)因子甚至干脆發(fā)散。我的固定做法分兩步。第一步始終用相鄰葉素的解作為當(dāng)前葉素的初值因?yàn)橄议L和扭轉(zhuǎn)沿展向變化是連續(xù)的相鄰剖面的誘導(dǎo)速度也應(yīng)當(dāng)連續(xù)。第二步在掃描前進(jìn)比時把上一工況的所有解作為下一工況的初值每步J增量控制在0.05以內(nèi)。如果遇到跳躍性變化比如從懸停直接切到大前進(jìn)比初值離解太遠(yuǎn)就會失敗。遇到失敗時我的策略是先把J步長減小回退幾步重新算而不是硬調(diào)fsolve容差。5.2 翼型數(shù)據(jù)插值和外插的坑翼型極曲線是查表數(shù)據(jù)默認(rèn)只覆蓋某個迎角區(qū)間。小型螺旋槳常用翼型表可能只覆蓋-5度到15度但在低前進(jìn)比高載荷下根部葉素的迎角輕松超過20度在大前進(jìn)比風(fēng)車工況下迎角又可能跑到-10度以下。查詢返回NaN后殘差函數(shù)直接失效。我在lookupAirfoil里做了三層保護(hù)。第一層采用interp1的線性插值不放高階樣條因?yàn)闃訔l容易在表兩端震蕩。第二層對超范圍迎角做線性外插外插斜率取表尾兩點(diǎn)的斜率而不是任意延長。第三層如果外插后的Cl或Cd出現(xiàn)在物理上不可能的范圍比如Cl遠(yuǎn)大于翼型最大升力系數(shù)就返回一個帶警告的截?cái)嘀底鳛樘崾尽U{(diào)試模式下我會把每個葉素的alpha和Cl、Cd打印出來看到底是哪一段在超界再決定是補(bǔ)充翼型數(shù)據(jù)還是限制前進(jìn)比范圍。5.3 動量理論斷裂與渦環(huán)狀態(tài)BEMT在中等以上載荷或者大誘導(dǎo)速度時會遇到一個理論缺陷動量方程的解可能不唯一甚至不存在這叫動量理論斷裂。最典型的情況是軸向?qū)дT導(dǎo)因子a大于0.3左右對應(yīng)槳盤處于“渦輪狀態(tài)”或“渦環(huán)狀態(tài)”。在這種狀態(tài)下流管假設(shè)不再成立直接用原始動量方程迭代要么算不出解要么算出非物理的突變。工程上最常見的做法是引入Glauert修正在a超過某個閾值后不再使用原始動量方程而是用一個經(jīng)驗(yàn)公式把推力系數(shù)與a平滑連接避免迭代跨越不連續(xù)區(qū)。很多開源BEM代碼里都有這段“超閾值修正”我第一次自己寫時漏掉了結(jié)果在低前進(jìn)比大拉力點(diǎn)上方出現(xiàn)了一段完全錯誤的負(fù)推力。如果你在J較小時發(fā)現(xiàn)推力曲線出現(xiàn)尖刺首先就該懷疑這里。5.4 結(jié)果合理性校驗(yàn)BEMT代碼本身不復(fù)雜復(fù)雜的是判斷結(jié)果是否可信。我每次跑完都會做幾件檢查。首先功率必須滿足PQ×Ω因?yàn)槲沂怯门ぞ爻私撬俣人愎β蔬@個等式是恒真的但可以檢查積分時有沒有漏乘葉片數(shù)或半徑。其次效率ηT×Vinf/P不能超過1更不能出現(xiàn)遠(yuǎn)大于1的情況一旦出現(xiàn)必然是高J段推力或功率的計(jì)算出了問題。更系統(tǒng)的做法是算無量綱系數(shù)并與經(jīng)驗(yàn)區(qū)間對比。典型的小型螺旋槳在峰值效率附近C_T大約在0.05到0.15之間C_P在0.03到0.1之間具體值隨幾何差異很大但數(shù)量級如果偏離太遠(yuǎn)就要回頭查幾何單位。我遇到過用厘米和米混用的版本所有結(jié)果差了100倍好在無量綱系數(shù)一下就暴露了。最后檢查各葉素的誘導(dǎo)因子和當(dāng)?shù)赜茄卣瓜蚴欠窆饣?。如果某個葉素和鄰居差了很大一截幾乎可以斷定那個點(diǎn)收斂到了錯誤分支。6. 這個工具后續(xù)還能怎么擴(kuò)展6.1 變螺距與動力匹配優(yōu)化現(xiàn)在這個程序還只能評估“給定幾何、恒定轉(zhuǎn)速、掃前進(jìn)比”的性能稍微改一下就可以做變螺距優(yōu)化。把安裝角thetaDeg設(shè)計(jì)成變量讓它隨轉(zhuǎn)速或來流速度調(diào)整BEMT可以快速生成不同槳距角下的效率云圖。結(jié)合電機(jī)的效率曲線和電池/發(fā)動機(jī)的功率限制我就能搜索出一條最優(yōu)控制策略在低速段用大槳距、高速段用小槳距或者反過來。這一步做得好整機(jī)續(xù)航提升百分之幾并不夸張。6.2 滑流干擾和旋翼場景遷移BEMT假設(shè)來流均勻但實(shí)際螺旋槳經(jīng)常裝在機(jī)翼前方。把均勻來流Vinf替換成某個展向位置的速度剖面比如機(jī)翼下洗產(chǎn)生的下洗速度、機(jī)身附面層的減速區(qū)、甚至另一組旋翼的尾流速度BEMT就能做一階滑流干擾評估。這個擴(kuò)展對做分布式電推進(jìn)的布局論證特別有用雖然精度不如CFD但能在幾秒鐘內(nèi)給出“哪個展向位置放槳更有利”的方向性結(jié)論。把固定翼巡航的“前進(jìn)比”概念換一換BEMT同樣可以用于直升機(jī)旋翼的懸停和前飛性能只是需要引入揮舞角和來流傾斜角。多旋翼場景里J0就是懸停大家最關(guān)心的拉力功率比可以直接輸出。如果還想加地面效應(yīng)可以在動量方程中引入鏡像速度項(xiàng)這屬于另一個獨(dú)立的擴(kuò)展模塊。6.3 把代碼改造成工程組件目前這個Matlab函數(shù)雖然能用但還稱不上一個工具。我建議把它封裝成獨(dú)立的類或函數(shù)庫輸入輸出統(tǒng)一用結(jié)構(gòu)體讓幾何、翼型表、工況參數(shù)分開傳入。這樣后面可以批量掃描幾十個候選槳葉自動記錄每個槳的峰值效率、零推力前進(jìn)比、懸停拉力輸出一張選型對比表。如果團(tuán)隊(duì)里其他人用Python或者C同樣的核心邏輯可以逐行遷移因?yàn)锽EMT本身并不依賴Matlab的特殊語法本質(zhì)就是一組循環(huán)和查表。我自己跑完這套Matlab代碼最大的體會是BEMT的價值不在精確而在把設(shè)計(jì)變量和性能之間的因果鏈壓縮到可以一眼看穿。每當(dāng)拿到一套新螺旋槳幾何我第一件事就是先掃一遍J看看效率和功率峰值落在哪里再決定要不要上CFD或?qū)嶒?yàn)。如果你照上面的思路寫出來遇到不收斂別急著調(diào)求解器先檢查翼型數(shù)據(jù)表覆蓋范圍和初值傳遞多數(shù)情況下問題都出在這兩處。