Extend simulation codes
Add new physics, boundary conditions, material behavior, coupling logic or problem classes without destabilizing the existing code.
SCIENTIFIC SOFTWARE ENGINEERING
We work between science, mathematics, physics and software engineering to build simulation systems that can be trusted in practice.
Scientific software engineering turns mathematical and physical models into software that can be run, checked, extended and used by engineering teams. It is not only about writing code around an equation. It includes the numerical method, the data structures, the solver behavior, the coupling between physics, the parallel execution model and the way results are validated.
In large-scale multiphysics codes, small implementation choices can change performance, stability or even the answer. Good software in this area keeps the science visible while making the system maintainable enough to evolve.
Add new physics, boundary conditions, material behavior, coupling logic or problem classes without destabilizing the existing code.
Turn a research model into a workflow for design studies, operational decisions, optimization loops or sensitivity analysis.
Build regression tests, verification cases, validation checks and reproducible benchmarks around scientific assumptions.
Analyze memory movement, parallel scaling, solver cost, I/O and data layout to make high performance computing work more predictable.
Refactor Fortran, C, C++, Python or mixed-language code while preserving numerical behavior and existing user workflows.
Create tooling for input generation, mesh handling, postprocessing, uncertainty studies, campaign execution and reporting.
We are useful when the problem cannot be separated cleanly into "science" on one side and "software" on the other. We can work from the model down to the implementation, or join an existing codebase and unblock the parts that are limiting progress.
Translate equations, algorithms and physical assumptions into robust implementation plans and tested production code.
Work on coupling between domains, solvers, meshes, fields and time scales in large engineering simulation systems.
Untangle legacy architecture, remove fragile paths, improve build systems and make scientific code easier to change safely.
Set up tests, benchmark cases, CI workflows and validation procedures that catch numerical and software regressions early.
Profile, restructure and tune computation, communication and I/O for HPC environments and large simulation campaigns.
Build the surrounding tools that help teams run studies, compare results, automate scenarios and use simulations in decisions.
This work fits teams with a scientific or engineering model that needs to become dependable software: research labs, industrial engineering groups, simulation teams, technical startups and public institutions with complex computational systems.
It also fits mature codebases that already matter. In that case the job is often to preserve the validated science while improving architecture, performance, testing and the ability to add new capabilities.