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.
Instructors, Students, Collaborators, RAs, TAs etc.
Posts about publications, achievement, facilites, books from this group
TBCC vs RBCC Transition Challenges
TBCC (Turbine-Based Combined Cycle) — Compressor-Side Issues
1. Primary operability risk: compressor surge, stall, blade choking as inlet total temperature and pressure ratio rise; downstream back-pressure transients during bypass/isolation.
2. Flowpath management: bypassing and isolating the compressor using doors/valves, preventing back-flow of hot high-pressure air, scheduling bleeds and variable inlet guide vanes.
3. Thermal environment: inlet total temperatures greater than1000 K cause rapid heating, creep, oxidation, and reduced compressor life; limits time in turbine mode.
4. Controls problem: precise timing of inlet–compressor–ram duct matching; coordination of IGVs, VSVs, bleeds, and splitter/door angles; prevention of inlet unstart during valve motion.
5. Key mechanisms: variable-geometry inlets, splitter/rotor-stator scheduling, high-temperature isolation valves and seals, windmilling considerations during compressor spin-down.
6. Failure signatures: inlet spike motion and unstart, distortion at compressor face, surge margin collapse, transient overspeed or torque spikes.
7. Scheduling: transition typically between Mach 2.5 and 4, when inlet alone can provide sufficient pressure ratio and compressor becomes a drag/thermal liability.
8. Success criterion: smooth unloading of compressor with no surge, stable inlet shock system, minimal total pressure loss, and proper isolation of hot flow.
RBCC (Rocket-Based Combined Cycle) — Ejector to Ramjet/Scramjet Issues
1. Primary operability risk: inlet or isolator unstart, combustor blowout or thermal choking during ejector-to-ram transition; difficulty matching rocket plume with entrained air.
2. Flowpath management: phasing out rocket primaries while maintaining ramjet ignition; controlling ejector entrainment decay; isolator shock train management.
3. Thermal environment: lower turbine-face temperature than TBCC but strong combustion-induced heat release transients in ram/scram combustor.
4. Controls problem: throttling down or shutting off rockets while ensuring stable air capture; staging of fuel injection and ignition; isolator shock-train stabilization.
5. Key mechanisms: rocket primaries, ejector ducts, flameholders, isolators; plasma or piloted ignition aids during low-temperature transitions.
6. Failure signatures: loss of entrainment, isolator pressure rise, buzz, flameout, thermal choking, thrust dip during mode handoff.
7. Scheduling: ejector-to-ramjet transition typically Mach 2–3 , ramjet-to-scramjet transition Mach 5–7 (depends on configuration and fuel).
8. Success criterion: continuous thrust with limited dip, no inlet unstart, clean ignition in ram mode, stable isolator shock train as rocket primaries are phased out.
References (Selected Open Literature)
TBCC:
1. Thomas, S.R., “Overview of the Turbine Based Combined Cycle Discipline,” NASA NTRS, 2009.
2. Saunders, D., “Status of the Combined Cycle Engine Rig,” NASA NTRS, 2009.
3. Csank, J., “A TBCC Engine Inlet Model and Controls Development for Mode Transition,” NASA NTRS, 2012.
4. Garg, S., “Air-Breathing Propulsion Controls and Diagnostics—Transition Testing in NASA Glenn 10×10,” 2015.
Zheng, J., “Modeling and analysis of windmilling operation during TBCC mode transition,” Aerospace Engineering Journal, 2021.
5. Li, Z., “A review on aero-engine inlet–compressor integration and control,” Propulsion and Power Research, 2024.
6. Physics of Fluids, “Impact of splitter rotation speed on mode transition of an over-under TBCC inlet,” 2024.
RBCC:
1. Olds, J., “SCCREAM: Simulated Combined-Cycle RBCC Vehicle Model,” AIAA-97-2760.
2. Drummond, J.P., “NATO Overview: RBCC
NASA NTRS Document Link
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');
Some prompts I used for ChatGPT
P1. Can you give me a Matlab code for Dynamic Mode Decomposition ? The code should be nicely commented so one can understand the purpose of each section.
P2. Modify the Matlab code to handle an array of flattened image data
P3. For the video sequence, how many snapshots, captured at what fps will be needed to show a mode at 200 Hz and a mode at 2000 Hz?
P4. So DMD gives the eigen modes, their amplitudes and their complex frequencies. From the complex frequencies, the real part gives the growth or decay rate and the imaginary part gives the circular frequncy. Is this interpretation correct ?
P5. How to get the amplitude of a mode ?
P6. Can you give an example of complex amplitude ?
%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!');
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.
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.
...
2 Images in this album
Find content on publications, achievement, facilites etc
Posts arranged recent first
Emails through this form are monitored for spam
 6833     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