Skip to content

Design Engineer — Aerospace & Propulsion Hardware

VinaykumarVenkateshkumar

Design engineer with an aerospace propulsion background. Detail and GA drawings with GD&T to ISO 1101, limits and fits to ISO 286, tolerance stack-up, sheet-metal flat patterns and DFM — from parametric CAD written in CadQuery and pyOCC, with the geometry verified rather than assumed. Open to freelance parametric-CAD and simulation work alongside full-time design roles.

Coventry, United Kingdom · UK Student visa — sponsorship may be required

Vinaykumar Venkateshkumar, black-and-white studio portrait

Available immediately

Entry-level design engineering — aerospace / propulsion hardware

Cutaway of a high-bypass turbofan seen from the front quarter: fan, booster, ten-stage compressor, double-annular combustor, two-stage HP and five-stage LP turbine, with fuel, oil, air, control, ignition and fire-detection hardware drawn around the core in colour.Featured · interactive

Turbofan Atlas

A high-bypass turbofan, part by part, reconstructed from the NASA/GE E³ design reports. The flowpath is drawn to the dimensions those reports publish, the compressor and turbine blades are lofted from their own printed section tables, and all twelve systems are there: fuel, control, air, oil, ignition, variable geometry, anti-icing, fire detection, vibration monitoring, exhaust and structure. Every number carries the page it came from, or is flagged as assumed. The engine is NASA’s, not mine. Reading it accurately is the work.

engine systems, 144 parts
12
published stations, to scale
67
numbers without a source
0
01

Projects

01·AAug 2026
CAD projects, complete
5
Flat-pattern volume error
0.25%
Tests
249

Wrote two CadQuery generators that size a design before they draw it: a flight-control actuator family across four aircraft classes, and an engine accessory gearbox family across five power ratings. Changing one input — bore, or shaft power — propagates through gear sizing, bearing selection, housing geometry and the bill of materials, whose masses come from the generated solids' own volumes rather than a separate estimate.

Sized the gearbox from the Lewis bending equation solved for module, then snapped that module up to a standard cutter size — so the safety factor is a consequence of the preferred-number list rather than a figure anyone chose. Tooth flanks are true involutes of the base circle; bearings are real SKF 60xx-series parts picked on shaft torque.

Took the actuator from geometry to a releasable drawing pack: four A4 sheets carrying ISO 286 limits and fits (⌀ 35 H8 bore, ⌀ 21 f7 rod), ISO 1101 geometric tolerances on the features that decide function — cylindricity on the bore rather than roundness, total runout rather than concentricity, position at maximum material condition on clearance holes — a chosen datum scheme, surface finishes, and a five-contributor tolerance stack on installed length reported both worst-case and RSS. The tolerances are derived from the model, not typed onto it, and a test asserts the stack's nominal equals where the assembly actually puts the clevis.

Added a formed sheet-metal bracket, because a folded part is a different discipline from a machined one: the blank a shop cuts is shorter than the finished part's legs added together, by one bend deduction per fold. Bend allowance from a K-factor neutral axis, five design-for-manufacture rules — minimum bend radius, flange length, hole-to-bend distance, fastener edge distance — and a material trade with a real answer: 2024-T3 is twice as strong as 5052-H32 and cannot make the fold, because its minimum bend radius is 4T against 1T. Validated by conservation of volume: forming moves metal without creating it, so the blank and the formed solid agree to 0.25%, against 5.12% for a naively summed blank.

Then loaded that bracket and found it fails — 2 kg of avionics at a 9g crash factor, solved with CalculiX through FreeCAD headlessly. The result worth having was not the stress but the mesh study: refining from 173k to 333k nodes, deflection converged to 0.06% and bulk stress to 0.28%, while the peak stress climbed 12% and never settled. Its location says why — every peak node sat at z = 0.00 exactly, on the bore edge of a constrained hole, hopping between the two holes run to run. A fixed constraint is singular at its own boundary, so that 545 MPa peak is a boundary condition rather than a stress, and refining further would only make it larger. The converged answer is 196.7 MPa against a 193 MPa yield: the part is marginal, not catastrophic, and the difference between those two verdicts is the whole reason to refine a mesh more than once.

Then closed the loop: screened four ways of fixing the bracket by hand before modelling any of them, because ruling a candidate out with a section modulus costs seconds and building then solving it costs hours. The instructive result was the option that looked best. Folding the upright's free edges into flanges makes that leg 7.4× stiffer — 235 down to 32 MPa — and changes the bracket's margin by nothing at all, because both legs carry the same moment through the same section and the governing stress simply moves to the untouched base. It costs 14% more mass and fails at exactly the same load. Chose 2.0 mm gauge instead, the lightest arm that passes, and treated it as a drawing re-issue rather than an edit: the bend deduction changes, so the blank goes 101.52 to 100.97 mm and a shop cutting to the old sheet would make the wrong blank.

