Professional Documents
Culture Documents
Experiment- 6
Spray Combustion Test
Harsh Raj
Roll Number: 20AE10014
Aim/ Objectives of the Experiment:
● To understand the principles of spray combustion using a swirl-stabilized combustor and analyze
combating properties of Jet A1.
● To understand variation in flame properties on the variation of parameters like air-fuel mass flow rate.
● To determine flame lengths and the ratio of blue flame to yellow flame and plot its variation with
equivalence ratio.
● The combustion chamber, having a square cross-section, is equipped with two quartz windows for
optical access, and the internal geometry of the chamber is 11.70” x 4.5” x 4.5”.
● The axial swirler, fed with the main air supply, consists of eight flat vanes fixed at a 45-degree angle,
which creates a stable low-pressure central recirculation zone, anchors the flame close to the injection
plane, and promotes fuel and air mixing.
● The plain jet air blast atomizer (Delavan: SN type-30610-3) is located co-centrically inside the swirler.
● The main air and atomizing air flow rates are controlled and metered using ALICAT Scientific mass
flow controllers (MCR-500 SLPM-TFT and MCR-50SLPM-TFT), while the fuel flow rate is
controlled by a Coriolis mass flow controller.
1 0.48399 0.123013088
2 0.59163 0.140590935
3 0.80675 0.169905395
1 0.48399 26 44 42
2 0.59163 43 44 43
3 0.80675 125 23 22
Fig 3: Plot for Equivalence Ration v/s a) Flame Length b)B/Y Ratio
Results and Discussions:
The results of the experiment showed that the blue flame to yellow flame ratio decreased with increasing
equivalence ratio.
Furthermore, an emission analysis was carried out to evaluate the impact of the equivalence ratio on combustion
emissions. The emissions of carbon monoxide (CO) and nitrogen oxides (NOx) were measured for different
equivalence ratios. The results showed that the emissions of CO and NOx increased with increasing equivalence
ratio, while the emissions of NO decreased.
References
1. MATLAB CODE:
Code processes the video frame by frame segmenting blue flame (using blue1 function) and yellow flame (using
yellow1 function). It calculates flame length by fitting the best ellipse on the flame contour and measuring its
major axis. These functions have been created using the matlab’s color thresholder app, where we can can choose
a range of pixel values present in the image that we want to process. For blue1 blue pixels were chosen, same for
yellow1 also.
vid = VideoReader("flame.MP4");
c= [];
while vid.hasFrame
frame = readFrame(vid);
bw = blue1(frame); %yellow1(frame)-- for yellow flame;
bw = imcrop(bw,[53.5 182.5 1438 350]);
s = regionprops(bw, 'MajorAxisLength', 'MinorAxisLength', 'Orientation',
'Centroid');
a = max(vertcat(s.MajorAxisLength));
c = [c,a];
imshow(bw)
end
function BW = blue1(I)
% Create mask based on selected regions of interest on point cloud projection
I = double(I);
[m,n,~] = size(I);
polyBW = false([m,n]);
I = reshape(I,[m*n 3]);
% Project 3D data into 2D projected view from current camera view point within
app
J = rotateColorSpace(I);
% Apply polygons drawn on point cloud in app
polyBW = applyPolygons(J,polyBW);
% Combine both masks
BW = polyBW;
end
function J = rotateColorSpace(I)
% Translate the data to the mean of the current image within app
shiftVec = [74.520117 70.473673 73.401558];
I = I - shiftVec;
I = [I ones(size(I,1),1)]';
% Apply transformation matrix
tMat = [0.002579 0.000990 0.000000 -0.648120;
-0.000490 0.001220 0.002410 -0.574377;
-0.000886 0.002208 -0.001332 8.655755;
0.000000 0.000000 0.000000 1.000000];
J = (tMat*I)';
end
function polyBW = applyPolygons(J,polyBW)
% Define each manually generated ROI
hPoints(1).data = [-0.681732 -0.189629;
-0.369739 0.064640;
-0.038784 0.061294;
-0.000000 -0.008964;
-0.152549 -0.095951;
-0.281829 -0.149481;
-0.402489 -0.213048;
-0.792051 -0.467316];
% Iteratively apply each ROI
for ii = 1:length(hPoints)
if size(hPoints(ii).data,1) > 2
in =
inpolygon(J(:,1),J(:,2),hPoints(ii).data(:,1),hPoints(ii).data(:,2));
in = reshape(in,size(polyBW));
polyBW = polyBW | in;
end
end
end
function BW = yellow1(I)
% Create mask based on selected regions of interest on point cloud projection
I = double(I);
[m,n,~] = size(I);
polyBW = false([m,n]);
I = reshape(I,[m*n 3]);
% Project 3D data into 2D projected view from current camera view point within
app
J = rotateColorSpace(I);
% Apply polygons drawn on point cloud in app
polyBW = applyPolygons(J,polyBW);
% Combine both masks
BW = polyBW;
end
function J = rotateColorSpace(I)
% Translate the data to the mean of the current image within app
shiftVec = [67.262694 61.238801 54.558609];
I = I - shiftVec;
I = [I ones(size(I,1),1)]';
% Apply transformation matrix
tMat = [-0.002356 -0.001203 0.000000 0.675418;
-0.000490 0.000902 0.002292 -0.542018;
0.001140 -0.002097 0.000985 8.657475;
0.000000 0.000000 0.000000 1.000000];
J = (tMat*I)';
end
function polyBW = applyPolygons(J,polyBW)
% Define each manually generated ROI
hPoints(1).data = [0.051815 -0.002337;
0.189990 -0.029624;
0.293621 -0.178188;
0.511791 -0.481379;
0.733597 -0.708773;
0.675418 -0.705741;
0.251805 -0.705741;
0.017272 -0.508667;
0.000000 -0.178188;
0.000000 -0.011432];
% Iteratively apply each ROI
for ii = 1:length(hPoints) selected regions of interest on poi
if size(hPoints(ii).data,1) > 2
in =
inpolygon(J(:,1),J(:,2),hPoints(ii).data(:,1),hPoints(ii).data(:,2));
in = reshape(in,size(polyBW));
polyBW = polyBW | in;
end
end
End