Custom software

Custom software for CFD, combustion analysis and thermal management

Some engineering questions come back every week, and no commercial package answers them the way your team needs. I design and build the tool: the numerical core, the data handling and a user interface that engineers can use on the first day.

What I build

Complete programs or single components, delivered with source code, tests and documentation.

Solvers

Simulation codes

Finite-volume flow solvers, 0-D and 1-D reactor and flame models, quasi-dimensional engine models, lumped-parameter thermal networks.

Libraries

Models for your existing code

Chemistry solvers, spray, flame and heat transfer models wired into your in-house or commercial CFD code as a user-defined function (UDF), a DLL or shared library, or directly in the source.

Analysis

Combustion analysis tools

Heat release and pressure trace analysis, ignition delay and flame speed tables, fuel surrogate formulation, automated reports from simulation results.

Interface

Desktop user interfaces

Native desktop programs with project management, input checking, 2-D plots and 3-D views, so a case is set up by clicking and not by editing text files.

Workflow

Meshing and automation

Automated mesh generation for engine geometries, parametric studies, optimisation loops and batch runs on workstations and clusters.

Performance

Faster, parallel codes

Profiling and rewriting of slow numerical code, sparse linear algebra, MPI parallelisation and load balancing, modernisation of legacy Fortran.

What a custom interface looks like

Views from FRESCOwarehouse, the desktop program I wrote for FRESCO and SpeedCHEM. The same building blocks are used for custom dashboards and engineering tools.

3-D surface viewer showing the cylinder, head and ports of an engine
3-D geometry viewer with selectable surfaces.
Plot of measured ignition delay times with a fitted curve
Measured data with a live curve fit.
Table of chemical species with thermodynamic deviations and tolerances
Editable tables with checks and tolerances.
Gallery of chart colour palettes with a line plot preview
Reusable plotting widgets and colour palettes.

Written by someone who uses it

A simulation tool fails when the programmer does not understand the physics, or when the physicist does not care about the software. I have been doing both for more than fifteen years.

  • SpeedCHEM, my chemical kinetics library, runs detailed combustion chemistry up to three orders of magnitude faster than earlier reference codes, thanks to sparse algebra and analytical Jacobians.
  • FRESCO, my engine CFD code, is a complete parallel solver with its own desktop program, installer, documentation and automated test suite.
  • I contribute to the Fortran Standard Library, where I wrote the modern linear algebra interface to BLAS and LAPACK.

How the software is delivered

  • Source code under the licence agreed in the contract, with a build that works on your machines
  • Automated tests that check the results against reference cases
  • A user guide, and training for the people who will use and maintain it
  • Support and further development after delivery, if you want it
Engine combustion simulation results comparing internal energy and NOx fields computed with exact and tabulated chemistry functions
Same engine result, much less computing time: exact and tabulated evaluation of the chemistry functions. From Perini and Reitz, Combustion and Flame 194 (2018).
Technology

Languages and tools

Modern Fortran and C++ for the numerics, native desktop interfaces with wxWidgets and VTK, MPI for parallel runs, Python for scripting, on Windows, macOS and Linux.

Your requirements and your code are protected

The same confidentiality terms of my consulting work apply to software projects: an NDA before the first technical talk, clear written ownership of the code that is developed for you, and no reuse of your proprietary methods for other clients.

Have a tool in mind?

Tell me what it should compute and who will use it. I will answer with a first idea of scope and effort.