Home / Projects

Research, facility work & simulation studies

My graduate research, the facility work behind it, and my independent turbulence and reacting-flow studies. Select a project for the full write-up, figures and documents.

Graduate research · MASc

Micro-turbojet emissions program

Back-to-back fuel campaign at UBC, March 2026: the team runs the rig from the control bench
Graduate research

JET-CALF / Boeing–NSERC Micro-Turbojet Research

JET-CALF (Jet Contrails from Aviation Lubricants and Fuels) is a multi-institution program on how fuels and lubricants affect aircraft emissions and contrails. I lead the micro-turbojet performance and gaseous-emissions task, and I coordinate the UBC experimental work for JET-CALF, SCALE-SAF and VLAME. Back-to-back tests on a JetCat P200-SX compare fuel use, gaseous emissions and particles for Jet A-1 and FT-SPK. Each result below belongs to one campaign on this one engine.

View project →
Framework: micro-turbojet measurements calibrate a performance model and a reactor network. Their agreement sets a Jet A-1 baseline for scaling studies
Graduate research

CRN Validation & Full-Scale Extrapolation

Daniel Lieder (TU Braunschweig) built a chemical reactor network (CRN) for the RQL combustor of the P200-SX. My measurements calibrate and test it. Against the Jet A-1 data of the ASME paper, it reproduces outlet temperature, EI CO₂ and EI CO within 4.5%. It overpredicts NOₓ by about 1.8×. In the GPPS fuel comparison, it predicts the measured fuel-induced changes in \(T_{t4}\), CO₂ and NOₓ within 1 percentage point. It does not predict the particle-number change.

View project →
Particle instruments on the diluted line: the catalytic stripper feeds the nano-SMPS, with the aerosol photometer next to it
Graduate research

Fuel-Dependent nvPM & Aerosol Characterization

Fuel effects on soot are a large part of the non-CO₂ question, and the micro-turbojet makes back-to-back particle tests affordable. I integrated an SMPS behind a catalytic stripper and built the size-dependent loss correction for the sampling line and stripper. At maximum thrust, the first distribution had a geometric mean diameter of 8.6 nm, similar in shape to a CFM56-7B at ground idle. In a later back-to-back test, FT-SPK cut the unit-density soot mass by 72%. The particle-number result is less certain, because it depends on the smallest, most strongly corrected bins.

View project →
Model architecture: two gas volumes between mean-line component maps, with casing and hot-section wall nodes, and models of what the T3, T4 and P8 sensors read
Graduate research · side project

A Physics-Based Transient Micro-Turbojet Model

I built a physics-based transient model of the P200-SX core with a P220 nozzle, in MATLAB and Simulink. It is built from component physics. Driven by the measured fuel flow, it predicts speed, thrust and several sensor readings. It also gives an estimate of the air mass flow, which the rig does not measure. That estimate is model-dependent and has no direct validation.

View project →
The P200-SX on its instrumented stand in the test cell, exhausting into the duct
Commissioned · 2025

P200-SX Facility Commissioning & Baseline Testing

Commissioned the original instrumented JetCat P200-SX facility at CERC: engine telemetry, thermocouples, pressure transducers, a load cell, fuel metering, an ECOM J2KN Pro on the undiluted line and dedicated NOₓ, CO and CO₂ analysers on the diluted line. Verified ventilation and CO-alarm response, designed the first exhaust ducting and wrote the engine-test SOP.

View project →
Station 4 installation on the P220-RXi casing (drawing EM-P220-SP-007, hidden-line projections of the CAD assembly): the sampling probe sits 90° from the existing BK probe. Combustor parts are drawn from hand measurements
Apparatus design

P220-RXi Station 4 Sampling Apparatus

This apparatus adds a Station 4 sampling port to the P220-RXi casing, with a coaxial dilution probe that samples gas ahead of the turbine. The main purpose is to separate fuel-derived pollutants from lubrication-oil contributions, which exhaust measurements cannot isolate. I designed the probe with a coupled one-dimensional model, drew the probe and installation packages, and sent the designs out for fabrication of parts. No sample has been taken with the probe yet, so an oil-free sample is still a design objective.

View project →
View down the installed exhaust duct from the engine nozzle, with the sampling-probe holder in the foreground
Graduate research

P200-SX Exhaust Jet Model & Duct Design

This project takes a hot, fast jet out of a closed test cell, safely and without disturbing the engine. A MATLAB model of the free jet sized the ducting. A first concept failed because it set off the CO alarm. The installed duct carries the exhaust upward. The latest design work is a digital twin of the cell.

View project →
VLAME / Aviation Emissions Modeling
Developing

VLAME / Aviation Emissions Modeling

Systems-level aviation emissions modeling with TU Braunschweig (IFAS): synthetic flight trajectories, a digital-engine performance model and emissions inventories, connecting engine exhaust to contrail-relevant analysis.

View project →
Facility work

Clearing the cell for the turbojet

Independent computational studies

Turbulence and reacting flow studies

