High Speed Propulsion Lab in IIT Kharagpur, India
The APSYS lab is located at 001 ground floor of Annex Building in the Aerospace Engineering Department, IIT Kharagpur, India. Research on high speed propulsion, pulse jet ignition, vortex combustion, thermoacoustics, spark ignition, jet deflection, etc is being conducted experimentally and computationally. The group performs flow imaging, flow diagnostics, pressure measurements on scaled down test objects. Members have access to a super-computing facility for running computer codes like Fluent, SU2, OpenFoam etc. The Lab has a dedicated compressed air facility, a direct connect modular flow facility capable of running various aerothermodynamic studies. A team of PhD students, MTech students and Undergrad students work on various projects.
APSYS Labs receives DST funding for turbulent combustion research. The funding will cover equipment procurement for pressure measurements and the purchase of specialty gases used in the tests.
Areas of research include combustion oscillations, vortex driven flows, pulsating flows, method of characteristics, combustion sciences etc.As part of our work in high speed combustors, we are studying flame behavior, ignition, stabilization, flashback and mode transition in high speed combustors both with cavity assisted and strut assisted flame stabilization mechanisms. As part of our work on Combustion Instability prediction and control, we are also looking at vortex driven resonant combustion in Gas Turbine combustors. Active combustion control using secondary injection targeting q' oscillation tailoring are being attempted.
As part of our work in high speed combustors, we are studying flame behavior, ignition, stabilization, flashback and mode transition in high speed combustors both with cavity assisted and strut assisted flame stabilization mechanisms. As part of our work on Combustion Instability prediction and control, we are also looking at vortex driven resonant combustion in Gas Turbine combustors. Active combustion control using secondary injection targeting q' oscillation tailoring are being attempted.
Instructors, Students, Collaborators, RAs, TAs etc.
Posts about publications, achievement, facilites, books from this group
%Here's a MATLAB code that performs Independent Component Analysis (ICA) on a video sequence. The goal is to treat each frame as a data %vector and then extract statistically independent components from this set using ICA.
%This is particularly useful for motion segmentation, source separation, or background subtraction tasks.
% ICA on a video sequence
clc; clear; close all;
% Load video
videoFile = 'your_video.mp4'; % Change to your video file
v = VideoReader(videoFile);
numFrames = floor(v.Duration * v.FrameRate);
% Read first frame to get dimensions
frame = readFrame(v);
grayFrame = rgb2gray(frame);
[rows, cols] = size(grayFrame);
frameSize = rows * cols;
% Reset video to the beginning
v.CurrentTime = 0;
% Construct data matrix: each column is a vectorized frame
dataMatrix = zeros(frameSize, numFrames);
frameCount = 0;
while hasFrame(v)
frame = readFrame(v);
grayFrame = rgb2gray(frame);
grayFrame = im2double(grayFrame); % Normalize to [0,1]
frameCount = frameCount 1;
dataMatrix(:, frameCount) = grayFrame(:);
end
% Remove mean for ICA
X = dataMatrix - mean(dataMatrix, 2);
% Perform ICA using FastICA
addpath('fastica'); % Make sure FastICA is in your path (download from https://research.ics.aalto.fi/ica/fastica/)
[icasig, A, W] = fastica(X, 'numOfIC', 10); % You can change the number of ICs
% Display some ICs as images
figure;
for i = 1:9
subplot(3,3,i);
imagesc(reshape(icasig(i, :), [1, frameCount]));
colormap gray; axis off;
title(['IC ', num2str(i)]);
end
% You can also reshape the spatial ICs if desired
figure;
for i = 1:9
subplot(3,3,i);
imagesc(reshape(A(:, i), rows, cols));
colormap gray; axis off;
title(['Spatial IC ', num2str(i)]);
end
disp('ICA completed successfully!');
% PCA on an image set
clc; clear; close all;
% Set image directory
imageDir = 'images/'; % Change this to your image folder path
imageFiles = dir(fullfile(imageDir, '*.png')); % Change extension if needed (e.g., .jpg, .bmp)
numImages = length(imageFiles);
% Read first image to get dimensions
firstImage = imread(fullfile(imageDir, imageFiles(1).name));
if size(firstImage, 3) == 3
firstImage = rgb2gray(firstImage); % Convert to grayscale if RGB
end
[rows, cols] = size(firstImage);
imageSize = rows * cols;
% Create data matrix where each column is an image vector
dataMatrix = zeros(imageSize, numImages);
for i = 1:numImages
img = imread(fullfile(imageDir, imageFiles(i).name));
if size(img, 3) == 3
img = rgb2gray(img);
end
img = im2double(img); % Convert to double
dataMatrix(:, i) = img(:); % Vectorize image
end
% Mean normalization
meanImage = mean(dataMatrix, 2);
X = dataMatrix - meanImage;
% Compute covariance matrix
C = cov(X');
% Eigen decomposition
[eigVectors, eigValues] = eig(C);
eigValues = diag(eigValues);
% Sort eigenvalues and vectors in descending order
[~, idx] = sort(eigValues, 'descend');
eigVectors = eigVectors(:, idx);
% Project data onto principal components
k = 10; % Number of principal components to keep
eigVectors_k = eigVectors(:, 1:k);
projectedData = eigVectors_k' * X;
% Reconstruct an image using top k components
reconstructed = eigVectors_k * projectedData meanImage;
% Show original and reconstructed images
figure;
subplot(1, 2, 1);
imshow(reshape(dataMatrix(:, 1), rows, cols), []);
title('Original Image');
subplot(1, 2, 2);
imshow(reshape(reconstructed(:, 1), rows, cols), []);
title(['Reconstructed with ', num2str(k), ' PCs']);
disp('PCA completed successfully!');
A Matlab code of how to do dynamic mode decomposition of a video sequence. (ChatGPT)
% DMD on a Video Sequence
clear; close all; clc;
%% Load Video
videoFile = 'video.mp4'; % Change to your video file
v = VideoReader(videoFile);
% Parameters
resizeFactor = 0.25; % Reduce size to speed up
numFrames = min(100, floor(v.Duration * v.FrameRate)); % Limit number of frames
% Read and preprocess video frames
X = [];
for i = 1:numFrames
frame = readFrame(v);
grayFrame = im2double(rgb2gray(frame)); % Convert to grayscale
grayFrame = imresize(grayFrame, resizeFactor); % Resize
X(:,i) = grayFrame(:); % Vectorize and store as column
end
%% Build data matrices X1 and X2
X1 = X(:, 1:end-1);
X2 = X(:, 2:end);
%% Singular Value Decomposition
[U, S, V] = svd(X1, 'econ');
% Choose r - number of modes
r = 20; % Adjust based on singular value decay
U_r = U(:, 1:r);
S_r = S(1:r, 1:r);
V_r = V(:, 1:r);
%% Build A tilde
A_tilde = U_r' * X2 * V_r / S_r;
%% Eigen decomposition
[W, D] = eig(A_tilde);
Phi = X2 * V_r / S_r * W; % DMD modes
%% Compute DMD eigenvalues and frequencies
lambda = diag(D);
omega = log(lambda);
%% Compute initial amplitudes b
x1 = X(:,1);
b = Phi x1;
%% Time dynamics
time_dynamics = zeros(r, numFrames - 1);
t = (0:numFrames-2) / v.FrameRate; % Time vector in seconds
for i = 1:length(t)
time_dynamics(:, i) = (b .* exp(omega * t(i)));
end
X_dmd = real(Phi * time_dynamics);
%% Visualize original vs reconstructed frame
originalFrame = reshape(X(:, 30), size(grayFrame));
reconstructedFrame = reshape(X_dmd(:, 30), size(grayFrame));
figure;
subplot(1,2,1); imshow(originalFrame,[]); title('Original Frame 30');
subplot(1,2,2); imshow(reconstructedFrame,[]); title('DMD Reconstructed Frame 30');
Above Image is from Arts, L.P.A., van den Broek, E.L. The fast continuous wavelet transformation (fCWT) for real-time, high-quality, noise-resistant time–frequency analysis. Nat Comput Sci 2, 47–58 (2022). https://doi.org/10.1038/s43588-021-00183-z
How does wavelet transform differ from spectrogram when used on the same time series data ?
ChatGPT : Both wavelet transform and spectrograms are time-frequency analysis tools, but they differ significantly in how they analyze and represent the frequency content of time series data. Here's a breakdown of the differences:
1. Spectrogram (based on Short-Time Fourier Transform - STFT)
How it works:
- Splits the signal into short, fixed-length time windows.
- Applies the Fourier Transform to each window.
- Gives a time vs frequency plot showing how frequency content changes over time.
Key Characteristics:
- Fixed time-frequency resolution: The window length is constant, so you have a trade-off:
- Good time resolution → poor frequency resolution.
- Good frequency resolution → poor time resolution.
- Best for stationary or slowly varying signals.
Analogy: Like taking snapshots of a signal using the same size lens—details get lost either in time or frequency depending on the window size.
2. Wavelet Transform (especially Continuous Wavelet Transform - CWT)
How it works:
- Decomposes the signal using scaled and shifted versions of a wavelet (a small waveform).
- Automatically adjusts the resolution:
- High frequencies → short time windows (good time resolution, poor frequency resolution).
- Low frequencies → long time windows (good frequency resolution, poor time resolution).
Key Characteristics:
- Multi-resolution analysis: Adapts to different scales.
- Better suited for non-stationary or transient signals.
- Captures short-lived features like bursts, edges, or spikes better than STFT.
Analogy: Like zooming in and out on a signal with a flexible lens—details appear at multiple scales.
Comparison Table
| Feature | Spectrogram (STFT) | Wavelet Transform (CWT) |
|--------|---------------------|-------------------------|
| Resolution | Fixed | Adaptive (multi-resolution) |
| Time-Frequency Tradeoff | Yes (fixed window) | No (scale-dependent) |
| Frequency Analysis | Global (within each window) | Localized (scale-wise) |
| Best for | Stationary signals | Non-stationary/transient signals |
| Window Function | Fixed (e.g., Hamming, Hann) | Wavelet (e.g., Morlet, Mexican Hat) |
| Output | Time-Frequency plot | Time-Scale plot (can be converted to frequency) |
In Practice
- Spectrograms are simpler and computationally cheaper, good for general overview.
- Wavelet transforms give richer detail and are often used in applications like:
- Biomedical signal analysis (e.g., ECG, EEG)
- Seismic analysis
- Fault detection in mechanical systems
If you're working with signals where the frequency content changes quickly (like engine vibrations, fault signatures, or speech), wavelets often reveal more subtle features than spectrograms.
Understanding upstream flame propagation in scramjets is challenging, particularly concerning flame flashback in a combustor with a novel strut-cavity flame holder. Two-dimensional unsteady Reynolds-averaged Navier–Stokes (URANS) simulations were performed to investigate how Mach number and wall divergence affect flame behavior. The utility of the strut-cavity flame holder was highlighted through a study of its non-reacting flow characteristics. Flow dynamics are significantly altered as the shear layer above the cavity interacts with the downstream hydrogen jet. Shear layer dynamics and fuel-air mixing are improved through key factors such as shock-train behavior, cavity oscillations, and transverse fuel injection. The submerged fuel jet is less exposed to supersonic flow and demonstrates reduced entropy rise, achieving a 16% increase in mixing efficiency compared to standalone struts and a 46% improvement over transverse injection without a flame holder. Thermal choking shifts the shock train upstream, facilitating interactions with the shear layer and enhancing vortex formation, which decreases flow speed and promotes upstream flame propagation. The presence of OH radicals indicates that flame flashback follows a periodic pattern with an initial gradual slope, suggesting effective anchoring. Stability and flashback likelihood are affected by low-speed zones, vortex merging, and wall divergence. At Mach 3, combustion efficiency improves without wall divergence due to increased heat release, while wall divergence prevents flame flashback by sustaining supersonic core flow and managing flow-flame interactions. At higher core flow velocities, flame stabilization occurs at the cavity's separation corner, despite a tendency for upstream propagation, with validation of the URANS results achieved through two-dimensional large eddy simulations.
The rig is being instrumentated for transitioning from cold flow supersonic mixing studies to reacting flow mode transition studies.
1. Minwook Chan PhD Thesis | |
2. PhD Thesis |
Aerodynamics, Thermodynamics, Heat Transfer and Combustion Chemistry. The building blocks of propusion systems. While feedback control is also an integral part, courses like these primarily cover the mechanical aspects of propulsion systems.
Dr. Koppillil Radhakrishnan visited APSYS lab in January 2023 as a part of a visit to IIT Kharagpur India. Dr. Radhakrishnan is an Indian space scientist who headed the Indian Space Research Organisation between November 2009 and December 2014 as Chairman of Space Commission, Secretary of the Department of Space and Chairman of ISRO.
In this recent paper from our group on SCRAM-RAM modes inside a Dual-Mode-Scramjet-Engine (DMSJ), Rajesh Kumar shows that for the Supersonic-at-Strut modes, shockwaves in the combustor respond predictably to an increase or decrease in fuel flow rates. Intermediate and final flow fields bear close resemblance to the steady state flow fields predicted by RANS for those fuel flow rates. Shocks adjust accordingly to match the combustion driven pressure rise. Under the Supersonic-at-Strut mode, when fuel flow rate is increased, the shocks steepen and concentrate near the base of the strut. When fuel flow rate is decreased, the opposite trend is observed wherein shocks become more oblique and spread away downstream from the base of the strut. For the Subsonic-at-Strut modes, shockwaves in the flow field are rather unstable to fuel flow rate modulations. Any change in fuel flow rates causes the isolator shocks to immediately move upstream irrespective of if the fuel flow rate is increased or decreased, suddenly or gradually. Because of this instability of isolator shocks for the Subsonic-at-Strut modes, feedback control of isolator shocks using fuel-flow rate modulations alone may not be feasible.
1. Instability of isolator shocks to fuel flow rate modulations in a strut-stabilised scramjet combustor |
Multistep CFD simulations on HPC cluster using Fluent showing Heat Release Distribution
ALBUM
2 Images in this album
![]()
Flame oscillations under certain flow and equivalence ratio conditions can be controlled using open loop and closed loop controls. Different flame shapes, lift off characteristics can be observed, along with periodic behavious in flame anchoring location. Flame heat release modulations, anchoring, oscillations suppression using acoustic forcing and the effect of resonant burning on NOx emission are important topics of research being addressed.
...BROWSE POSTS
Find content on publications, achievement, facilites etc
RECENT POSTS
Posts arranged recent first
CONTACT Advanced Propulsion Systems (APSYS) Lab
Emails through this form are monitored for spam
 5641     1      1      1
FEATURED POST
BTP and MTP Project Topics - 2023 Batch
Amardip Ghosh #Advanced Propulsion Systems (APSYS) Lab
This year we have a large number of BTP and MTP students as well as students from outside schools interning with our lab. While we remain open to project suggestions from students and sponsors, we also want to create a thematic focus of projects we want students to work on. If you have signed up with our lab for your BTP, MTP or Summer Internship, you can go over the list of topics we are proposing. Also read up the literature in the attachments section. You may be able to extend the work described in those papers or theses or you may be able to do them in a different way. If that is the case, let us know of your idea after you have gone through any of the attachments.
Attachments