Solved the chosen redesign to confirm it: 126.1 MPa converged against a 193 MPa yield, a +53% margin where the original had −2%, and deflection halved from 4.83 to 2.46 mm. The peak still diverges in exactly the same place, which is the right answer — the singularity belongs to the constraint, not the part, so a thicker part should not cure it. Only the winner was solved, and that is defensible because the beam model reads 16% high at both gauges, agreeing to 0.2 of a point across a 25% thickness change; a test pins that calibration, because if it drifts the screen has stopped being safe.

Backed that solver result with closed-form beam theory sharing none of its code, which put the nominal at 235 MPa — also past yield, from a different direction — and surfaced what a single-cantilever idealisation misses: most of the tip movement is the base rotating, not the upright bending, because the base reacts the moment back to the bolts through the same 1.6 mm of material. A test pins the non-convergence itself, so if anyone later rounds that edge and the peak starts converging, the suite fails and the claim gets rewritten.

Sized a bleed-air duct from station 3 of my own turbofan cycle model — 759.5 K at 12.5 bar — and routed it in pyOCC as a solid swept along a 3D spline, then measured true minimum distance to the structure around it. Two findings the arithmetic gave up rather than the drawing: the wall is governed by surviving a 2× diameter bend, not by hoop stress, because bending thins the outside by 20%; and the clearance requirement is 10.5 mm because stainless at 760 K grows 7.6 mm over a metre before anything vibrates. The obvious short route fouled the casing outright, and it is kept in the repository beside the one that works.

Wrote a design-for-manufacture checker that reads a STEP file it did not create — wall thickness by firing rays through the solid, draft from face normals, hole aspect and internal corner radius from the cylinders that are holes rather than fillets. Run across every part in the repository it found seventeen failures on the gearbox housing as a casting, which that project's own README lists as a known omission: the checker recovered it from the geometry, having never read the README. Its ray-cast wall thickness also returns 3.00 mm on the actuator, exactly the wall_thickness constant its generator sets, by a path that shares no code.

Wrote 78 tests for the gearbox generator — the last of the five with none, and the one with the most defects already found, which is not a coincidence. They found another: both tooth profiles are drawn with a tooth centred on their own +X axis, so with an even gear the two solids overlapped by 424 mm³, 2.1% of the pinion, in every exported assembly. Every member of the family has an even gear. Fixed by phasing the gear half a tooth pitch, and the parity matters — an odd gear already presents a gap, so rotating it causes exactly the clash it avoids. Both directions are pinned by tests and the STEP files are regenerated.

Checked those tests by reintroducing the original involute sign error to confirm the suite goes red. It does, but through only one test of the three that look like they should catch it. Tooth thickness at the pitch circle is still correct with the sign mirrored, which is why the bug survived its first review; and BRepCheck_Analyzer validity still passes too, because at every tooth count this project ships the mirrored flanks stay inside their own sector and the solid is genuinely well-formed. Only checking that the tooth narrows from root to tip finds it. Verifying geometry is well-formed is a different question from verifying it is right.

Checked the geometry rather than assuming it, which is what found the interesting problems: the involute half-angle carried the wrong sign, giving hourglass teeth whose flanks crossed and a solid that failed BRepCheck_Analyzer and would not triangulate; the housing footprint was driven by bearing-boss diameter, so the 50 kW gear hung 84 mm outside its own casing; the actuator assembly stacked every part at the origin, sealing the rod and its rod-end inside the barrel; the clevis was too small to carry its own bolt holes clear of its pin bore; and every BOM mass was a hand-rolled formula, one of them wrong by 5.3×. All fixed, all covered by tests.

Figures

Python · CadQuery · pyOCC · GD&T · ISO 286 · ISO 1101 · Sheet metal · DFM · FEA · CalculiX · STEP

View on GitHub
01·BSep 2026
Engine systems, 144 selectable parts
12
Published flowpath stations drawn to scale
67
Numbers without a source or an assumed flag
0

Built an interactive anatomy of a high-bypass turbofan in the model-first pattern of the Human Atlas and OMF Atlas anatomy explorers: the model fills the page, every part is selectable, systems are layers, a separation control lays the assembly out, and three guided tours fly the camera part by part. There is no public segmented engine dataset, so all 144 parts are procedural, fitted to the NASA E³ reports' published dimensions — 42 HPC hub and tip stations, five HPT stations, the LPT walls from thirty transcribed airfoil sections, and every row's blade and vane count.

