其实呢,就是把方格网上的每条周线截线,即竖线与各流线的交点呢,再投影到叶轮的轴面投影图上去,并把每个竖线上的三个交点光滑连接成曲线,即为叶片的轴面截线啦,事实上对应的就是真实叶轮骨线在每个周向截面上的交线情况。为方便计,将10°开始到130°的前后盖板以及中间流线与周向截线的交点在流线分点上的对应坐标总结在下面的表格里面去。事实上,我们用matlab算出了方格网上型线的三次曲线精确表达式,那么不用量取,直接计算便可以算出这些点的值了(流线分点坐标值)。
度数 ° \degree ° | 135 | 130 | 120 | 110 | 100 | 90 | 80 | 70 | 60 | 50 | 40 | 30 | 20 | 10 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
前流线 | 0 | 0.4996 | 1.4431 | 2.3203 | 3.1409 | 3.9145 | 4.6507 | 5.3592 | 6.0497 | 6.7318 | 7.4151 | 8.1094 | 8.8242 | 9.5693 | 10.3542 |
中间流线 | 0 | 0.5102 | 1.5349 | 2.5647 | 3.5995 | 4.6387 | 5.6820 | 6.7291 | 7.7796 | 8.8331 | 9.8892 | 10.9476 | 12.0078 | 13.0697 | 14.1326 |
后流线 | 0 | 0.5206 | 1.6261 | 2.8137 | 4.0788 | 5.4168 | 6.8230 | 8.2929 | 9.8219 | 11.4053 | 13.0386 | 14.7171 | 16.4362 | 18.1914 | 19.9780 |
至于如何在轴面投影图上面精确地点出这些点,我想恐怕是比较难的。继续小程序走起,我们之前已经在轴面投影图上对前后盖板和中间流线进行了流线分点操作,即建立了一个沿着流线的坐标系统。那么我们把这些分点情况导入进来,然后再对每个周向截面上叶片型线点的值去进行缩放处理,并将其由流线分点坐标精确换算成轴面投影图上的真实物理坐标值(由其整数部分确定其应该属于哪两个分点之间,然后由其小数部分乘上这两个分点间的弧线长度,再计算其应该位于哪个具体点上面即可),直接在上面点出来便可以了。毋庸置疑,对于前后盖板,可以精确地找出这些点,而对于中间流线,我们还是在前面分了30000个离散点的基础上进行的找寻和比对工作,存在一定误差但是误差非常小可以忽略不计,对于工程计算也是足够了。
上述算法的实现过程详见matlab相关程序。
点出这些点,然后前中后流线上对应的的三个点画圆弧就妥了,这些圆弧便是叶片的轴面截线。
% 2016-11-07
% 叶片轴面截线绘制,计算叶片轴面截线与前盖板的交点
clear, clc;
% 导入交点的流线分点坐标值
bldPntStreamLine = load('zhouMianYePianJieXian_y_QianGaiBan.txt');
% 逆序(从出口到进口),转正
bldPntStreamLine = -bldPntStreamLine(end: -1: 1);
% 前盖板曲线参数
% A-B 上部斜线段;O 大圆弧;O2 小圆弧; 直线段
Ax = 51.007; Ay = 127.5; % 前盖板与出口边交点
Bx = 49.669; By = 112.2069; % 前盖板斜线段与圆弧段交点
Ox = -176.5668; Oy = 132; % 前盖板大圆弧段圆心
Rad = 227.1; % 大圆弧段半径
TSta = 355; TEnd = 345.090183; % 大圆弧段起始角度与终止角度,注意:顺时针排列!
O2x = 18.7289; O2y = 80; % 小圆弧段圆心,半径,起始角度与终止角度
Rad2 = 25;
T2Sta = 345.090183; T2End = 270;
% 对于流线分点坐标进行读取和分析,取出直线段、大圆弧段、小圆弧段上流线分点的最大值
CoordPntStreamLine = load('LiuXianFenDian_QianGaiBanLiuXian_FenDeDian.txt');
for j = 1: size(CoordPntStreamLine, 1)-1
if (CoordPntStreamLine(j, 3) == 0 && CoordPntStreamLine(j+1, 3) == 1)
idxMaxLne = j;
end
if (CoordPntStreamLine(j, 3) == 1 && CoordPntStreamLine(j+1, 3) == 2)
idxMaxArc1 = j;
end
if (CoordPntStreamLine(j, 3) == 2 && CoordPntStreamLine(j+1, 3) == 3)
idxMaxArc2 = j;
end
end
bldPntXY = zeros(length(bldPntStreamLine), 2); % 叶片截线与前盖板交点的真实x和y坐标值
% 找寻叶片不同轴面截线与前盖板交点的x和y坐标值,变换处理
for j = 1: length(bldPntStreamLine)
sNow = bldPntStreamLine(j); % 当前叶片截线与前盖板交点的流线分点坐标值
idxPrv = floor(sNow); % 前继点
idxAft = ceil(sNow); % 后续点
if idxPrv == 0
x0 = Ax; y0 = Ay;
else
x0 = CoordPntStreamLine(idxPrv, 1);
y0 = CoordPntStreamLine(idxPrv, 2);
end
x1 = CoordPntStreamLine(idxAft, 1);
y1 = CoordPntStreamLine(idxAft, 2);
if sNow <= idxMaxLne % 位于斜线段上
x = x0 + (x1-x0)*(sNow-idxPrv);
y = y0 + (y1-y0)*(sNow-idxPrv);
bldPntXY(j, :) = [x, y];
end
if sNow > idxMaxLne && sNow <= idxMaxArc1 % 位于大圆弧上
if idxPrv == idxMaxLne % 前继点位于斜线段上的情况,考虑剩余长度
dSLft = sqrt((x0-Bx)^2 + (y0-By)^2);
T1 = 360+atan((y1-Oy)/(x1-Ox))*180/pi;
dSArc = Rad * (TSta - T1) * pi/180;
RatCrt = dSLft / (dSLft + dSArc); % 两端临界点的流线分点比值
RatNow = sNow - floor(sNow); % 小数部分
if (RatNow <= RatCrt) % 位于直线段
x = x0 + (Bx - x0)*RatNow/RatCrt;
y = y0 + (By - y0)*RatNow/RatCrt;
else % 位于圆弧段
TNow = TSta + (T1 - TSta)*((RatNow-RatCrt)/(1-RatCrt));
x = Ox + Rad*cos(TNow*pi/180);
y = Oy + Rad*sin(TNow*pi/180);
end
bldPntXY(j, :) = [x, y];
else % 前继点位于大圆弧上面,后续点也位于大圆弧上面的情况
T0 = 360+atan((y0-Oy)/(x0-Ox))*180/pi;
T1 = 360+atan((y1-Oy)/(x1-Ox))*180/pi;
TNow = T0 + (T1-T0)*(sNow - floor(sNow));
x = Ox + Rad*cos(TNow*pi/180);
y = Oy + Rad*sin(TNow*pi/180);
bldPntXY(j, :) = [x, y];
end
end
if sNow > idxMaxArc1 && sNow <= idxMaxArc2 % 位于小圆弧上面
if idxPrv == idxMaxArc1 % 前继点位于斜线段上的情况,考虑剩余长度
T0 = 360+atan((y0-Oy)/(x0-Ox))*180/pi;
dSArc1 = Rad * (T0 - TEnd) * pi/180;
T1 = 360+atan((y1-O2y)/(x1-O2x))*180/pi;
dSArc2 = Rad2 * (T2Sta - T1) * pi/180;
RatCrt = dSArc1 / (dSArc1 + dSArc2);
RatNow = sNow - floor(sNow); % 小数部分
if (RatNow <= RatCrt) % 位于大圆弧末段
TNow = T0 + (TEnd-T0)*RatNow / RatCrt;
x = Ox + Rad*cos(TNow*pi/180);
y = Oy + Rad*sin(TNow*pi/180);
else % 位于小圆弧开始段
TNow = T2Sta + (T1 - T2Sta)*((RatNow-RatCrt)/(1-RatCrt));
x = O2x + Rad2*cos(TNow*pi/180);
y = O2y + Rad2*sin(TNow*pi/180);
end
bldPntXY(j, :) = [x, y];
else % 前继点位于小圆弧上面,后续点也位于小圆弧上面的情况
T0 = 360+atan((y0-O2y)/(x0-O2x))*180/pi;
T1 = 360+atan((y1-O2y)/(x1-O2x))*180/pi;
TNow = T0 + (T1-T0)*(sNow - floor(sNow));
x = O2x + Rad2*cos(TNow*pi/180);
y = O2y + Rad2*sin(TNow*pi/180);
bldPntXY(j, :) = [x, y];
end
end
% 水平直线段上没有叶片截线,不再继续进行计算工作了
% 事实上,最后一个点也可有可无,因为进口边与前盖板的交点已然知晓了的!
end
save YePianJieXianPointsXY_PhysicalSpace_QianGaiBan.txt bldPntXY –ascii
% 2016-11-07
% 叶片轴面截线绘制,计算叶片轴面截线与后盖板的交点
clear, clc;
% 导入交点的流线分点坐标值
bldPntStreamLine = load('zhouMianYePianJieXian_y_HouGaiBan.txt');
% 逆序(从出口到进口),转正
bldPntStreamLine = -bldPntStreamLine(end: -1: 1);
% 后盖板曲线参数
% A-B 上部斜线段;O 大圆弧段
Ax = 69.007; Ay = 127.5; % 后盖板与出口边交点
Bx = 69.9893; By = 71.2217; % 后盖板斜线段与圆弧段交点
Ox = 0; Oy = 70; % 后盖板圆弧段圆心
Rad = 70; % 圆弧段半径
TSta = 361; TEnd = 270; % 圆弧段起始角度与终止角度,注意:顺时针排列!
% 对于流线分点坐标进行读取和分析,取出直线段、大圆弧段、小圆弧段上流线分点的最大值
CoordPntStreamLine = load('LiuXianFenDian_HouGaiBanLiuXian_FenDeDian.txt');
for j = 1: size(CoordPntStreamLine, 1)-1
if (CoordPntStreamLine(j, 3) == 0 && CoordPntStreamLine(j+1, 3) == 1)
idxMaxLne = j;
end
if (CoordPntStreamLine(j, 3) == 1 && CoordPntStreamLine(j+1, 3) == 2)
idxMaxArc1 = j;
end
end
bldPntXY = zeros(length(bldPntStreamLine), 2); % 叶片截线与后盖板交点的真实x和y坐标值
% 找寻叶片不同轴面截线与后盖板交点的x和y坐标值,变换处理
for j = 1: length(bldPntStreamLine)
sNow = bldPntStreamLine(j); % 当前叶片截线与后盖板交点的流线分点坐标值
idxPrv = floor(sNow); % 前继点
idxAft = ceil(sNow); % 后续点
if idxPrv == 0
x0 = Ax; y0 = Ay;
else
x0 = CoordPntStreamLine(idxPrv, 1);
y0 = CoordPntStreamLine(idxPrv, 2);
end
x1 = CoordPntStreamLine(idxAft, 1);
y1 = CoordPntStreamLine(idxAft, 2);
if sNow <= idxMaxLne % 位于斜线段上
x = x0 + (x1-x0)*(sNow-idxPrv);
y = y0 + (y1-y0)*(sNow-idxPrv);
bldPntXY(j, :) = [x, y];
end
if sNow > idxMaxLne % 位于大圆弧上
if idxPrv == idxMaxLne % 前继点位于斜线段上的情况,考虑剩余长度
dSLft = sqrt((x0-Bx)^2 + (y0-By)^2);
T1 = 360+atan((y1-Oy)/(x1-Ox))*180/pi;
dSArc = Rad * (TSta - T1) * pi/180;
RatCrt = dSLft / (dSLft + dSArc); % 两端临界点的流线分点比值
RatNow = sNow - floor(sNow); % 小数部分
if (RatNow <= RatCrt) % 位于直线段
x = x0 + (Bx - x0)*RatNow/RatCrt;
y = y0 + (By - y0)*RatNow/RatCrt;
else % 位于圆弧段
TNow = TSta + (T1 - TSta)*((RatNow-RatCrt)/(1-RatCrt));
x = Ox + Rad*cos(TNow*pi/180);
y = Oy + Rad*sin(TNow*pi/180);
end
bldPntXY(j, :) = [x, y];
else % 前继点位于大圆弧上面,后续点也位于大圆弧上面的情况
T0 = 360+atan((y0-Oy)/(x0-Ox))*180/pi;
T1 = 360+atan((y1-Oy)/(x1-Ox))*180/pi;
TNow = T0 + (T1-T0)*(sNow - floor(sNow));
x = Ox + Rad*cos(TNow*pi/180);
y = Oy + Rad*sin(TNow*pi/180);
bldPntXY(j, :) = [x, y];
end
end
% 事实上,最后一个点也可有可无,因为进口边与后盖板的交点已然知晓了的!
end
save YePianJieXianPointsXY_PhysicalSpace_HouGaiBan.txt bldPntXY -ascii
% 2016-11-07
% 叶片轴面截线绘制,计算叶片轴面截线与中间流线的交点
% 虽然为近似方法,但是误差仅仅在0.001左右,就是千分之一的误差,尚可接受
clear, clc;
% 导入交点的流线分点坐标值
bldPntStreamLine = load('zhouMianYePianJieXian_y_ZhongJianLiuXian.txt');
% 逆序(从出口到进口),转正
bldPntStreamLine = -bldPntStreamLine(end: -1: 1);
% 中间流线曲线参数,三万个节点的坐标
disPntXY = load('ZhongJianLiuXianLiSanDian_SanWanGe.txt'); % 读入AutoCAD导出的流道中线大批离散点数据
disPntXY = disPntXY(end: -1: 1, :); % 逆序,从出口到进口
LghAll = 129.6360; % 流道中线总体的长度,AutoCAD中用list命令量取
DivNum = 30000; % 流道中线所划分的段数,AutoCAD中用定数等分划分流道中线
DisEch = LghAll / DivNum; % 流道中线每个小微段的曲线长度
% 对于流线分点坐标进行读取,[指标,x,y]
CoordPntStreamLine = load('LiuXianFenDian_ZhongJianLiuXian_FenDeDian.txt');
% 将出口点(0标识点)的标识和坐标添加进去
CoordPntStreamLine = [ 1, 60.007, 127.5; CoordPntStreamLine ];
bldPntKXY = zeros(length(bldPntStreamLine), 3); % 叶片截线与中间流线交点的真实x和y坐标值
disp(' Actual Ratio VS. Wanted Ratio');
% 找寻叶片不同轴面截线与中间流线交点的x和y坐标值,变换处理
for j = 1: length(bldPntStreamLine)
sNow = bldPntStreamLine(j); % 当前叶片截线与中间流线交点的流线分点坐标值
idxPrv = floor(sNow)+1; % 前继点
idxAft = ceil(sNow)+1; % 后续点
idxPrvDis = CoordPntStreamLine(idxPrv, 1);
idxAftDis = CoordPntStreamLine(idxAft, 1);
for k = idxPrvDis: idxAftDis
% 第一个大于等于比值的离散点,即近似为所求点
if (k - idxPrvDis)/(idxAftDis - idxPrvDis) >= sNow - floor(sNow)
disp([(k - idxPrvDis)/(idxAftDis - idxPrvDis), sNow - floor(sNow)]);
break;
end
end
bldPntKXY(j, :) = [k, disPntXY(k, :)];
% 事实上,最后一个点也可有可无,因为进口边与中间流线的交点已然知晓了的!
end
save YePianJieXianPointsXY_PhysicalSpace_ZhongJianLiuXian.txt bldPntKXY -ascii