Turbulence and combustion have always pulled me in. Graduate courses in both areas made the ideas stick, so I kept going on my own time. These are those personal projects.

Mean temperature of my RANS/EDC simulation of Sandia Flame D, on its own mesh and mirrored about the axis
Independent computational study

Sandia Flame D: What a Reactor Network Discards

A personal learning project on a simple question: how much of a turbulent flame survives when you reduce it to a few chemical reactors? I set it up as four steps, each with a check before the next. I built the CFD, built reactor networks from it, measured what the reduction throws away, and tested ways to put it back. The networks are scored against my own parent CFD. Only the CFD and the tabulated chemistry are scored against the experiment.

View project →
The exhaust leaves the nozzle at sea-level start-up. A transported mixture fraction tracks nozzle gas (red) as it pushes into still air (blue)
Independent computational study

Apollo Ascent Engine Nozzle: A Staged-Fidelity CFD Hierarchy

A personal project to build rocket-nozzle CFD from the ground up. The test bed is the chamber and bell nozzle of the Apollo Lunar Module ascent engine. Each simulation adds exactly one piece of physics to the last. The sequence is 1-D theory, inviscid flow, a thermally perfect gas, viscous flow, turbulent flow and finally the plume. This shows me what each layer of fidelity actually buys. It also shows, very visually, how a nozzle designed for vacuum over-expands and separates against sea-level back pressure.

View project →
Vortical structures above the wall in my wall-resolved LES of channel flow (Q-criterion isosurfaces, colored by streamwise velocity fluctuation)
Independent computational study

What the Grid Can’t See: Recovering Unresolved Turbulence

Every practical turbulence simulation discards the small scales and then has to guess what they were doing. This personal project asks a sharper question. If you watch the large scales for a while, how much can you actually say about the small ones, and how confident can you be? The study has three parts: my own RANS and LES runs, an in-house turbulence solver, and information-based measures of what coarse data determines. I scored my runs against published DNS, experiment and LES data.

View project →
More projectsCourse and capstone projects, and prototype software · 12 projects
Course projects

Undergraduate and graduate course projects

The F100-PW-100 low-bypass afterburning turbofan, with station numbers from the inlet (1) to the nozzle exit (11)
Course project

MECH 477: F100-PW-100 Thermodynamic Cycle Analysis

An individual course project in MECH 477 (aerospace propulsion). I wrote a zero-dimensional cycle model of the F-15’s low-bypass afterburning turbofan (BPR 0.69, OPR 24.1, TIT 1680 K). It marches through the engine station by station, with temperature-dependent gas properties, polytropic efficiencies, mixing and a choked convergent nozzle.

View project →
The three-story outpatient medical office building in Manchester, England
Capstone project

ASHRAE 2025 Student Design Competition: HVAC Design Calculations

Rising Star Award, 2025 ASHRAE Student Design Competition. Capstone (MECH 457) for the ASHRAE Student Design Competition. We did the HVAC design and load calculation for a three-story, 67,158 ft² outpatient medical office building in Manchester, England. The design follows ASHRAE Standards 55, 62.1, 90.1 and 170. I was project manager and led the thermal-systems optimization.

View project →
The bench in the dark lab: an 8 ft focal-length concave mirror, the light source and a candle in the test section
Course project

Schlieren Visualization of Natural Convection

A group lab in MECH 489, an undergraduate experimental thermofluids course. We built a two-mirror schlieren system from a flashlight, a drilled aluminum block, two 8-foot mirrors and a razor blade. We used it to watch hot air rise off a heated plate at two temperatures and two angles. The result is mainly qualitative: it shows how the flow changes.

View project →
Normalized scores from our simplified course model for the F-111F in two sweep positions. The range and turn-rate axes rest on assumptions that do not hold, so read this chart as a record of the course work only.
Course project

MECH 484: Tapered vs Delta Wings

A group research project in aircraft aerodynamics (MECH 484, 2024). We reviewed how tapered and delta planforms work. We then used simplified course formulas on the F-111’s two sweep positions, and compared two reconnaissance aircraft, the U-2 and the SR-71.

View project →
Schematic only: the planar PIV arrangement that the study evaluated on the micro-turbojet exhaust. No PIV measurement was made.
Course project

PIV Feasibility Study: Can Native Exhaust Aerosol Seed the Jet?

A course project in turbulent shear flows. Lubrication-oil-derived material in the P200-SX exhaust complicates the emissions measurements. I asked whether that native aerosol could instead seed particle image velocimetry (PIV) of the jet. On paper, it does not pass, so the study supports controlled external seeding.

View project →
The Joukowski model on its turntable in the Parkinson wind tunnel, shortly before stall (photo: MECH 489 Lab 2 group)
Personal project

Wall-Interference Corrections for a Joukowski Airfoil

In MECH 489 Lab 2, my group tested a Joukowski airfoil with a chord close to a third of the wall spacing (c/H = 0.3075). I derived wall corrections for it from first principles, but we never applied them. I came back to my hand notes, checked every step against a panel method with exact walls, found the errors and fixed them.