Lofted every blade row as a real aerofoil: the ten HPC rotors and eleven stators from all twelve printed sections per row of the HPC report's Table XXII (chord, camber, stagger and thickness at each radius), the ten LPT rows from the LPT report's printed surface coordinates at three spans, and the fan and booster from the twenty-three and fourteen plane sections the fan report tabulates in its appendices — which this project had recorded as a backlog line for months, and read off a graph instead until 2026-09-10. Modelled all twelve systems a turbofan is taught as, not just the gas generator: fuel (pump, control, two manifolds, thirty duplex nozzles), FADEC and sensors, bleed and three clearance-control loops, oil (five bearings, two sumps), two igniters at their published 120°/240° ports, variable stators that re-stagger from a slider, bleed doors, anti-icing, fire zones, vibration pickups, the 18-lobe mixer, frames, mounts and nine bolted flanges. Both spools turn at the published 1 : 3.6.

Tagged every fact on the page with its provenance — an E³ report page, or schematic, or assumed — and let the sources correct the model: the fact sheet showed thrust is taken at the fan frame through a whiffle tree rather than at the aft mount, that HPT vane 1 is cooled by compressor-delivery air rather than stage-7 bleed, and that the final engine's hot section used René N4 and thermal barrier coatings where the hardware reports say René 150. Picking runs through a bounding-volume hierarchy so hovering 787k triangles costs nothing; the page builds its own geometry in a quarter of a second.

Figures

Three.js · React Three Fiber · three-mesh-bvh · Next.js · NASA E³ reports (CR-168219 and companions)

Open the atlas
01·CSep 2026
Fan-to-turbine shaft speed ratio
1.46
LP turbine stages, against five
8
Fuel burn, bounded
3–4.5%

Took the E³ cycle I had already validated to half a per cent and asked a design question on top of it: what does bypass ratio 10 cost on the same core? The core is held literally fixed — same corrected flow, same compressor exit and turbine inlet temperatures, same fuel flow to six decimal places — and the booster is restaged to hold the overall pressure ratio. Only the fan and the low-pressure turbine move. This is my design, not NASA's: every number in it is derived rather than transcribed, and the page says so.

The answer is not the fan. At the E³'s own bypass ratio the fan wants 3,523 rpm and the turbine wants 3,548 — within a per cent, which is why the engine is a direct drive and a good one. At bypass ratio 10 the fan wants 2,510 and the turbine wants 3,673. Everything else is a way of paying that 46 per cent: more turbine stages, a faster fan tip, or a gearbox. A gear ratio of 1.46 buys back the five-stage turbine against the eight that direct drive needs, so it deletes three stages — and a 30,000 horsepower epicyclic with its oil system and its certification case is a bad trade for that, when a real geared fan runs near 3 to 1 and exists for a far bigger speed gap. The turbine is the cheaper answer on this core.

Stating the tolerance before the run caught my own first answer. A scoping solve had said bypass ratio 10 closes at seven turbine stages, on a fan tip Mach number of 1.47 that looked acceptable once it had been seen. The step-zero band fixed the ceiling at 1.45 beforehand, the E³'s own fan running 1.41, and seven stages fails it. It needs eight. Two points of Mach number is a whole turbine stage.

Two results worth more than the headline. The quarter-stage island does not survive: the booster's pitch loading goes 0.235 to 0.500, a factor of 2.13 and past the diffusion limit for one subsonic stage, so it becomes two, so the feature that throws ingested debris clear of the core is gone — the cheapest way to see what a derivative costs is to ask which published feature stops working. And blade stress never binds, because a bigger fan turns slower and root stress falls below the E³'s; anyone reaching for AN² first is answering the wrong question.

Bounded rather than sold. The fuel saving is quoted as 3 to 4.5 per cent, not 4.5, because fan efficiency is held at the E³'s values at a different pressure ratio and tip Mach, and one point of it is worth 0.68 per cent. It is a design-point solve at max climb with no off-design re-match, and the bypass ratio at takeoff is not the one at climb even on the real engine. ME TF0.01 was never built, so every number in it sits one rung below the reconstruction it stands on — which is recorded as its closure rather than glossed.

Figures

Python · Validated E³ cycle model · Mean-line turbine loading · NASA E³ reports (CR-168219 and companions)

01·DAug 2026
Geometry fit RMS error
0.019%
Solver iterations to converge
555
RMS Cp error vs. NASA data
0.65

