Projects

Each project lists what the problem was, what I did, and the tools I used. Most include the full slide deck I presented; the decks open in a new tab and use the arrow keys to move between slides.

Rendering of the ball-on-beam rig
Drag to rotate, scroll to zoom.

Ball-on-Beam Closed-Loop Control

ME/AER 440 team project, University of Kentucky, Fall 2026 (in progress)

A servo tilts a beam so that a ball rolls to, and holds, a commanded position. The ball's position is read by a time-of-flight distance sensor and fed back to the controller.

  • Derived the ball-on-beam plant dynamics and built the system model in Simulink for controller design.
  • Team design. Mechanism: Hitec HS-5645MG servo driving the beam through a rod-end linkage at about 4:1, with a preload spring to take out backlash.
  • Center pivot on an M5 shoulder bolt with two MR106ZZ bearings, set by a sleeve and shims and held with a nylon-lock nut.
  • Beam: two 4 mm rails, 300 mm long and 16 mm apart, with end stops. Sensor: VL53L1X mounted so the ball never comes closer than its 40 mm minimum range.
  • Controller runs on an Arduino.
ControlsSimulinkArduinoMechanism designCAD
Finite element model of a threaded joint
Shown: related FEA work on a threaded joint (ME 514). Shaft design report to be added when complete.

Shaft and Drivetrain Design for a 40 HP Motor

ME 344 Machine Design project, University of Kentucky, Fall 2026 (in progress)

Designing the shaft and drivetrain components driven by a 40 HP, 1750 RPM electric motor that lifts a load, sized for both static strength and fatigue.

  • Free-body diagrams and symbolic equations for each component, valid for every design iteration.
  • Static and fatigue safety factors following Shigley's method (endurance limit modifiers, stress concentrations, fatigue failure criteria).
  • Design alternatives iterated in Excel, with final geometry modeled in CAD and documented in a design report.
Machine designFatigueShigleyExcelCAD
Reconstructed versus original turbulent velocity field in a pipe cross-section
A turbulent snapshot (right) rebuilt from a small number of POD modes (left).

MSc Project: Reduced-Order Modeling of Turbulent Rotating Pipe Flow

MSc, University of Kentucky, 2020–2025; final presentation December 2025

When a pipe spins about its own axis, turbulence in the flow can be suppressed and the flow partly relaminarizes, which matters for rotating heat exchangers and turbomachinery. I used Proper Orthogonal Decomposition (POD) to find which flow structures carry the energy and how they change with rotation.

  • Wrote an object-oriented MATLAB framework that reads the simulation output, applies FFTs in the periodic directions and computes both classic and snapshot POD.
  • Analyzed high-fidelity Nek5000 DNS data at Re = 5,300 for swirl rates from 0 to 3, reducing about 5 TB of data to a small set of energy-ranked modes.
  • Showed how large-scale motions near the wall weaken as rotation increases, linking the mode energy distribution to relaminarization.
  • Collaborated with PhD researchers at the University of Maryland and the University of Oxford; attended the AIAA Aviation Forum (2022).
MATLABPythonC++ / FortranLinux / HPCFluid mechanics
Multichamber muffler internal geometry

Multichamber Muffler Design

Engineering Acoustics course design competition, University of Kentucky

Design a muffler that gives the most insertion loss (noise reduction) across the frequency range, then compare the prediction with measurements from the built muffler.

  • Designed the internals: multiple chambers, baffles, perforated tubes and a fiberglass absorber.
  • Simulated transmission loss from 0 to 1000 Hz in ANSYS Workbench (Acoustics), modeling the air at 20 °C.
  • Built an independent 1D transfer-matrix model in SIDLAB as a check on the 3D results.
  • Compared simulated and measured insertion loss and published both model files so the results can be reproduced.
ANSYS AcousticsSIDLABNVHTest vs. simulation
Predicted stress versus inelastic strain for a solder alloy at several temperatures
Predicted stress–strain curves for 62Sn36Pb2Ag solder from −55 °C to 125 °C.

Viscoplastic Modeling of Solder Joints (Anand Model)

Plasticity course project, University of Kentucky

Solder joints in electronics packages creep and fail under thermal cycling. Anand's unified viscoplastic model captures how solder stress depends on strain rate and temperature, and it is built into ANSYS for modeling these alloys.

  • Implemented the Anand flow rule and deformation-resistance evolution in Python with a forward Euler time integrator.
  • Reproduced published test data for solder at strain rates of 10−2 and 10−4 s−1, then used the code to check the ANSYS nonlinear material model.
  • Built an interactive Plotly figure for exploring stress–strain response across temperature.
Python / NumPyANSYS nonlinear materialsElectronics reliability
Deformed compliant microgripper arm in ANSYS

FEA Design Optimization in ANSYS Workbench

ME 514 Machine Design using ANSYS Workbench, University of Kentucky, Fall 2024

  • Compliant microgripper: parameterized the arm geometry and used ANSYS's adaptive single-objective optimizer to maximize the gripper's motion amplification while keeping stress at or below 15 MPa.
  • Threaded joint: modeled a bolt and nut with frictional contact (μ = 0.2) using symmetry and a 2D model to cut solve time, and showed how load concentrates on the first few engaged threads.
ANSYS WorkbenchOptimizationContactMeshing

Software tools

Built at UK HealthCare (2019–present) and earlier coursework

  • Hospital wayfinding app: a web app (Flask, Python, SQL) that gives visitors directions through the medical center.
  • Directory lookup tool: a desktop tool (AutoHotkey v2 with an HTML interface) that takes text copied from the electronic health record, fuzzy-matches it against the department phone directory and shows the closest matches, ranked, so calls get routed faster.
  • Earlier work: a 3D finite-difference time-domain solver (Yee scheme) for tracking a particle in a magnetized fluid flow (2019).
PythonFlaskSQLAutoHotkeyNumerical methods