View project →
Viscous flow past the PSU-90-125WL airfoil
CFD · ANSYS Fluent

Viscous flow past the PSU-90-125WL airfoil

Density-based compressible solver with k–ω SST at Mach 0.3 and 0.9; structured mesh with refined boundary layers.

\(C_L\) about 2.45% below thin-airfoil theory; earlier separation and weak-shock signatures at Mach 0.9.

Vibration of car phone mounts
Statistics · MATLAB

Vibration of car phone mounts

Four mount types, three driving conditions, 100 Hz tri-axial acceleration; FFT, ANOVA and t-tests against NASA’s 0.3 g readability threshold.

All mounts exceeded 0.3 g; peak content at 10–30 Hz.

Strain-gauge load cell
Instrumentation

Strain-gauge weight scale

Wheatstone-bridge load cell, op-amp conditioning, DAQ and a C# real-time GUI with tare and stability detection.

±0.01 kg after calibration.

The finished low-temperature-differential Stirling engine
CAD/CAM · GD&T

Low-temperature-differential Stirling engine

SolidWorks models and GD&T drawings; machined piston, displacer and cylinder.

Held ±0.001 m tolerances; ran continuously on thermal input.

Concept sketch of the reusable X-43 airframe: titanium-carbide coating, composite body and aerospike tail
Materials · hypersonics

X-43 reusability study

Thermal loads near Mach 6 and conduction through UHTCs (HfC, TiC) with SiC and ZrB₂ coatings.

HfC–ZrB₂ composite showed ≈35% lower ablation than nickel alloys in the analysis.

Slide-bolt stall lock: exploded CAD assembly and drawing
Rapid prototyping

Slide-bolt stall lock

A more intuitive public-restroom stall lock, iterated in CAD and 3D printing across materials.

ABS selected for durability.

Software and modeling tools

Prototype software and numerical exercises

Schematic of the model inputs and outputs, as drawn for the four-configuration study: geometry, Station 4 state, dilution command and downstream condition go in. Sample flow, dilution ratio, outlet temperature, collar pressure and peak bore Mach number come out
Prototype software

Combustor Probe Model: Coupled 1-D Design Software

A steady one-dimensional thermofluid application for designing coaxial dilution sampling probes. It takes a probe geometry, an engine state and a commanded dilution flow. It solves the capture, pressure, mixing and heat-transfer problems together. It returns the sample flow, dilution ratio, supply pressure, outlet temperature and a solution class. I used it to design the probe on the Station 4 sampling apparatus page. It is verified against an independent implementation, but it has no experimental validation.

View project →
Typed handoffs between narrow agents, with a human approval gate before anything runs. The language model can propose, but it can never authorize execution
Prototype software

CFD Agents

An experimental, typed Python framework for guarded agentic workflows around OpenFOAM. Language models can interpret a request, explain a failure or propose a next step. Deterministic code, explicit contracts and human approval control what actually runs. A run that finishes can still be numerically wrong, and a numerically sound run can still be physically wrong.

View project →
The workbench on a real case: GPU Q-criterion vortices inside the probe B.1 bore, with the case files, visualization stack and properties docked around the viewport
Prototype software

AetherCFD Studio

A Windows desktop workbench that drives OpenFOAM in WSL without hiding it. Every action maps to real dictionary files and real commands, edited losslessly, and every change goes into a revertable command journal. It adds mesh-quality tools, Cantera-based combustion pre-calculations, GPU visualization and data-driven analysis. An AI copilot can act only through steps that the user approves.

View project →
The model input. The models never observe the rotor speed. They only hear the rotor through a synthetic casing-microphone spectrogram with distractor tones and bursts
Numerical learning exercise

Euler-JEPA

Can a world model learn the dynamics of a rotor only by listening to it? I built a JEPA world model that learns from unlabeled sound and plans control actions in its own latent space. It needs very few labels and it tolerates acoustic noise. A physics pipeline that knows the true equation is still more accurate when the sensor is clean.

View project →
The full Manim animation (73.6 s). It shows the Lorenz equations, then two trajectories that start 10⁻⁵ apart. A rotating camera follows them until they end up on opposite lobes of the attractor.
Numerical learning exercise

Lorenz Attractor in Manim

My first Manim animation. I made it to see deterministic chaos for myself. Two trajectories of the Lorenz system start \(10^{-5}\) apart and end up completely different, with LaTeX equations and a rotating 3-D camera. A companion Plotly Dash dashboard lets you change the parameters live.

View project →
A seeded random-dot background that the app generates. Its seed makes it reproducible, and it exports as PNG, vector PDF or HTML
Prototype software

BOScope: Background-Oriented Schlieren on a Phone

An iPhone and Mac app that I built for fun. It turns a phone camera into a background-oriented schlieren (BOS) system. The app generates a random-dot background and captures a reference frame and a flow frame through it. It then cross-correlates the two frames to find the apparent dot displacement that density gradients cause. Examples are the plume above a candle or a heat gun.

View project →