Fitted a Class-Shape Transformation (CST) curve directly to real, published wind-tunnel geometry — NASA TM 110300's NACA 1-85-100 cowl ordinates — reproducing them to 0.019% RMS of the maximum radius, not a synthetic self-check against the project's own reference curve.

Built and converged a compressible RANS OpenFOAM case (rhoSimpleFoam, k-ω SST) around the fitted cowl at Mach 0.79, meshed with snappyHexMesh (108,904 cells) and debugged to convergence after four real solver bugs plus a missing stability safeguard, confirmed against OpenFOAM's own reference tutorial run as a control.

Compared the converged solve's surface pressure against NASA TM 110300's own wind-tunnel data — RMS Cp error 0.65 over 17 matched stations, reported honestly including where the model misses the real leading-edge suction peak.

Figures

pyOCC · OpenCASCADE · Python · iCST · OpenFOAM

01·EAug 2026
Net thrust
57.67 kN
Thermal efficiency
46.7%
Tests
82

Built a twin-spool, separate-exhaust turbofan cycle solver station by station from freestream to both nozzle exits, with every turbine's pressure ratio solved against the power its own spool actually demands rather than picked by hand.

Modelled the combustor as an energy balance that solves for fuel-air ratio rather than assuming it, using two distinct gas properties either side of combustion — air at cp 1005 J/(kg·K) going in, combustion products at cp 1244 J/(kg·K) coming out.

Validated against the closed-form ideal-Brayton limit (agrees to within 0.01% when the core nozzle is unchoked) and spool power-balance / combustor energy-balance identities, then characterised — rather than hid — the real, monotonic efficiency penalty a choked convergent nozzle imposes even with zero component losses: at the reference design's OPR of 35.84 the core nozzle runs 6.95× the critical pressure ratio, well underexpanded.

Figures

Python · Matplotlib · pytest

01·FAug 2026
Cl RMS vs. XFoil
0.047
Drag recovered vs. XFoil
0.41×
Tests
38

Wrote a Hess-Smith panel method from scratch — constant-strength source panels for thickness plus a shared vortex distribution for the Kutta condition — coupled to a Thwaites/Michel/Squire-Young boundary layer for profile drag. Built in code rather than driven through XFLR5's GUI, on the same reasoning as the parametric CAD: a result clicked into existence in a GUI is not reproducible, testable, or reviewable in a diff.

Validated four ways before ever comparing against another code: a panel's self-induced velocity against its closed-form value, two independent routes to Cl (Kutta-Joukowski circulation and direct Cp integration) that share no code path after the linear solve, the Blasius flat-plate solution, and exact zero lift at zero incidence on a symmetric section. Two real bugs fell out of this — a sign-convention error in the panel rotation and a Kutta-Joukowski circulation sign error.

Then cross-checked the whole thing against XFLR5/XFoil, which couples the inviscid solve and the boundary layer where this does not — both codes fed identical geometry so no disagreement is attributable to a different body. Lift agrees to 0.047 RMS on NACA 0012, and the lift slopes bracket 2π in the direction the physics demands. Drag came out at 0.41× XFoil's, nearly flat in incidence against XFoil's tripling: an uncoupled boundary layer recovers skin friction and almost none of the pressure-drag rise. Reported as the headline result rather than buried, and pinned by a test so it cannot drift silently.

Figures

Python · NumPy · SciPy · Matplotlib · pytest · XFLR5

01·GAug 2026
Drag vs. wind tunnel
−3.4%
Grid convergence index
6.4%
Tests
53

Wrote a generator for a six-block structured C-grid, solving the geometric series for the radial grading so the first cell lands at a target y+ — the run reports 0.45 to 0.93, so the boundary layer is resolved rather than modelled by wall functions.

Ran a four-level mesh independence study refining every direction including the near-wall spacing, giving an observed order of convergence of 2.24 and a Richardson extrapolation with a 6.4% grid convergence index.

Validated against Ladson, NASA TM 4074, at matching Reynolds number and tripped transition: lift within 0.007 in Cl below 12°, and grid-converged drag 3.4% from the measurement — inside the numerical uncertainty band.

Figures

OpenFOAM · k-ω SST · Python · Docker · ParaView

View on GitHub
01·HAug 2026
Ceiling vs. published
within 8%
Aircraft validated
3
Tests
63

Built a tested Python package computing flight performance from first principles — ISO 2533 atmosphere, parabolic drag polar, Mach-dependent thrust lapse, climb rate, ceilings, Breguet range and payload-range.

Validated against published data for the 737-800, A320-200 and 777-300ER across a 4.5× mass range. Service ceiling agrees within 8%; because manufacturers do not publish CD0 or Oswald efficiency, every result carries a band swept across the plausible range of both.

Added a compressibility (wave) drag term and documented what it did and didn't fix rather than tuning it to look complete: predicted max speed improved from Mach 0.98–1.09 to 0.91–0.98, but still sits above each aircraft's published MMO — a real, un-hidden gap in a simplified empirical correlation.

Figures

Python · NumPy · SciPy · Matplotlib · pytest

View on GitHub
01·IMar 2025
Core-length reduction
64–76%
Validated range
M 0.6–1.0
Mesh nodes
3.4M+

Investigated passive flow-control tab geometries (Delta Tandem Tab, M Delta Tandem Tab) to enhance nozzle jet mixing.

Ran ANSYS Fluent CFD simulations across Mach 0.6–1.0 with grid-independence studies to 3.4M+ nodes, validated against experimental shadowgraph imaging.

Achieved 64–76% potential core-length reduction versus an uncontrolled jet baseline at Mach 0.8, with no significant thrust penalty.

ANSYS Fluent · ANSYS DesignModeler · ANSYS ICEM CFD

02

CAD Gallery

Selected parts

CAD viewer

E³ blading

The Energy Efficient Engine's blading — 32 rows, 2,890 blades, a 75° wedge removed so the core is visible. Every section is transcribed from the NASA contractor reports, and each row sits on the published annulus wall to within 0.8 mm. The two spools turn at their own speeds, 1 : 3.57, the ratio four independent routes through four documents agree on. It turns; it does not run — the reports do not state the relative rotation direction, so co-rotation here is a stated modelling choice. Drag to orbit, scroll to zoom.

Lofted in CadQuery / OpenCASCADE from the section coordinates NASA and GE published, exported to glTF by projects/09-e3-engine.

03

Experience

AI Engineering Services Limited (AIESL)

Mar 2025 — Apr 2025

Engineering Intern, Aircraft Maintenance

Thiruvananthapuram, India

Boeing 737 MRO Base — Air India Express

Rotational internship across Component Overhaul, Material/Production Planning, and Stores at a 737 base-maintenance facility servicing Air India Express.

Documented wheel/brake overhaul procedures (torque spec 158 lb-ft, tyre pressure 205 ± 5 psi) and Eddy Current Testing (ECT) for non-destructive flaw detection.

Used AMOS and RAMCO systems to track parts issuance, stock levels, and task-card compliance.

04

Education

Cranfield University

Oct 2025 — Sep 2026

Thermal Power and Propulsion — Postgraduate Coursework

Cranfield, UK
Modules
Gas Turbine Performance · Combustion · Turbomachinery Aerodynamics · Propulsion System Design
Thesis
Research project, result pending assessment: installation aerodynamics of aero-engine nacelles

KCG College of Technology, Anna University

2021 — 2025

BEng Aeronautical Engineering — CGPA 7.37/10 (first class, Anna University scale)

Chennai, India
Modules
Air Breathing Propulsion · Rocket Propulsion · Aero Engineering Thermodynamics · Aerodynamics I & II · Computational Fluid Dynamics · Aircraft Structures I & II · Finite Element Methods · Wind Tunnel Techniques · Non-Destructive Testing · Aircraft Design
05

Toolchain

Mechanical Design
GD&T (ISO 1101) · Limits and fits (ISO 286) · Tolerance stack-up (worst-case / RSS) · Design for manufacture · Sheet-metal forming and flat patterns · Detail and GA drawings
CAD
CATIA V5 (80 hrs certified) · CadQuery · pyOCC / OpenCASCADE · ANSYS DesignModeler · STEP / DXF interchange
Aircraft Engines
Gas turbine performance · Turbomachinery aerodynamics · Combustion · Gas turbine cycle analysis
Simulation
ANSYS Fluent · ANSYS ICEM CFD / Meshing · k-ε / k-ω turbulence modelling · OpenFOAM · Grid-independence studies
Programming
Python (NumPy, SciPy, Matplotlib) · Parametric geometry (iCST) · Automated test suites (pytest) · MATLAB · Git
Aerospace
Aircraft structures · Non-destructive testing
Credentials
  • CATIA V5CADD Centre Training Services, 80 hrs2024
  • MATLAB Essential TrainingLinkedIn Learning2024
  • Machine Learning with Python; Deep Learning with TensorFlowIBM / Cognitive Class2024
06

Contact

Hiring for aircraft engine design, or need freelance CAD/CFD support? I reply within a day.

kumarvsvinay@gmail.com

or download the CV — PDF